Zpět na domů

Simulace dopravy Pizza Tycoon na 25 MHz

Článek rozebírá systém dopravy v Pizza Tycoon z roku 1994, běžící na 25 MHz. Dlaždicová pravidla, po-pixlový pohyb a jednoduché kolize zajišťují efektivitu. Autor Pizza Legacy rekonstruoval mechaniku analýzou assembleru.

Doprava Pizza Tycoon: jak 25 MHz simuluje město
Advertisement 728x90

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.

Google AdInline article slot

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.

Google AdInline article slot
  • 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í.

Google AdInline article slot

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

Advertisement 728x90

Číst dál