# GAMEINDEX — Project Void: Psychological Horror FPS Prototype

**Version:** 1.0 | **Generated:** 2026-05-21 | **Target UE:** 5.5–5.7
**Framework:** UE5 Modular Game Framework (135 systems)
**Game:** Project Void — Abandoned Asylum Psychological Horror

---

## Purpose

This document is the master index for the **"Project Void"** example game prototype. It defines:
1. The complete `Content/Game/` folder structure — every asset to create
2. Which framework system each game asset demonstrates
3. The full scene loading flow from boot to credits
4. Expansion notes for extending the prototype into a full game

**Rule:** All game content lives in `Content/Game/`. Never modify `Content/Framework/`. Game assets reference framework systems via interfaces, dispatchers, and Data Asset children.

---

## Game Concept — "Project Void"

```
┌─────────────────────────────────────────────────────────┐
│  PROJECT VOID — Psychological Horror FPS                │
│                                                         │
│  Setting:    Abandoned Blackwood Asylum, 1920s          │
│  Player:     Dr. Eliza Vance — investigative journalist │
│  Premise:    You wake inside the asylum with no memory  │
│              of how you arrived. The building shifts     │
│              around you. Patients roam the halls.        │
│              Something older than the asylum             │
│              watches from the void between rooms.        │
│                                                         │
│  Tone:       Silent Hill meets Amnesia meets Outlast    │
│  Core Loop:  Explore → Find clues → Solve puzzles →     │
│              Evade threats → Piece together memory →    │
│              Unlock new areas → Reality shifts          │
└─────────────────────────────────────────────────────────┘
```

---

## Folder Structure

