Back
GAME PROTOTYPE 2 — FALLOWMERE
84% · First Class

What is Game Prototype 2?

Fallowmere outdoor zone // Fallowmere — outdoor quarantine zone at dusk

Game Prototype 2 — Fallowmere — is a solo survival-horror prototype built for GDEV40010 Game Prototyping at Staffordshire University (Level 4, 2024/25). The brief had a single narrative constraint: tell the entire story through the environment. No cutscenes, no explicit text — the world is the narrator.

Fallowmere is a quarantined small town under the iron grip of Vitae Industries, a biotech corporation. A mysterious cult — The Order of Genesis — operates in the shadows. The player is infected, holed up in an abandoned building, and must escape without losing their mind — a literal mechanic, not just a metaphor. A relentless stalker AI hunts them by sound, the microphone becomes a weapon against the player, and the only way out is through a keypad puzzle and a voice-based final challenge: say "I am not infected" to unlock the exit.

The visual world is entirely abstract — orange and amber geometry, dark brown buildings, dramatic dark red-orange cloudy skybox, and no textures. Atmosphere is created entirely through form, lighting, and sound.

Unity 6Engine
C#Language
VoskVoice AI
5 SprintsDev Period
84%Grade
First ClassClassification
  • Awarded 84% — First Class for the module
  • Offline voice recognition via Vosk — 16000Hz mic capture, RMS level, Levenshtein fuzzy matching, no internet or API key required
  • Voice puzzle finale — player must speak "I am not infected" to unlock the exit after solving the keypad
  • Live microphone danger — real-world sounds above threshold alert the stalker within 40m; the mic meter is visible on HUD at all times
  • Three-state Enemy Awareness UI — custom sprites showing Idle/Searching/Detected states, top centre HUD, inspired by The Evil Within
  • Dynamic BGM cross-fade — three music tracks (normal / suspense / detected) blend based on enemy proximity and state
  • Sanity system — green health bar drains passively as dread builds, inspired by Phasmophobia
  • JSON slot-based save system — world-anchored save points, F5 to open save menu at any time
  • Lore note system — ScriptableObject-driven notes with typewriter animation, inventory manager, two handcrafted notes in the world
  • Hot-swappable input icons — keyboard E / Xbox X / DualSense Triangle switch instantly with no menu required

Fallowmere

Fallowmere exterior corridor // Fallowmere — quarantined town exterior

Fallowmere is a small town placed under quarantine by Vitae Industries — a biotech corporation whose motivations are never fully stated. Evidence of their presence is written into the environment: barriers, decontamination markings, the hum of authority without any visible agents. The town feels abandoned but not empty.

Beneath the corporate veneer, The Order of Genesis — a cult — has been operating within Fallowmere. Their relationship to the infection, to Vitae Industries, and to the player's own condition is left deliberately ambiguous, communicated only through the two collectable notes and the geometry of the world itself.

The player is infected. They wake in an abandoned building with no explanation. Survival requires navigating the environment without triggering the stalker, solving the puzzles embedded in the space, and — in the final moment — asserting their identity aloud. The voice puzzle is the only moment of character voice in the entire prototype.

Research Games Fallowmere's design was informed by three reference games studied during pre-production: Resident Evil 3: Nemesis (relentless pursuer AI, player movement feel), Silent Hill 2 (2024 Remake) (atmosphere, environmental storytelling), and Alien Isolation (audio-driven threat system, tension without combat).

The visual language is deliberately abstract. All geometry in the world is untextured — orange-amber sandy ground, dark brown building masses, and a dramatic dark red-orange clouded skybox. No realistic props, no detailed surfaces. The horror lives in shape and shadow.

Resident Evil 3: Nemesis Silent Hill 2 (2024) Alien Isolation

In-World Interface

Sanity meter HUD // Sanity meter — annotated HUD breakdown

Every HUD element serves gameplay directly. Nothing decorative — each piece of the interface communicates a survival-critical signal.

Sanity / Health Bar
Top Left
Green bar. Drains passively as dread accumulates. Inspired by Phasmophobia's sanity system — fear overwhelms the player rather than direct damage.
Enemy Awareness Icon
Top Centre
Three-state custom sprite icon driven by EnemyAwarenessUI.cs. Inspired by The Evil Within's awareness indicator. States: Out of Bounds (eye/slash), Searching (eye/arrow), Detected (crosshair).
Microphone Meter
Bottom Left
Live RMS volume bar. If the bar spikes above threshold — from speech, coughing, or background noise — the stalker is alerted within 40m. The mic is a constant anxiety.
Interaction Prompts
World-Anchored
"Press to Examine" and "Press to Save" appear anchored to objects in 3D space via PlayerInteraction.cs SphereCast. Icons auto-switch: keyboard E, Xbox X, DualSense Triangle.

Keypad → Voice → Exit

Keypad puzzle // Keypad puzzle — code entry UI

The prototype's core loop ends in a two-part chained puzzle. Solving the keypad unlocks the voice trigger; the voice trigger unlocks the exit door. Neither step can be skipped.

