A world built from cells
The whole live city now goes through voxel construction. Hills have stepped solid sides. Roads, crossings and cycle tracks have their own surfaces. Buildings, bicycles, boats, birds and people use occupied-cell geometry, including the small pieces that make them recognizable.

Keep the language small
Put this beside world and road in the file that owns the world:
voxel_world(object_cell=1,ground_cell=8,height_step=1);Download a complete runnable world.
The model still writes a roof profile, a wheel, a branch or a beam. The engine treats those shapes as stamps into bounded cell volumes. It meshes the occupied cells, reconstructs continuous boundaries for curved stamps and merges flat faces. Explicit carved volumes retain exact cell faces. Existing voxels, fill and cut remain available when the model needs to carve cells directly.
The policy reaches imported templates, generated street furnishings, the player vehicle and decorative flocks after linking. It preserves their materials, measured envelopes, rigid animation pivots and destruction ownership. A bicycle still has a crank, two tires, a frame, a saddle and handlebars. Converting it doesn't turn it into one box.

Different grids do different jobs
| Construction | Representation |
|---|---|
| Object parts | Local occupied-cell stamps, 4..32 cells per axis; fitted to the authored envelope |
| Explicit volumes | The existing exact integer fill/cut grid and optional fracture chunks |
| Ground | Solid columns in streamed 400-unit tiles, with merged tops and exposed steps |
| Roads, paths and bridge decks | Exact cut-cell outlines over supporting columns, preserving lifts and connections |
| Crossings, cycle symbols and lane paint | Exact thin outlines, retaining their width below the ground-cell size |
| Water | Eight-unit surface cells, with shared continuous wave displacement and normals |
| Dust, sparks and splashes | One instanced draw of voxel particles in the existing fixed-size pool |
object_cell is .25..4 local units. The stamp fits its grid to the original part dimensions, with a four-cell minimum for small rings and fittings and a 32-cell maximum along each axis. Long beams remain cuboids; curved profiles use surface nets rather than stair-step silhouettes. Equal cell dimensions are approximate for fitted stamps. Use explicit volumes with equal size/grid ratios when exact cubic cells matter.
ground_cell is exactly 4 or 8 world units. height_step is .5..1. Ten world units represent a metre. These are construction settings, fixed for the world, rather than detail levels that change as the camera moves.
Ground and infrastructure are columns, so the engine doesn't allocate a kilometre-wide 3D array. Neighboring terrain tiles sample the same field and emit the height difference at their boundary. Surface lifts stay separate from height quantization, keeping markings above pavement and timber decks clear of asphalt. Water retains its wake simulation and cell-anchor attributes. Shared UV samples drive continuous displacement and normals; transparent tile skirts are omitted so loaded neighbours meet without dark seams. Bridge ramps and their pavement use the same continuous deck field.


Keep the mechanics that already work
Wheels and rigid joints still animate. Breakable tables, benches, trees and building sections retain their existing fragment groups and impact rules. Explicit chunked volumes expose their new cut faces when they break. Released shaped parts use the same voxel geometry as their intact versions.
Collision cylinders, bridge clearance and the smooth driving heightfield remain the mechanics contract. Hills still affect speed and jumps; visual steps don't add suspension jitter. The voxel surface approximates that smooth height between samples. This is not per-cell collision, editable terrain, arbitrary tunneling or automatic structural collapse. Destruction uses authored impact data. Pooled static destruction keeps intact props instanced, with bounded active assemblies and fragment mesh caches; it does not make every voxel a physics body.
Keep the browser in mind
Voxel construction currently uses more geometry-buffer memory than the same city with the world conversion disabled. Indexed column faces reduce that cost without changing the surfaces. The opening loader shows construction phases, and Dream validation runs in a worker. See the streaming and memory comparison for measurements, scope and remaining limits.
Static geometry streams in 800-unit chunks around the camera/player, including offscreen shadow coverage and movement prefetch. Distant chunk resources are disposed; complete collision, NPC, destruction and wave state remains resident. Bounded live render groups stay loaded. Returning recreates the same geometry. Static objects still use prototypes, instancing, material batching and spatial culling. Object stamp meshes share a bounded 16 MiB CPU cache; individual stamps never exceed 32,768 cells or the existing surface-quad limit. Landscape meshing works on one bounded tile at a time. No cell becomes a separate Three.js object or physics body, and intact objects don't remesh each frame.
The explicit fill/cut budgets are unchanged. Their project allocation limit describes authored volumes, while the construction cache contains reusable stamp surfaces. Browser measurements and capture provenance are in the verification record. Offline recordings show the geometry and motion; they aren't frame-rate benchmarks.
Voxel language reference · World authoring · Generated model contract