```
Content/Game/                              ← ALL game content (NEVER modify Framework/)
│
├── GAMEINDEX.uasset                       ← (optional) Empty Data Asset — marker file
│
├── Core/                                   ← Core game classes (child of Framework classes)
│   ├── GI_HorrorGame.uasset               ← Child of GI_GameFramework
│   ├── GM_HorrorGameMode.uasset           ← Child of GM_CoreGameMode
│   ├── PC_HorrorController.uasset         ← Child of PC_CoreController (or PlayerController)
│   ├── PS_HorrorPlayerState.uasset        ← Child of PS_CorePlayerState
│   ├── GS_HorrorGameState.uasset          ← Child of GS_CoreGameState
│   └── FL_HorrorUtilities.uasset          ← Child of FL_GameUtilities (game-specific utils)
│
├── Characters/                             ← Player & NPC Blueprints
│   ├── BP_HorrorPlayerCharacter.uasset    ← GASP-based player pawn (all BPC_ components)
│   ├── BP_Enemy_Patient.uasset            ← Melee-chase enemy (slow, persistent)
│   ├── BP_Enemy_Shade.uasset             ← Teleporting horror (rare, terrifying)
│   ├── BP_Enemy_Orderly.uasset            ← Fast, flashlight-vulnerable enemy
│   └── BP_NPC_Survivor.uasset             ← Friendly NPC for dialogue/objectives
│
├── Items/                                  ← DA_ItemData children — all game items
│   ├── DA_Item_Flashlight.uasset          ← Tool — toggleable light (see item-flashlight.md)
│   ├── DA_Item_Pistol.uasset              ← Weapon — 9mm (see item-pistol.md)
│   ├── DA_Item_MedKit.uasset              ← Consumable — health restore (see item-medkit.md)
│   ├── DA_Item_Keycard_Omega.uasset       ← KeyItem — progression gate (see item-keycard.md)
│   │
│   ├── DA_Item_Ammo_9mm.uasset            ← Ammo — pistol rounds
│   ├── DA_Item_Shotgun.uasset             ← Weapon — double barrel
│   ├── DA_Item_Ammo_Shells.uasset         ← Ammo — shotgun shells
│   ├── DA_Item_Battery.uasset             ← Consumable — flashlight power
│   ├── DA_Item_AdrenalineSyringe.uasset   ← Consumable — temporary stamina boost
│   ├── DA_Item_SanityPill.uasset          ← Consumable — stress reduction
│   ├── DA_Item_Crowbar.uasset             ← Tool — pry doors, melee weapon
│   ├── DA_Item_Keycard_Alpha.uasset       ← KeyItem — east wing access
│   ├── DA_Item_Keycard_Beta.uasset        ← KeyItem — basement access
│   ├── DA_Item_Key_Wardens.uasset         ← KeyItem — warden's office
│   ├── DA_Item_JournalPage.uasset         ← Document — lore collectible
│   ├── DA_Item_PatientFile.uasset         ← Document — story collectible
│   ├── DA_Item_OldPhoto.uasset            ← Collectible — memory fragment
│   └── DA_Item_VoidShard.uasset           ← Collectible — rare, ending-related
│
├── Pickups/                                ← BP_Pickup_* children — world pickup actors
│   ├── BP_Pickup_Flashlight.uasset
│   ├── BP_Pickup_Pistol.uasset
│   ├── BP_Pickup_MedKit.uasset
│   ├── BP_Pickup_KeycardOmega.uasset
│   ├── BP_Pickup_Ammo_9mm.uasset
│   ├── BP_Pickup_Shotgun.uasset
│   ├── BP_Pickup_Ammo_Shells.uasset
│   ├── BP_Pickup_Battery.uasset
│   ├── BP_Pickup_AdrenalineSyringe.uasset
│   ├── BP_Pickup_SanityPill.uasset
│   ├── BP_Pickup_Crowbar.uasset
│   ├── BP_Pickup_KeycardAlpha.uasset
│   ├── BP_Pickup_KeycardBeta.uasset
│   ├── BP_Pickup_KeyWardens.uasset
│   ├── BP_Pickup_JournalPage.uasset
│   ├── BP_Pickup_PatientFile.uasset
│   ├── BP_Pickup_OldPhoto.uasset
│   └── BP_Pickup_VoidShard.uasset
│
├── Actors/                                 ← World interaction actors
│   ├── BP_Door_Asylum.uasset              ← Standard door (open/close/lock)
│   ├── BP_Door_OmegaWing.uasset           ← Keycard-locked door
│   ├── BP_Door_Barricaded.uasset          ← Crowbar-required door
│   ├── BP_Door_Void.uasset                ← Reality-shifting door (adaptive env)
│   ├── BP_Chest_Supply.uasset             ← Container inventory (lootable)
│   ├── BP_Desk_Drawer.uasset              ← Container inventory (small)
│   ├── BP_FilingCabinet.uasset            ← Container inventory (documents)
│   ├── BP_Puzzle_Fusebox.uasset           ← Puzzle device (restore power)
│   ├── BP_Puzzle_PipeOrgan.uasset         ← Puzzle device (play melody)
│   ├── BP_Puzzle_MorgueDrawers.uasset     ← Puzzle device (find body)
│   ├── BP_HidingSpot_Locker.uasset        ← Hiding spot
│   ├── BP_HidingSpot_UnderBed.uasset      ← Hiding spot
│   ├── BP_HidingSpot_Wardrobe.uasset      ← Hiding spot
│   ├── BP_Checkpoint_SafeRoom.uasset      ← Checkpoint actor
│   ├── BP_Checkpoint_Mirror.uasset        ← Checkpoint actor (thematic)
│   ├── BP_Usable_Lever.uasset             ← Usable world object
│   ├── BP_Usable_Valve.uasset             ← Usable world object
│   ├── BP_Usable_Button.uasset            ← Usable world object
│   └── BP_DiegeticScreen_Monitor.uasset   ← Diegetic display (security monitor)
│
├── Weapons/                                ← Held weapon actors
│   ├── BP_Pistol_Held.uasset              ← Equipped pistol (I_UsableItem, I_Toggleable)
│   ├── BP_Flashlight_Held.uasset          ← Equipped flashlight (I_UsableItem, I_Toggleable)
│   ├── BP_Shotgun_Held.uasset             ← Equipped shotgun
│   └── BP_Crowbar_Held.uasset             ← Equipped crowbar (tool + melee)
│
├── UI/                                     ← Game-specific UI widgets
│   ├── WBP_GameHUDController.uasset       ← Child of WBP_HUDController (game-specific layout)
│   ├── WBP_GameMainMenu.uasset            ← Child of WBP_MainMenu (game title/branding)
│   ├── WBP_GamePauseMenu.uasset           ← Child of WBP_PauseMenu
│   ├── WBP_GameInventoryMenu.uasset       ← Child of WBP_InventoryMenu
│   ├── WBP_SplashHorror.uasset            ← Child of WBP_SplashScreen
│   ├── WBP_JournalHorror.uasset           ← Child of WBP_JournalDocumentViewer
│   ├── WBP_DeathScreen.uasset             ← Custom death/void space screen
│   └── WBP_LoadingHorror.uasset           ← Child of WBP_LoadingScreen (tips, atmosphere)
│
├── DataAssets/                             ← DA_* content instances
│   ├── DA_InputMapping_Horror_PC.uasset   ← Input mapping profile for horror game
│   ├── DA_InputMapping_Horror_Xbox.uasset ← Console profile
│   ├── DA_Encounter_WardA_Patrol.uasset   ← Encounter data
│   ├── DA_Encounter_ShadeAmbush.uasset    ← Encounter data
│   ├── DA_Atmosphere_WardA_Standard.uasset← Atmosphere profile per area
│   ├── DA_Atmosphere_Basement_Dark.uasset
│   ├── DA_Atmosphere_VoidSpace.uasset
│   ├── DA_Scare_LockerJumpscare.uasset    ← Scare event data
│   ├── DA_Scare_MirrorApparition.uasset
│   ├── DA_Scare_WindowFace.uasset
│   ├── DA_Scare_VoidWhisper.uasset
│   ├── DA_Puzzle_FuseboxData.uasset       ← Puzzle data
│   ├── DA_Puzzle_PipeOrganData.uasset
│   ├── DA_Puzzle_MorgueDrawersData.uasset
│   ├── DA_Objective_FindKeys.uasset       ← Objective data
│   ├── DA_Objective_RestorePower.uasset
│   ├── DA_Objective_EscapeAsylum.uasset
│   ├── DA_AdaptationRule_Horror.uasset    ← Difficulty adaptation rules
│   ├── DA_BehaviourVariant_Patient.uasset ← AI behavior variants
│   ├── DA_BehaviourVariant_Shade.uasset
│   ├── DA_BehaviourVariant_Orderly.uasset
│   ├── DA_RoomAcoustic_WardA.uasset       ← Room acoustic presets
│   ├── DA_RoomAcoustic_Basement.uasset
│   └── DA_RoomAcoustic_Void.uasset
│
├── AI/                                     ← AI controllers, behavior trees, blackboards
│   ├── AI_PatientController.uasset        ← AI controller for Patient enemy
│   ├── AI_ShadeController.uasset          ← AI controller for Shade enemy
│   ├── AI_OrderlyController.uasset        ← AI controller for Orderly enemy
│   ├── BT_PatientBehavior.uasset          ← Behavior tree
│   ├── BT_ShadeBehavior.uasset
│   ├── BT_OrderlyBehavior.uasset
│   ├── BB_PatientData.uasset              ← Blackboard data
│   ├── BB_ShadeData.uasset
│   ├── BB_OrderlyData.uasset
│   └── BP_PatrolPath_Asylum.uasset        ← Patrol paths per area
│
├── Narrative/                              ← Narrative data + trigger volumes
│   ├── DA_Dialogue_Intro.uasset           ← Dialogue data
│   ├── DA_Dialogue_SurvivorEncounter.uasset
│   ├── DA_Dialogue_EndingTruth.uasset
│   ├── DA_Cutscene_Opening.uasset         ← Cutscene data
│   ├── DA_Cutscene_Ending.uasset
│   ├── BP_NarrativeTrigger_Intro.uasset   ← Trigger volumes
│   ├── BP_NarrativeTrigger_VoidFirst.uasset
│   ├── BP_NarrativeTrigger_Ending.uasset
│   └── DA_LoreEntry_*.uasset              ← Lore/data entries
│
├── Encounters/                             ← Procedural encounter spawners
│   ├── BP_EncounterSpawner_WardA.uasset
│   ├── BP_EncounterSpawner_Basement.uasset
│   └── BP_EncounterSpawner_Void.uasset
│
├── Atmosphere/                             ← Atmosphere + scare event actors
│   ├── BP_LightEvent_Flicker.uasset
│   ├── BP_ScareEvent_LockerBang.uasset
│   ├── BP_ScareEvent_Mirror.uasset
│   ├── BP_HorrorMirror_Morgue.uasset        ← Horror mirror (wrong reflection scare)
│   ├── BP_Mirror_NurseStation.uasset        ← Standard mirror (checkpoint reflection)
│   └── BP_AtmosphereController_WardA.uasset
│
├── Capture/                                 ← Planar Capture surface actors
│   ├── BP_Mirror_NurseStation.uasset        ← Standard mirror: Mode=Mirror, aged, checkpoint
│   ├── BP_HorrorMirror_Morgue.uasset        ← Horror mirror: wrong reflection, steam scare
│   ├── BP_HorrorMirror_WardensOffice.uasset ← Horror mirror: final entity confrontation
│   ├── BP_Monitor_Security.uasset           ← Security monitor: hallway camera feed, scanlines
│   ├── BP_Monitor_Morgue.uasset             ← Morgue monitor: static noise, flicker, Shade cameo
│   ├── BP_Portal_VoidEntrance.uasset        ← Void portal entrance (Basement → VoidSpace)
│   ├── BP_Portal_VoidExit.uasset            ← Void portal exit (VoidSpace → Basement)
│   ├── BP_FakeWindow_WardensOffice.uasset   ← Atmospheric window: rain, night, parallax
│   └── DA_PlanarCaptureProfile_Mirror.uasset← Capture profile Data Assets
│
├── Audio/                                  ← Game-specific audio assets
│   ├── DA_AudioSettings_Horror.uasset     ← Audio bus config
│   ├── BP_RoomAudioZone_WardA.uasset      ← Room audio zone volumes
│   ├── BP_RoomAudioZone_Basement.uasset
│   └── BP_RoomAudioZone_Void.uasset
│
├── Save/                                   ← Save system instances
│   ├── BP_Checkpoint_WardAEntry.uasset    ← Placed checkpoint actors
│   ├── BP_Checkpoint_BasementGate.uasset
│   └── BP_Checkpoint_VoidThreshold.uasset
│
├── Polish/                                 ← Tutorial, loading, credits
│   ├── BP_TutorialTrigger_Controls.uasset ← Tutorial prompt triggers
│   ├── BP_TutorialTrigger_Hiding.uasset
│   ├── BP_TutorialTrigger_Combat.uasset
│   └── BP_CreditsSequence.uasset          ← Credits level/sequence
│
├── Input/                                  ← Game-specific input overrides (if any)
│   └── (Empty unless overriding framework IMC_/IA_ assets)
│
└── Maps/                                   ← ALL levels
    ├── L_SplashScreen.umap                ← Disclaimer/splash → auto-advances
    ├── L_MainMenu.umap                     ← Title screen with 3D background
    ├── L_Asylum_Entry.umap                ← Tutorial zone — waking up
    ├── L_Asylum_WardA.umap                ← First major area
    ├── L_Asylum_WardB.umap                ← Second area (keycard gate)
    ├── L_Asylum_Basement.umap             ← Dark horror area
    ├── L_Asylum_VoidSpace.umap            ← Reality-shifted zone
    ├── L_Asylum_WardensOffice.umap        ← Climax area
    ├── L_Ending_Truth.umap                ← Final ending sequence
    ├── L_Credits.umap                      ← Credits roll
    └── L_Test_Sandbox.umap                ← Developer testing sandbox
```