// Step 1 — Keypad Code
9 1 7 9
4-digit code entered on the in-world keypad. Time freezes while the keypad UI is open. Controller and keyboard both supported via KeypadTrigger.cs.
// Step 2 — Voice Unlock After the keypad is solved, the exit door activates a voice trigger zone. The player must speak one of the accepted phrases within Levenshtein fuzzy-match range. The door unlocks on recognition.
// Accepted voice phrases
"i am not infected"

"i'm not infected" "i am uninfected" "open"

Vosk runs offline — no API call, no latency spike. Audio is captured at 16000Hz on a background thread via MicrophoneHandler.cs, fed to Vosk's recogniser, and the JSON result is matched using Levenshtein distance in VoicePuzzleTrigger.cs. The fuzzy matching accounts for natural speech variation and ambient noise distortion.

The Stalker

Stalker enemy detection // Stalker — enemy detection triggered

The stalker is the prototype's central threat — an entity that cannot be killed, only evaded. It navigates Fallowmere via Unity's NavMesh and maintains four internal states: Idle, Patrol, Investigate, and Chase. The base logic lives in the abstract EnemyBase.cs; StalkerEnemy.cs extends it with Fallowmere-specific behaviour.

Sound-Driven Threat The stalker hears two kinds of sounds: the player's live microphone feed (above a configurable RMS threshold) and thrown objects landing within a 40m radius. Both trigger investigation behaviour. Throwing an object is a deliberate distraction mechanic — but using your own voice against you is the horror twist.

The Field of View renderer uses a procedural mesh — 110° angle, 10m radius, 50 segments — visualising exactly what the enemy can see. Three eye-state icons on the top-centre HUD communicate the stalker's current awareness to the player in real time without breaking immersion.

EnemyBase.cs
Abstract · State Machine
States Idle / Patrol / Investigate / Chase
Navigation Unity NavMesh agent
Hearing Sound events from mic or thrown objects
Threat Cannot be killed — only evaded
FieldOfViewRenderer.cs
Procedural Mesh · Vision
Angle 110° field of view
Radius 10m detection range
Mesh 50 segments, runtime-generated
Purpose Visual debug + in-world tension
EnemyAwarenessUI.cs
HUD · Sprites · Inspired
Inspired by The Evil Within awareness system
States Out of Bounds / Searching / Detected
Icons Custom sprites per state
Position Top centre HUD

Vosk — Offline Speech-to-Text

Integrating Vosk into Unity 6 required threading audio capture on a background thread so it doesn't block the main loop, feeding raw PCM at 16000Hz into the recogniser, and parsing the JSON result for phrase matching. The entire pipeline runs with no internet connection — no API key, no cloud dependency, no latency spike from a round-trip call.

Why Offline Matters for Horror The player whispering a command to an in-world object — and getting a tangible response — is an interaction type that a button press cannot replicate. Breaking immersion with a loading spinner or API delay would destroy the effect entirely. Vosk's offline model was non-negotiable.
MicrophoneHandler.cs
Input · Audio · Threading
Sample rate 16000Hz
RMS level Drives mic meter UI in real time
Alert radius 40m — mic input above threshold alerts stalker
Thread Background audio capture thread
VoicePuzzleTrigger.cs
Puzzle · Vosk · Fuzzy Match
Library Vosk offline ASR
Matching Levenshtein fuzzy distance
Phrases 4 accepted variants
On match Unlocks exit door

Full Technical Architecture

49 C# scripts were written across the five-sprint development period. The architecture covers every gameplay layer: AI, audio, UI, save/load, input, camera, and post-processing.

AudioManager.cs
Audio · Cross-fade · BGM
Tracks 3 BGM layers: normal, suspense, detected
Transition Cross-fade based on enemy proximity and state
Effect Music becomes the tension meter
NotePickup + NoteData
Lore · ScriptableObject
Notes "Vitae Industries Newspaper" + "Scrambled Note"
Data Title, content, image, sound per note
UI Typewriter animation on text reveal
Inventory Manager stores collected notes
SaveManager + SavePoint
Persistence · JSON
Format JSON slot-based persistence
Trigger World-anchored "Press to Save" interact
Hotkey F5 opens save menu
UI SaveLoadUI.cs handles menu display
ObjectInteractionSystem
Physics · Distraction
Pick up Grab and hold physical objects
Throw Thrown objects alert enemies within 40m
Strategy Core distraction mechanic vs the stalker
PlayerInteraction.cs
Interaction · SphereCast
Detection SphereCast from player position
Prompts World-anchored UI per interactable
Input icons KB E / Xbox X / DualSense Triangle
CameraBobbing.cs
Camera · Feel
Bob Sinusoidal movement bob while walking
Return Smooth ease-back when stopped
Feel Adds weight to player movement
GamepadUIRumbleInjector
Input · Haptics
Auto-injects Rumble callbacks into all UI buttons
No manual setup per button required
Controllers Xbox + DualSense supported
GameManager.cs
State · Game Over
Listens OnPlayerDeath event
Shows GameOverUI on death
Freezes Time scale on game over
DebugLogger.cs
Dev Tool · Logging
Colour-coded logs per system context
Tags Context labels for each log type
Purpose Clean console during rapid iteration
// 49 C# Scripts Written
MicrophoneHandler.cs VoicePuzzleTrigger.cs KeypadTrigger.cs EnemyBase.cs StalkerEnemy.cs FieldOfViewRenderer.cs EnemyAwarenessUI.cs AudioManager.cs NotePickup.cs NoteData.cs SaveManager.cs SavePoint.cs SaveLoadUI.cs ObjectInteractionSystem.cs PlayerInteraction.cs CameraBobbing.cs GamepadUIRumbleInjector.cs GameManager.cs DebugLogger.cs BGMSlider.cs SFXSlider.cs MainMenuCanvas.cs

