A racing game built on this engine: a car, a forest road, and a world too big to load, which streams in around the player as they drive it. It is here because it is the engine's heaviest single exercise — a 3D Tiles world paging under a moving camera, a road carried over the ground it crosses, rigid-body collision against tiles that arrived a second ago, and a frame budget a game actually has. What it needs, the engine grows; the game stays thin.
pip install glisteel glisteel-editor
glisteel-bake --output /tmp/world # hill country, half a million trees, an 8 km circuit
glisteel /tmp/world/tileset.json # drive it
The circuit is routed through the land rather than laid on it: on the ground where
the ground allows, on a walled causeway over the low ground, on a viaduct across the
valleys, and through a bore where neither will do. glisteel --autopilot
drives a lap by itself, which is the quickest way to see one and the same code an
opponent car runs.
The track editor is how a circuit of your own is drawn and baked.
| Part of the game | What the engine supplies |
|---|---|
| The world it drives on | Streamed 3D Tiles — tiles refined by screen-space error around the car, evicted behind it under a memory budget, and registered as static colliders as they arrive, so the car drives on exactly what it can see. |
| The road itself | Roads — a centreline and a cross-section swept
into a drivable surface, with the earthworks, structures, barriers, banking and
signs. The baked road carries its centreline in the tileset's
extras, which is how the starting grid, the lap timing and the
autopilot find the track inside what they stream. |
| The car | Physics & Collision — a
raycast vehicle on omi_physics, stepped at a fixed rate, with
contacts read on the step that made them. |
| What the car looks like | PBR and
the uber-shader — painted metal, and a
refractive canopy through KHR_materials_transmission, so the cabin
seen through the glass is the cabin that is there. |
| What the car reflects | Image-based lighting. Painted metal is almost entirely its surroundings, so a car lit by a bare sky gradient reads as a toy; the road knows what it runs through, and hands the renderer a small panorama of that place — canopy overhead with sky broken through it, a lit portal fore and aft inside a bore, open sky over a treeline on a viaduct. |
| Trees, and what grows under them | Vegetation — the forest as a table beside the world, drawn as instanced sets chosen against the view. |
| What the driver is told | The HUD and the overlay UI — the in-world instruments, and the menus, settings and key-binding screens around the race. |
| Rivers and lakes it crosses | Water. |
| Shipping it | Packaging — a frozen bundle and a Debian package carrying their own interpreter, built from the engine's own hooks. |
What is left once the engine has the rest is the part that makes it a game: the car's handling and where the camera watches from, the lap timing, the rules about what ends a run, and the ways of driving.
Steering is a design question, not a binding. A keyboard says a key is down or it is not, and a driver's hands say a great deal more, so the game offers several readings of the same key — turn the wheels and hold the line between inputs, turn them with nothing put in for you, move the car across the road, take a lane over, or let it drive until you interrupt. Each is a different game on the same physics.
A crash is contact, asked of the physics rather than inferred from how near two cars are, and how hard is the speed they were closing at along the contact when they met. The reading is taken inside the fixed step that made it: resolving a contact is precisely cancelling the velocity that measures how hard it was, so a step later a square-on impact measures as nothing and whether a crash registered would come down to where the frames happened to fall.
No vehicle in it is hand-modelled. The player's car, its wheels and
the five traffic vehicles are one run of a Blender script, and the .glb
files are build output.
The pictures of the game on this site are taken from a recorded session rather than from a live drive. Replaying one drives the engine's clock from the recorded frame times and puts the session's randomness back, so the car reaches the same place on every machine; the capture is then asked for by frame number rather than after a delay, because under a replay the frame is the deterministic thing and the wall clock is not. Two runs write the same bytes.
OPENGLCONTEXT_TELEMETRY_REPLAY=sessions/doc-lap.jsonl \
glisteel world/tileset.json --view chase --no-hud --autopilot \
--capture-frame 1297 --capture viaduct.png
GLinting Steel is its own distribution and its own repository,
github.com/mcfletch/glisteel, whose
README.md is the reference for the game's own modules, its handling
constants and its scenarios. The world it drives is baked by
glisteel-editor over the
octree baker.