---

## Scene Loading Flow (Complete)

```
BOOT SEQUENCE
═══════════════════════════════════════════════════════════

[Engine Init]
   │
   └─ GI_GameFramework (Framework/Core/) — kernel boots
        ├─ Initialize all SS_ subsystems:
        │   ├─ SS_SaveManager (35) — mount save directory
        │   ├─ SS_SettingsSystem (105) — load persistent settings
        │   ├─ SS_EnhancedInputManager (128) — load input profiles
        │   ├─ SS_AudioManager (132) — init MetaSound buses
        │   ├─ SS_AchievementSystem (103) — load achievement state
        │   └─ SS_UIManager (44) — create menu widget cache
        │
        ├─ DA_GameTagRegistry (01) — validate all tags
        ├─ Set Game Phase → Loading
        └─ OpenLevel → L_SplashScreen
              │
              ▼
    ┌─────────────────────────────────────┐
    │  L_SplashScreen                     │  (5–8 seconds, skippable)
    │  ├─ Studio logo (fade in/out)       │
    │  ├─ UE5 logo                        │
    │  ├─ "Project Void" title card       │
    │  │   └─ Audio: MS_MusicBus plays    │
    │  │       menu_ambient_loop          │
    │  ├─ Health warning                  │
    │  └─ Auto-advance or Skip →          │
    └──────────────┬──────────────────────┘
                   │
                   ▼
    ┌─────────────────────────────────────┐
    │  L_MainMenu                         │
    │  ├─ WBP_GameMainMenu displayed      │
    │  ├─ 3D background: asylum hallway   │
    │  ├─ Menu options:                   │
    │  │   ├─ New Game → L_Asylum_Entry   │
    │  │   ├─ Continue → Load latest save │
    │  │   ├─ Load Game → Save slot UI    │
    │  │   ├─ Settings → WBP_SettingsMenu │
    │  │   ├─ Credits → L_Credits        │
    │  │   └─ Quit → Confirm → Quit      │
    │  └─ Audio: MS_MusicBus menu_theme   │
    └──────────────┬──────────────────────┘
                   │  New Game
                   ▼
    ┌─────────────────────────────────────┐
    │  LOADING SCREEN                     │
    │  ├─ WBP_LoadingHorror displayed     │
    │  ├─ Progress bar + atmosphere tip   │
    │  ├─ SS_SaveManager.ResetGameState() │
    │  ├─ GI_GameFramework.SetPhase       │
    │  │   (InGame) on level loaded       │
    │  └─ Audio: crossfade to game amb    │
    └──────────────┬──────────────────────┘
                   │
                   ▼
GAMEPLAY LOOP
═══════════════════════════════════════════════════════════

    ┌─────────────────────────────────────┐
    │  L_Asylum_Entry (Tutorial)          │
    │  ├─ Player wakes in padded cell     │
    │  ├─ Tutorial triggers:              │
    │  │   ├─ Move/Look (BP_Tutorial_*)   │
    │  │   ├─ Interact (pick up note)     │
    │  │   ├─ Crouch (vent)              │
    │  │   └─ Hide (first patient sight)  │
    │  ├─ First objective: "Find a way    │
    │  │   out of this wing"              │
    │  └─ Exit → L_Asylum_WardA          │
    └──────────────┬──────────────────────┘
                   │
                   ▼
    ┌─────────────────────────────────────┐
    │  L_Asylum_WardA (Exploration)       │
    │  ├─ Find: Flashlight (dark hallway) │
    │  ├─ Find: Pistol (security office)  │
    │  ├─ Puzzle: Restore fusebox power   │
    │  ├─ Encounter: Patient enemy        │
    │  ├─ Find: Keycard Alpha             │
    │  ├─ Atmosphere: Flickering lights,  │
    │  │   ambient whispers, room zones   │
    │  └─ Exit → L_Asylum_WardB          │
    └──────────────┬──────────────────────┘
                   │
                   ▼
    ┌─────────────────────────────────────┐
    │  L_Asylum_WardB (Horror Ramp)       │
    │  ├─ Keycard-gated doors             │
    │  ├─ Find: Shotgun (morgue)          │
    │  ├─ Puzzle: Pipe organ melody       │
    │  ├─ Encounter: Orderly enemy        │
    │  ├─ First Void Space shift          │
    │  │   └─ Reality warps: walls bleed, │
    │  │       corridors loop             │
    │  ├─ Find: Keycard Beta              │
    │  └─ Exit → L_Asylum_Basement       │
    └──────────────┬──────────────────────┘
                   │
                   ▼
    ┌─────────────────────────────────────┐
    │  L_Asylum_Basement (Dark Horror)    │
    │  ├─ No lights — battery management  │
    │  ├─ Puzzle: Morgue drawer sequence  │
    │  ├─ Encounter: Shade enemy          │
    │  ├─ Stress system peaks —           │
    │  │   hallucinations trigger         │
    │  ├─ Find: Warden's Key              │
    │  └─ Exit → L_Asylum_WardensOffice  │
    └──────────────┬──────────────────────┘
                   │
                   ▼
    ┌─────────────────────────────────────┐
    │  L_Asylum_VoidSpace (Climax)        │
    │  ├─ Reality fully broken            │
    │  ├─ Chase sequence (Shade pursues)  │
    │  ├─ Ending accumulator evaluates    │
    │  │   choices made during game       │
    │  └─ Exit → L_Ending_Truth           │
    └──────────────┬──────────────────────┘
                   │
                   ▼
    ┌─────────────────────────────────────┐
    │  L_Ending_Truth (Resolution)        │
    │  ├─ Final cutscene plays            │
    │  ├─ Ending determined by:           │
    │  │   ├─ VoidShards collected        │
    │  │   ├─ Survivors saved/killed      │
    │  │   ├─ Sanity level at end         │
    │  │   └─ Key choices made            │
    │  └─ Auto-advance → L_Credits       │
    └──────────────┬──────────────────────┘
                   │
                   ▼
    ┌─────────────────────────────────────┐
    │  L_Credits                          │
    │  ├─ Scroll credits + atmospheric    │
    │  │   post-credit scene              │
    │  ├─ Achievement unlocks fire        │
    │  └─ Return → L_MainMenu            │
    └─────────────────────────────────────┘


PAUSE / DEATH / SAVE BRANCHES (any gameplay level)
═══════════════════════════════════════════════════════════

PRESS ESC → SS_UIManager.PushMenu(PauseMenu)
   ├─ GI_GameFramework.SetPhase(Paused)
   ├─ SS_EnhancedInputManager.SetInputModeUIOnly()
   ├─ WBP_HUDController hides diegetic elements
   ├─ WBP_GamePauseMenu shows (Resume/Save/Load/Settings/Quit)
   └─ Resume → PopMenu → SetPhase(InGame) → restore input

PLAYER DIES → BPC_DeathHandlingSystem (39)
   ├─ Death animation plays
   ├─ BPC_StateManager.ForcePushState(Death)
   ├─ Check if VoidSpace conditions met:
   │   ├─ Yes → BPC_AltDeathSpaceSystem.EnterVoidSpace()
   │   │   └─ Load L_Asylum_VoidSpace + solve puzzle to return
   │   └─ No → BPC_PlayerRespawnSystem.RespawnAtCheckpoint()
   │        └─ Load last checkpoint → restore state
   ├─ BPC_PersistentCorpseSystem leaves corpse
   └─ BPC_RunHistoryTracker logs death

CHECKPOINT TOUCHED → BP_Checkpoint (37)
   ├─ SS_SaveManager.CreateAutoSave()
   ├─ BPC_PersistentWorldStateRecorder captures world state
   │   └─ Door states, item pickups, enemy positions, flags
   ├─ WBP_NotificationToast shows "Checkpoint Reached"
   └─ Screen vignette pulses briefly
```

