# 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 — 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`](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 | --- ## 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.*