Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Fable Cities

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.


Three.js r185 WebGL2 CC0 assets Built with Claude Code Status: in development Read the prompt



Fable Cities: terrain, forests and a river, with the in-game HUD

A generated city on a procedural coastline, rendered live in the browser.


Night downtown with lit windows, street lighting and a building under construction Street-level intersection with traffic, crosswalks, traffic lights and pedestrians
Night, with a tower under construction and the building inspector open Street level: traffic, crosswalks, signals, pedestrians
A quiet street at night lit by street lamps, with parked cars and a fenced construction site
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.


What it is

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.


How it is being built

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.


The bar

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

Stack

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

Roadmap

  • 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

Licence

MIT, on release. All third-party assets are CC0 and credited in the repository.



raw

Built in public by raw

Follow @raw_dev_x on X

Follow along if you want to find out whether a language model can actually take something to shipping quality — or whether it stalls at "good indie".

About

A Cities: Skylines-class city builder running in the browser, built in Three.js by AI agents. Code ships when it's finished.

Topics

Resources

Stars

9 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors