Devlog
This is the running build log of making an open world that runs in a browser, no install, no download, just a URL.
It's told in 29 written parts backed by 60 spikes. A spike is a short, focused experiment that tests one risky question, measures what matters, and decides what to do next. Most spikes are standalone pages under /spikes/* you can run live in the browser, and most parts link straight to the demo and its source.
New here? Start with Part 1: We started by trying to break it, or read the series guide for the full reading order and a plain-English glossary.
The series in order
- Part 1: We started by trying to break it
- Part 2: Worker physics and the input lag fear
- Part 3: The unflashy spikes that saved us
- Part 4: Streaming before fancy terrain
- Part 5: Budgeting the pretty stuff
- Part 6: Clipmaps changed the plot
- Part 7: Marching cubes and the first real caves
- Part 8: Integration without losing our baseline
- Part 9: Transvoxel started with a scaffold
- Part 10: Seam chaos and the corner boss fight
- Part 11: Policy mode, not hardcoded mode
- Part 12: Rings, sky fog, and what we would do again
- Part 13: Terrain sculpting and the death of the math function
- Part 14: The world comes alive
- Part 15: Replace the baseline, then sync it
- Part 16: Structure for a world that keeps growing
- Part 17: Animations that didn't need retargeting, and a live asset search
- Part 18: A scatter brush that feels AI-placed
- Part 19: The imposter that has to survive a forest
- Part 20: Faking depth on a flat plane
- Part 21: A faster renderer that wasn't faster
- Part 22: Clouds you can light, and culling that has to be fed
- Part 23: Fifty avatars and a voice in the room
- Part 24: Saving a world, and wind you can see
- Part 25: One skeleton, every outfit
- Part 26: Three ways to make water
- Part 27: An island from noise, ground that looks like ground
- Part 28: Grass to the horizon, and ground that hides itself
- Part 29: One controller, any body
Live spike map
Start with these if you want to click through the technical timeline directly. Each spike links to the live demo and its source — which opens the spike inside our Game Creator, where you can browse the full file tree, read the code, play it inline, and remix it into your own editable game.
Spike 1 terrain and instancing · source
Spike 2 worker physics · source
Spike 3 Durable Object broadcast load test ran as a service script, not a standalone page
Spike 4 mobile quality constraints, tested via Spike 1 query param
Spike 5 LLM behavior reliability, ran as a script, not a standalone page
Spike 6 chunk load and swap · source
Spike 7 vegetation from density maps · source
Spike 8 terrain material cost · source
Spike 9 cascaded shadows budget · source
Spike 10 clipmaps and geomorphing · source
Spike 11 heightmap chunk streaming · source
Spike 12 WebGPU marching cubes · source
Spike 13 WebGPU integration baseline · source
Spike 14 incremental hardening · source
Spike 15 seam scaffold · source
Spike 16 first Transvoxel face · source
Spike 17 dual MC LOD · source
Spike 18 heightmap seam · source
Spike 19 mixed-resolution corner · source
Spike 20 GPU corner seam · source
Spike 21 GPU MC corner seam · source
Spike 22 MC to HM fallback · source
Spike 23 policy-based chunk modes · source
Spike 24 clipmap rings and sky fog · source
Spike 25 heightmap brush on sampled data · source
Spike 26 SDF brush via GPU compute · source
Spike 27 HM + MC + brush integration · source
Spike 28 multi-material texturing · source
Spike 29 vegetation and shader grass · source
Spike 30 terrain physics and character controller · source
Spike 31 multiplayer terrain sync · source
Spike 32 water and swimming · source
Spike 33 code structure refactor · source
Spike 34 in-world authoring · source
Spike 35 combat animations and retargeting · source
Spike 36 live Poly Haven asset search · source
Spike 37 AI-assisted prop scattering · source
Spike 38 octahedral imposters · source
Spike 39 parallax occlusion mapping · source
Spike 40 visibility buffer renderer · source
Spike 41 imposters in a forest · source
Spike 42 imposter flicker fix · source
Spike 43 atmosphere and volumetric clouds · source
Spike 44 meshlet Hi-Z culling · source
Spike 45 batched avatar skinning and network sync · source
Spike 46 proximity voice chat · source
Spike 47 server-authoritative world persistence · source
Spike 48 avatar rig integration, reused as shared code by later spikes (no standalone page)
Spike 49 GPU wind on props and foliage · source
Spike 50 universal characters and wearables · source
Spike 51 screen-space reflection water · source
Spike 52 planar mirror water · source
Spike 53 production water library · source
Spike 54 procedural island generation · source
Spike 55 terrain shading and tiling breakup · source
Spike 56 GPU cross-quad grass · source
Spike 57 terrain occlusion culling · source
Spike 58 pluggable character controller · source
Spike 59 controller with a real avatar · source
Spike 60 Synty polygon animations · source