← Kowloon // Vertical

Scene book

Ten rooms in the Walled City

Every image below is drawn by the game's own renderer — same materials, same baked lighting, same post-processing, no offline render and no touched-up pixels. The numbers under each plate are measured from the build that produced it. All ten together are 250,478 triangles and never more than 29 draw calls in a frame. Build time is geometry plus the shadow bake, with the textures already painted — every material in all ten scenes is generated once, on load, and then shared.

NEON THROAT — Two metres wide, nine storeys high, and every one of them selling something.
01 NEON THROAT Two metres wide, nine storeys high, and every one of them selling something.
37,266 triangles 29 draw calls 83 baked lights built in 328 ms
THE WELL — The only daylight in the building, eleven floors up and falling.
02 THE WELL The only daylight in the building, eleven floors up and falling.
50,888 triangles 23 draw calls 13 baked lights built in 384 ms
ELEVEN FLIGHTS — Green tile to shoulder height, and one working tube in four.
03 ELEVEN FLIGHTS Green tile to shoulder height, and one working tube in four.
17,914 triangles 19 draw calls 11 baked lights built in 605 ms
THE ONLY SKY — Above the twelfth floor the building stops pretending and becomes a village.
04 THE ONLY SKY Above the twelfth floor the building stops pretending and becomes a village.
24,406 triangles 23 draw calls 9 baked lights built in 270 ms
THE WET FLOOR — Six hundred watts of tungsten and a drain running the length of it.
05 THE WET FLOOR Six hundred watts of tungsten and a drain running the length of it.
26,250 triangles 27 draw calls 42 baked lights built in 309 ms
FOUR TABLES, NO WINDOWS — Somebody was still playing when it emptied out.
06 FOUR TABLES, NO WINDOWS Somebody was still playing when it emptied out.
17,566 triangles 19 draw calls 9 baked lights built in 100 ms
THE SUMP — Knee deep, and the only light is coming from something that should not be on.
07 THE SUMP Knee deep, and the only light is coming from something that should not be on.
22,122 triangles 10 draw calls 11 baked lights built in 106 ms
THE COLD ROOM — The tiles are new. Everything else in this building is fifty years old.
08 THE COLD ROOM The tiles are new. Everything else in this building is fifty years old.
8,802 triangles 14 draw calls 19 baked lights built in 108 ms
SIXTEENTH FLOOR, BACK ROOM — Rice cooker, six screens, and a door that locks. Bank your scrip here.
09 SIXTEENTH FLOOR, BACK ROOM Rice cooker, six screens, and a door that locks. Bank your scrip here.
14,278 triangles 20 draw calls 9 baked lights built in 63 ms
THE SPINE — Eighty metres, forty doors, one working light. This is most of the game.
10 THE SPINE Eighty metres, forty doors, one working light. This is most of the game.
30,986 triangles 18 draw calls 18 baked lights built in 489 ms

Why it stopped being voxels

The first version of this world was built from 60 mm voxels, and the verdict on it was that it looked like a bad Minecraft mod. That verdict was right, and the obvious fix — smaller voxels — was wrong. A voxel is a cube at every size, so halving one buys a finer grid of cubes, not a surface, at eight times the cost.

So the detail moved off the geometry and into the surface. A wall is now two triangles wearing a procedurally painted texture at 7.8 mm per texel, and the light is baked into it once, with real shadow rays, at build time. Nothing ships as an asset file: every texture in these ten scenes is generated in code when the page loads.

 Voxel buildNow
Detail resolution60 mm voxel7.8 mm texel
One 12 m tenement facade~200,000 triangles~400 triangles
A whole scenenever got there9k – 51k triangles
Draw calls per scenehundreds10 – 29
Lightingper-vertex AO, no shadowsbaked, ray-traced shadows
Cost per frame to lightzerozero
Asset files shippednonenone

Detail went up roughly eight-fold and the cost went down, which is the only reason any of this runs on a phone.

What these are not

They are authored rooms, not generated levels — composed the way key art is composed, to show what the engine can hold. The playable demo still builds its floors with the older path, so it does not yet look like this. Closing that gap is the next piece of work.