Files
UE5-Modular-Game-Framework/docs/game/GAMEINDEX.md
Lefteris Notas 14441c000c Add haptics example documentation for Project Void controller feedback
- Introduced comprehensive guide for setting up controller haptics and force feedback.
- Detailed directory structure for haptic profiles and creation steps for DA_HapticProfile instances.
- Included platform-specific configurations for Xbox and PS5 DualSense adaptive triggers.
- Outlined wiring of BPC_HapticsController to various gameplay systems and events.
- Provided accessibility integration options and testing checklist for haptic functionality.
2026-05-22 17:16:34 +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 — 3 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

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
haptics-example.md Controller haptics — damage, weapons, heartbeat, scares, platform tuning 5, 10, 13, 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.