SimCity simulaba una ciudad entera en un procesador de 16 MHz

How to run a city builder on 16 MHz

SimCity simulaba una ciudad entera en un procesador de 16 MHz

El código de SimCity, liberado como Micropolis en 2008, revela el truco que permitió simular tráfico, incendios, energía y crimen en un Intel 386SX de 16 MHz: la función Simulate() no actualiza todos los sistemas cada frame, sino que reparte el trabajo en un ciclo de 16 frames usando el parámetro mod16. El autor compara esta técnica con los cubemaps de Assetto Corsa y el Lumen de Unreal.

SimCity simplemente se salta la mayor parte de la simulación.
  1. prosaic-hacker

    Esta es una buena revelación, pero es una técnica tan vieja como las colinas. Mi primer trabajo de programación después de la universidad fue en CAE Electronics, una empresa de simuladores de vuelo. Las simulaciones corrían en una variedad de minicomputadoras de la época, principalmente DEC Vax 780 y sucesores o Gould SEL durante mi tiempo allí.

    Si mal no recuerdo, la simulación funcionaba como un superloop en un microcontrolador cada 50 ms o 33 ms. En cada iteración, el despachador ejecutaba una selección de las funciones centrales de simulación, algunas en cada ciclo, otras cada 2.º, 4.º o más ciclos. El sistema se llamaba banding. La tabla de despacho se rehacía para optimizar las necesidades de ese simulador en particular.

    Había varias optimizaciones fuera de la CPU principal, ya que los dispositivos periféricos también realizaban cálculos. Además, a medida que los sistemas se volvían más rápidos, quedaba tiempo para que el sistema operativo normal ejecutara funciones de baja prioridad con requisitos no de tiempo real.

    La técnica no era nueva en mi época y se había utilizado en la generación anterior de sistemas Xerox aproximadamente una década antes.

  2. phire

    > El SimCity original, por ejemplo, lista el Intel 386SX como la CPU en sus requisitos de sistema.

    No estoy seguro de dónde sale eso. La caja del lanzamiento original [1] dice que funcionará en cualquier PC con 512 KB de RAM. Así que eso es un 8088 corriendo a solo 4.77 MHz.

    Pero eso está lejos de ser el port con las especificaciones más bajas del juego. La versión para Commodore 64 podría haber carecido de bastantes características (como estadios, estaciones de policía/bomberos y ferrocarriles), pero el bucle principal de simulación de la ciudad estaba allí en solo 64 KB de RAM y un 6502 a 1 MHz.

    Y el port para BBC Micro/Acorn Election fue aún más impresionante. Tenía básicamente todas las características de la versión completa para Amiga/PC/Mac, solo faltaban Música/Sonido/Animación. Con un 6502 a 2 MHz (o 1 MHz en el Election) y solo 32 KB de RAM.

    [1] https://images.launchbox-app.com/79861ce4-75ea-46dd-b46e-521...

  3. retrac

    Esto me recuerda a microcity, que es un clon de SimCity para Game Boy Color.

    El autor tiene algunos documentos muy detallados sobre el diseño y cómo lograron hacer que una simulación que parece bastante animada encajara en una máquina con un procesador de 8 bits a 8 MHz.

    https://github.com/AntonioND/ucity/blob/master/docs/index.rs...

Más de este día

2026-10-24