Dead District
A one-against-many survival horror game. I programmed the entire objective layer in C# - generator repair with progress regression, a timing skill-check built on delegate callbacks, randomized objectives, and a RaycastPro detection layer that interrupts work the moment you move.
Video only No in-browser build - the clip below is the full playthrough.
-
01
Repair Loop Generator Repair & Regression
Built a hold-to-repair loop that accrues progress only while the player is in range and regresses at a separate, Inspector-tunable rate when abandoned, with repair time, regression speed, and skill-check penalties and bonuses all exposed as serialized percentages.
Generator.cs -
02
Skill Check Timing Minigame
Programmed a timing skill-check where a needle sweeps randomized success and "great" zones, driven entirely by
System.Actionsuccess / great / fail callbacks so any interactable can request a check and react to the result without the minigame knowing the caller.SkillCheck.cs -
03
Objectives Generator Manager
Wrote a manager that spawns a random, non-repeating subset of generators from a larger pool of spawn points, tracks completions as they report in, and unlocks the exit levers once survivors clear the threshold.
GeneratorManager.cs -
04
Escape Exit Gate Levers
Built hold-to-open exit levers that stay disabled until the objective manager powers them, build progress on a timer, and save partial progress when the player is interrupted so they can resume.
ExitLever.cs -
05
Detection Range Detection & Interrupts
Integrated a RaycastPro
RangeDetectorthat routes each detected collider to the correct interactable through event listeners, plus an interrupt layer that cancels an active repair the instant the player moves, sprints, crouches, or attacks - leaving jump and interact free.PlayerDetection.cs -
06
Animation Idle State Behaviour
Wrote a custom
StateMachineBehaviourthat counts idle time inside an Animator state and blends in randomized idle animations once the player holds still long enough, driven from animation state rather than gameplay code.BoredBehaviour.cs