Files
UE5-Modular-Game-Framework/docs/game/GAMEINDEX.md
Lefteris Notas dc9c1a6b98 Add DA_RenderPipelineProfile and Platform Render Profiles documentation
- Introduced DA_RenderPipelineProfile data asset to define rendering pipeline configurations for various platforms and quality tiers.
- Documented enums, structs, variables, and default preset tables for render settings.
- Created a comprehensive developer guide for setting up platform-specific render profiles, including file structure, profile creation, and integration with upscalers.
- Included validation rules, console variable references, and testing matrices for ensuring compliance with platform requirements.
2026-05-22 18:10:24 +03:00

742 lines
45 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 — 5 systems)
| # | Framework System | Demonstrated By |
|---|----------------|----------------|
| 104 | BPC_AccessibilitySettings | Subtitle toggle, colorblind mode, controller remap |
| 105 | SS_SettingsSystem | Audio/Video/Controls persistent settings |
| 148 | BPC_HapticsController | Controller vibration: damage, weapon fire, heartbeat, footsteps, scares. Attached to PC_HorrorController |
| 149 | BPC_RenderPipelineManager | Quality presets (Low→Cinematic), Lumen/Baked switching, DLSS/FSR/TSR upscaling. PlanarCapture budget aware |
### 13-polish (Polish — 9 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 106 | BPC_AnalyticsTracker | Session metrics: time in each area, death locations |
| 107 | BPC_DevCheatManager | God mode, give item, teleport to area (dev testing) |
| 108 | BPC_ErrorHandler | Crash logging, safe recovery on level load failure |
| 109 | BPC_FPSCounter | Dev-only FPS overlay |
| 110 | BPC_LoadingScreen | WBP_LoadingHorror (progress bar + horror tips) |
| 111 | BPC_TutorialSystem | BP_TutorialTrigger_Controls, _Hiding, _Combat |
| 112 | WBP_CreditsScreen | L_Credits level + scroll widget |
| 113 | WBP_DebugMenu | Toggle debug: show AI paths, perception, stress values |
| 114 | WBP_SplashScreen | WBP_SplashHorror (studio logo + title + health warning) |
### 15-input (Input)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 128 | SS_EnhancedInputManager | All input contexts (Default, Hiding, WristwatchUI, UI, Inspection) |
### 16-state (State Management)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 130 | BPC_StateManager | Hiding blocks fire; death blocks interaction; cutscene blocks all |
| 131 | DA_StateGatingTable | Designer-configurable state permission rules |
### 17-capture (Planar Capture — 12 systems)
| # | Framework System | Demonstrated By |
|---|-----------------|----------------|
| 136 | BPC_PlanarCapture | All capture surfaces (component managing SceneCapture2D lifecycle) |
| 137 | BP_PlanarCaptureActor | BP_Mirror, BP_Portal, BP_Monitor, BP_HorrorMirror, BP_FakeWindow (all extend this) |
| 138 | SS_PlanarCaptureManager | Auto-created WorldSubsystem — manages quality budget across all 8 surfaces |
| 139 | BP_Mirror | BP_Mirror_NurseStation — standard reflection mirror with aging |
| 140 | BP_Portal | BP_Portal_VoidEntrance/Exit — void portal teleport with clip plane |
| 141 | BP_Monitor | BP_Monitor_Security/Morgue — security camera feeds, scanlines, static noise |
| 142 | BP_HorrorMirror | BP_HorrorMirror_Morgue/WardensOffice — wrong reflection, steam, text, scare events |
| 143 | BP_FakeWindow | BP_FakeWindow_WardensOffice — atmospheric window with weather overlay |
| 144 | M_CaptureSurface_Master | All mirror/portal/monitor surfaces (9-layer material stack) |
| 145 | MPC_CaptureSurface | All 10 MPC scalar params (SteamIntensity, DirtOpacity, MirrorDarkness, etc.) |
| 146 | DA_PlanarCaptureProfile | DA_PlanarCaptureProfile_Mirror — per-surface quality config |
| 147 | MI_MirrorInstances | MI_Mirror_Clean/Dirty/Steam/Horror, MI_Portal_Standard, MI_Monitor_Security, MI_FakeWindow_Interior |
---
## Build Order (Dependency-Safe)
Follow this order when creating uasset files in UE5:
| Phase | Content | Depends On | Approx. Assets |
|-------|---------|-----------|:---:|
| 0 | **Project Settings** — Plugins, GameplayTags, Asset Manager, Collision | *(none)* | — |
| 1 | **Core Classes** — GI_HorrorGame, GM_HorrorGameMode, PC_HorrorController, PS_HorrorPlayerState, GS_HorrorGameState | Framework C++ classes | 5 |
| 2 | **Maps** — L_SplashScreen, L_MainMenu, L_Test_Sandbox | Core Classes | 3 |
| 3 | **Input** — DA_InputMapping_Horror_PC (_Xbox) + IMC/IA references | SS_EnhancedInputManager | 2 |
| 4 | **Player Character** — BP_HorrorPlayerCharacter + all BPC_ components | Core, Maps, Input | 1 |
| 5 | **Data Assets (Items)** — All DA_Item_* assets | DA_ItemData | 13 |
| 6 | **Pickups** — All BP_Pickup_* actors | BP_ItemPickup, DA_Item_* | 18 |
| 7 | **Doors & Actors** — All BP_Door_*, BP_HidingSpot_* | BP_DoorActor, I_HidingSpot | 12 |
| 8 | **Containers** — BP_Chest_Supply, BP_Desk_Drawer, BP_FilingCabinet | BPC_ContainerInventory | 3 |
| 9 | **Puzzles** — BP_Puzzle_Fusebox, _PipeOrgan, _MorgueDrawers | BP_PuzzleDeviceActor | 3 |
| 10 | **Weapons (Held)** — BP_Pistol_Held, BP_Shotgun_Held, BP_Flashlight_Held, BP_Crowbar_Held | BP_WeaponBase | 4 |
| 11 | **UI Widgets** — All WBP_Game* widgets | SS_UIManager, WBP_* parents | 8 |
| 12 | **Enemies** — BP_Enemy_Patient, _Shade, _Orderly + AI controllers + BT + BB | BP_EnemyBase | 12 |
| 13 | **Narrative** — DA_Dialogue_*, DA_Cutscene_*, DA_Objective_*, trigger volumes, lore | DA_NarrativeDataAssets | 12+ |
| 14 | **Data Assets (Content)** — Encounters, Atmosphere, Scares, Puzzles, Objectives, Behaviour, Acoustic | DA_* parents | 20+ |
| 15 | **Checkpoints** — BP_Checkpoint_SafeRoom, _Mirror | BP_Checkpoint | 2 |
| 16 | **Room Audio Zones** — BP_RoomAudioZone_* | BP_RoomAudioZone | 3 |
| 17 | **Capture Surfaces** — BP_Mirror_NurseStation, BP_HorrorMirror_Morgue/WardensOffice, BP_Monitor_Security/Morgue, BP_Portal_VoidEntrance/Exit, BP_FakeWindow_WardensOffice | BP_PlanarCaptureActor | 9 |
| 18 | **Encounter Spawners** — BP_EncounterSpawner_* | BPC_ProceduralEncounter | 3 |
| 18 | **Atmosphere Actors** — BP_LightEvent_*, BP_ScareEvent_*, BP_AtmosphereController_* | BPC_* parent | 6 |
| 19 | **Tutorial Triggers** — BP_TutorialTrigger_* | BPC_TutorialSystem | 3 |
| 20 | **Polish** — BP_CreditsSequence, dev cheats, debug menu | Framework | 3 |
| 21 | **Full Levels** — L_Asylum_Entry → _WardA → _WardB → _Basement → _VoidSpace → _WardensOffice → _Ending → _Credits | All previous | 8 |
---
## Documentation Map
Each `docs/game/` file explains how to build a specific section of the prototype:
| Document | Covers | Build Phase |
|----------|--------|:----------:|
| [`GAMEINDEX.md`](GAMEINDEX.md) | **THIS FILE** — master reference | — |
| [`README.md`](README.md) | How to use these docs + framework separation rule | — |
| [`core-gameinstance.md`](core-gameinstance.md) | GI_HorrorGame setup — session init, save slot, subsystems | 1 |
| [`core-gamemode.md`](core-gamemode.md) | GM_HorrorGameMode setup — spawn rules, chapter transitions, death routing | 1 |
| [`core-controller-state.md`](core-controller-state.md) | PC_HorrorController, PS_HorrorPlayerState, GS_HorrorGameState | 1 |
| [`scene-flow.md`](scene-flow.md) | Complete scene loading: Splash → Menu → Game → Pause → Death → Credits | 2 |
| [`playercharacter.md`](playercharacter.md) | BP_HorrorPlayerCharacter — all 15 BPC_ components wired, GASP integration | 4 |
| [`levels.md`](levels.md) | All 11 level maps — layout, objectives, encounters, atmosphere | 2, 21 |
| [`ui-overrides.md`](ui-overrides.md) | WBP_GameHUDController, WBP_GameMainMenu, WBP_GamePauseMenu, WBP_SplashHorror, WBP_LoadingHorror, WBP_JournalHorror, WBP_DeathScreen | 11 |
| [`items-index.md`](items-index.md) | All 13 DA_Item_* + 18 BP_Pickup_* — creation walkthroughs | 5, 6 |
| [`item-flashlight.md`](item-flashlight.md) | Flashlight Tool — full build (EXISTING) | 5, 6, 10 |
| [`item-pistol.md`](item-pistol.md) | Pistol Weapon — full build (EXISTING) | 5, 6, 10 |
| [`item-medkit.md`](item-medkit.md) | MedKit Consumable — full build (EXISTING) | 5, 6 |
| [`item-keycard.md`](item-keycard.md) | Keycard Key Item — full build (EXISTING) | 5, 6 |
| [`weapons-index.md`](weapons-index.md) | All held weapons — pistol, shotgun, flashlight, crowbar — wiring | 10 |
| [`enemies-index.md`](enemies-index.md) | All enemies — Patient, Shade, Orderly — AI controllers, BT, perception | 12 |
| [`narrative-progression.md`](narrative-progression.md) | Objectives, dialogue, cutscenes, ending accumulator, branching | 13 |
| [`atmosphere-audio.md`](atmosphere-audio.md) | Atmosphere profiles, scares, lighting, room audio zones, adaptive environment | 14, 16, 17, 18 |
| [`planar-capture-examples.md`](planar-capture-examples.md) | Mirrors, horror mirrors, security monitors, void portals, fake windows — all 8 capture surfaces | 17 |
| [`save-checkpoints.md`](save-checkpoints.md) | Save system, checkpoints, death loop, void space, persistence | 15 |
| [`polish-loading-credits.md`](polish-loading-credits.md) | Tutorials, loading screen, credits, debug, analytics | 19, 20 |
| [`state-gating-examples.md`](state-gating-examples.md) | DA_StateGatingTable game-specific rules | 14 |
| [`haptics-example.md`](haptics-example.md) | Controller haptics — damage, weapons, heartbeat, scares, platform tuning | 5, 10, 13, 14 |
| [`render-profiles-example.md`](render-profiles-example.md) | Render pipeline — per-platform quality presets, Lumen vs Baked, upscaling setup | 5, 12, 14 |
---
## Notes for Expansion
### Short-Term (Finish the Prototype)
- [ ] Create placeholder meshes (whitebox) for all items, weapons, enemies
- [ ] Record placeholder audio (or use UE5 starter content)
- [ ] Implement all 18 pickup actors following the 4 existing item examples
- [ ] Build full WBP_GameHUDController with horror styling
- [ ] Create 3 enemy types with behavior trees
- [ ] Wire all 11 levels with objectives and transitions
- [ ] Implement save/load at checkpoints
### Medium-Term (Polish)
- [ ] Replace whitebox meshes with final art
- [ ] Add full MetaSounds audio (150+ triggers per sound catalog)
- [ ] Implement all 14 animation notifies for GASP
- [ ] Add multiplayer support (server-authoritative replication)
- [ ] Create platform-specific input profiles (Xbox, PS5)
- [ ] Add accessibility: subtitles, colorblind, haptic feedback profiles
### Long-Term (Full Game)
- [ ] Write complete narrative with branching dialogue
- [ ] Design 10+ puzzle devices
- [ ] Create 20+ scare events per atmosphere catalog
- [ ] Implement adaptive difficulty with player metrics
- [ ] Add collectible tracking with achievement unlocks
- [ ] Create ending variations (3-5 endings)
- [ ] Implement New Game+ with harder variants
- [ ] Localize all text into 8+ languages
### Framework Separation Checklist
- [ ] `Content/Framework/` contains ONLY framework systems (never modified)
- [ ] `Content/Game/` contains ALL game-specific content
- [ ] Game Blueprints are children of Framework Blueprints (never modify parent)
- [ ] Game Data Assets are instances of Framework Data Asset types
- [ ] Game references framework via interfaces and dispatchers (no hard refs)
- [ ] Project Settings point to Framework GI_GameFramework as Game Instance
- [ ] Game Maps reference GM_HorrorGameMode as GameMode override
---
*GAMEINDEX v1.0 — Master reference for Project Void horror game prototype. All 135 framework systems covered by at least one game asset. Follow the Build Order phases. Never modify Content/Framework/ files.*