You can check out the original SimCity Classic source code here, which I cleaned up, refactored and renamed for consistency and readability, documented, and translated to C++, but it still retains the original behavior and intent:

https://github.com/SimHacker/micropolis/tree/master/Micropol...

This is also an earlier version which that code was derived from, that I started from the Mac version, ported to Unix, cleaned up and translated old C and 68k assembly to ANSI C, and made a user interface with the TCL/Tk scripting language and X11 GUI toolkit:

https://github.com/SimHacker/micropolis/tree/master/micropol...

The one little "modernization" I made to the simulation was to copy the radar dish tile animation from the airport, and make it individually placeable as a "high speed network connection" that let people telecommute from home without generating traffic and pollution.

That was a tip of the hat to John Gauge's "Net Day", a mid-90's internet craze of hooking schools up to the net.

https://en.wikipedia.org/wiki/NetDay

Chaim Gingold mentions the function s_traf.c/FindPTele in his SimCity Reverse Diagrams animation characters atlas of tiles, under "Telecommunications" -- /* look for telecommunication on edges of zone */ -- if there is a telecommunication dish adjacent to a residential zone, then its residents can telecommute without driving around generating traffic and pollution. I turned that off for the OLPC release, though.

https://github.com/SimHacker/micropolis/blob/master/micropol...

Chaim Gingold has analyzed the code and visually documented how it works, in his beautiful "SimCity Reverse Diagrams":

https://lively-web.org/users/Dan/uploads/SimCityReverseDiagr...

>SimCity reverse diagrams:
Chaim Gingold (2016).

>These reverse diagrams map and translate the rules of a complex simulation
program into a form that is more easily digested, embedded, disseminated, and
and discussed (Latour 1986).

>The technique is inspired by the game designer Stone Librande’s one page
game design documents (Librande 2010).
If we merge the reverse diagram with an interactive approach—e.g. Bret Victor’s Nile Visualization
(Victor 2013), such diagrams could be used generatively, to describe programs, and interactively,
to allow rich introspection and manipulation of software.

>Latour, Bruno (1986). “Visualization and cognition”. In: Knowledge and Society 6 (1986), pp. 1– 40.
Librande, Stone (2010). “One-Page Designs”. Game Developers Conference. 2010.
Victor, Bret (2013). “Media for Thinking the Unthinkable”. MIT Media Lab, Apr. 4, 2013.

Earlier I wrote about the "Simulator Effect" aka "apophenia", and "Reverse Over Engineering":

https://news.ycombinator.com/item?id=22062590

DonHopkins on Jan 16, 2020 | parent | context | favorite | on: Reverse engineering course

Will Wright defined the "Simulator Effect" as how game players imagine a simulation is vastly more detailed, deep, rich, and complex than it actually is: a magical misunderstanding that you shouldn’t talk them out of. He designs games to run on two computers at once: the electronic one on the player’s desk, running his shallow tame simulation, and the biological one in the player’s head, running their deep wild imagination.

"Reverse Over-Engineering" is a desirable outcome of the Simulator Effect: what game players (and game developers trying to clone the game) do when they use their imagination to extrapolate how a game works, and totally overestimate how much work and modeling the simulator is actually doing, because they filled in the gaps with their imagination and preconceptions and assumptions, instead of realizing how many simplifications and shortcuts and illusions it actually used.

https://www.masterclass.com/classes/will-wright-teaches-game...

>There's a name for what Wright calls "the simulator effect" in the video: apophenia. There's a good GDC video on YouTube where Tynan Sylvester (the creator of RimWorld) talks about using this effect in game design.

https://en.wikipedia.org/wiki/Apophenia

>Apophenia (/æpoʊˈfiːniə/) is the tendency to mistakenly perceive connections and meaning between unrelated things. The term (German: Apophänie) was coined by psychiatrist Klaus Conrad in his 1958 publication on the beginning stages of schizophrenia. He defined it as "unmotivated seeing of connections [accompanied by] a specific feeling of abnormal meaningfulness". He described the early stages of delusional thought as self-referential, over-interpretations of actual sensory perceptions, as opposed to hallucinations.

RimWorld: Contrarian, Ridiculous, and Impossible Game Design Methods

https://www.youtube.com/watch?v=VdqhHKjepiE

5 game design tips from Sims creator Will Wright

https://www.youtube.com/watch?v=scS3f_YSYO0

>Tip 5: On world building. As you know by now, Will's approach to creating games is all about building a coherent and compelling player experience. His games are comprised of layered systems that engage players creatively, and lead to personalized, some times unexpected outcomes. In these types of games, players will often assume that the underlying system is smarter than it actually is. This happens because there's a strong mental model in place, guiding the game design, and enhancing the player's ability to imagine a coherent context that explains all the myriad details and dynamics happening within that game experience.

>Now let's apply this to your project: What mental model are you building, and what story are you causing to unfold between your player's ears? And how does the feature set in your game or product support that story? Once you start approaching your product design that way, you'll be set up to get your customers to buy into the microworld that you're building, and start to imagine that it's richer and more detailed than it actually is.