Zurück zur Startseite

Pizza Tycoon Verkehrssimulation auf 25 MHz

Der Artikel zerlegt das Verkehrssystem in Pizza Tycoon 1994, das auf 25 MHz läuft. Tile-Regeln, Pixel-für-Pixel-Bewegung und einfache Kollisionen sorgen für Effizienz. Pizza Legacy-Autor hat die Mechaniken durch Assembler-Analyse nachgebildet.

Pizza Tycoon Verkehr: Wie 25 MHz die Stadt simulieren
Advertisement 728x90

Verkehrssimulation in Pizza Tycoon: Flüssig bei 25 MHz

In Pizza Tycoon wird der Verkehr mit einem einfachen System abgewickelt, das auf einem 386-Prozessor mit 25 MHz läuft. Jedes Fahrzeug bewegt sich einen Pixel pro Spiel-Tick. Die Hauptschleife prüft Hindernisse und passt Koordinaten an: +1 zur X-Achse bei Ostfahrt, -1 zur Y-Achse bei Nordfahrt.

Der progress-Zähler zählt von 16 runter auf 0. Bei Null wird er auf 16 zurückgesetzt und löst die Kachelgrenzlogik aus: Richtung wählen und Sprite aktualisieren. 16x16-Pixel-Kacheln halten alles synchron – aufwendige Berechnungen passieren 16-mal seltener als Pixel-für-Pixel-Bewegungen.

Beim Spawn wird progress zufällig (1–16) gesetzt, um die Last über Frames zu verteilen.

Google AdInline article slot

Straßenlayout und Fahrtrichtungsregeln

Karten sind ein 160x120-Gitter aus Kacheln der Datei landsym.vga. Straßen sind einbahnig: Kachel 0x16 führt ostwärts, 0x06 westwärts, 0x26/0x36 für vertikale Wege.

Ecken erlauben Verzweigungen. Kachel 0x56 (CORNER_SW) lässt west- oder südwärts fahren. Wahl: 50 % Abbiegen/Geradeaus. Verbot zweier Linkskurven hintereinander sorgt für Natürlichkeit.

Karten sind logisch gestaltet – benachbarte Kacheln erlauben immer gültige Wege.

Google AdInline article slot
  • Gerade Kacheln: Feste Richtung.
  • Ecken: Wahrscheinliche Wahl mit Anti-Schleifen.
  • T/X-Kreuzungen: Eckkombinationen.

Kollisionen durch Paarweise Prüfungen

O(n²) für 25 Fahrzeuge bedeutet 625 Prüfungen pro Frame. Optimierung: Frühes Aussteigen nach Richtung. Ost+West-Paare werden ohne Koordinatenprüfung abgebrochen, da Einbahnstraßen Frontalzusammenstöße verhindern.

Prüfungen:

  • Richtungen (halbiert die Paare).
  • Spur (gleiche Straße).
  • Koordinatenrechnung (selten, <10 Paare).

Kollision → Pause 10 Ticks. Staus lösen sich natürlich: Führfahrzeug bewegt sich zuerst.

Google AdInline article slot

Bugs (Durchdringen) sind Nebenwirkung der Optimierungen, akzeptabel für visuelle Simulation.

Fahrzeug-Spawning und Recycling

Beim Betreten des Straßenszenenmodus: Scannen von 132 Kacheln (12x11). Bei Straßen Würfeln basierend auf Nachbarschaftsdichte. Ecken ausgeschlossen.

Beim Verlassen des Bildschirms: Ersetze durch neues Fahrzeug in Gegenrichtung/Farbe auf gleicher Kachel. Scrollen behandelt neue Spuren ähnlich.

// Spawn-Pseudocode
for each road_tile in viewport:
  if random(traffic_density) > threshold:
    spawn_car(tile, random_direction, random_progress)

Assembly-Analyse und moderne Fallstricke

Der Pizza-Legacy-Autor verbrachte 14 Jahre mit übertriebenen Graphen, A* und Kollisionen. Original ist simpler: Kacheln diktieren Pfade, keine Physik/Geschwindigkeiten.

Assembly-Analyse + KI offenbarten die Mechanik. Restaurierung: Switch in decide_desired_direction (Car.cpp) nach Kacheltypen.

| Ansatz | Komplexität | Effizienz |

|-----------|-------------|--------------------|

| Original | Einfache Regeln | 25 MHz, 30 Fahrzeuge |

| Modern | Graphen, Physik | Deadlocks auf 2010+ CPUs |

Wichtige Erkenntnisse

  • Einbahnkacheln machen Pfadsuche überflüssig.
  • Frühe Kollisionsausstiege minimieren Schleifen.
  • Pixel-für-Pixel-Bewegung + seltene Updates = geringe CPU-Last.
  • Wahrscheinliche Abbiege + Anti-Schleifen = Realismus ohne KI.
  • Fahrzeug-Recycling spart Listenmanagement.

— Editorial Team

Advertisement 728x90

Weiterlesen