Props & Details

intermediate feature

Voxel Combat Zone · Guide

Beyond buildings and damage, the generator dresses the city with props, fortifications, infrastructure, vegetation and graffiti. Each is an independent feature toggle (see Generator Settings).

Fortifications

  • Perimeter wall with gates at street crossings and watchtowers (slits and merlons) at corners and gates.
  • Gate checkpoints — sandbag nests on both sides, anti-tank hedgehogs and striped barriers over an oil drum.
  • River bridges — concrete decks with asphalt roadway, railings, paired piers to the riverbed and causeway approaches on both banks.

Props

Wrecked cars (on the asphalt, clearance-checked), dumpsters, wooden benches, oil drums and sandbag stacks; a street-market souk; a stone well in the old town; and lattice tower cranes with counter-jibs over the skyline.

Power lines and cables

Street power poles carry catenary cables strung pole-to-pole along street centrelines; both endpoints exist by construction, so cables never dangle into space. Building cables cross narrow alleys facade-to-facade, some hung with laundry. Poles that would fall inside a crater are dropped from the plan.

Vegetation

Dry scrub, weeds, date palms and olive trees reclaim the ruins, denser along the seam and thinning with distance. All vegetation is bespoke content (no third-party stock assets) and is clearance-checked so it never grows inside a building footprint.

Graffiti

Texture-stamped graffiti marks facades, interiors, rooftops and the perimeter wall, with a density control. The stamp sets live in the Textures and Rooftop Textures foldouts of the generator.

How props are built (internal code map)

Every prop, vegetation piece and fortification is native voxel content: there are no imported meshes or prefabs. Each shape is first drawn as a list of marks in micro-voxel space (Voxel Play 4 subdivides every voxel into a 16×16×16 grid), then rasterized into per-voxel MicroVoxels stamps and written straight into the world. That is why props are as destructible and collapsible as the buildings around them.

Cached vs. procedural. Most shapes are cached templates, built once at load and flagged isShared, then reused by every instance: all the street props (wrecked cars, dumpsters, oil drums, benches, sandbag stacks, tower cranes, the stone well, checkpoint hedgehogs and barriers, rooftop dishes) plus the eight date-palm variants. Olive trees are the exception — each one is generated from scratch (gnarled forked trunk, capsule branches, dithered leaf pads) and then run through a rooted-connectivity flood fill so no leaf floats free of the tree.

Placement. During chunk generation the scatter passes walk each chunk with a deterministic per-chunk RNG, so a given seed always rebuilds the same city, density-weighted toward the front-line seam. Before a template is stamped it is clearance-checked against existing voxels and, for trees, against the plan’s building footprints, so nothing grows through a wall or floats over a crater.

If you open the source, this is where the pieces live:

  • CombatZoneGenerator.Shapes.cs — the static shape library (cars, dumpsters, drums, benches, sandbags, cranes, wells, market stalls, hedgehogs, barriers, dishes) and their rasterizers.
  • CombatZonePalmShapes.cs — the eight shared date-palm templates.
  • CombatZoneGenerator.Props.cs — scatter and set-piece placement (ScatterProps, checkpoints, cranes, wells, rooftop props, rubble).
  • CombatZoneGenerator.Vegetation.cs — palm and olive scatter and sculpting (ScatterTrees, SculptPalm, SculptOlive).
  • Sculptor.cs (World Play) — the thin wrapper that turns those stamps into Voxel Play calls.
at load, onceCombatZoneGenerator.Shapes.csstatic prop shapesCACHED TEMPLATESBuilt once at load into MicroVoxels stamps,flagged isShared. Cars, dumpsters, drums,CombatZonePalmShapes.cs8 palm templatesbenches, sandbags, cranes, wells, hedgehogs,barriers, dishes and the 8 palms live here.Reused by every matching instance.reused byper chunk (AddDetail)CombatZoneGenerator.Props.csScatterProps / Checkpoint / CraneSCATTER + CLEARANCEDeterministic RNG per chunk. Picks a cachedstamp, checks the target cells are empty andCombatZoneGenerator.Vegetation.csScatterTrees / SculptPalm / SculptOliveon solid footing, then hands it to the sculptor.OLIVES ARE PROCEDURALOlive trees are built fresh per instance(OliveMarks), not cached; a rooted-connectivitypass drops floating leaves before placing.Sculptor.csWorldPlay sculpting wrappercallsVoxelPlayEnvironmentVoxel Play 4 runtime APIVOXEL PLAY 4 APIsenv.VoxelPlace(pos, def, microVoxels / shapes)FillMicroSet · FillMicroMergeSet · FillMicroenv.GetVoxel (clearance) · EnsureCollapseOpaqueenv.SetVoxelOnFire (burning wrecks & drums)

The sculpting layer sits on a handful of Voxel Play 4 entry points, all reached through the environment singleton:

Voxel Play 4 APIWhat Combat Zone uses it for
MicroVoxelsThe 16³ per-voxel sub-grid that every shape is rasterized into.
env.VoxelPlace(…, microVoxels)Writes a shape into the world. The FillMicroSet / FillMicroMergeSet helpers place many cells at once, merging when a multi-material prop shares cells across material passes.
env.GetVoxelClearance checks — is the target cell empty, is there solid footing below.
env.GetTerrainHeightAnchors a prop to the ground when a chunk-local ground level is not yet available.
env.SetVoxelOnFireAnchors flames to burning wrecks and trash drums.
Was this page helpful?