Five Sprints

Development ran from 02/04/2025 to 06/05/2025 across five Agile sprints. Sprint 1 was the most chaotic — 28 tasks, the full foundation of every major system. Sprints 2–4 were each cut short by three days. Sprint 5 was the polish and final-feature sprint.

  • SPRINT 1
    02 Apr – 09 Apr 2025
    Foundation Sprint — 28 Tasks
    The most chaotic sprint. Established the full base: Vosk offline ASR integration (native libraries, background threading, JSON parsing), player movement (RE2 Tofu movement attempt — funky, but kept), Cinemachine camera, environmental interaction system, floating world-anchored button prompt, initial stalker enemy with NavMesh, inventory and note viewer, DualSense lightbar feedback, and AudioManager with cross-fade BGM.
  • SPRINT 2
    ~10 Apr – 15 Apr 2025
    Save System & Camera Polish
    JSON slot-based save and load system, world-anchored save point interactions, camera bobbing, general bug fixing from Sprint 1 backlog.
    Cut short
  • SPRINT 3
    16 Apr – 22 Apr 2025
    Pickable Objects & UI Polish
    Pickable and throwable object system — picked up objects can be thrown to distract the stalker within 40m. Raycast fix for interaction detection, general UI polish pass.
    Cut short
  • SPRINT 4
    23 Apr – 29 Apr 2025
    Enemy Awareness UI, Keypad, Level Complete
    Enemy Awareness UI system built (inspired by The Evil Within). Keypad puzzle implemented — code 9179, time freeze, controller + keyboard support. Speech recognition tuning with Levenshtein fuzzy matching added. Level blockout completed. Puzzle chain wired: keypad solve → voice trigger activates.
    Cut short
  • SPRINT 5
    30 Apr – 06 May 2025
    Sanity System, Mic Meter, Lore, Final Polish
    Sanity system built (Phasmophobia-inspired — green bar draining as dread builds). Microphone volume meter UI added to HUD. Lore notes written and placed in world ("Vitae Industries Newspaper", "Scrambled Note"). Pause menu with mic device switching in options. Post-processing effects added (not assessed). Final build polish.

Prototype in Motion

Development progress was recorded as unlisted YouTube videos throughout the sprint period. The main gameplay video was submitted to the GDEV40010 Digital Academy Forum alongside a deep development diary forum post.

Game Prototype 2 — Gameplay Video
Gameplay — Fallowmere (Submission)
NomNom · May 2025 · Unlisted
▶ Watch on YouTube →
Game Prototype 2 — Development Recording
Development Recording — Early Build
NomNom · Apr 2025 · Unlisted
▶ Watch on YouTube →

What Was Cut & What Was Learned

Scrapped Features
  • Crouch / Stealth — Unity's collision runtime rotation caused the player to fall through the floor when crouching. Abandoned entirely. The player movement was already intentionally "funky" (an RE2 Tofu movement attempt that failed but was kept as-is) — adding crouch on top was unreliable.
  • Checkpoint System — Scope was pivoted toward the save system instead. Full checkpoints were descoped before they were built.
  • Mechanic Design Diagrams — Planned documentation aids that were never completed due to time.

Environmental storytelling is harder than it looks. Removing all textual narrative forces every prop placement, lighting angle, and audio cue to carry communicative weight. Fallowmere's quarantine premise gives a clear visual language — but executing it convincingly in five weeks required sharp prioritisation.

Vosk in Unity 6 is non-trivial. Native libraries, background threading, PCM capture, JSON parsing, and Levenshtein fuzzy matching — none of it is out-of-the-box. The payoff is an interaction type that a button press cannot replicate. Worth every hour.

The microphone as threat vector was the best design decision. Making the player's own real-world sounds dangerous inverts the standard horror formula. Instead of the game generating fear, the player generates it themselves. Every cough, every accidental word, every ambient noise in the room is a risk.

Sprints 2–4 being cut short hurt scope. Three successive cut sprints reduced the time available for polish and additional content. The lesson: front-load the riskiest technical work (Vosk integration was in Sprint 1 for this reason). When time is cut, polish suffers first, not functionality.