Survival Horror
You are not the hunter — you are the hunted, and you never have enough bullets | The Dark Below
"The scariest thing in a game is not what you can see — it is the sound of footsteps in a hallway you thought was empty."
Week 1: History & Design Theory
The Origin
In 1996, Shinji Mikami and Capcom released Resident Evil and coined the term "survival horror." The game dropped players into a mansion filled with zombies and gave them almost nothing to fight back with — a knife, a handgun with scarce ammunition, and a handful of healing herbs. Inventory was limited to six slots, and saving consumed a finite resource (ink ribbons). Every system was designed around a single principle: scarcity. You never had enough ammo to kill everything, enough health to take hits carelessly, or enough saves to retry freely. This scarcity transformed a third-person action game into something genuinely frightening — not because the zombies were scary, but because facing them meant spending resources you could not afford to lose.
How the Genre Evolved
Resident Evil (1996) — Defined the genre's mechanical vocabulary: fixed camera angles that obscure threats, tank controls that make movement vulnerable, strict inventory limits, save points that consume resources, and ammunition so scarce that players learned to dodge enemies rather than fight them.
Silent Hill 2 (2001) — Shifted from physical horror to psychological horror. The town was shrouded in fog and darkness, and monsters were manifestations of guilt. Audio designer Akira Yamaoka created a soundscape where industrial noise and radio static were as frightening as any monster. Proved that atmosphere surrounding the monster was the most powerful tool.
Amnesia: The Dark Descent (2010) — Frictional Games removed combat entirely. The player could run, hide, and close doors. Enemies could not be killed. A sanity mechanic degraded the player's perception in darkness, but light attracted enemies. Proved that powerlessness is the purest form of fear.
What Makes It "Great"
A great survival horror game is an exercise in controlled deprivation. Every system takes something away: ammo, health, visibility, safe places, sanity. The pacing alternates between tension and release: a safe room is an emotional reset that makes the next dark hallway feel even darker. The enemy design matters less than the enemy's presence — a monster that patrols unpredictably is scarier than one that attacks on sight. What the player cannot see is more frightening than what they can.
The Essential Mechanic
Resource scarcity — never having enough ammo or health to feel safe, forcing careful decision-making.
Week 2: Build the MVP
What You're Building
A top-down survival horror game in an abandoned facility. The player navigates interconnected rooms, collecting sparse ammo and health kits while avoiding a stalker enemy that uses a 5-state AI (patrol, investigate, chase, search, return). The player has a flashlight with limited battery. Darkness is a core mechanic: rooms are dark unless illuminated. Some rooms are safe rooms where the enemy cannot enter.
Core Concepts
1. Resource Scarcity Design
The total ammunition and health items in the game is deliberately insufficient to kill every enemy and heal every wound. The player is forced to decide: fight and spend bullets, or sneak past and risk taking damage?
RESOURCE_BUDGET = {
totalAmmo: 24, // Enough to kill ~4 enemies, but there are 8
totalHealthKits: 5, // Each heals 40 HP; player has 100 HP
totalBatteries: 3, // Each adds 60 seconds of flashlight
totalSaveItems: 4 // Limited saves (ink ribbon style)
}
ENEMY_STATS = {
"zombie": {health: 30, damage: 20, bulletsToKill: 6},
"stalker": {health: 999, damage: 35, bulletsToKill: null} // Cannot be killed
} Why it matters: Scarcity is the fundamental design lever. Without it, the game is an action game with creepy art. With it, every encounter becomes a risk-reward calculation.
2. AI Stalker / Hunter Enemy
The stalker cannot be killed and uses a multi-state behavior system: patrol (walks a route), investigate (heard a sound), chase (spotted the player), search (lost sight, checks nearby), and return (gives up, resumes patrol). The stalker reacts to player sounds and line-of-sight.
STALKER_STATES = {
PATROL: {speed: 1.0, detectionRange: 5},
INVESTIGATE: {speed: 1.5, detectionRange: 7},
CHASE: {speed: 2.5, detectionRange: 12},
SEARCH: {speed: 1.2, detectionRange: 8},
RETURN: {speed: 1.0, detectionRange: 5}
}
function updateStalker(stalker, player, deltaTime):
switch stalker.state:
case PATROL:
followPatrolRoute(stalker)
if canSeePlayer(): stalker.state = CHASE
else if heardSound(): stalker.state = INVESTIGATE
case CHASE:
moveToward(stalker, player.position)
if not canSeePlayer(): stalker.state = SEARCH
case SEARCH:
searchNearby(stalker, lastKnownPos)
if searchTimer <= 0: stalker.state = RETURN Why it matters: The stalker creates unpredictable tension. Every decision — run or walk, flashlight on or off, shortcut through darkness or long way through lit halls — is filtered through "where is the stalker right now?"
A top-down grid with a player (blue) and enemy (red). The enemy has states: Patrol, Investigate, Chase, Search. Move the player with arrow keys or WASD to trigger state transitions. The current AI state is shown. Press N to make noise and attract the enemy.
3. Sound Design for Tension
Player actions generate sound events with a radius. The stalker's hearing system detects these events. Running is louder than walking. Shooting is loudest. The player's panic response (running away) can make the situation worse.
SOUND_EVENTS = {
"walk": {radius: 2, alertLevel: 0.2},
"run": {radius: 6, alertLevel: 0.7},
"shoot": {radius: 12, alertLevel: 1.0},
"open_door": {radius: 4, alertLevel: 0.5}
}
function emitPlayerSound(soundType, position):
world.activeSounds.add({
position, radius: SOUND_EVENTS[soundType].radius,
alertLevel: SOUND_EVENTS[soundType].alertLevel
}) Why it matters: Sound creates a feedback loop: the player's own actions attract the stalker, meaning panic makes things worse. The safe room's silence is itself a form of design.
4. Camera as a Fear Tool
The player can only see within their flashlight cone plus a small ambient radius. Anything behind or to the sides is invisible. The flashlight rotates with the player's facing direction, creating blind spots.
CAMERA_CONFIG = {
ambientVisRadius: 2,
flashlightArcAngle: 45, // degrees
flashlightRange: 8, // tiles
fullDarkAlpha: 0.95
}
function calculateVisibility(player):
visibleTiles = getTilesInRadius(player.position, ambientVisRadius)
if player.flashlightOn:
for tile in getTilesInCone(player.position, flashlightRange, flashlightArc):
if hasLineOfSight(player, tile):
visibleTiles.add(tile)
return visibleTiles Why it matters: Restricted visibility is the most powerful fear tool. The player must choose between seeing further (flashlight on, battery draining, visible to stalker) and hiding (flashlight off, nearly blind, conserving battery).
A dark room with a player. Arrow keys to move, mouse to aim the flashlight. Only the cone of light reveals the room. Hidden items (yellow) are only visible in the light. Press F to toggle the flashlight on/off.
5. Safe Rooms / Tension-Release Pacing
Safe rooms are areas where the stalker cannot enter. They contain save points, sometimes pickups, and distinct calm audio. The level alternates between dangerous exploration and safe room respites.
function enterRoom(player, room):
if room.isSafeRoom:
stalker.state = SEARCH // Cannot follow
crossfadeAudio(SAFE_ROOM_MUSIC)
room.lightLevel = 1.0 // Fully lit
showNotification("Safe Room") Why it matters: Safe rooms reset the player's emotional baseline. The calm music and full lighting create genuine relief that makes the next dark hallway feel even worse.
6. Inventory Tetris
Items have different sizes and must fit into a grid-based inventory. Ammo takes 1 slot, health kits take 2. The inventory screen does not pause the game — the stalker can still approach.
INVENTORY_CONFIG = { gridWidth: 4, gridHeight: 2 } // 8 cells
ITEM_SIZES = {
"handgun_ammo": {w: 1, h: 1},
"health_kit": {w: 1, h: 2},
"battery": {w: 1, h: 1},
"key_card": {w: 1, h: 1}
} Why it matters: Inventory Tetris forces the player to think about what they truly need. The non-pausing design means spending too long rearranging items is itself a risk.
7. Darkness and Lighting as Mechanics
The flashlight is a resource, a detection tool, and a risk. It drains battery, and batteries are scarce. Turning it on makes the player visible to the stalker from greater range. The tension between seeing and hiding is the core dilemma.
FLASHLIGHT_CONFIG = {
maxBattery: 100,
drainRate: 8, // ~12 seconds continuous use
detectionMultiplier: 2.0, // Stalker sees from 2x range
flickerThreshold: 20 // Starts flickering when low
} Why it matters: The flashlight creates a rhythm of on-off-on-off, constant micro-decisions. The flicker at low battery is pure psychological design: unreliable light is more frightening than no light.
Stretch Goals
- Second enemy type — Slower, but attracted to light instead of sound.
- Sanity system — Visual distortions from staying in darkness too long.
- Environmental puzzles — Combine key items, enter codes found on walls.
- Multiple endings — Based on resources consumed and choices made.
MVP Spec
| Component | Minimum Viable Version |
|---|---|
| Map | 10 interconnected rooms (7 dangerous, 2 safe, 1 exit) |
| Player | Move, aim flashlight, shoot, interact, open inventory |
| Stalker | 5-state AI: patrol, investigate, chase, search, return |
| Flashlight | Cone visibility, battery drain, flicker at low charge |
| Inventory | 4x2 grid, items have sizes, does not pause game |
| Resources | 24 ammo, 5 health kits, 3 batteries across entire game |
| Safe Rooms | 2 rooms with save points, calm music, full lighting |
| Darkness | Rooms dark by default, flashlight provides visibility |
Deliverable
A playable survival horror game where the player navigates a dark facility with a limited flashlight, collects scarce resources, manages a grid-based inventory, and avoids a stalker enemy driven by a 5-state AI. The player should feel genuinely tense in dark rooms and genuinely relieved in safe rooms.
Discussion Questions
- The Powerlessness Spectrum: Resident Evil gives you a gun with scarce ammo. Amnesia gives you nothing. Where on the spectrum should your MVP sit? Is a player with 3 bullets more scared or less scared than one with 0?
- Sound as Game Design: The stalker reacts to player sounds, meaning panic makes things worse. How do you communicate this without breaking immersion?
- Pacing and Desensitization: After 30 minutes, even the most frightening stalker becomes familiar. How do you prevent desensitization?
- The Inventory Decision: Non-pausing inventory means opening the bag is itself a risk. How does this change player behavior compared to a paused inventory?