A Cities: Skylines–class city builder that runs in a browser tab.
No Unity. No Unreal. No game engine. Three.js, and a team of AI agents that build and critique their own work.
A generated city on a procedural coastline, rendered live in the browser.
![]() |
![]() |
| Night, with a tower under construction and the building inspector open | Street level: traffic, crosswalks, signals, pedestrians |
![]() |
|
| Street lighting, parked cars and a fenced building site after dark | |
Note
The code is not published yet. This repository holds the README while the build is running. Everything ships at once when the game is finished — engine, modules, assets and the agent tooling. Progress, screenshots and the occasional failure go up on X as it happens.
A real-time city builder in the browser, aiming squarely at the visual and simulation bar of Cities: Skylines II.
| Terrain | Heightmap landscape with rivers, coastline, cliffs and buildable valleys. Splat-mapped PBR materials, triplanar rock, instanced forests with wind, planar-reflecting water. |
| Sky & weather | Physically based atmosphere driven by time of day and day of year. Sun and moon paths, stars, volumetric-looking clouds, height fog, drifting cloud shadows, rain, fog and snow. |
| Roads | A real network graph — local roads, avenues, highways, paths. Lane markings, curbs, sidewalks, crosswalks, corner radii, terrain conforming, and a lane graph that traffic drives on. |
| Zoning | Cities: Skylines–style cells along road frontage, merged into lots, with the coloured overlay. |
| Buildings | Procedural residential, commercial, office and industrial buildings across five levels. Rooftop detail, lit windows at night, construction states. |
| Props & traffic | Street furniture and lighting; vehicles that path through the lane graph with car-following and intersection yielding. |
| Simulation | Clock, economy, population and jobs, RCI demand, happiness, city services with coverage. |
| Interface | A full HUD — tools, demand bars, info views, notifications. |
| Audio | The entire soundscape is synthesized at runtime with the Web Audio API. Wind, city hum, rain, UI feedback. No sample files. |
Rendering runs on cascaded shadow maps, ground-truth ambient occlusion, bloom, SMAA and filmic tone mapping.
The interesting part is not the game. It is the method.
The whole thing runs off a single instruction. Read it in
PROMPT.md— including a breakdown of why each part of it is there, and what breaks when you leave it out.
One prompt, then a team. The model was given an empty folder and a single instruction. It wrote an architecture document first — folder ownership, the data contract between modules, units, determinism rules, a performance budget — and only then started writing features. That contract is what lets a dozen agents work in parallel without destroying each other's code.
Builders and critics. Every subsystem gets a builder agent that owns exactly one folder. When it is done, a separate critic agent takes its own screenshots at several times of day, checks the API contract, console errors and draw calls, and scores the result against real Cities: Skylines II reference images. Below the pass mark the module fails and the builder gets a ranked list of defects to fix.
Nothing counts until it has been seen. Agents cannot simply claim a feature works. A headless Chrome harness loads the game on the real GPU, drives the camera and the clock, and writes a screenshot plus a log of console errors and render statistics. The agent has to look at its own image before it is allowed to report.
The final gate is blind. At the end of each full pass, judge agents are handed pairs of screenshots labelled only A and B — one from this project, one from the actual game — without being told which is which, and asked which one looks better.
It loops. Scores and open defects are persisted to disk, so every iteration resumes at the weakest module instead of starting over.
Critics score every module from 0 to 10 on an anchored scale. Nothing is accepted below 8.5.
| Score | Meaning |
|---|---|
| 10 | Indistinguishable from Cities: Skylines II |
| 9 | AAA — a CS2 player accepts it without comment |
| 8.5 | Pass mark. AAA with minor nits |
| 7–8 | Good indie. Obvious gaps |
| 5–6 | Programmer art |
| ≤ 3 | Broken or missing |
| Rendering | Three.js r185, WebGL2 |
| Build | Vite, plain JavaScript ES modules — no framework, no engine |
| Assets | CC0 only — Poly Haven, ambientCG, and procedural generation |
| Verification | Puppeteer and headless Chrome, rendering on the real GPU |
| Written by | Claude, in Claude Code |
- Engine, camera, module system and the verification harness
- Terrain, sky and weather, roads, simulation, HUD, audio, effects
- Zoning, buildings, props, traffic, build tools
- A generated demo city that actually looks like a city
- Every module past the critics' 8.5 bar
- Blind comparison won
- Playable build online
- Public code release
MIT, on release. All third-party assets are CC0 and credited in the repository.



