The real-world half of Sykla works. The winter half, riding a road again on your trainer at its real grades, does not look like this yet. These frames are unretouched.




A standalone wgpu engine in Rust (it started in Bevy; there's a Godot-through-gdext branch on the shelf). Terrain comes from a DEM heightmap; roads come from the same OSM road graph the real-world app rides on, so grades match the outdoor profile. Worlds are composed, an anchor plus a handful of hand-picked real roads and set pieces, after filtering raw OSM into a world produced an incoherent mess. Tiles stream as bincode city files. Trainers connect over FTMS through a native Rust BLE stack, so the sim runs off a real trainer.
Terrain meshing from a DEM at bike speeds over a 30 km alpine tile. Clipmaps? CDLOD? What do people actually ship? And what fixes the flat, faceted look: sampling, normals, or paint?
Conforming the road ribbon to the heightmap with cut and fill, embankments and drainage, without hand-modelling every kilometre. Is there a standard approach?
Rock above the treeline, scree on steep faces, grass below, snow that holds on the north side. What makes that read as real instead of painted?
At a cost a phone can carry. What pipeline, what asset format, what budget per tile?
Where do you get them, how do you make them coherent, and what do you never use?
The world runs inside the iPhone app with a trainer connected. This link gives a free month of the Complete membership that includes it. Beta builds go out on TestFlight: join here (100 seats).
Get the free monthComment on the Hacker News thread, or write to blake@thepayhive.com. Opinions, papers, repos, "you're doing it wrong" all welcome. If you've shipped a 3D world and want to look at the terrain code, say so and I'll send it.