---

## Framework System Coverage Map

Each game asset proves a specific framework system works. Below: every framework system → which game asset demonstrates it.

### 01-core (Foundation — 7 systems)
| # | Framework System | Game Asset That Uses It |
|---|-----------------|------------------------|
| 01 | DA_GameTagRegistry | All game items/pickups (tags registered) |
| 02 | FL_GameUtilities | FL_HorrorUtilities (game-specific helpers) |
| 03 | I_InterfaceLibrary | All items, doors, enemies (I_Interactable, I_Damageable, I_UsableItem, I_Lockable, I_Persistable) |
| 04 | GI_GameFramework | GI_HorrorGame (child — sets TagRegistry, initializes game) |
| 05 | GM_CoreGameMode | GM_HorrorGameMode (child — horror-specific rules, deaths) |
| 06 | GS_CoreGameState | GS_HorrorGameState (tracks horror-specific global flags) |
| 07 | DA_ItemData | ALL DA_Item_* assets (13 items) |

### 02-player (Player State — 8 systems)
| # | Framework System | How Demonstrated |
|---|-----------------|-----------------|
| 08 | BPC_HealthSystem | Player takes damage from enemies → health decreases → death |
| 09 | BPC_StaminaSystem | Sprinting drains stamina; AdrenalineSyringe restores it |
| 10 | BPC_StressSystem | Darkness, enemy proximity, hallucinations increase stress tiers |
| 11 | BPC_MovementStateSystem | Walk/Sprint/Crouch/Sneak — GASP locomotion states |
| 12 | BPC_HidingSystem | Lockers, under beds, wardrobes — hide from enemies |
| 13 | BPC_EmbodimentSystem | First-person body visible; arm IK when holding items |
| 14 | BPC_CameraStateLayer | FOV changes: combat zoom, hide peek, inspection zoom |
| 15 | BPC_PlayerMetricsTracker | Accuracy tracking per weapon, playstyle classification |

