Volver al inicio

Simulación de Tráfico de Pizza Tycoon en 25 MHz

El artículo desglosa el sistema de tráfico en Pizza Tycoon 1994, ejecutándose en 25 MHz. Reglas de tiles, movimiento píxel por píxel y colisiones simples aseguran la eficiencia. El autor de Pizza Legacy recreó las mecánicas mediante análisis de ensamblador.

Tráfico de Pizza Tycoon: cómo 25 MHz simula la ciudad
Advertisement 728x90

# Simulación de tráfico en Pizza Tycoon: Funcionando a 25 MHz

En Pizza Tycoon, el tráfico se maneja con un sistema directo que corre en un procesador 386 a 25 MHz. Cada vehículo avanza un píxel por tick del juego. El bucle principal verifica obstáculos y ajusta coordenadas: +1 en X hacia el este, -1 en Y hacia el norte.

El contador progress cuenta hacia atrás desde 16 hasta 0. Al llegar a cero, se reinicia a 16 y activa la lógica de límites de baldosa: elige una dirección y actualiza el sprite. Las baldosas de 16x16 píxeles mantienen todo sincronizado; los cálculos pesados ocurren 16 veces menos que el movimiento píxel a píxel.

Al generarse, progress se randomiza (1–16) para distribuir la carga entre frames.

Google AdInline article slot

Diseño de carreteras y reglas de dirección

Los mapas son una cuadrícula de 160x120 baldosas de landsym.vga. Las carreteras son de un solo sentido: la baldosa 0x16 va hacia el este, 0x06 hacia el oeste, 0x26/0x36 manejan los caminos verticales.

Las curvas añaden ramificaciones. La baldosa 0x56 (ESQUINA_SO) permite ir al oeste o al sur. Elección: 50% curva/recto. Prohibir dos giros a la izquierda seguidos mantiene el flujo natural.

Los mapas están diseñados lógicamente: las baldosas adyacentes siempre permiten caminos válidos.

Google AdInline article slot
  • Baldosas rectas: Dirección fija.
  • Curvas: Elección probabilística con antirrepetición.
  • Intersecciones T/X: Combinaciones de curvas.

Colisiones mediante verificaciones por pares

O(n²) para 25 vehículos implica 625 verificaciones por frame. Optimización: salida temprana por dirección. Pares este+oeste se saltan sin chequear coordenadas, ya que las carreteras de un solo sentido evitan choques frontales.

Verificaciones:

  • Direcciones (elimina la mitad de los pares).
  • Carril (coincidencia en la misma carretera).
  • Matemáticas de coordenadas (raro, <10 pares).

Colisión → pausa de 10 ticks. Los atascos se resuelven solos: el vehículo líder se mueve primero.

Google AdInline article slot

Los bugs (atravesar objetos) son un efecto secundario de las optimizaciones, aceptable para una simulación visual.

Generación y reciclaje de vehículos

Al entrar en modo calle: escanea 132 baldosas (12x11). Para carreteras, tira dados según la densidad del vecindario. Se excluyen curvas.

Al salir de pantalla: reemplaza con un nuevo vehículo de dirección/color opuesto en la misma baldosa. El desplazamiento maneja nuevos carriles de forma similar.

// Pseudocódigo de generación
for each road_tile in viewport:
  if random(traffic_density) > threshold:
    spawn_car(tile, random_direction, random_progress)

Desensamblando ensamblador y trampas modernas

El autor de Pizza Legacy pasó 14 años en grafos excesivos, A* y colisiones. El original es más simple: las baldosas dictan los caminos, sin física/velocidades.

Análisis de ensamblador + LLM revelaron la mecánica. Restauración: switch en decide_desired_direction (Car.cpp) por tipos de baldosa.

| Enfoque | Complejidad | Eficiencia |

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

| Original | Reglas simples | 25 MHz, 30 vehículos |

| Moderno | Grafos, física | Bloqueos en CPUs 2010+ |

Lecciones clave

  • Baldosas de un solo sentido eliminan la búsqueda de caminos.
  • Salidas tempranas en colisiones minimizan bucles.
  • Movimiento píxel a píxel + actualizaciones infrecuentes = baja carga de CPU.
  • Giros probabilísticos + antirrepetición = realismo sin IA.
  • Reciclaje de vehículos evita gestión de listas.

— Editorial Team

Advertisement 728x90

Leer después