Sykla · the virtual world

The virtual world is ugly. Help me fix it.

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 Cary, North Carolina road in the engine: flat road, card-style trees, hand-tinted grass
Cary, NC. The best case. The road sits on the ground and the grade is real. The trees are camera-facing cards; the grass is a tinted texture; nothing casts a believable shadow.
Alpe d'Huez hairpins from above: roads on a flat carpet of green with scattered trees
Alpe d'Huez, from above. The hairpins are right and the road follows the real profile. The mountain under it reads as a green carpet: no rock, no scree, no treeline, no sense of scale.
Pikes Peak: a road between grey slab walls with white snow patches
Pikes Peak. I need to figure out how to turn these into realistic mountains.
Spa-Francorchamps from the rider's view: road at the edge of the terrain with a mirrored sky seam
Spa, rider's view. The terrain runs out at the tile edge, the sky is mirrored down the middle, and the road is the only thing that looks finished.

What it is

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.

The five questions

See it move

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 month

How to help

Comment 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.