### 03-interaction (World Interaction — 8 systems)
| # | Framework System | Game Asset |
|---|-----------------|-----------|
| 16 | BPC_InteractionDetector | All pickups, doors, puzzles, hiding spots |
| 17 | I_HidingSpot | BP_HidingSpot_Locker, _UnderBed, _Wardrobe |
| 18 | BPC_DiegeticDisplay | BP_DiegeticScreen_Monitor (security camera feed) |
| 19 | BP_DoorActor | BP_Door_Asylum, _OmegaWing, _Barricaded, _Void |
| 20 | BP_PuzzleDeviceActor | BP_Puzzle_Fusebox, _PipeOrgan, _MorgueDrawers |
| 21 | BPC_ContextualTraversalSystem | Vaulting over gurneys, mantling debris |
| 22 | BPC_PhysicsDragSystem | Dragging bodies/crates to climb or block doors |
| 23 | BPC_UsableWorldObjectSystem | Levers, valves, buttons (power, gas, elevator) |

### 04-inventory (Inventory — 11 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 24 | BPC_ContainerInventory | BP_Chest_Supply, BP_Desk_Drawer, BP_FilingCabinet |
| 25 | BP_ItemPickup | All 18 BP_Pickup_* actors |
| 26 | BPC_ActiveItemSystem | Quick-slot cycling through weapons/tools |
| 27 | BPC_CollectibleTracker | Old Photos, Void Shards (tracked, set bonuses) |
| 28 | BPC_ConsumableSystem | MedKit, Battery, Adrenaline, Sanity Pill use |
| 29 | BPC_DocumentArchiveSystem | Journal Pages, Patient Files (readable/journal) |
| 30 | BPC_EquipmentSlotSystem | PrimaryWeapon (pistol/shotgun), Tool (flashlight/crowbar) |
| 31 | BPC_InventorySystem | Full inventory grid with all items |
| 32 | BPC_ItemCombineSystem | Combine Battery+Flashlight to restore charge |
| 33 | BPC_JournalSystem | Active objectives displayed, completions logged |
| 34 | BPC_KeyItemSystem | Keycards, Warden's Key — door unlocking, protection from loss |

### 05-saveload (Save/Load — 9 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 35 | SS_SaveManager | Auto-save at checkpoints, manual save, load slots |
| 36 | I_Persistable | All doors, pickups, enemies (save/restore state) |
| 37 | BP_Checkpoint | BP_Checkpoint_SafeRoom, _Mirror |
| 38 | BPC_AltDeathSpaceSystem | Void Space on death — enter, explore, find exit |
| 39 | BPC_DeathHandlingSystem | Death → respawn or void space → state restoration |
| 40 | BPC_PersistentCorpseSystem | Enemy corpses persist across save/load/respawn |
| 41 | BPC_PersistentWorldStateRecorder | Door states, picked items, enemy positions saved |
| 42 | BPC_PlayerRespawnSystem | Respawn at last checkpoint after death |
| 43 | BPC_RunHistoryTracker | Death count, playtime, checkpoints per run |

### 06-ui (UI — 14 systems)
| # | Framework System | Game Override |
|---|-----------------|--------------|
| 44 | SS_UIManager | Menu stack manages all game menus |
| 45 | WBP_AccessibilityUI | Subtitles for whispered voices + accessibility options |
| 46 | WBP_DiegeticHUDFrame | Health/stress/stamina displayed on wristwatch |
| 47 | WBP_HUDController | WBP_GameHUDController (horror-themed layout) |
| 48 | WBP_InteractionPromptDisplay | "Pick up [Item]" / "Open [Door]" prompts |
| 49 | WBP_InventoryMenu | WBP_GameInventoryMenu (grid with horror styling) |
| 50 | WBP_JournalDocumentViewer | WBP_JournalHorror (reads documents + photos) |
| 51 | WBP_MainMenu | WBP_GameMainMenu ("Project Void" title + asylum background) |
| 52 | WBP_MenuFlowController | Handles back-nav across all menus |
| 53 | WBP_NotificationToast | "Checkpoint Reached" / "New Objective" toasts |
| 54 | WBP_ObjectiveDisplay | "Find the Warden's Key" / "Escape the Asylum" |
| 55 | WBP_PauseMenu | WBP_GamePauseMenu |
| 56 | WBP_ScreenEffectController | Damage vignette, stress blur, void distortion |
| 57 | WBP_SettingsMenu | Volume sliders → SS_AudioManager, control rebinding |

