← Back to project summary Detonation
A closer look at the app, the systems I owned, and the features behind it.
What the game is
- Pick a mission from a briefing screen that shows difficulty, the enemy roster, and your best time on that level.
- Choose your bomb count on a slider. More bombs means more fuse time, so the risk and the clock are the same dial.
- Sneak past guards, plant sticky bombs on them, and get clear before the fuse runs out.
- Three weapons on a single cycle key: bare hands for stealth, a glue gun that freezes a guard in place, and a pistol that is loud enough to bring guards running.
The detonation sequence
- When the timer hits zero the camera disables its follow behavior and pans out to a wide shot of the level center.
- Time scale drops to 0.05, roughly a twentieth of normal, but the camera animation runs on unscaled time so the pan itself stays smooth.
- After a deliberate pause on the wide shot, every planted bomb fires at once from a single global detonation event.
- The game then counts the surviving guards. Zero left is a win; anything else is a failed mission.
Guard AI
- Guards are built from the player character prefab with the input reader disabled and synthetic input injected each frame, so they move with exactly the same controller the player uses.
- Four states: patrol between points, alert after hearing or losing you, chase on line of sight, and frozen when glued.
- Vision is a real cone with a configurable half-angle and a layer mask, so walls actually block sight.
- Hearing is a broadcast noise event with a radius, so a pistol shot into a wall pulls nearby guards toward the sound rather than toward you.
- Guards are immune to ordinary damage by design and die only through the explosion path, which keeps the stealth rule honest: bombs are the only way to finish a level.
How it reuses the arena codebase
- The same EntityStats, PlayerController, AbilityController, and WeaponHandler run here with no networking at all.
- Offline mode is automatic rather than a setting: with no NetworkManager in the scene, stats and weapons detect it and run their local paths.
- A small scene bootstrapper replaces the multiplayer GameManager, doing only the three things a single-player scene actually needs.
- Missions, loadouts, and the mission catalog are all ScriptableObjects, so a new level is data plus a scene rather than new code.