ScorchedVoxels
Stages convert to voxel terrain at load: explosions and melee swings carve real craters the whole lobby sees. The loading wait hides a four-game arcade with a pet terrarium. Optional gore (off by default) cuts bodies along real swing geometry.Changelog
0.20.72 "Blood Money"
Network protocol changed. All players must update. A mismatched player stays on vanilla terrain with a chat warning.
- EVERY PRIMARY LEAVES A MARK NOW. Three survivors slipped through the wound system because their attacks are neither bullets, blades nor blasts: Huntress arrows, REX syringes and Railgunner's default fire. All three wound their targets now. Huntress arrows stay planted in the wound, REX's healing syringe visibly drinks a green wisp out of the victim, and Railgunner's smart rounds spark on impact. Wounds from these attacks show for everyone in the lobby.
- BIG HITS TEAR CHUNKS OUT OF LIVING ENEMIES. A heavy blow can rip a piece of the body away while the enemy keeps fighting: the torn chunk drops to the ground and crumbles away, and the hole it left shows flesh, bleeds, moves with the body, and stays through death, where the killing blow finishes the job on the same mangled mesh. Chunk bites are rare on ordinary hits and roughly one in ten on heavy hits (a MUL-T rocket, a fully charged slam). Enemies never lose limbs they still need; the bite is cosmetic and their hitboxes are untouched. Players are exempt.
- THE TANK: A PET LIVES IN THE ARCADE NOW. The loading screen's fourth game is a terrarium with one small stone creature in it, and it eats what you carve. Everything you blast out of the ground during a level collects in a see-through canister, sorted by what it really was (stone, metal, crystal, ice, sand, wood, lava, plain earth); press FEED and it pours in as layered sediment while the pet scurries under the stream and chews. The tank persists per profile and becomes a core sample of your runs. The pet grows through five stages as it eats, from an inert pebble to something openly molten. Every pet is its own creature: a seed rolled on first meeting decides its body among eight shapes, its coat, pattern, eyes, one of over two dozen accessories — hats, halos, snail shells, scarves, a tiny pebble friend — and rarer sparks: shiny coats, animated auras, and foil sheens finer than its own pixels. A CHANGE CANDY rerolls the look whenever the canister holds 50k m³ to pay for it; growth is never touched. A SHRINK PILL (5k m³) winds a grown pet back one stage for owners who miss the pebble days — it keeps eating and simply grows again. Click the dirt and the pet digs there. In a lobby, opening your tank shows it to everyone: a live miniature appears under your player card, pet and all, and closes with the tank.
- THE PET DIGS UP NAME EFFECTS. Evolutions unlock animated treatments for the name on your loading-screen card — calm coats, dripping or crackling letters, glowing gold, and two ceremonial finales for the longest journeys. Unlocks announce on the same reel the lottery spins, a NAMES section joins the picker in settings, and the whole lobby sees what you wear.
- GORE KEEPS UP WITH LATE-GAME SWARMS. The gore system paces itself when dozens of enemies die in the same second: past a budget, the extra kills keep their blood and the plain death instead of full dismemberment, so the kills you can actually watch stay spectacular while a wiped screen of Swarms beetles stops eating the framerate. Corpses dissolving under acid also stop paying for mesh chewing you are too far away to see, and each enemy species' cut data is prepared once when it first spawns instead of on its first death — the hitch the first kill of a big monster used to cause is gone.
- FORTY-THREE NEW CARDS JOIN THE LOTTERY. Ten painted patterns: magma cracks, a topographic survey, a split geode, circuit traces, tally marks scratched into concrete, stained glass, urban and void camo, the shattered moon over Petrichor V, and the cube the teleporter became. THIRTY-ONE animated cards move live on your card while everyone loads — demo-scene fire, plasma, an aurora, a lava lamp, a hyperspace starfield, an oscilloscope, a radar sweep, a heart monitor, digital rain, a seismograph, a spectrum analyzer, ripple interference, underwater caustics, a thunderstorm, snowfall, a tiny solar system, a black hole, a comet, flowing magma, an erupting volcano, a jellyfish, fireflies, city lights, a lighthouse, a campfire, a rushing tunnel, a neon wireframe cube, a rotozoomer, and three arcade throwbacks (Paddles, Snake, Brickwall) that play themselves on the card. Two more wear a LIVE piece of the game itself — Living Void and Living Flame borrow the same void-fog and flame shaders the pet's rarest skins hunt down, playing in real time on the card face. The picker gives animated cards their own section.
- UNLOCKS PLAY OUT ONE REEL AT A TIME. Every prize — lottery titles, card patterns, the pet's name effects — now waits in a queue, and the reveal reel landing on a loading screen is the moment it truly unlocks. Win three things in one stage and three reels spin under your card back to back; a screen that ends mid-spin keeps the prize queued and replays it next time, so nothing is ever lost. The pet's unlocks finally get the same ceremony the lottery always had.
- FIFTEEN NEW TITLES join the lottery pool.
- THE LOTTERY PAYS OUT MORE OFTEN. Every cleared stage now rolls an 8% chance at a title and a separate 8% chance at a card pattern, up from 5%. The card pool tripled this release; the drip keeps pace.
- A PLATINUM PORTRAIT RIM SHIMMERS NOW. The top lifetime-carve tier finally looks the part.
0.20.71
Network protocol changed. All players must update. A mismatched player stays on vanilla terrain with a chat warning.
- KILLS ARE COMIC GORE NOW. Every enemy death goes physical: canned death animations are gone, bodies ragdoll and flop, and the blow that killed decides the rest. A blade cuts the body in half along the actual swing, an explosion rips it into flying wedges, a bullet death drops it where it stands — still cuttable by whatever lands next. Cut surfaces show flesh and bone, stumps bleed, and the pieces are meat too: cut them again in the air. All of it is cosmetic and local; corpse shapes never affect gameplay.
- BLOOD TO MATCH. Kills splash blood decals onto the terrain, flung pieces dribble in flight and splat where they land, droplets mist and soak into the rock, a sword swing flings the victim's blood along its arc, and bullets leave bleeding wounds on live targets. Everything rides hard caps, so a messy fight cannot run away with your frame rate. The new Blood Amount slider scales the mess (the host's value applies to the lobby, so every screen shows the same scene), and the Gore switch turns the whole thing off.
- ELEMENTS SIGN THEIR KILLS. Fire chars the body and exhales smoke, ice frosts it over and shatters, acid eats it down to a husk, lightning arcs across it, void deaths collapse with rising sparks. Massive overkill stages the full show — acid devours the corpse whole, ice grows extra shatter planes, void pulls the body into a singularity. Gilded elites bleed gold; void elites bleed glossy glowing purple.
- CORPSES STICK AROUND. Bodies linger about two minutes and stay cuttable the whole time. A rested corpse freezes its physics until something pokes it awake (a blast, a swing, a carve underneath it), so a battlefield full of bodies costs almost nothing to keep.
- THREE BLOOD CARDS JOIN THE LOTTERY. Blood Splatter, Red Rain and Void Blood are new card backgrounds a cleared level can unlock.
- THE LOADING SCREEN HAS AN ARCADE. While a stage converts, a PLAY button appears under your player card (G works too): an endless runner where your Commando sprints past the creatures from the game's own loading-screen pixel art — Lemurians, Golems, Children on the ground, Drones at head height. Jump with Space or a click, duck with S or Ctrl, score is distance. If someone won an unlock, its reel plays out first; the arcade opens a few seconds after. The game ends the instant the stage is ready — the arcade never delays loading.
- GAME TWO: WORMS. A turn-based artillery duel on its own destructible pixel terrain — five kinds of battlefield plus ancient ruins, painted to match the stage you're headed to. Nine weapons wearing the game's own item art: bazooka, grenade, cluster bomb, meteor strike, molotov, thunderbolt, drill, gravity cube and bunker. Play solo, or the lobby takes turns; every crater you blast stays for the rest of the match.
- GAME THREE: THE CIRCUIT RACE. A seeded grand-prix loop stacked several levels tall — climbs, dives, forks, a summit — painted in the palette of the stage you're about to land on. Tap to jump, hold RIGHT CLICK to throw a grappling hook and swing from anywhere. Solo hunts a best lap; multiplayer runs elimination rounds on a freshly rolled track each round, where falling off the leader's screen puts you out.
- PICK YOUR COMMANDO'S COLORS. Settings > Mod Options > ScorchedVoxels > Choose Arcade Colors opens a grid of your runner in 16 team colors, walking in place. Click up to three in order of preference — your favorite is the one that runs.
- HOSTS CAN LOCK THE LOADING SCREEN. A LOCK LOADING button sits in the bottom-left corner of the loading screen (host only). Locking keeps the stage from starting so the lobby can finish an arcade round; unlocking releases it instantly. Loading is never held unless the host asks.
- DEBRIS IS NOW THE ROCK YOU BROKE. What flies out of a crater adds up to the volume that was actually removed — graze a wall and pebbles skitter, bury a rocket and boulders come out. Sword cuts drop a slab shaped like the cut itself. And big pieces break apart when they land, shattering into smaller chunks that scatter and tumble. All of it stays visual-only, so it costs about as much as the old debris did.
- MORE OF THE WORLD BREAKS. Sundered Grove converts for real now (its whitelist never matched the map's actual mesh names — the terrain, walls, giant roots and shrooms all carve). Void Locus turned out to have been running mostly vanilla too: its terrain, cavern roofs, platforms and walkways now convert. Siphoned Forest's fallen logs, boulders, tree trunks and firepit floors join the list, and so do Sulfur Pools' walkable spheres.
- THE WHOLE MOD GOT A PERFORMANCE PASS. Stages convert faster, sustained rocket volleys rebuild craters with less hitching, the loading screen costs less CPU while your machine is busy converting, and the cosmetics wardrobe opens without a stutter.
- The mod's options menu slimmed down from seventeen entries to nine, same capabilities.
0.20.70 "Cutting Edge"
Network protocol changed. All players must update. A mismatched player stays on vanilla terrain with a chat warning.
- MELEE WEAPONS NOW CUT THE GROUND. A swing carves out the slice its arc actually sweeps through rock, so the cut matches what you see the blade do. This applies to every melee attack in the game: any survivor or monster with a sword, gauntlet, club or claw leaves a mark when a swing lands in rock. Thrown blades count too: Chef's cleaver slices rock along its whole flight. Swings through open air do nothing, and a level swing over flat ground floats above it, so you only cut where the weapon really enters the terrain.
- EXPLOSIONS THROW UP A RIM. Craters now raise a lip of displaced rock around their edge instead of leaving a clean bowl, so a blast looks like ground blown outward rather than scooped away. The lip grows with the rock the blast actually threw out, so a glancing hit that removes almost nothing no longer raises a full ridge.
- LESS MEMORY AND SMOOTHER FRAMES. The previous stage's terrain meshes are now freed the moment the next stage starts instead of lingering through it, and the conversion caches release their memory once their work is done. The terrain level-of-detail pass no longer checks every chunk on the map every few frames, big blasts spend far less time finding what to rebuild, and each blast rebuilds fewer chunks for the same result.
- REFORMED ALTAR FIXED. Several problems stacked on this map. Its main terrain is a cavern shell that encloses the whole playable area, and to the mesh interior test a correct cavern is indistinguishable from an inside-out solid, so the automatic orientation correction flipped it: phantom rock filled the cavern, spawn floors turned inside-out, and players fell straight through on arrival. Orientation is now judged by the map's own AI ground nodes instead of the mesh alone. Nodes sit exactly where things walk, so a mesh only counts as inside-out when the nodes standing on it stand on its back faces; a correct cavern passes untouched and a genuinely inverted mesh is still caught. Separately, overlapping meshes could delete each other's surface in spots where the winning mesh had nothing to draw there, leaving genuine holes in ground and collision; a mesh now only claims a surface it actually renders. The kilometer-scale distant scenery also stays vanilla so the map converts at full resolution, and the map's godray light shafts are no longer treated as terrain (the first entry in a new baked per-map rules table for meshes the general rules cannot judge).
- EFFECT MESHES ARE NO LONGER TERRAIN. Several maps park visual-effect meshes on the world layer with colliders: the Simulacrum stages plant whole-terrain void boundary copies right on their spawn platforms, void areas scatter foam blobs, and arenas raise cloud walls. Converting one turned an effect into phantom rock, which on the Simulacrum variants of Aphelian Sanctuary and Sky Meadow buried the spawn area. Meshes drawn with effect shaders now always stay vanilla. A skipped mesh behaves exactly as it does without the mod, so this can only remove phantom rock, never create new problems.
- COMMENCEMENT SPAWN FIXED, MAP SHARPENED. The moon's island body and temple base are single kilometer-scale meshes that both cover the arrival zone. Their fill bled rock over the spawn, and their sheer surface area forced the whole map to convert at more than double the normal voxel size. Both stay vanilla now; the rest of the moon converts at full detail.
- SULFUR POOLS AND SUNDERED GROVE NOW CONVERT. Both maps ship their terrain meshes without CPU-readable data, so nearly everything stayed vanilla (Sulfur Pools converted nothing at all). Their terrain is now read directly from the game's own bundle files, the same recovery Siphoned Forest already uses.
- EVERY MAP TESTED. Every stage was played on this version, base game and DLC. Everything should be playable. What remains is light incorrectness here and there: a patch of rock sitting slightly proud of the original surface, or a decorative mesh that converted imperfectly. Screenshot and report anything worse than that.
0.20.69 "Lite Rock"
As with every version, the whole lobby must run the same one. A mismatched player stays on vanilla terrain with a chat warning.
- MEMORY OVERHAUL: RAM use on large maps dropped by roughly half. A stage that used to push the game past 10 GB now sits around 6 GB. Terrain conversion no longer floods the managed heap, render meshes stop keeping a spare CPU-side copy, and undisturbed terrain rests on far fewer, lighter physics colliders.
- Collision detail is unchanged where it matters. Floors and slopes collide exactly where they render, craters keep full-resolution collision (the first blast in a region restores it there), and thin walkways and walls keep it automatically. Undisturbed decorative rock is a few centimeters smoother to walk on than it looks; that is the whole trade.
- ENEMIES FOLLOW YOU INTO CRATERS: after a dig, ground pathfinding nodes drop onto the new surface (up to 4 m down). Deeper pits are marked unwalkable so enemies route around them instead of pacing at the rim.
- Stage loading finishes a little quicker: the collider bake phase has far fewer meshes to cook. The "uploading to GPU" progress phase merged into "building meshes".
0.20.67 "Glory(ious) Holes"
First Thunderstore release.
As with every version, the whole lobby must run the same one. A mismatched player stays on vanilla terrain with a chat warning.
- LOADING TEXT PASS: the rotating tips now explain how the mod actually works. They cover how terrain, syncing and the loading wait behave, how titles and card backgrounds unlock (including the first-clear guarantee), and where to adjust your player card (Settings > Mod Options, with Risk of Options installed).
- The bottom status label no longer wears fake percentages while waiting. "waiting for host 0%" looked stuck, and clients parked on "waiting for players 100%" made no sense. The host's wait now shows a live headcount instead: "waiting for players (1/3)".
- SIPHONED FOREST NOW CONVERTS. Its large terrain meshes ship without CPU-readable data, which used to leave them vanilla. A built-in whitelist now reads specific meshes from the game's own asset files instead: the floor, cave, walls, aqueduct, giant trees, tree stumps and the frozen lake all convert.
- Clearer conversion phase names: "building meshes", "uploading to GPU", "revealing unlocks".
- 8 new lottery titles. Players on older versions see a blank title line for the new ones instead of an error.
0.17.0
Network protocol changed. All players must update.
- PHANTOM DEEP ROCK BOUNDED: terrain whose underside was never modeled (Sky Meadow plateaus, several Titanic Plains pieces) used to fill solid rock endlessly far below the world. Deep fill is now sanity-checked against the actual shape of the source mesh (its winding number): clearly-outside regions stay air, honest interiors and big ground sheets keep their full digging depth, and walkable ground can never come out thinner than before. The near-surface fill is untouched. Verified offline across four maps (Titanic Plains, Scorched Acres, Sky Meadow, Verdant Falls): every floating plateau's endless under-fill is gone, closed terrain byte-identical.
- INSIDE-OUT SAFETY NET: a collider mesh wound fully inside-out would put all the fill on the wrong side of its surfaces (physics ignores winding, so maps can ship one). Every mesh now gets an orientation vote at conversion and is flipped when clearly inverted. No shipped map triggers it today; this guards the ones we haven't met yet.
- The
OpenMeshShellRatioconfig option is gone: measured across four maps, real ground sheets sit at 0-8% open edges and honest open decks at 9-22%, so the 8% threshold is baked in (the new shape check also catches anything near the line). One less thing to sync in multiplayer. - ONE LOADING BAR: the loading screen used to fill a bar per conversion phase (voxelize, mesh, upload, bake), four bars back to back, which read as the load being stuck in a loop. It's now a single 0-100% bar for the whole conversion with the phase text changing along the way. The percent on everyone's player cards follows the same scale, so remote progress no longer jumps backwards mid-load.
0.16.0
Network protocol changed. All players must update.
- MATERIALS NOW HAVE BUILT-IN HARDNESS: what a surface is made of decides how big the crater gets. Metal, pipes and concrete resist blasts (roughly half radius), crystal and ice are brittle-hard, stonework and bare rock take modestly smaller craters, while dirt, sand and snow blow out wider than before. The table is baked into the mod, tuned against the complete material list of every stage (base game plus DLC), and is identical on every machine, so multiplayer craters keep matching with nothing to sync or misconfigure.
- The
MaterialHardnessconfig option is gone (this replaces it). - SCORCH DARKENING REMOVED: craters no longer render with darkened clones of the
terrain material; carved surfaces keep the stage's normal look. The whole scorch
system is gone (per-voxel burn tracking, darkness bands, material swaps), which also
makes carves slightly cheaper. The
ScorchedSurfacesconfig option is gone with it. - FIX: the Scorched Acres bridge spillout. Three compounding causes, found by pulling
the actual scene meshes from the game files and voxelizing them offline:
- Triangles longer than 96m on any axis were silently DROPPED from voxelization (a guard against skybox-scale backdrop sheets). The great stone arch bridges are low-poly: a fifth of their triangles, including whole 157m deck faces, never reached the voxelizer, tearing holes in closed meshes and letting the interior fill bleed out as phantom rock. The guard now measures what it actually protects against (the chunk count a triangle would bin into), so long thin structural triangles are kept and true backdrop sheets are still skipped. Bridges now voxelize to their exact shape, and their insides are genuinely solid, so they carve properly too. Big ground meshes also got fuller interiors out of this (their longest triangles were being dropped as well).
- The inside/outside decision now uses the closest FEATURE's normal (angle-weighted pseudonormals) instead of the nearest triangle's infinite plane, which misclassified whole regions around huge low-poly triangles.
- The two longest elevated walkway sections (122m/124m) crossed the "meshes over
100m are never hollow-shelled" rule, so their 11.7%-open decks were voxelized
solid and filled phantom rock up to 58m below. That size exemption is removed;
honestly-open meshes shell at any size (real ground can't read as open: openness
is perimeter-over-area, and the vertex weld already prevents false positives).
The
OpenMeshShellMaxSizeconfig option is gone with it.
- FIX: thin walkways also no longer sprout voxel fins when viewed from afar. Distant (LOD) terrain meshes hide seams by extending 10m "skirts" down into the ground, and on a thin shell those punched straight through and hung in the open air. Shell meshes now use skirts no deeper than one LOD cell.
- SHALLOW GROUND FIX: huge walkable surfaces that map authors ship as OPEN, underside-less meshes (Verdant Falls' giant leaves, dunes and track pieces, optimized low-poly geometry) voxelized as a paper-thin crust: half a meter of world, where one shot opened a hole into the void. Open meshes are now reconstructed as BOUNDED SOLIDS: like a cube with deleted faces, the remaining surface plus the mesh's own bounding volume define the full solid, and that volume is filled with diggable material (with a 4m minimum slab for perfectly flat pieces). The mesh's own box is the digging budget, so nothing can ever fill beyond the size of the thing itself: dunes fill to their own bottom, floating decks stay deck-thin, and runaway phantom rock stays geometrically impossible. Verified offline against the real Verdant Falls and Scorched Acres meshes: 8-10x more diggable material on walkable ground, zero fill below any mesh's bounds, edge lips capped at slab thickness. Thick real ground digs forever, as before.
- FIX: the HOST's own lottery reveal now reliably shows on everyone's loading screen. It was broadcast only once, at the host's stage start, while the other players were usually still loading the scene, so the message was lost. Queued reels now re-send with the once-per-second loading sync (harmless repeats; other players' reveals already dodged the race by reporting later).
0.15.2
- LOADING: the host now waits for slow-loading players as long as their machine keeps sending progress heartbeats (every 2s while converting). A big stage on a slow PC is no longer cut off by the old flat 30-second limit: everyone spawns in together, and the loading cards show whose bar is crawling. The 30s timeout still exists, but it now measures silence. Only a machine that stops heartbeating entirely (game hung, dead connection) is started without.
- Waiting clients follow the same rule: the host's once-per-second roster broadcast is their "host is alive" signal, so a fast loader no longer bails out of the loading screen while the host is legitimately still waiting on a third, slower machine. A client only releases itself if the host goes silent for 35 seconds.
0.15.1
Network protocol changed. All players must update.
- MULTIPLAYER ROBUSTNESS PASS:
- A player who disconnects during the loading screen no longer stalls the lobby into the 30s timeout; the host recounts who it is waiting on live, every frame.
- Players without the mod can no longer hold the stage hostage every stage: the host waits only for machines that have shown mod traffic (with a 15s first-stage grace window for slow loaders).
- Remote players' cards now show a real loading percentage (clients report progress every 2 seconds) instead of an indeterminate sweep.
- The "player X runs an old version" chat warning fires once per run instead of once per stage.
- A lottery win reported by a fast-loading client before the host finished loading is no longer lost; reveals are stage-tagged and survive the stage handover.
- Fixed a stale host-config edge case across runs, and vanilla-staying machines no longer queue up carve messages they will never use.
- OPEN-MESH FIX: half-open decorative meshes (non-watertight, the "giant solid cube"
family of bugs) are now detected at conversion and voxelized as thin hollow shells
instead of guessing an interior that isn't there. Seam-split vertices are welded
before the openness check, and meshes above
OpenMeshShellMaxSize(default 100 m) are never shelled; large ground always keeps its solid fill below, so tunnels keep digging into rock. Tunable viaOpenMeshShellRatio/OpenMeshShellMaxSize(host-synced; 0 disables). - New icon. Internal slimming: dead code removed, three unused assembly references dropped.
0.14.0
- LOOT REVEAL REWORKED: the prize reel spins DURING loading under each winner's card (up to one per player, all in sync), so the show costs no extra time. Only if loading finishes mid-spin does the release wait for the landing.
- Reel sound effects from the game's own UI soundbank, one shared sound source, so
four simultaneous winners are exactly as loud as one. Toggle:
RevealSounds. - Reel polish: anticipation beat, fade-in, breathing gold payline, landing flash, scale punch, prize name in gold.
- No more spoilers: the card's "NEW!" title line and freshly won background stay hidden until the reel lands.
- Carve dust puff removed (rocks plus crater are feedback enough).
0.13.0
- LOOT REVEAL: lottery wins play a CS:GO-style reel on the loading screen for everyone; the host scripts the identical reel for every machine.
- FIRST TREASURE GUARANTEED: a profile with zero unlocks wins exactly one prize on its first cleared level.
0.12.0
- All 199 country flags in the card-background picker, painted procedurally.
- Pickers render inside the Risk of Options description panel; RoR2-themed UI (game font, chamfered panels); card layout fixes.
0.11.0
- CARD BACKGROUNDS: country flags and pride flags always available; pattern backgrounds unlock via the level lottery.
0.10.0
- Portrait rims tiered by LIFETIME carved m³ (wood through platinum), persisted per profile.
- TITLE LOTTERY: 5% per cleared level to unlock one of 52 cosmetic titles, shown only on the loading-screen cards.
- Default
VoxelSizeis now 0.5 m.
0.8.x
- Scorched surfaces as darkened material clones (three darkness bands).
- Dedicated carve worker thread; the main thread only uploads meshes.
- Multiplayer version handshake plus host config sync.
MaterialHardnessconfig; ScorchedEarth conflict self-disable; Risk of Options integration.
0.5.0 - 0.7.0
- Loading-screen player cards with run stats and carved-m³ tracking.
- Visual rock debris with one-bounce physics.
- Three-tier render LOD with seam-free junctions; big performance pass.
0.1.0 - 0.4.x
- Core prototype: per-mesh voxel volumes, Surface Nets meshing, deterministic carves, multiplayer carve broadcast, teleporter/prop exclusion rules.