### 07-narrative (Narrative — 11 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 58 | BPC_NarrativeStateSystem | Chapter flags: "WardA_Complete", "MetSurvivor" |
| 59 | BPC_ObjectiveSystem | 3 main objectives + optional side objectives |
| 60 | BPC_DialoguePlaybackSystem | Survivor dialogue, whispered void voices |
| 61 | BPC_DialogueChoiceSystem | Player response choices to survivor NPC |
| 62 | BPC_BranchingConsequenceSystem | Choices affect ending, NPC survival, item availability |
| 63 | BPC_TrialScenarioSystem | Timed escape from Void Space |
| 64 | BPC_CutsceneBridge | Opening wake-up cutscene + ending cinematics |
| 65 | BPC_LoreUnlockSystem | Patient files, journal pages unlock lore entries |
| 66 | DA_NarrativeDataAssets | DA_Dialogue_*, DA_Cutscene_*, DA_Objective_* |
| 67 | BP_NarrativeTriggerVolume | BP_NarrativeTrigger_Intro, _VoidFirst, _Ending |
| 68 | BPC_EndingAccumulator | Tracks VoidShards, survivors, sanity → determines ending |

### 08-weapons (Weapons & Combat — 11 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 69 | BP_WeaponBase | BP_Pistol_Held, BP_Shotgun_Held |
| 70 | BPC_AmmoComponent | Pistol (9mm pool), Shotgun (shell pool) |
| 71 | BPC_CombatFeedbackComponent | Hit markers on enemy damage, kill confirm |
| 72 | BPC_DamageReceptionSystem | Enemy damage → resistance → health reduction |
| 73 | BPC_DeathCauseTracker | Logs: "Killed by Patient (melee)", "Killed by Shade (void)" |
| 74 | BPC_FirearmSystem | Pistol hitscan, Shotgun pellet spread |
| 75 | BPC_HitReactionSystem | Enemies flinch/stagger on hit |
| 76 | BPC_MeleeSystem | Crowbar swing (block, heavy attack) |
| 77 | BPC_RecoilSystem | Pistol recoil kick, Shotgun heavy kick |
| 78 | BPC_ReloadSystem | Pistol tactical reload, Shotgun shell-by-shell |
| 79 | BPC_ShieldDefenseSystem | (Optional) Warden's riot shield pickup |

### 09-ai (AI — 9 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 80 | BP_EnemyBase | BP_Enemy_Patient, BP_Enemy_Shade, BP_Enemy_Orderly |
| 81 | BP_PatrolPath | BP_PatrolPath_* throughout asylum hallways |
| 82 | BPC_AlertSystem | Suspicious→Alerted→Combat transitions |
| 83 | BPC_AIStateMachine | Patrol/Search/Combat/Flee state machine |
| 84 | AI_BaseAgentController | AI_PatientController, AI_ShadeController, AI_OrderlyController |
| 85 | BB_AgentBoard | BB_PatientData, BB_ShadeData, BB_OrderlyData |
| 86 | BPC_AIMemorySystem | Last known player location, investigation points |
| 87 | BPC_AIPerceptionSystem | Sight (flashlight increases visibility), hearing (running attracts) |
| 88 | BPC_BehaviourVariantSelector | Patient: Aggressive/Curious/Erratic variants |

### 10-adaptive (Adaptive — 15 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 89 | BPC_DifficultyManager | Player deaths → easier encounters; success → harder |
| 90 | BPC_FearSystem | AI fear of flashlight; player fear affects stress |
| 91 | BPC_PerformanceScaler | LOD scaling in large ward areas |
| 92 | BPC_ProceduralEncounter | BP_EncounterSpawner_* (dynamic enemy placement) |
| 93 | BPC_AdaptiveEnvironmentDirector | Room mutations: hallway reconfigures, doors disappear |
| 94 | BPC_AtmosphereStateController | WardA: tense → WardB: horror → Void: nightmare |
| 95 | BPC_AudioAtmosphereController | [DEPRECATED — replaced by SS_AudioManager] |
| 96 | BPC_LightEventController | Flickering lights, bulb explosions, emergency red |
| 97 | BPC_MemoryDriftSystem | Visual distortions: walls breathing, text shifting |
| 98 | BPC_PacingDirector | Intensity bands: exploration→tension→encounter→recovery |
| 99 | BPC_PlaystyleClassifier | Aggressive (shoot everything) vs Stealthy (hide) detection |
| 100 | BPC_RareEventSystem | Rare whisper events, ghostly apparitions |
| 101 | BPC_ScareEventSystem | Locker bang, mirror face, window hand slam |
| 132 | SS_AudioManager | All audio routing, bus management, room zone switching |
| 133 | BP_RoomAudioZone | BP_RoomAudioZone_WardA, _Basement, _Void |
| 134 | DA_AudioSettings | DA_AudioSettings_Horror (mix levels, ducking) |
| 135 | DA_RoomAcousticPreset | DA_RoomAcoustic_WardA, _Basement, _Void (reverb/occlusion) |

### 11-meta (Meta — 2 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 102 | BPC_ProgressStatTracker | Total playtime, collectibles found, enemies killed |
| 103 | SS_AchievementSystem | "First Light" (flashlight), "Untouchable" (no-damage run) |

### 12-settings (Settings — 5 systems)
| # | Framework System | Demonstrated By |
|---|----------------|----------------|
| 104 | BPC_AccessibilitySettings | Subtitle toggle, colorblind mode, controller remap |
| 105 | SS_SettingsSystem | Audio/Video/Controls persistent settings |
| 148 | BPC_HapticsController | Controller vibration: damage, weapon fire, heartbeat, footsteps, scares. Attached to PC_HorrorController |
| 149 | BPC_RenderPipelineManager | Quality presets (Low→Cinematic), Lumen/Baked switching, DLSS/FSR/TSR upscaling. PlanarCapture budget aware |

