I spent 20 years architecting AAA game engines, going back to the PlayStation 1. I wrote all of that by hand. This one I did not.
It is a stylized real time digital twin of the SF Bay Area, built from scratch in C++ and Vulkan. The geometry is real, the look is not. It is meant to read as a painted model of the Bay rather than a photo of it, because a photoreal copy of a place you can already see from a satellite is not worth building.
The world is an 80 km square, about 6,400 km², and all of it is built from open data. USGS 3DEP 1 m lidar for the terrain. NOAA CoNED for the bay floor. USGS NHD for water. ESA WorldCover for land cover. OpenStreetMap for footprints and roads. That comes to 13 GB of streamed tiles, and 9.8 GB of it is terrain. Past the edge there is a 420 km coarse ring on Copernicus GLO-30, so the horizon does not end at a flat edge. Distant ridgelines bend down below it.
There are 424,787 real building footprints in there, extruded procedurally, with heights off OSM tags and a plausibility gate that drops anything whose tagged height will not fit its own footprint. Across the whole 80 km box it rejects exactly 8 buildings, four of them towers carrying a bad height tag that used to extrude as needles over a derelict pier at Hunters Point. On top sit 41 landmarks at their real coordinates, authored by Fable as parametric Blender scripts rather than sculpted: Golden Gate, Transamerica, Coit, Sutro, Salesforce, the Ferry Building. Each one switches off the generated building underneath it.
The simulation is the actual point. A 24 hour recording of real feeds plays back on a clock inside the app, at 1x up to 2000x. Caltrans PeMS for highway flow, 511 for Caltrain, OpenSky for flights, AIS for boats, METAR at SFO, OAK and SJC, and HRRR for weather. 165,356 samples across those 8 feeds. Cars spawn at the volume PeMS measured on that segment. Trains run the delays 511 reported. Planes fly the tracks OpenSky recorded. It is replay, not a live stream. Live polling is next and feeds the same clock, so it is a source swap rather than a rewrite.
There is also a globe. You pick the Bay from orbit, fly down to the surface, and back out again. Reversed Z depth, HDR with a filmic tonemap, dual filter bloom, a time of day grade, and a volumetric marine layer for Karl the fog.
AI agents write the issues, set the constraints, make the art direction calls, and review and validate every line of the roughly 235,000 lines of C++, GLSL, Python and PowerShell. What I built is the orchestration that holds it together, and the judgement on top of it: what to build, what to cut, and when to accept the result.
The language choice is doing real work here. The hard part of AI written software is not producing the code. It is proving the code is right. C++ and Vulkan are unusually good at that, because nothing is hidden: every resource, every frame, every buffer you can read back. 28 golden image scenes compared by SSIM. An MCP server that drives the running app, so an agent can move the camera, set a sky preset, take a screenshot, and read the streaming counters back out. It validates against a live process instead of against its own diff. And a reviewer agent whose only job is to work out what the issue asked for before it reads the summary the PR wrote about itself.
So I think C++ and Vulkan stay the heavy duty layer through the AI era. Not in spite of being low level. Because being performant, deterministic and checkable is exactly what an agent loop needs to push against. A managed engine hides the state that verification depends on.
This is a hobby project, and it has nothing to do with my day job. Clips are below. More as I go.
Map data © OpenStreetMap contributors (ODbL). Land cover: ESA WorldCover 2021 (CC BY 4.0). Terrain: USGS 3DEP and NOAA. Flight data: OpenSky Network.
#Vulkan #cpp #gamedev #digitaltwin #OpenStreetMap