Generated samples and design decisions for a Voronoi-volume base-building sandbox
Each section is one mechanism, one figure, and the numbers it produced. Reliability: measured unless noted. Prior art is Shardfall’s 2D Voronoi field (self-reported factors); the factors are reused, no code is.
Every site is a pure function of (seed, integer index): a lattice point plus a hashed offset. Any window of
the world can be rebuilt alone and neighbours agree exactly, so there is nothing to stitch.

Cell-area variation (CV, mean over seeds 0-3) at jitter 0 / 0.5 / 1.0 / 1.5 is 0.002 / 0.123 / 0.25 / 0.332. Jitter 0 is a plain grid; around 1.0 the lattice stops being readable but cells stay similar in size.
Sites vanish in noise-shaped patches, with the lowest-hash site of every 2x2 (3D: 2x2x2) index block always kept. That guard bounds the largest empty region and keeps the function local.

Jitter 1.0 alone: area CV 0.25. With dropout: 0.503, so cell sizes spread out about twice as much, which is what gives the sprawling look. In the 3D volume sample the CV goes from 0.248 to 0.689.
Cells group into sectors and sectors into regions by repeated power diagrams (weights), with an optional warp for a “loose” outline.

Seed sample: 401 cells -> 37 sectors -> 6 regions; plain and loose give the same counts, only the borders move.
Opening with a disk rounds convex corners only; concave corners stay sharp, so overhang undersides keep their edge.

On the seed shown the rounding removed 0.4% of solid pixels.
The same keyed sites in three dimensions; a vertical cut drifts, splits and loses cells as z rises. No height map.

Density is a softmax-weighted average of the 8 nearest cells’ solidity (+1 solid, -1 open); k is the softness.

An earlier two-nearest bisector blend never moved the zero surface at any k, so it was dropped. Solid share of the
cut stays ~0.51-0.52 for k = 0.02 / 0.5 / 1.2: smoothing changes shape, not volume.
Same field, same softness, only the site distribution differs. Floors, overhangs and caverns come from one field.

Numpy ray-march, not a production mesher. Surface extraction options (marching cubes, Transvoxel, dual contouring, surface nets) are listed in research; none is chosen yet.
Solid cells are nodes, Delaunay neighbours (edge < 1.7) are edges. Support is 1.0 at bedrock (z < 1.6), -0.09 per hop, one priority-queue pass, no physics solve.

Seed 3: 1318 cells, 465 solid, 114 anchors, 6365 edges. Digging a radius-2.0 pocket (32 cells) at the weakest mid-support site left 10 more cells unsupported. Caveat: that count depends on graph density; a looser edge threshold made the graph so redundant a 1.5 pocket cost only 2 cells. Treat this as a demonstration of the mechanism, not a tuned rule.
Raw numbers: images/metrics.json.