### 13-polish (Polish — 9 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 106 | BPC_AnalyticsTracker | Session metrics: time in each area, death locations |
| 107 | BPC_DevCheatManager | God mode, give item, teleport to area (dev testing) |
| 108 | BPC_ErrorHandler | Crash logging, safe recovery on level load failure |
| 109 | BPC_FPSCounter | Dev-only FPS overlay |
| 110 | BPC_LoadingScreen | WBP_LoadingHorror (progress bar + horror tips) |
| 111 | BPC_TutorialSystem | BP_TutorialTrigger_Controls, _Hiding, _Combat |
| 112 | WBP_CreditsScreen | L_Credits level + scroll widget |
| 113 | WBP_DebugMenu | Toggle debug: show AI paths, perception, stress values |
| 114 | WBP_SplashScreen | WBP_SplashHorror (studio logo + title + health warning) |

### 15-input (Input)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 128 | SS_EnhancedInputManager | All input contexts (Default, Hiding, WristwatchUI, UI, Inspection) |

### 16-state (State Management)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 130 | BPC_StateManager | Hiding blocks fire; death blocks interaction; cutscene blocks all |
| 131 | DA_StateGatingTable | Designer-configurable state permission rules |

### 17-capture (Planar Capture — 12 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 136 | BPC_PlanarCapture | All capture surfaces (component managing SceneCapture2D lifecycle) |
| 137 | BP_PlanarCaptureActor | BP_Mirror, BP_Portal, BP_Monitor, BP_HorrorMirror, BP_FakeWindow (all extend this) |
| 138 | SS_PlanarCaptureManager | Auto-created WorldSubsystem — manages quality budget across all 8 surfaces |
| 139 | BP_Mirror | BP_Mirror_NurseStation — standard reflection mirror with aging |
| 140 | BP_Portal | BP_Portal_VoidEntrance/Exit — void portal teleport with clip plane |
| 141 | BP_Monitor | BP_Monitor_Security/Morgue — security camera feeds, scanlines, static noise |
| 142 | BP_HorrorMirror | BP_HorrorMirror_Morgue/WardensOffice — wrong reflection, steam, text, scare events |
| 143 | BP_FakeWindow | BP_FakeWindow_WardensOffice — atmospheric window with weather overlay |
| 144 | M_CaptureSurface_Master | All mirror/portal/monitor surfaces (9-layer material stack) |
| 145 | MPC_CaptureSurface | All 10 MPC scalar params (SteamIntensity, DirtOpacity, MirrorDarkness, etc.) |
| 146 | DA_PlanarCaptureProfile | DA_PlanarCaptureProfile_Mirror — per-surface quality config |
| 147 | MI_MirrorInstances | MI_Mirror_Clean/Dirty/Steam/Horror, MI_Portal_Standard, MI_Monitor_Security, MI_FakeWindow_Interior |

---

## Build Order (Dependency-Safe)

Follow this order when creating uasset files in UE5:

| Phase | Content | Depends On | Approx. Assets |
|-------|---------|-----------|:---:|
| 0 | **Project Settings** — Plugins, GameplayTags, Asset Manager, Collision | *(none)* | — |
| 1 | **Core Classes** — GI_HorrorGame, GM_HorrorGameMode, PC_HorrorController, PS_HorrorPlayerState, GS_HorrorGameState | Framework C++ classes | 5 |
| 2 | **Maps** — L_SplashScreen, L_MainMenu, L_Test_Sandbox | Core Classes | 3 |
| 3 | **Input** — DA_InputMapping_Horror_PC (_Xbox) + IMC/IA references | SS_EnhancedInputManager | 2 |
| 4 | **Player Character** — BP_HorrorPlayerCharacter + all BPC_ components | Core, Maps, Input | 1 |
| 5 | **Data Assets (Items)** — All DA_Item_* assets | DA_ItemData | 13 |
| 6 | **Pickups** — All BP_Pickup_* actors | BP_ItemPickup, DA_Item_* | 18 |
| 7 | **Doors & Actors** — All BP_Door_*, BP_HidingSpot_* | BP_DoorActor, I_HidingSpot | 12 |
| 8 | **Containers** — BP_Chest_Supply, BP_Desk_Drawer, BP_FilingCabinet | BPC_ContainerInventory | 3 |
| 9 | **Puzzles** — BP_Puzzle_Fusebox, _PipeOrgan, _MorgueDrawers | BP_PuzzleDeviceActor | 3 |
| 10 | **Weapons (Held)** — BP_Pistol_Held, BP_Shotgun_Held, BP_Flashlight_Held, BP_Crowbar_Held | BP_WeaponBase | 4 |
| 11 | **UI Widgets** — All WBP_Game* widgets | SS_UIManager, WBP_* parents | 8 |
| 12 | **Enemies** — BP_Enemy_Patient, _Shade, _Orderly + AI controllers + BT + BB | BP_EnemyBase | 12 |
| 13 | **Narrative** — DA_Dialogue_*, DA_Cutscene_*, DA_Objective_*, trigger volumes, lore | DA_NarrativeDataAssets | 12+ |
| 14 | **Data Assets (Content)** — Encounters, Atmosphere, Scares, Puzzles, Objectives, Behaviour, Acoustic | DA_* parents | 20+ |
| 15 | **Checkpoints** — BP_Checkpoint_SafeRoom, _Mirror | BP_Checkpoint | 2 |
| 16 | **Room Audio Zones** — BP_RoomAudioZone_* | BP_RoomAudioZone | 3 |
| 17 | **Capture Surfaces** — BP_Mirror_NurseStation, BP_HorrorMirror_Morgue/WardensOffice, BP_Monitor_Security/Morgue, BP_Portal_VoidEntrance/Exit, BP_FakeWindow_WardensOffice | BP_PlanarCaptureActor | 9 |
| 18 | **Encounter Spawners** — BP_EncounterSpawner_* | BPC_ProceduralEncounter | 3 |
| 18 | **Atmosphere Actors** — BP_LightEvent_*, BP_ScareEvent_*, BP_AtmosphereController_* | BPC_* parent | 6 |
| 19 | **Tutorial Triggers** — BP_TutorialTrigger_* | BPC_TutorialSystem | 3 |
| 20 | **Polish** — BP_CreditsSequence, dev cheats, debug menu | Framework | 3 |
| 21 | **Full Levels** — L_Asylum_Entry → _WardA → _WardB → _Basement → _VoidSpace → _WardensOffice → _Ending → _Credits | All previous | 8 |

