A volcano is erupting. Climb, collect the crystal, and escape before it catches you. Every system built solo, from Blueprint scripting to 3D asset creation.
Eruption Escape is a time-pressure platformer set on an active volcano. The project was built around the theme of Time — every system, mechanic and design decision reinforces urgency and consequence. As the eruption countdown ticks down, the game gets progressively harder: screen shake intensifies, meteors blast from the crater, and the environment becomes more hostile with every second you take.
Every gameplay system was built from scratch using Blueprints in Unreal Engine 5. Below is what each core system does, how it works, and the logic behind it.
The countdown timer is the heartbeat of the game. On Begin Play the Game Mode creates the HUD widget; on Tick, a Run Time float increments using Delta Seconds and is pushed to the HUD via UpdateRunTimer. A separate UpdateEruptionTimer event handles the eruption countdown — the HUD divides the raw float by 60 using Division (Whole and Remainder), truncates it, and formats it as {Min}:{Sec} via Format Text.
When the eruption timer hits zero, meteors blast from the crater every 10 seconds in sync with screen shake and a warning siren. First attempt used a single Blueprint with Reset Relative Transform to relaunch rocks — physics simulation conflicted with the reset and rocks stopped relaunching correctly. The fix: split into two Blueprints. The Spawner handles timing and calls SpawnActor every 10 seconds; EruptedRock handles only its own physics — Random Unit Vector × 1200 for lateral force, Get Up Vector × 3000 for vertical launch, then Destroy Actor cleans it up.
Collapsing platforms: stepping on the Trigger Box casts to BP_ThirdPersonCharacter, fires a 1-second Delay, then Spawn Emitter plays a crumble effect while Set Hidden in Game and Set Collision Enabled remove the platform. Moving platforms use the InterpToMovement component set to Ping Pong with two control points — fully component-driven, no extra Blueprint logic needed.
Overlapping a checkpoint plays a "CHECKPOINT REACHED" notification: Event Construct triggers a fade animation, a 2-second Delay holds it, then Remove from Parent dismisses it cleanly. Rock hazard hits are handled by BP_FallingRockHazard — Component Begin Overlap casts to the character, then Set Actor Transform teleports the player to the Respawn Transform with Play Sound 2D firing simultaneously.
Difficulty runs through the Game Instance, a persistent UE5 object that survives level transitions. Clicking Easy, Medium or Hard fires an On Clicked event that casts to BP_GameInstance and sets the Eruption Start Time (300 / 180 / 60 seconds), then calls Open Level. The Game Mode inside the level reads that value to initialise the countdown — all difficulty logic lives in one place, no duplication.
Development ran over approximately 10 weeks — see the full journal below for the complete week-by-week research, reflections and playtesting notes.
Researched time mechanics in games — Braid, Majora's Mask, Crash Bandicoot. Created a volcanic moodboard and hand-drawn level layout. Reduced scope from multiple levels to one polished level, the most important early decision of the project.
Built the first UE5 blockout using white box geometry on the sculpted volcano terrain to test player flow and jump distances. Identified steep or misjudged areas for revision.
Modelled rock and platform assets in Autodesk Maya. UV-unwrapped each mesh so Substance Painter could apply materials without stretching, then exported as FBX into the UE5 project.
Textured all rock assets with three material states — normal rock, volcanic rock, eruption/molten lava — using PBR layers: Stone Slate base, Concrete Asphalt for roughness, hand-painted lava glow detail.
Built the core gameplay Blueprints: eruption timer, collapsing/moving platforms, checkpoints, difficulty selection, Game Instance. Rebuilt the erupted rock system from scratch after the original approach caused unreliable physics.
Ran sessions with tutors, classmates, friends and family. Added an optional How-To-Play tutorial, expanded killzone collision after players fell through, and added the "CHECKPOINT REACHED" notification after feedback.
Focused on audio throughout — footsteps, breathing, checkpoint and leaderboard sounds, ambient volcanic audio. Balanced difficulty from playtesting data. Packaged as a standalone Windows .exe and distributed via Google Drive.
Real development means hitting problems and finding solutions. Here are the key challenges from Eruption Escape and how each was resolved.
Reset Relative Transform conflicted with physics simulation — rocks stopped relaunching correctly and behaviour was inconsistent every run.
Split into two Blueprints: Spawner handles timing and spawning; EruptedRock handles only its own physics. Removing the reset entirely fixed the system.
Players occasionally fell through the map near killzone edges — respawn wouldn't trigger, leaving them stuck below the level.
Expanded the killzone collision box significantly. All players now respawn correctly regardless of the angle or edge they fell from.
The initial FMP plan included multiple levels and modes — building all of it solo in 10 weeks risked something unfinished and unpolished.
Reduced scope to one polished, complete level early — the most important decision of the project, allowing full focus on quality and iteration.
A playtester unfamiliar with PC games struggled with WASD + mouse camera controls, and couldn't progress past the opening section.
Created an optional How-To-Play tutorial level. The same playtester completed the main level afterward — completion rates improved across all difficulties.
Early Hard mode testing (60s) resulted in almost zero completions — pressure felt impossible rather than challenging.
Kept Hard at 60 seconds but optimised the level layout so a skilled player could complete it, creating a competitive leaderboard dynamic.
Checkpoints activated silently — playtesters were unsure if progress was saved, some assumed a full restart on death.
Added the WB_CheckpointMessage widget — a fading "CHECKPOINT REACHED" notification with audio, giving players confidence to push forward.
Level building, lighting, gameplay systems, UI, audio, packaging and distribution.
All gameplay logic — timers, hazards, UI, audio, checkpoints, difficulty and spawners.
3D modelling and UV unwrapping of environmental assets — rocks, platforms, terrain.
PBR texturing — volcanic rock and lava materials, normal/roughness maps into UE5.
This is the full FMP development journal in its original order: research, rationale, weekly reflections, blockouts, Blueprint logic, playtesting and evaluation. Click any slide to view it full-size.
Browse all 112 slides — research, weekly logs, Blueprint logic and playtesting.
View JournalI'm actively looking for any entry-level role in the games industry — QA, environment art, level design or anything else.