SimCity simulierte eine ganze Stadt auf einem 16-MHz-Prozessor

How to run a city builder on 16 MHz

SimCity simulierte eine ganze Stadt auf einem 16-MHz-Prozessor

Der Original-SimCity lief auf einem Intel 386SX mit 16 MHz. Der Artikel zeigt, wie Maxis das schaffte: Die zentrale Simulate()-Funktion verteilt die Berechnungen von Verkehr, Feuer, Strom und Kriminalität über 16 Frames, statt alles in jedem Frame zu berechnen. Dieses Prinzip der Frame-Verteilung findet sich auch in modernen Spielen wie Assetto Corsa und Unreal Lumen wieder.

SimCity überspringt einfach den größten Teil der Simulation.
  1. prosaic-hacker

    Das ist eine gute Erkenntnis, aber es ist eine Technik, die so alt ist wie der Wald. Mein erster Programmierjob nach der Universität war bei CAE Electronics, einem Flugsimulator-Unternehmen. Die Simulationen liefen auf diversen Minicomputern der damaligen Zeit, hauptsächlich DEC Vax 780 und Nachfolgern oder Gould SEL während meiner Zeit dort.

    Wenn mich mein Gedächtnis nicht täuscht, lief die Simulation wie eine Super-Loop auf einem Mikrocontroller alle 50 ms oder 33 ms. Bei jedem Durchlauf führte der Dispatcher eine Auswahl der Kern-Simulationsfunktionen aus, manche bei jedem Durchlauf, manche bei jedem 2., 4. oder mehr Durchläufen. Das System nannte man Banding. Die Dispatch-Tabelle wurde neu erstellt, um die Anforderungen des jeweiligen Simulators zu optimieren.

    Es gab verschiedene Optimierungen außerhalb der Haupt-CPU, da auch die Peripheriegeräte Berechnungen durchführten. Und als die Systeme schneller wurden, blieb Zeit übrig, damit das normale Betriebssystem Funktionen mit niedriger Priorität und ohne Echtzeitanforderungen ausführen konnte.

    Die Technik war zu meiner Zeit nicht neu und war bereits etwa ein Jahrzehnt früher in der vorherigen Generation von Xerox-Systemen verwendet worden.

  2. phire

    > Das originale SimCity führt zum Beispiel Intels 386SX als CPU in seinen Systemanforderungen auf.

    Ich bin mir nicht sicher, woher das kommt. Das Box-Artwork der Originalversion [1] besagt, dass es auf jedem PC mit 512 KB RAM läuft. Das ist also ein 8088 mit gerade einmal 4,77 MHz.

    Aber das ist bei Weitem nicht die Portierung mit der niedrigsten Spezifikation. Die Commodore-64-Version mochte zwar einige Features vermissen lassen (wie Stadien, Polizei-/Feuerwehrstationen und Eisenbahnen), aber die Haupt-Simulationsschleife der Stadt war in nur 64 KB RAM und einem 1-MHz-6502 vorhanden.

    Und die Portierung für BBC Micro/Acorn Electron war noch beeindruckender. Sie hatte im Grunde alle Features der vollen Amiga/PC/Mac-Version, es fehlten nur Musik/Sound/Animation. Mit einem 2-MHz-6502 (oder 1 MHz auf dem Electron) und nur 32 KB RAM.

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

  3. retrac

    Das erinnert mich an microcity, einen Simcity-Klon für den Game Boy Color.

    Der Autor hat einige großartige, ausführliche Dokumente über das Design und darüber, wie sie es geschafft haben, eine recht lebendig wirkende Simulation in eine Maschine mit einem 8-MHz-8-Bit-Prozessor zu quetschen.

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

Mehr von diesem Tag

2026-10-24