Files
UE5-Modular-Game-Framework/docs/game/GAMEINDEX.md
Lefteris Notas 0a2d08b2ad Add Planar Capture System implementation checklist and developer reference
- Created a comprehensive implementation checklist for the Planar Capture System (Systems 136-147) detailing tasks across multiple phases including C++ core, material foundation, Blueprint actors, data assets, integration, and performance testing.
- Added a developer reference document outlining the architecture, data flow, state machine, budget enforcement, render target pooling, horror features, integration points, multiplayer networking, performance characteristics, debugging methods, and build order for the capture systems.
- Introduced examples of capture surface usage in the Project Void horror game, including specific implementations for mirrors, monitors, portals, and fake windows, along with a checklist for integration tasks.
2026-05-22 15:36:08 +03:00

45 KiB
Raw Blame History

GAMEINDEX — Project Void: Psychological Horror FPS Prototype

Version: 1.0 | Generated: 2026-05-21 | Target UE: 5.55.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                     │  (58 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 — 2 systems)

# Framework System Demonstrated By
104 BPC_AccessibilitySettings Subtitle toggle, colorblind mode, controller remap
105 SS_SettingsSystem Audio/Video/Controls persistent settings

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