---

## Documentation Map

Each `docs/game/` file explains how to build a specific section of the prototype:

| Document | Covers | Build Phase |
|----------|--------|:----------:|
| [`GAMEINDEX.md`](GAMEINDEX.md) | **THIS FILE** — master reference | — |
| [`README.md`](README.md) | How to use these docs + framework separation rule | — |
| [`core-gameinstance.md`](core-gameinstance.md) | GI_HorrorGame setup — session init, save slot, subsystems | 1 |
| [`core-gamemode.md`](core-gamemode.md) | GM_HorrorGameMode setup — spawn rules, chapter transitions, death routing | 1 |
| [`core-controller-state.md`](core-controller-state.md) | PC_HorrorController, PS_HorrorPlayerState, GS_HorrorGameState | 1 |
| [`scene-flow.md`](scene-flow.md) | Complete scene loading: Splash → Menu → Game → Pause → Death → Credits | 2 |
| [`playercharacter.md`](playercharacter.md) | BP_HorrorPlayerCharacter — all 15 BPC_ components wired, GASP integration | 4 |
| [`levels.md`](levels.md) | All 11 level maps — layout, objectives, encounters, atmosphere | 2, 21 |
| [`ui-overrides.md`](ui-overrides.md) | WBP_GameHUDController, WBP_GameMainMenu, WBP_GamePauseMenu, WBP_SplashHorror, WBP_LoadingHorror, WBP_JournalHorror, WBP_DeathScreen | 11 |
| [`items-index.md`](items-index.md) | All 13 DA_Item_* + 18 BP_Pickup_* — creation walkthroughs | 5, 6 |
| [`item-flashlight.md`](item-flashlight.md) | Flashlight Tool — full build (EXISTING) | 5, 6, 10 |
| [`item-pistol.md`](item-pistol.md) | Pistol Weapon — full build (EXISTING) | 5, 6, 10 |
| [`item-medkit.md`](item-medkit.md) | MedKit Consumable — full build (EXISTING) | 5, 6 |
| [`item-keycard.md`](item-keycard.md) | Keycard Key Item — full build (EXISTING) | 5, 6 |
| [`weapons-index.md`](weapons-index.md) | All held weapons — pistol, shotgun, flashlight, crowbar — wiring | 10 |
| [`enemies-index.md`](enemies-index.md) | All enemies — Patient, Shade, Orderly — AI controllers, BT, perception | 12 |
| [`narrative-progression.md`](narrative-progression.md) | Objectives, dialogue, cutscenes, ending accumulator, branching | 13 |
| [`atmosphere-audio.md`](atmosphere-audio.md) | Atmosphere profiles, scares, lighting, room audio zones, adaptive environment | 14, 16, 17, 18 |
| [`planar-capture-examples.md`](planar-capture-examples.md) | Mirrors, horror mirrors, security monitors, void portals, fake windows — all 8 capture surfaces | 17 |
| [`save-checkpoints.md`](save-checkpoints.md) | Save system, checkpoints, death loop, void space, persistence | 15 |
| [`polish-loading-credits.md`](polish-loading-credits.md) | Tutorials, loading screen, credits, debug, analytics | 19, 20 |
| [`state-gating-examples.md`](state-gating-examples.md) | DA_StateGatingTable game-specific rules | 14 |
| [`haptics-example.md`](haptics-example.md) | Controller haptics — damage, weapons, heartbeat, scares, platform tuning | 5, 10, 13, 14 |
| [`render-profiles-example.md`](render-profiles-example.md) | Render pipeline — per-platform quality presets, Lumen vs Baked, upscaling setup | 5, 12, 14 |

---

## Notes for Expansion

### Short-Term (Finish the Prototype)
- [ ] Create placeholder meshes (whitebox) for all items, weapons, enemies
- [ ] Record placeholder audio (or use UE5 starter content)
- [ ] Implement all 18 pickup actors following the 4 existing item examples
- [ ] Build full WBP_GameHUDController with horror styling
- [ ] Create 3 enemy types with behavior trees
- [ ] Wire all 11 levels with objectives and transitions
- [ ] Implement save/load at checkpoints

### Medium-Term (Polish)
- [ ] Replace whitebox meshes with final art
- [ ] Add full MetaSounds audio (150+ triggers per sound catalog)
- [ ] Implement all 14 animation notifies for GASP
- [ ] Add multiplayer support (server-authoritative replication)
- [ ] Create platform-specific input profiles (Xbox, PS5)
- [ ] Add accessibility: subtitles, colorblind, haptic feedback profiles

### Long-Term (Full Game)
- [ ] Write complete narrative with branching dialogue
- [ ] Design 10+ puzzle devices
- [ ] Create 20+ scare events per atmosphere catalog
- [ ] Implement adaptive difficulty with player metrics
- [ ] Add collectible tracking with achievement unlocks
- [ ] Create ending variations (3-5 endings)
- [ ] Implement New Game+ with harder variants
- [ ] Localize all text into 8+ languages

### Framework Separation Checklist
- [ ] `Content/Framework/` contains ONLY framework systems (never modified)
- [ ] `Content/Game/` contains ALL game-specific content
- [ ] Game Blueprints are children of Framework Blueprints (never modify parent)
- [ ] Game Data Assets are instances of Framework Data Asset types
- [ ] Game references framework via interfaces and dispatchers (no hard refs)
- [ ] Project Settings point to Framework GI_GameFramework as Game Instance
- [ ] Game Maps reference GM_HorrorGameMode as GameMode override

---

*GAMEINDEX v1.0 — Master reference for Project Void horror game prototype. All 135 framework systems covered by at least one game asset. Follow the Build Order phases. Never modify Content/Framework/ files.*
