
Day Of Purgatory
One survivor, way too many zombies. A survivors-like built around massive hordes, ridiculous amounts of effects, extreme variation and customization, all while making sure the GPU doesn't give up halfway through.

Bring On The Horde
Custom ECS-like simulation, batched rendering, lightweight collisions, and pooled GPU effects to keep the chaos manageable.

One Quad. Five Digits.
Packed damage text into instanced quads, with GPU-side animation, MSDF glyphs, and no separate mesh for every digit.

Infinite Terrain
Streamed terrain chunks with baked procedural textures, stochastic tiling, and height-based biome blending.
Read more
Large-Scale Enemy Simulation
The game uses a custom ECS-like architecture with cache-friendly data, lightweight physics and collision checks, and MultiMesh rendering to handle large hordes without turning every zombie into its own expensive collection of nodes. Most effects are handled through pooled GPU particles, so explosions, blood, and soul-collecting effects can pile up without constantly creating and destroying new objects.
GPU Rendering & Optimization
A lot of the visual effects are designed around doing less work, not just looking good. That means batching geometry, reducing overdraw, choosing between opaque and transparent materials, and even adjusting vertices to avoid wasting pixels on mostly empty textures. There's also selective glow, lightweight fake shadows, and a bunch of shader tricks to keep the game looking lively without throwing performance out the window.
Custom MSDF Damage Text
Even the damage numbers got their own custom renderer. Instead of creating separate geometry for every digit, each damage number is packed into a single instanced quad. Character IDs, colors, direction, timing, scaling, and effect parameters are squeezed into four floats. The shader unpacks everything, finds the right MSDF glyphs, adjusts the quad's shape, and handles animations like popping, shaking, floating, and flashing. All on the GPU.
Procedural Terrain Baking
What started as wanting nice-looking ground turned into a whole procedural terrain baking system. Stochastic tiling helps hide repeating textures, while height-based blending allows multiple biome materials to transition naturally into each other. The catch is that all those texture samples and blending calculations are expensive. So instead of doing them every frame, the terrain gets baked into chunk textures. The complicated work happens when a chunk is generated, and the game gets to use the much cheaper result afterward.
Frame-Budgeted Terrain Streaming
Of course, baking terrain is still work. Chunks are acquired from a pool based on the camera's view, and new baking jobs are spread across frames using a configurable queue. This keeps terrain generation from trying to do everything at once as the camera moves around the world.
Character Customization & Upgrades
Characters are assembled from interchangeable equipment sprites, colors, and animation data. Heads, clothing, weapons, and accessories can be mixed and matched without needing a separate animation set for every possible outfit. There's also a stat-based upgrade system for changing things like damage, movement speed, projectile count, and attack behavior. The customization UI hasn't made it into existence yet, but the underlying systems are there.
2.5D Rendering & Depth Sorting
The game might look 2D, but it's actually built in 3D behind the scenes. This allows zombies, players, and corpses to use depth-based sorting, while custom positioning and shader tricks keep everything layered correctly. Every zombie also leaves behind a corpse, rendered through MultiMesh with custom depth ordering so hundreds of thousands of bodies can accumulate without flooding the scene tree. Getting the lighting to work consistently across all these different layers took some extra math, but it means things like gun flashes can illuminate the whole scene without looking out of place.
































