Dopravní simulace v Pizza Tycoon: Efektivita na 25 MHz
V Pizza Tycoon je doprava implementována jednoduchým systémem, který běží na procesoru 386 s frekvencí 25 MHz. Každé auto se posouvá o jeden pixel za herní takt. Hlavní cyklus kontroluje překážky a upravuje souřadnice: +1 k X při pohybu na východ, -1 k Y na sever.
Čítač progress odpočítává od 16 do 0. Při nulování se resetuje na 16 a aktivuje logiku hranic dlaždic: výběr směru, aktualizace sprite. Dlaždice 16x16 pixelů zajišťují synchronizaci — náročné výpočty jsou 16krát méně časté než pixelový pohyb.
Při zrození je progress náhodný (1–16), což rozloží zátěž na snímky.
Struktura silnic a pravidla směru
Mapy jsou mřížka 160x120 dlaždic z landsym.vga. Silnice jsou jednosměrné: dlaždice 0x16 — východ, 0x06 — západ, 0x26/0x36 — vertikálně.
Rohy přidávají větvení. Dlaždice 0x56 (CORNER_SW) umožňuje západ nebo jih. Výběr: 50% zatáčka/rovně. Zákaz dvou levých zatáček za sebou zajišťuje přirozenost.
Mapy jsou navrženy logicky — sousední dlaždice vždy podporují možné cesty.
- Rovné dlaždice: pevný směr.
- Rohy: pravděpodobnostní výběr s anti-cyklem.
- T/X-křižovatky: kombinace rohů.
Kolize přes párovou kontrolu
O(n²) pro 25 aut — 625 kontrol za snímek. Optimalizace: brzký výstup podle směrů. Východ+západ — návrat bez souřadnic, protože jednosměrné silnice vylučují protijedoucí.
Kontrola:
- Směry (polovina párů je odříznuta).
- Pruh (rovnost silnic).
- Aritmetika souřadnic (zřídka, <10 párů).
Kolize → pauza 10 taktů. Zácpy se přirozeně rozptýlí: vůdce se pohybuje první.
Chyby (průchody skrz) — vedlejší účinek optimalizací, přijatelné pro vizuální simulaci.
Zrození a recyklace aut
Při vstupu do režimu ulic: skenování 132 dlaždic (12x11). Pro silniční — hod kostkou podle hustoty čtvrti. Rohy jsou vyloučeny.
Výjezd z obrazovky: nahrazení novým autem opačného směru/barvy na stejné dlaždici. Posun zpracovává nové pruhy podobně.
// Pseudokód pro zrození
for each road_tile in viewport:
if random(traffic_density) > threshold:
spawn_car(tile, random_direction, random_progress)
Rozbor assembleru a moderní chyby
Autor Pizza Legacy strávil 14 let překomplikovanými grafy, A* a kolizemi. Originál je jednodušší: dlaždice diktují cestu, není fyzika/rychlosti.
Analýza assembleru + LLM odhalila mechaniku. Obnova: switch v decide_desired_direction (Car.cpp) podle typů dlaždic.
| Přístup | Složitost | Efektivita |
|--------|-----------|---------------|
| Originál | Jednoduchá pravidla | 25 MHz, 30 aut |
| Moderní | Grafy, fyzika | Slepé uličky na CPU 2010+ |
Co je důležité
- Jednosměrné dlaždice eliminují hledání cesty.
- Brzký výstup v kolizích minimalizuje cykly.
- Pixelový pohyb + řídké aktualizace = nízká zátěž.
- Pravděpodobnostní zatáčky + anti-cyklus vytvářejí realismus bez AI.
- Recyklace aut vylučuje správu seznamu.
— Editorial Team
Zatím žádné komentáře.