What's New in Voxel Play 4
beginner quick startVoxel Play 4 builds on everything in Voxel Play 3 and adds a new generation of terrain, rendering, model and gameplay systems. This page summarizes everything that is new, grouped by feature area and ordered by impact. Each headline feature links to its dedicated guide.
This page highlights what is new in Voxel Play 4. Functionality carried over from earlier versions is documented throughout the rest of this manual and still applies.
Voxel Play 4 targets Unity 6 and the Universal Render Pipeline (URP). The built-in render pipeline is no longer supported.
3D Terrain Graph
A visual, node-based editor for volumetric terrain generation - the flagship VP4 feature. The graph drives a true 3D density field, enabling overhangs, caves, floating islands and water placement at any height. See Terrain Graph Overview and the Node Reference.
- A full node library across noise generators, math operators, blending, terrain shapers, cave carvers and biome assignment, including Cellular Noise (Cells and Edges modes, 2D and 3D), Ridge Noise Fractal (no noise texture required) and Sphere 3D.
- Graph-driven water placement at any height, controlled entirely by the graph.
- Biome blending for graph worlds via the new Biome Blend parameter in the Climate Map node, which dithers biome borders (0 = hard cut).
- Ores are supported by 3D graph generators through the Ores toggle in the Voxel Generation section.
- Terrain Generator to 3D Graph converter to migrate classic worlds.
- Min Island Width filter removes floating islands narrower than a configurable number of voxels, applied consistently across painted chunks, the distant LOD and detail generators.
- Performance: parallelized halo evaluation for multi-core CPUs (~5x speedup), column caching (~10x for 2D-heavy graphs), an all-air fast path and an optimized binary-refined height scan.
- Editor quality of life: undo and redo of graph edits, node rename via right-click context menu, node groups to organize the graph, and dedicated Voxel / Vegetation / Tree / Water output ports on the Climate Map node.
Smooth Terrain & Smooth Voxels
Optional Surface Nets meshing renders terrain as smooth, rounded surfaces instead of hard cubes, driven by the 3D Terrain Graph density field. Per-voxel control lets you mix smooth ground with blocky structures in the same world. An optional tessellation mode in Shader Features refines the smooth surface further. See Smooth Terrain & Smooth Voxels.
Native Pathfinding
A pathfinding system that runs A* directly on voxel data: no NavMesh baking and no duplicated navigation graph. Searches run on background worker threads, so crowds of agents can request routes without hurting the frame rate, and paths react instantly to terrain edits - build a wall or dig a tunnel and any path crossing the modified chunks is recomputed automatically. Voxel Play 3 relied on Unity NavMesh surfaces, which had to be rebuilt after every change. See Native Pathfinding and the Pathfinding API.
- Path Agent component for crowds: grid based separation, congestion aware routing and stuck recovery.
- Agents step up one voxel, drop down a configurable height, move diagonally without cutting corners and wade through shallow fluids.
- Per-voxel Pathfind Cost (1 = normal, higher values are avoided, 0 or negative makes the voxel impassable).
- New Native Pathfinding section in the Voxel Play Environment inspector: worker threads, max search nodes, callback budget and default wade depth.
- Asynchronous
FindPathrequests with callbacks, and a partial path returned when a search hits its node budget.
Super Chunks (Distant Terrain LOD)
A distant-terrain level-of-detail system for Terrain3D worlds. Far regions are rendered as coarse super chunks, extending view distance without the cost of full-resolution meshing. See Super Chunks.
Chunk Occlusion Culling
A new CPU-side visibility system that skips drawing chunks the camera cannot see because they are sealed off by solid blocks - ideal for caves, tunnels and enclosed interiors. Unlike GPU depth-buffer occlusion, it culls by following open-space connectivity outward from the camera, so it works best when areas are separated by walls or terrain. Enable it with the Occlusion Culling toggle in Voxel Play Environment. See Chunk Occlusion Culling.
Structural Collapse & Destructible Debris
Destroyed voxels now bring down whatever they were holding up. Groups of solid voxels that lose contact with a support fall as single debris bodies you can keep shooting apart, cables drop their whole span when a pole is cut, and the whole system is driven by data plus a scripting API.
- On by default via the Collapse On Destroy World Definition switch; turn it off for classic "voxel just disappears" behavior. Collapse In Build Mode extends the same behavior to build-mode edits.
- Per-voxel Collapse Behavior (Auto / Anchored / Tension), Max Debris Size (falling pieces are cut to this length per axis; 0 shatters the type into particles instead of falling) and Max Support Distance (how far a material carries load away from its supports), with automatic participation for solid block types.
- Destroying voxels only triggers falling when the structure is actually cut through, so spans supported at both ends survive single-voxel damage.
- Falling islands become one destructible debris body (merged mesh, compound collider and rigidbody) with impact and tumble dust; a collapse that splits a structure into disconnected pieces drops each piece as its own body, and falling debris snaps hanging cables so the load drops free. Removal modes: stay forever, sink into the ground, or smart-remove off screen.
- Debris takes damage cracks when hit and heals over time like regular voxels.
- Connectivity resolves down to the microvoxel level, so chipping a detailed model can drop the rest.
- Improved explosions: the new
VoxelExplodeAPI blasts an area and throws part of the rubble outward as the same destructible debris bodies. - New events and API (
WouldCollapse,GetCollapseDebris, debris damage and removal, collapse and debris callbacks). See Structural Collapse and the scripting reference.
Fire, Smoke & Fire Spread
Fire is now a gameplay system rather than an effect. Any voxel can be set on fire, the flames propagate through flammable materials, and burnt voxels are transformed according to their definition.
- Voxel fires: anchor a fire to any voxel with
SetVoxelOnFire, with rising smoke columns, optional torch-like light and gameplay events. - Fire spread driven by per-definition Flammability, Burn Duration and Burns Into; water contact extinguishes fires with a steam burst.
- Burn outcome per voxel definition: Disappear, Transform or Char. Charred voxels darken progressively and no longer reignite.
- Smoke particles: rising columns and bursts with buoyant ceiling pooling, ember ignition colors and semi-transparent rendering, also available standalone via
CreateSmokeParticle(s). - Cancellable
OnFireSpreadevent reporting source and target voxels.
Microvoxels, Tinting & Graffiti
Building with sub-voxel detail gained color. Microvoxel shapes can now be tinted, sprayed and copied between blocks, and the model converter renders microvoxels with the correct textures from the parent VoxelDefinition and its secondary material profile (Slabs, TopCap layouts, per-quad palette routing), enabling detailed colored decorations that blend into the chunk mesh. See Colored Microvoxels & Material Profiles.
- Copy and stamp: hold Ctrl while picking a block to also copy its microblock shape, tint and graffiti, then stamp them onto the blocks you place.
- Graffiti: paint individual microvoxel cells with palette colors at runtime (
MicroVoxelSetColor), demonstrated by the Demo 1 spray mode. - Tint colors can be re-applied to already placed voxels at runtime (
RefreshTintColor,RepaintWorld), and a Tint Gradient no longer bleeds into definitions sharing the same texture. SetMicroVoxelsapplies a microvoxel shape and its colors to a voxel at runtime.
Sky & Clouds
The sky was redesigned and clouds gained a second, mesh-based style, selectable in the World Definition under Clouds > Style:
- Chunks (default) - legacy voxel clouds written into the chunk system.
- Mesh - a dedicated cloud mesh that enables smooth coverage transitions, horizon reach and volume, with directional sun shading, a configurable Sun Scatter glow toward the sun and multi-altitude formations. Clouds render opaque so they blend correctly with volumetric fog.
Skybox changes:
- Sun and moon redesigned as crisp circular voxel sprites.
- Procedural stars now use a realistic polychrome color palette.
- Drive Unity Ambient: Ambient Light feeds Unity's environment lighting when using a Voxel Play skybox, so it works without a baked ambient probe.
Shared cloud parameters:
- Voxel - the VoxelDefinition used to render the clouds.
- Coverage (0-255) - amount of cloud cover.
- Altitude (0-1024) - cloud layer height in the world.
Mesh style adds three parameters:
- Max Height (2-12) - ceiling for vertical voxel layers per column; actual height is driven by Height Variation and noise.
- Height Variation (0-1) - how much per-column noise drives height toward the ceiling (0 = flat layer height, 1 = full spread up to max height).
- Altitude Spread (0-1) - how much cloud bases and tops shift vertically between formations (0 = aligned layer, 1 = full spread).
Biome System Upgrades
The biome system gains finer climate control, smoother transitions and richer underground detail. See Biome System Upgrades.
- Biome Tinting: smooth surface color blending between biomes through a per-biome Terrain Tint Color. It replaces Biome Mixing and requires Enable Tinting.
- Geological Layers: define global underground strata in the World Definition, shared across all biomes. Layers are assigned by absolute altitude (Y); biome-specific underground voxels take priority, with global strata filling the remaining probability proportionally.
- 3-axis biome selection: BiomeZone now adds a temperature range alongside altitude and moisture.
- Per-biome shore voxel via the new BiomeDefinition
voxelShorefield. - Underground ceiling vegetation: place CutoutCross vegetation on cave and overhang ceilings (graph bottom-facing surfaces and classic tunnel ceilings) reusing the same VoxelDefinition as surface vegetation - no duplicate upside-down asset needed. Cross voxels auto-render upside-down when there is solid rock above and air below.
- Inspector: new Smart Biome Surface toggle; Biome Mixing is hidden for 3D Terrain Graph worlds; the Textures section is grouped under Rendering.
PBR Materials & Rendering
- PBR support extended to the model shader with full surface map support (metallic, occlusion, height, smoothness). Voxel shaders already supported PBR in VP3; this brings the same maps to ModelDefinition rendering.
- Surface map packing utility to pack separate PBR textures into a single surface map, plus runtime packing via API.
- URP screen space decals with rendering layers now work on voxels, through the new Rendering Layers option in the environment inspector.
- Configurable Max Point Lights (8-128, default 32) under the Bright Point Lights section.
- Smooth Lighting AO Strength slider (0-1) controls the corner darkening baked at voxel edges; the former Obscurance Mode is now Sunlight Curve.
Texture Anti-Tiling
A new option in the Voxel Play Environment that breaks visible texture repetition on opaque voxel albedos using stochastic sampling, with an optional far-detail crossfade that restores low-frequency variation when mips flatten distant surfaces (Grid Scale, Far Detail Scale, Far Detail Blend). See Texture Anti-Tiling.
- Per-voxel Disable Anti Tiling toggle.
- Biome top voxels automatically skip anti-tiling on their side texture slices, preserving baked grass-to-dirt gradients.
World Editor Tools
The in-scene world editor gains new tools for water and for sculpting with the voxel brush. See World Editor.
- Water Fill: click inside an enclosed basin to flood it with water up to the clicked level in one operation, with a translucent preview of the resulting lake, leak detection when the basin is not watertight, and Max Radius / Max Volume limits. Hold SHIFT to drain a connected water body.
- Water Source: pour a deterministic cascade from any point - a falling column plus the pools where it lands, re-spilling into lower tiers. This is the editor front end of the
VoxelPourAPI, with Spread and Shortest Path flow modes. - Brush rotation with the G key.
- Add Voxels paints on side faces conforming to the wall surface, and sculpts with soft brush shapes, raising or carving any face gradually toward the brush relief.
- The eyedropper (C) also samples the per-voxel tint color, so placed voxels match the picked one.
Dynamic World Load & Chunk Recycling
The dynamic load system was reworked so memory stays flat on large edited worlds. Saved chunks are recycled when the player travels away and reloaded from the savegame on demand when they come back, instead of accumulating for every visited area. Chunks with unsaved changes are never recycled, and saving merges back the chunks that are no longer in memory. See Dynamic World Load.
OBJ Export
Export any ModelDefinition or VoxelDefinition (including microvoxels) to OBJ with full texture support - primary and secondary materials included. Use the Export button in the inspector or the API. See OBJ Export.
- Cutout and CutoutCross voxels: binarized alpha cutout baked into PNG +
map_din the MTL; CutoutCross also gets double-sided crossed quads. - Custom prefab voxels: prefab hierarchy baked honoring
vd.offset/rotation/scale, with Unity-standard materials preserved.
Voxel Behavior & Gameplay
See Voxel Behavior & Gameplay.
- Drop item prefabs: voxels with a
VoxelDefinition.dropItemassigned now spawn the item's own prefab when destroyed, instead of a generic recoverable voxel. - Configurable pickup radius: a global Default Pickup Radius in the Voxel Play Environment, with a per-item override via
ItemDefinition.pickupRadius(0 = use global). - Destroy With Voxel Below option for CutoutCross voxels (default true); disable to keep cross voxels in place when the voxel below is removed (cobwebs, barbed wire, decals).
- Cross voxel Width Variation (
vegetationMinWidth/vegetationMaxWidth) exposed as a MinMaxSlider, giving each grass/flower instance a deterministic horizontal scale. - Cross voxel Highlight Scale (Vector2) to fine-tune the highlight box when the texture does not fill the full cross quad.
- Placing a solid on a liquid replaces it: aiming at a water or lava voxel and placing a non-liquid block overwrites the liquid instead of being rejected.
Voxel Reactions
Define what happens when two voxel types touch in a Voxel Reaction Set asset assigned to the World Definition - no scripting required. Rules match sides by voxel definition, water/fluid family or tag, filter by liquid state (source/flowing) and contact direction, and can keep, remove or transform each side, with optional vapor burst and sound. Checked automatically on voxel placement and while liquids spread. Includes the classic example: lava + water hardens into rock. See Voxel Reactions.
Scripting & API
- Assembly definitions: Voxel Play now compiles into its own assemblies (VoxelPlay / VoxelPlay.Editor / VoxelPlay.Demos). External code in its own assembly definition must reference
VoxelPlayand use the public API. See Upgrading from Voxel Play 3. - Deferred and batched voxel writes:
VoxelDeferredWrite/VoxelPlaceDeferred(with optional texture rotation so detail generators can orient their props) andVoxelPour, a reusable deterministic liquid-cascade API used for waterfalls. ChunkResetoverloads restore one or many chunks to their saved state.- Chunk events:
OnChunkOccluded/OnChunkRevealed;OnChunkRenderis also raised for chunks that end up empty;OnChunkChangedreports edits made from inside the handler itself. - Fire and reactions: cancellable
OnFireSpread,OnVoxelReaction/OnVoxelReactionBeforeandCreateSteamEffect. VoxelSetSmoothOverride/VoxelGetSmoothOverrideforce a smooth-terrain voxel to render cubic (crisp kerbs and steps), andModelBit.smoothOverridecaptures and restores those overrides with the model.- World-position MicroVoxel brushes (no VoxelHitInfo / normal offset required): cube (
position, size), box (boxMin, boxMax) and sphere (center, radius) overloads ofMicroVoxelPlace/MicroVoxelDestroy, with a single-voxel fast path, optionally reporting which microvoxels changed. MicroVoxels.GenerateThumbnail()renders a preview image of any microvoxel shape to a Texture2D (runtime and editor).VoxelPlayOBJExporter.ExportModelToOBJ/ExportVoxelToOBJgained an optionalfileNameparameter (useful for in-memory ModelDefinitions);ExportVoxelToOBJalso gained an optionalforceAlphaCutoutnullable bool.VoxelPlayConverter.GenerateVoxelObjectoverloads for microvoxel / PBR voxel / model conversion.TextureTools.PackSurfaceMap()for runtime PBR texture packing.ModelPlacegained an optionalskipEmptyVoxelsparameter so empty voxels no longer overwrite existing ones (place models inside water or filled volumes without air pockets).- Placement animation is explicit per call through the
playAnimationparameter; scriptedVoxelPlacecalls write directly.
Demos & Samples
- New Demo 8: Floating Islands showcasing the 3D Terrain Graph, smooth terrain and underground ceiling vegetation.
- New Demo 9: Native PathFinding showcasing agent crowds navigating an edited voxel world.
- Demo7_SmoothTerrain ships a terrain graph that replicates the Demo 1 Earth terrain.
- Demo 1 (Earth) adds interactive examples: press I to set the targeted voxel on fire, P to spray graffiti on any surface.
Suggest an improvement
Help us improve this documentation page.