Skip to content

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

  1. Part 1: We started by trying to break it
  2. Part 2: Worker physics and the input lag fear
  3. Part 3: The unflashy spikes that saved us
  4. Part 4: Streaming before fancy terrain
  5. Part 5: Budgeting the pretty stuff
  6. Part 6: Clipmaps changed the plot
  7. Part 7: Marching cubes and the first real caves
  8. Part 8: Integration without losing our baseline
  9. Part 9: Transvoxel started with a scaffold
  10. Part 10: Seam chaos and the corner boss fight
  11. Part 11: Policy mode, not hardcoded mode
  12. Part 12: Rings, sky fog, and what we would do again
  13. Part 13: Terrain sculpting and the death of the math function
  14. Part 14: The world comes alive
  15. Part 15: Replace the baseline, then sync it
  16. Part 16: Structure for a world that keeps growing
  17. Part 17: Animations that didn't need retargeting, and a live asset search
  18. Part 18: A scatter brush that feels AI-placed
  19. Part 19: The imposter that has to survive a forest
  20. Part 20: Faking depth on a flat plane
  21. Part 21: A faster renderer that wasn't faster
  22. Part 22: Clouds you can light, and culling that has to be fed
  23. Part 23: Fifty avatars and a voice in the room
  24. Part 24: Saving a world, and wind you can see
  25. Part 25: One skeleton, every outfit
  26. Part 26: Three ways to make water
  27. Part 27: An island from noise, ground that looks like ground
  28. Part 28: Grass to the horizon, and ground that hides itself
  29. Part 29: One controller, any body

Live spike map

Start with these if you want to click through the technical timeline directly.

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