Overview
A moral survival game for GGJ 2026. Theme: "Mask" — reimagined as an oxygen mask, a life-or-death resource. Inspired by the Korean film EXIT (2019). Joined late with no available teams, so I went solo — all design, procedural generation, blueprints, UI, and packaging done within 48 hours. This was my first playable game demo.
A moral survival game for GGJ 2026. Theme: "Mask" — reimagined as an oxygen mask, a life-or-death resource. Inspired by the Korean film EXIT (2019). Joined late with no available teams, so I went solo — all design, procedural generation, blueprints, UI, and packaging done within 48 hours. This was my first playable game demo.
The Game
A 5-story building. Total darkness. Oxygen draining. Toxic gas rising from below.
A 5-story building. Total darkness. Oxygen draining. Toxic gas rising from below.
Take masks from others to survive — but every mask you take is one less survivor. Only the exact target number can evacuate safely. Too few: protocol fails. Too many: internal conflict — everyone dies.
Each run randomizes NPC locations, exit placement, target numbers, and alive count. Each mask restores random oxygen (10–50). Even as the designer, I need luck to get the perfect ending.
Five endings: Perfect match | Survivors below target | Survivors exceeded (all lost) | Toxic gas killed you | Oxygen depleted
Tech Stack
Houdini: Procedural building generation via single HDA — room layouts, staircase connections, floor count. Three exposed parameters allow full regeneration from the UE5 editor.
Houdini: Procedural building generation via single HDA — room layouts, staircase connections, floor count. Three exposed parameters allow full regeneration from the UE5 editor.
Unreal Engine 5: All game logic in Blueprints — oxygen system, toxic gas, NPC interaction, spotlight with lag rotation, five ending conditions, per-run randomization.
Houdini Engine Plugin: Real-time parameter adjustment in UE5. Change room ratio, seed, or floor count without leaving the editor.
Problem Solving
NPC ragdoll launch: NPCs flew on death — root cause was the helmet set to Invisible but still had collision. Fix: set to No Collision. Invisible ≠ no collision.
NPC ragdoll launch: NPCs flew on death — root cause was the helmet set to Invisible but still had collision. Fix: set to No Collision. Invisible ≠ no collision.
Spotlight too precise: Mouse-driven headlamp felt too accurate, reducing tension. Fix: added lag rotation for a heavier, more physical feel.
Packaging warning: Houdini Engine plugin triggered runtime dialog in shipped build. Fix: disabled plugin for shipping configuration.