MicropolisCore
Micropolis is the open source version of SimCity, the 1989 city simulation by Will Wright. This repo is its C++ engine compiled to WebAssembly, wrapped in a SvelteKit web app and a command-line tool, plus the projects that grew beside it: VitaMoo, which plays The Sims 1 characters and animations in the browser, and Screen Angel, which reads and extends other applications' interfaces.
Try it
| What | Where | |------|-------| | Micropolis in the browser | micropolisweb.com | | VitaMoo: Sims 1 characters and animation in the browser | vitamoo.space | | How the engine and UI work (video) | Micropolis Web Demo 1 | | Tile sets and cellular automata, to music by Jerry Martin (video) | SimCity Tile Sets, Space Inventory, and Cellular Automata | | Engine source documentation | micropolisweb.com/doc |
What's in the repo
| Path | What |
|------|------|
| packages/micropolis-engine/ | The C++ simulation, built to WebAssembly with Emscripten |
| apps/micropolis/ | The SvelteKit app and the micropolis CLI for city files and headless simulation |
| packages/tile-renderer/ · packages/render-core/ | Tile rendering (Canvas, WebGL, WebGPU) and the shared compositor |
| packages/vitamoo/ · packages/mooshow/ · packages/sims-io/ | VitaMoo: Sims 1 animation, the WebGPU stage, and Sims file formats |
| apps/vitamoospace/ | The VitaMoo demo app at vitamoo.space |
| apps/screen-angel/ | Screen Angel, an overlay that scripts other applications (source-available, see its license) |
| packages/optical-codec/ | Screen Angel's optical channel reader |
| apps/yoot/ | Placeholder for a tower simulation app |
| content/ | Cities (including all eight scenarios), tile sets, sounds, Sims assets |
| documentation/ | Manuals, teachers' guides, talks, design notes, history, box art |
| skills/ | MOOLLM skills for driving Micropolis |
To build, test and run it: DEVELOPMENT.md. Open work: documentation/TODO.md.
corepack enable && pnpm install
pnpm --filter micropolis dev
The compiled engine is committed, so you only need Emscripten to change the C++.
The story
Don Hopkins ported SimCity to Unix, made it multiplayer as SimCityNet (shown at ACM InterCHI '93 in Amsterdam), and persuaded Electronic Arts to release the source under GPL-3 for the One Laptop per Child project in 2008.
EA would allow the name "SimCity" only if the game passed its QA process, which meant walking their QA department through running Linux in a virtual machine on Windows. Rather than do that again, Don asked Will Wright for another name, and Will suggested the game's original working title, Micropolis. Please call it Micropolis, not SimCity. As Jeff Braun, CEO of Maxis, wrote about another name:
"Maxis was sued by Toho. We never referred to the name Godzilla, our monster on the box cover was
a T-Rex looking character, but... a few magazine reviews called the monster, Godzilla. That was
all it took. Toho called it 'confusion in the marketplace'. We paid $50k for Godzilla to go away.
In all honesty, Toho liked Maxis, they said $50k was the minimum they take for Godzilla
infringement. I doubt you will need to worry about Toho, as long as there are no magazine reviews
that call the monster Godzilla."
"Micropolis" was also the name of a hard disk maker, now restructured as Micropolis GmbH. Its owner granted the Micropolis Public Name License, which lets the game use the name under reasonable conditions. Thank you, Micropolis GmbH.
This repo is the engine extracted from the full micropolis repo, cleaned up, compiled to WebAssembly with Emscripten and Embind, and given a new web front end.
The lineage
| Year | Project | What it added | |------|---------|---------------| | 1989 | SimCity (Will Wright) | The city as a sandbox | | 1991 | HyperLook SimCity (Don Hopkins, Sun) | NeWS and PostScript, networked user interface | | 1993 | SimCityNet (Don Hopkins, DUX) | Multiplayer over X11 with TCL/Tk, shown at InterCHI '93 (proposal) | | 1995 | DreamScape (Don Hopkins, Kaleida ScriptX) | A "nurturing environment" of rooms, objects and the web (WWDC demo) | | 2000 | The Sims (Will Wright) | A dollhouse for stories | | 2008 | Micropolis (Don Hopkins, OLPC) | GPL-3 source, for education (how it happened) | | Now | MicropolisCore | WebAssembly, SvelteKit, WebGL and WebGPU, a CLI, and MOOLLM characters |
Where it's going: Soul City
The plan is to make Micropolis a place to learn in, not just a game: a class works in its own git repository, branches are alternate futures for the city, pull requests propose changes, and AI tutors with different views (an economist, an environmentalist, a planner) argue about them and can act in the same city as the students. The tutors are MOOLLM characters, driven by the micropolis skill.
The story that explains it to anyone: The Uplift, a Sim frozen on a USB stick since 2001 who wakes up in Soul City and goes home changed.
Design: Soul City · roadmap · MOOLLM as a microworld OS.
Research using Micropolis
Sam Earle trained reinforcement learning agents on Micropolis with fractal neural networks; the agents learned to place power plants, cluster zones, and lay out roads that avoid traffic. Paper · gym-city · discussion.
Links
| | | |-|-| | The original micropolis repo | github.com/SimHacker/micropolis | | MOOLLM | github.com/SimHacker/moollm | | SimCityNet announcement (1993) | art.net/~hopkins/Don/simcity | | Sponsor | patreon.com/DonHopkins |
License
has its own license.- Name: Micropolis Public Name License. "Micropolis" is a
Micropolis is based on the original SimCity from Electronic Arts / Maxis, designed and written by Will Wright, and ported to Unix by Don Hopkins.
— Don Hopkins, [email protected]