- 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.
45 KiB
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:
- The complete
Content/Game/folder structure — every asset to create - Which framework system each game asset demonstrates
- The full scene loading flow from boot to credits
- Expansion notes for extending the prototype into a full game
Rule: All game content lives in Content/Game/. Never modify Content/Framework/. Game assets reference framework systems via interfaces, dispatchers, and Data Asset children.
Game Concept — "Project Void"
┌─────────────────────────────────────────────────────────┐
│ PROJECT VOID — Psychological Horror FPS │
│ │
│ Setting: Abandoned Blackwood Asylum, 1920s │
│ Player: Dr. Eliza Vance — investigative journalist │
│ Premise: You wake inside the asylum with no memory │
│ of how you arrived. The building shifts │
│ around you. Patients roam the halls. │
│ Something older than the asylum │
│ watches from the void between rooms. │
│ │
│ Tone: Silent Hill meets Amnesia meets Outlast │
│ Core Loop: Explore → Find clues → Solve puzzles → │
│ Evade threats → Piece together memory → │
│ Unlock new areas → Reality shifts │
└─────────────────────────────────────────────────────────┘
Folder Structure
Content/Game/ ← ALL game content (NEVER modify Framework/)
│
├── GAMEINDEX.uasset ← (optional) Empty Data Asset — marker file
│
├── Core/ ← Core game classes (child of Framework classes)
│ ├── GI_HorrorGame.uasset ← Child of GI_GameFramework
│ ├── GM_HorrorGameMode.uasset ← Child of GM_CoreGameMode
│ ├── PC_HorrorController.uasset ← Child of PC_CoreController (or PlayerController)
│ ├── PS_HorrorPlayerState.uasset ← Child of PS_CorePlayerState
│ ├── GS_HorrorGameState.uasset ← Child of GS_CoreGameState
│ └── FL_HorrorUtilities.uasset ← Child of FL_GameUtilities (game-specific utils)
│
├── Characters/ ← Player & NPC Blueprints
│ ├── BP_HorrorPlayerCharacter.uasset ← GASP-based player pawn (all BPC_ components)
│ ├── BP_Enemy_Patient.uasset ← Melee-chase enemy (slow, persistent)
│ ├── BP_Enemy_Shade.uasset ← Teleporting horror (rare, terrifying)
│ ├── BP_Enemy_Orderly.uasset ← Fast, flashlight-vulnerable enemy
│ └── BP_NPC_Survivor.uasset ← Friendly NPC for dialogue/objectives
│
├── Items/ ← DA_ItemData children — all game items
│ ├── DA_Item_Flashlight.uasset ← Tool — toggleable light (see item-flashlight.md)
│ ├── DA_Item_Pistol.uasset ← Weapon — 9mm (see item-pistol.md)
│ ├── DA_Item_MedKit.uasset ← Consumable — health restore (see item-medkit.md)
│ ├── DA_Item_Keycard_Omega.uasset ← KeyItem — progression gate (see item-keycard.md)
│ │
│ ├── DA_Item_Ammo_9mm.uasset ← Ammo — pistol rounds
│ ├── DA_Item_Shotgun.uasset ← Weapon — double barrel
│ ├── DA_Item_Ammo_Shells.uasset ← Ammo — shotgun shells
│ ├── DA_Item_Battery.uasset ← Consumable — flashlight power
│ ├── DA_Item_AdrenalineSyringe.uasset ← Consumable — temporary stamina boost
│ ├── DA_Item_SanityPill.uasset ← Consumable — stress reduction
│ ├── DA_Item_Crowbar.uasset ← Tool — pry doors, melee weapon
│ ├── DA_Item_Keycard_Alpha.uasset ← KeyItem — east wing access
│ ├── DA_Item_Keycard_Beta.uasset ← KeyItem — basement access
│ ├── DA_Item_Key_Wardens.uasset ← KeyItem — warden's office
│ ├── DA_Item_JournalPage.uasset ← Document — lore collectible
│ ├── DA_Item_PatientFile.uasset ← Document — story collectible
│ ├── DA_Item_OldPhoto.uasset ← Collectible — memory fragment
│ └── DA_Item_VoidShard.uasset ← Collectible — rare, ending-related
│
├── Pickups/ ← BP_Pickup_* children — world pickup actors
│ ├── BP_Pickup_Flashlight.uasset
│ ├── BP_Pickup_Pistol.uasset
│ ├── BP_Pickup_MedKit.uasset
│ ├── BP_Pickup_KeycardOmega.uasset
│ ├── BP_Pickup_Ammo_9mm.uasset
│ ├── BP_Pickup_Shotgun.uasset
│ ├── BP_Pickup_Ammo_Shells.uasset
│ ├── BP_Pickup_Battery.uasset
│ ├── BP_Pickup_AdrenalineSyringe.uasset
│ ├── BP_Pickup_SanityPill.uasset
│ ├── BP_Pickup_Crowbar.uasset
│ ├── BP_Pickup_KeycardAlpha.uasset
│ ├── BP_Pickup_KeycardBeta.uasset
│ ├── BP_Pickup_KeyWardens.uasset
│ ├── BP_Pickup_JournalPage.uasset
│ ├── BP_Pickup_PatientFile.uasset
│ ├── BP_Pickup_OldPhoto.uasset
│ └── BP_Pickup_VoidShard.uasset
│
├── Actors/ ← World interaction actors
│ ├── BP_Door_Asylum.uasset ← Standard door (open/close/lock)
│ ├── BP_Door_OmegaWing.uasset ← Keycard-locked door
│ ├── BP_Door_Barricaded.uasset ← Crowbar-required door
│ ├── BP_Door_Void.uasset ← Reality-shifting door (adaptive env)
│ ├── BP_Chest_Supply.uasset ← Container inventory (lootable)
│ ├── BP_Desk_Drawer.uasset ← Container inventory (small)
│ ├── BP_FilingCabinet.uasset ← Container inventory (documents)
│ ├── BP_Puzzle_Fusebox.uasset ← Puzzle device (restore power)
│ ├── BP_Puzzle_PipeOrgan.uasset ← Puzzle device (play melody)
│ ├── BP_Puzzle_MorgueDrawers.uasset ← Puzzle device (find body)
│ ├── BP_HidingSpot_Locker.uasset ← Hiding spot
│ ├── BP_HidingSpot_UnderBed.uasset ← Hiding spot
│ ├── BP_HidingSpot_Wardrobe.uasset ← Hiding spot
│ ├── BP_Checkpoint_SafeRoom.uasset ← Checkpoint actor
│ ├── BP_Checkpoint_Mirror.uasset ← Checkpoint actor (thematic)
│ ├── BP_Usable_Lever.uasset ← Usable world object
│ ├── BP_Usable_Valve.uasset ← Usable world object
│ ├── BP_Usable_Button.uasset ← Usable world object
│ └── BP_DiegeticScreen_Monitor.uasset ← Diegetic display (security monitor)
│
├── Weapons/ ← Held weapon actors
│ ├── BP_Pistol_Held.uasset ← Equipped pistol (I_UsableItem, I_Toggleable)
│ ├── BP_Flashlight_Held.uasset ← Equipped flashlight (I_UsableItem, I_Toggleable)
│ ├── BP_Shotgun_Held.uasset ← Equipped shotgun
│ └── BP_Crowbar_Held.uasset ← Equipped crowbar (tool + melee)
│
├── UI/ ← Game-specific UI widgets
│ ├── WBP_GameHUDController.uasset ← Child of WBP_HUDController (game-specific layout)
│ ├── WBP_GameMainMenu.uasset ← Child of WBP_MainMenu (game title/branding)
│ ├── WBP_GamePauseMenu.uasset ← Child of WBP_PauseMenu
│ ├── WBP_GameInventoryMenu.uasset ← Child of WBP_InventoryMenu
│ ├── WBP_SplashHorror.uasset ← Child of WBP_SplashScreen
│ ├── WBP_JournalHorror.uasset ← Child of WBP_JournalDocumentViewer
│ ├── WBP_DeathScreen.uasset ← Custom death/void space screen
│ └── WBP_LoadingHorror.uasset ← Child of WBP_LoadingScreen (tips, atmosphere)
│
├── DataAssets/ ← DA_* content instances
│ ├── DA_InputMapping_Horror_PC.uasset ← Input mapping profile for horror game
│ ├── DA_InputMapping_Horror_Xbox.uasset ← Console profile
│ ├── DA_Encounter_WardA_Patrol.uasset ← Encounter data
│ ├── DA_Encounter_ShadeAmbush.uasset ← Encounter data
│ ├── DA_Atmosphere_WardA_Standard.uasset← Atmosphere profile per area
│ ├── DA_Atmosphere_Basement_Dark.uasset
│ ├── DA_Atmosphere_VoidSpace.uasset
│ ├── DA_Scare_LockerJumpscare.uasset ← Scare event data
│ ├── DA_Scare_MirrorApparition.uasset
│ ├── DA_Scare_WindowFace.uasset
│ ├── DA_Scare_VoidWhisper.uasset
│ ├── DA_Puzzle_FuseboxData.uasset ← Puzzle data
│ ├── DA_Puzzle_PipeOrganData.uasset
│ ├── DA_Puzzle_MorgueDrawersData.uasset
│ ├── DA_Objective_FindKeys.uasset ← Objective data
│ ├── DA_Objective_RestorePower.uasset
│ ├── DA_Objective_EscapeAsylum.uasset
│ ├── DA_AdaptationRule_Horror.uasset ← Difficulty adaptation rules
│ ├── DA_BehaviourVariant_Patient.uasset ← AI behavior variants
│ ├── DA_BehaviourVariant_Shade.uasset
│ ├── DA_BehaviourVariant_Orderly.uasset
│ ├── DA_RoomAcoustic_WardA.uasset ← Room acoustic presets
│ ├── DA_RoomAcoustic_Basement.uasset
│ └── DA_RoomAcoustic_Void.uasset
│
├── AI/ ← AI controllers, behavior trees, blackboards
│ ├── AI_PatientController.uasset ← AI controller for Patient enemy
│ ├── AI_ShadeController.uasset ← AI controller for Shade enemy
│ ├── AI_OrderlyController.uasset ← AI controller for Orderly enemy
│ ├── BT_PatientBehavior.uasset ← Behavior tree
│ ├── BT_ShadeBehavior.uasset
│ ├── BT_OrderlyBehavior.uasset
│ ├── BB_PatientData.uasset ← Blackboard data
│ ├── BB_ShadeData.uasset
│ ├── BB_OrderlyData.uasset
│ └── BP_PatrolPath_Asylum.uasset ← Patrol paths per area
│
├── Narrative/ ← Narrative data + trigger volumes
│ ├── DA_Dialogue_Intro.uasset ← Dialogue data
│ ├── DA_Dialogue_SurvivorEncounter.uasset
│ ├── DA_Dialogue_EndingTruth.uasset
│ ├── DA_Cutscene_Opening.uasset ← Cutscene data
│ ├── DA_Cutscene_Ending.uasset
│ ├── BP_NarrativeTrigger_Intro.uasset ← Trigger volumes
│ ├── BP_NarrativeTrigger_VoidFirst.uasset
│ ├── BP_NarrativeTrigger_Ending.uasset
│ └── DA_LoreEntry_*.uasset ← Lore/data entries
│
├── Encounters/ ← Procedural encounter spawners
│ ├── BP_EncounterSpawner_WardA.uasset
│ ├── BP_EncounterSpawner_Basement.uasset
│ └── BP_EncounterSpawner_Void.uasset
│
├── Atmosphere/ ← Atmosphere + scare event actors
│ ├── BP_LightEvent_Flicker.uasset
│ ├── BP_ScareEvent_LockerBang.uasset
│ ├── BP_ScareEvent_Mirror.uasset
│ ├── BP_HorrorMirror_Morgue.uasset ← Horror mirror (wrong reflection scare)
│ ├── BP_Mirror_NurseStation.uasset ← Standard mirror (checkpoint reflection)
│ └── BP_AtmosphereController_WardA.uasset
│
├── Capture/ ← Planar Capture surface actors
│ ├── BP_Mirror_NurseStation.uasset ← Standard mirror: Mode=Mirror, aged, checkpoint
│ ├── BP_HorrorMirror_Morgue.uasset ← Horror mirror: wrong reflection, steam scare
│ ├── BP_HorrorMirror_WardensOffice.uasset ← Horror mirror: final entity confrontation
│ ├── BP_Monitor_Security.uasset ← Security monitor: hallway camera feed, scanlines
│ ├── BP_Monitor_Morgue.uasset ← Morgue monitor: static noise, flicker, Shade cameo
│ ├── BP_Portal_VoidEntrance.uasset ← Void portal entrance (Basement → VoidSpace)
│ ├── BP_Portal_VoidExit.uasset ← Void portal exit (VoidSpace → Basement)
│ ├── BP_FakeWindow_WardensOffice.uasset ← Atmospheric window: rain, night, parallax
│ └── DA_PlanarCaptureProfile_Mirror.uasset← Capture profile Data Assets
│
├── Audio/ ← Game-specific audio assets
│ ├── DA_AudioSettings_Horror.uasset ← Audio bus config
│ ├── BP_RoomAudioZone_WardA.uasset ← Room audio zone volumes
│ ├── BP_RoomAudioZone_Basement.uasset
│ └── BP_RoomAudioZone_Void.uasset
│
├── Save/ ← Save system instances
│ ├── BP_Checkpoint_WardAEntry.uasset ← Placed checkpoint actors
│ ├── BP_Checkpoint_BasementGate.uasset
│ └── BP_Checkpoint_VoidThreshold.uasset
│
├── Polish/ ← Tutorial, loading, credits
│ ├── BP_TutorialTrigger_Controls.uasset ← Tutorial prompt triggers
│ ├── BP_TutorialTrigger_Hiding.uasset
│ ├── BP_TutorialTrigger_Combat.uasset
│ └── BP_CreditsSequence.uasset ← Credits level/sequence
│
├── Input/ ← Game-specific input overrides (if any)
│ └── (Empty unless overriding framework IMC_/IA_ assets)
│
└── Maps/ ← ALL levels
├── L_SplashScreen.umap ← Disclaimer/splash → auto-advances
├── L_MainMenu.umap ← Title screen with 3D background
├── L_Asylum_Entry.umap ← Tutorial zone — waking up
├── L_Asylum_WardA.umap ← First major area
├── L_Asylum_WardB.umap ← Second area (keycard gate)
├── L_Asylum_Basement.umap ← Dark horror area
├── L_Asylum_VoidSpace.umap ← Reality-shifted zone
├── L_Asylum_WardensOffice.umap ← Climax area
├── L_Ending_Truth.umap ← Final ending sequence
├── L_Credits.umap ← Credits roll
└── L_Test_Sandbox.umap ← Developer testing sandbox
Scene Loading Flow (Complete)
BOOT SEQUENCE
═══════════════════════════════════════════════════════════
[Engine Init]
│
└─ GI_GameFramework (Framework/Core/) — kernel boots
├─ Initialize all SS_ subsystems:
│ ├─ SS_SaveManager (35) — mount save directory
│ ├─ SS_SettingsSystem (105) — load persistent settings
│ ├─ SS_EnhancedInputManager (128) — load input profiles
│ ├─ SS_AudioManager (132) — init MetaSound buses
│ ├─ SS_AchievementSystem (103) — load achievement state
│ └─ SS_UIManager (44) — create menu widget cache
│
├─ DA_GameTagRegistry (01) — validate all tags
├─ Set Game Phase → Loading
└─ OpenLevel → L_SplashScreen
│
▼
┌─────────────────────────────────────┐
│ L_SplashScreen │ (5–8 seconds, skippable)
│ ├─ Studio logo (fade in/out) │
│ ├─ UE5 logo │
│ ├─ "Project Void" title card │
│ │ └─ Audio: MS_MusicBus plays │
│ │ menu_ambient_loop │
│ ├─ Health warning │
│ └─ Auto-advance or Skip → │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ L_MainMenu │
│ ├─ WBP_GameMainMenu displayed │
│ ├─ 3D background: asylum hallway │
│ ├─ Menu options: │
│ │ ├─ New Game → L_Asylum_Entry │
│ │ ├─ Continue → Load latest save │
│ │ ├─ Load Game → Save slot UI │
│ │ ├─ Settings → WBP_SettingsMenu │
│ │ ├─ Credits → L_Credits │
│ │ └─ Quit → Confirm → Quit │
│ └─ Audio: MS_MusicBus menu_theme │
└──────────────┬──────────────────────┘
│ New Game
▼
┌─────────────────────────────────────┐
│ LOADING SCREEN │
│ ├─ WBP_LoadingHorror displayed │
│ ├─ Progress bar + atmosphere tip │
│ ├─ SS_SaveManager.ResetGameState() │
│ ├─ GI_GameFramework.SetPhase │
│ │ (InGame) on level loaded │
│ └─ Audio: crossfade to game amb │
└──────────────┬──────────────────────┘
│
▼
GAMEPLAY LOOP
═══════════════════════════════════════════════════════════
┌─────────────────────────────────────┐
│ L_Asylum_Entry (Tutorial) │
│ ├─ Player wakes in padded cell │
│ ├─ Tutorial triggers: │
│ │ ├─ Move/Look (BP_Tutorial_*) │
│ │ ├─ Interact (pick up note) │
│ │ ├─ Crouch (vent) │
│ │ └─ Hide (first patient sight) │
│ ├─ First objective: "Find a way │
│ │ out of this wing" │
│ └─ Exit → L_Asylum_WardA │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ L_Asylum_WardA (Exploration) │
│ ├─ Find: Flashlight (dark hallway) │
│ ├─ Find: Pistol (security office) │
│ ├─ Puzzle: Restore fusebox power │
│ ├─ Encounter: Patient enemy │
│ ├─ Find: Keycard Alpha │
│ ├─ Atmosphere: Flickering lights, │
│ │ ambient whispers, room zones │
│ └─ Exit → L_Asylum_WardB │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ L_Asylum_WardB (Horror Ramp) │
│ ├─ Keycard-gated doors │
│ ├─ Find: Shotgun (morgue) │
│ ├─ Puzzle: Pipe organ melody │
│ ├─ Encounter: Orderly enemy │
│ ├─ First Void Space shift │
│ │ └─ Reality warps: walls bleed, │
│ │ corridors loop │
│ ├─ Find: Keycard Beta │
│ └─ Exit → L_Asylum_Basement │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ L_Asylum_Basement (Dark Horror) │
│ ├─ No lights — battery management │
│ ├─ Puzzle: Morgue drawer sequence │
│ ├─ Encounter: Shade enemy │
│ ├─ Stress system peaks — │
│ │ hallucinations trigger │
│ ├─ Find: Warden's Key │
│ └─ Exit → L_Asylum_WardensOffice │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ L_Asylum_VoidSpace (Climax) │
│ ├─ Reality fully broken │
│ ├─ Chase sequence (Shade pursues) │
│ ├─ Ending accumulator evaluates │
│ │ choices made during game │
│ └─ Exit → L_Ending_Truth │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ L_Ending_Truth (Resolution) │
│ ├─ Final cutscene plays │
│ ├─ Ending determined by: │
│ │ ├─ VoidShards collected │
│ │ ├─ Survivors saved/killed │
│ │ ├─ Sanity level at end │
│ │ └─ Key choices made │
│ └─ Auto-advance → L_Credits │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ L_Credits │
│ ├─ Scroll credits + atmospheric │
│ │ post-credit scene │
│ ├─ Achievement unlocks fire │
│ └─ Return → L_MainMenu │
└─────────────────────────────────────┘
PAUSE / DEATH / SAVE BRANCHES (any gameplay level)
═══════════════════════════════════════════════════════════
PRESS ESC → SS_UIManager.PushMenu(PauseMenu)
├─ GI_GameFramework.SetPhase(Paused)
├─ SS_EnhancedInputManager.SetInputModeUIOnly()
├─ WBP_HUDController hides diegetic elements
├─ WBP_GamePauseMenu shows (Resume/Save/Load/Settings/Quit)
└─ Resume → PopMenu → SetPhase(InGame) → restore input
PLAYER DIES → BPC_DeathHandlingSystem (39)
├─ Death animation plays
├─ BPC_StateManager.ForcePushState(Death)
├─ Check if VoidSpace conditions met:
│ ├─ Yes → BPC_AltDeathSpaceSystem.EnterVoidSpace()
│ │ └─ Load L_Asylum_VoidSpace + solve puzzle to return
│ └─ No → BPC_PlayerRespawnSystem.RespawnAtCheckpoint()
│ └─ Load last checkpoint → restore state
├─ BPC_PersistentCorpseSystem leaves corpse
└─ BPC_RunHistoryTracker logs death
CHECKPOINT TOUCHED → BP_Checkpoint (37)
├─ SS_SaveManager.CreateAutoSave()
├─ BPC_PersistentWorldStateRecorder captures world state
│ └─ Door states, item pickups, enemy positions, flags
├─ WBP_NotificationToast shows "Checkpoint Reached"
└─ Screen vignette pulses briefly
Framework System Coverage Map
Each game asset proves a specific framework system works. Below: every framework system → which game asset demonstrates it.
01-core (Foundation — 7 systems)
| # | Framework System | Game Asset That Uses It |
|---|---|---|
| 01 | DA_GameTagRegistry | All game items/pickups (tags registered) |
| 02 | FL_GameUtilities | FL_HorrorUtilities (game-specific helpers) |
| 03 | I_InterfaceLibrary | All items, doors, enemies (I_Interactable, I_Damageable, I_UsableItem, I_Lockable, I_Persistable) |
| 04 | GI_GameFramework | GI_HorrorGame (child — sets TagRegistry, initializes game) |
| 05 | GM_CoreGameMode | GM_HorrorGameMode (child — horror-specific rules, deaths) |
| 06 | GS_CoreGameState | GS_HorrorGameState (tracks horror-specific global flags) |
| 07 | DA_ItemData | ALL DA_Item_* assets (13 items) |
02-player (Player State — 8 systems)
| # | Framework System | How Demonstrated |
|---|---|---|
| 08 | BPC_HealthSystem | Player takes damage from enemies → health decreases → death |
| 09 | BPC_StaminaSystem | Sprinting drains stamina; AdrenalineSyringe restores it |
| 10 | BPC_StressSystem | Darkness, enemy proximity, hallucinations increase stress tiers |
| 11 | BPC_MovementStateSystem | Walk/Sprint/Crouch/Sneak — GASP locomotion states |
| 12 | BPC_HidingSystem | Lockers, under beds, wardrobes — hide from enemies |
| 13 | BPC_EmbodimentSystem | First-person body visible; arm IK when holding items |
| 14 | BPC_CameraStateLayer | FOV changes: combat zoom, hide peek, inspection zoom |
| 15 | BPC_PlayerMetricsTracker | Accuracy tracking per weapon, playstyle classification |
03-interaction (World Interaction — 8 systems)
| # | Framework System | Game Asset |
|---|---|---|
| 16 | BPC_InteractionDetector | All pickups, doors, puzzles, hiding spots |
| 17 | I_HidingSpot | BP_HidingSpot_Locker, _UnderBed, _Wardrobe |
| 18 | BPC_DiegeticDisplay | BP_DiegeticScreen_Monitor (security camera feed) |
| 19 | BP_DoorActor | BP_Door_Asylum, _OmegaWing, _Barricaded, _Void |
| 20 | BP_PuzzleDeviceActor | BP_Puzzle_Fusebox, _PipeOrgan, _MorgueDrawers |
| 21 | BPC_ContextualTraversalSystem | Vaulting over gurneys, mantling debris |
| 22 | BPC_PhysicsDragSystem | Dragging bodies/crates to climb or block doors |
| 23 | BPC_UsableWorldObjectSystem | Levers, valves, buttons (power, gas, elevator) |
04-inventory (Inventory — 11 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 24 | BPC_ContainerInventory | BP_Chest_Supply, BP_Desk_Drawer, BP_FilingCabinet |
| 25 | BP_ItemPickup | All 18 BP_Pickup_* actors |
| 26 | BPC_ActiveItemSystem | Quick-slot cycling through weapons/tools |
| 27 | BPC_CollectibleTracker | Old Photos, Void Shards (tracked, set bonuses) |
| 28 | BPC_ConsumableSystem | MedKit, Battery, Adrenaline, Sanity Pill use |
| 29 | BPC_DocumentArchiveSystem | Journal Pages, Patient Files (readable/journal) |
| 30 | BPC_EquipmentSlotSystem | PrimaryWeapon (pistol/shotgun), Tool (flashlight/crowbar) |
| 31 | BPC_InventorySystem | Full inventory grid with all items |
| 32 | BPC_ItemCombineSystem | Combine Battery+Flashlight to restore charge |
| 33 | BPC_JournalSystem | Active objectives displayed, completions logged |
| 34 | BPC_KeyItemSystem | Keycards, Warden's Key — door unlocking, protection from loss |
05-saveload (Save/Load — 9 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 35 | SS_SaveManager | Auto-save at checkpoints, manual save, load slots |
| 36 | I_Persistable | All doors, pickups, enemies (save/restore state) |
| 37 | BP_Checkpoint | BP_Checkpoint_SafeRoom, _Mirror |
| 38 | BPC_AltDeathSpaceSystem | Void Space on death — enter, explore, find exit |
| 39 | BPC_DeathHandlingSystem | Death → respawn or void space → state restoration |
| 40 | BPC_PersistentCorpseSystem | Enemy corpses persist across save/load/respawn |
| 41 | BPC_PersistentWorldStateRecorder | Door states, picked items, enemy positions saved |
| 42 | BPC_PlayerRespawnSystem | Respawn at last checkpoint after death |
| 43 | BPC_RunHistoryTracker | Death count, playtime, checkpoints per run |
06-ui (UI — 14 systems)
| # | Framework System | Game Override |
|---|---|---|
| 44 | SS_UIManager | Menu stack manages all game menus |
| 45 | WBP_AccessibilityUI | Subtitles for whispered voices + accessibility options |
| 46 | WBP_DiegeticHUDFrame | Health/stress/stamina displayed on wristwatch |
| 47 | WBP_HUDController | WBP_GameHUDController (horror-themed layout) |
| 48 | WBP_InteractionPromptDisplay | "Pick up [Item]" / "Open [Door]" prompts |
| 49 | WBP_InventoryMenu | WBP_GameInventoryMenu (grid with horror styling) |
| 50 | WBP_JournalDocumentViewer | WBP_JournalHorror (reads documents + photos) |
| 51 | WBP_MainMenu | WBP_GameMainMenu ("Project Void" title + asylum background) |
| 52 | WBP_MenuFlowController | Handles back-nav across all menus |
| 53 | WBP_NotificationToast | "Checkpoint Reached" / "New Objective" toasts |
| 54 | WBP_ObjectiveDisplay | "Find the Warden's Key" / "Escape the Asylum" |
| 55 | WBP_PauseMenu | WBP_GamePauseMenu |
| 56 | WBP_ScreenEffectController | Damage vignette, stress blur, void distortion |
| 57 | WBP_SettingsMenu | Volume sliders → SS_AudioManager, control rebinding |
07-narrative (Narrative — 11 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 58 | BPC_NarrativeStateSystem | Chapter flags: "WardA_Complete", "MetSurvivor" |
| 59 | BPC_ObjectiveSystem | 3 main objectives + optional side objectives |
| 60 | BPC_DialoguePlaybackSystem | Survivor dialogue, whispered void voices |
| 61 | BPC_DialogueChoiceSystem | Player response choices to survivor NPC |
| 62 | BPC_BranchingConsequenceSystem | Choices affect ending, NPC survival, item availability |
| 63 | BPC_TrialScenarioSystem | Timed escape from Void Space |
| 64 | BPC_CutsceneBridge | Opening wake-up cutscene + ending cinematics |
| 65 | BPC_LoreUnlockSystem | Patient files, journal pages unlock lore entries |
| 66 | DA_NarrativeDataAssets | DA_Dialogue_, DA_Cutscene_, DA_Objective_* |
| 67 | BP_NarrativeTriggerVolume | BP_NarrativeTrigger_Intro, _VoidFirst, _Ending |
| 68 | BPC_EndingAccumulator | Tracks VoidShards, survivors, sanity → determines ending |
08-weapons (Weapons & Combat — 11 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 69 | BP_WeaponBase | BP_Pistol_Held, BP_Shotgun_Held |
| 70 | BPC_AmmoComponent | Pistol (9mm pool), Shotgun (shell pool) |
| 71 | BPC_CombatFeedbackComponent | Hit markers on enemy damage, kill confirm |
| 72 | BPC_DamageReceptionSystem | Enemy damage → resistance → health reduction |
| 73 | BPC_DeathCauseTracker | Logs: "Killed by Patient (melee)", "Killed by Shade (void)" |
| 74 | BPC_FirearmSystem | Pistol hitscan, Shotgun pellet spread |
| 75 | BPC_HitReactionSystem | Enemies flinch/stagger on hit |
| 76 | BPC_MeleeSystem | Crowbar swing (block, heavy attack) |
| 77 | BPC_RecoilSystem | Pistol recoil kick, Shotgun heavy kick |
| 78 | BPC_ReloadSystem | Pistol tactical reload, Shotgun shell-by-shell |
| 79 | BPC_ShieldDefenseSystem | (Optional) Warden's riot shield pickup |
09-ai (AI — 9 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 80 | BP_EnemyBase | BP_Enemy_Patient, BP_Enemy_Shade, BP_Enemy_Orderly |
| 81 | BP_PatrolPath | BP_PatrolPath_* throughout asylum hallways |
| 82 | BPC_AlertSystem | Suspicious→Alerted→Combat transitions |
| 83 | BPC_AIStateMachine | Patrol/Search/Combat/Flee state machine |
| 84 | AI_BaseAgentController | AI_PatientController, AI_ShadeController, AI_OrderlyController |
| 85 | BB_AgentBoard | BB_PatientData, BB_ShadeData, BB_OrderlyData |
| 86 | BPC_AIMemorySystem | Last known player location, investigation points |
| 87 | BPC_AIPerceptionSystem | Sight (flashlight increases visibility), hearing (running attracts) |
| 88 | BPC_BehaviourVariantSelector | Patient: Aggressive/Curious/Erratic variants |
10-adaptive (Adaptive — 15 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 89 | BPC_DifficultyManager | Player deaths → easier encounters; success → harder |
| 90 | BPC_FearSystem | AI fear of flashlight; player fear affects stress |
| 91 | BPC_PerformanceScaler | LOD scaling in large ward areas |
| 92 | BPC_ProceduralEncounter | BP_EncounterSpawner_* (dynamic enemy placement) |
| 93 | BPC_AdaptiveEnvironmentDirector | Room mutations: hallway reconfigures, doors disappear |
| 94 | BPC_AtmosphereStateController | WardA: tense → WardB: horror → Void: nightmare |
| 95 | BPC_AudioAtmosphereController | [DEPRECATED — replaced by SS_AudioManager] |
| 96 | BPC_LightEventController | Flickering lights, bulb explosions, emergency red |
| 97 | BPC_MemoryDriftSystem | Visual distortions: walls breathing, text shifting |
| 98 | BPC_PacingDirector | Intensity bands: exploration→tension→encounter→recovery |
| 99 | BPC_PlaystyleClassifier | Aggressive (shoot everything) vs Stealthy (hide) detection |
| 100 | BPC_RareEventSystem | Rare whisper events, ghostly apparitions |
| 101 | BPC_ScareEventSystem | Locker bang, mirror face, window hand slam |
| 132 | SS_AudioManager | All audio routing, bus management, room zone switching |
| 133 | BP_RoomAudioZone | BP_RoomAudioZone_WardA, _Basement, _Void |
| 134 | DA_AudioSettings | DA_AudioSettings_Horror (mix levels, ducking) |
| 135 | DA_RoomAcousticPreset | DA_RoomAcoustic_WardA, _Basement, _Void (reverb/occlusion) |
11-meta (Meta — 2 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 102 | BPC_ProgressStatTracker | Total playtime, collectibles found, enemies killed |
| 103 | SS_AchievementSystem | "First Light" (flashlight), "Untouchable" (no-damage run) |
12-settings (Settings — 5 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 104 | BPC_AccessibilitySettings | Subtitle toggle, colorblind mode, controller remap |
| 105 | SS_SettingsSystem | Audio/Video/Controls persistent settings |
| 148 | BPC_HapticsController | Controller vibration: damage, weapon fire, heartbeat, footsteps, scares. Attached to PC_HorrorController |
| 149 | BPC_RenderPipelineManager | Quality presets (Low→Cinematic), Lumen/Baked switching, DLSS/FSR/TSR upscaling. PlanarCapture budget aware |
13-polish (Polish — 9 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 106 | BPC_AnalyticsTracker | Session metrics: time in each area, death locations |
| 107 | BPC_DevCheatManager | God mode, give item, teleport to area (dev testing) |
| 108 | BPC_ErrorHandler | Crash logging, safe recovery on level load failure |
| 109 | BPC_FPSCounter | Dev-only FPS overlay |
| 110 | BPC_LoadingScreen | WBP_LoadingHorror (progress bar + horror tips) |
| 111 | BPC_TutorialSystem | BP_TutorialTrigger_Controls, _Hiding, _Combat |
| 112 | WBP_CreditsScreen | L_Credits level + scroll widget |
| 113 | WBP_DebugMenu | Toggle debug: show AI paths, perception, stress values |
| 114 | WBP_SplashScreen | WBP_SplashHorror (studio logo + title + health warning) |
15-input (Input)
| # | Framework System | Demonstrated By |
|---|---|---|
| 128 | SS_EnhancedInputManager | All input contexts (Default, Hiding, WristwatchUI, UI, Inspection) |
16-state (State Management)
| # | Framework System | Demonstrated By |
|---|---|---|
| 130 | BPC_StateManager | Hiding blocks fire; death blocks interaction; cutscene blocks all |
| 131 | DA_StateGatingTable | Designer-configurable state permission rules |
17-capture (Planar Capture — 12 systems)
| # | Framework System | Demonstrated By |
|---|---|---|
| 136 | BPC_PlanarCapture | All capture surfaces (component managing SceneCapture2D lifecycle) |
| 137 | BP_PlanarCaptureActor | BP_Mirror, BP_Portal, BP_Monitor, BP_HorrorMirror, BP_FakeWindow (all extend this) |
| 138 | SS_PlanarCaptureManager | Auto-created WorldSubsystem — manages quality budget across all 8 surfaces |
| 139 | BP_Mirror | BP_Mirror_NurseStation — standard reflection mirror with aging |
| 140 | BP_Portal | BP_Portal_VoidEntrance/Exit — void portal teleport with clip plane |
| 141 | BP_Monitor | BP_Monitor_Security/Morgue — security camera feeds, scanlines, static noise |
| 142 | BP_HorrorMirror | BP_HorrorMirror_Morgue/WardensOffice — wrong reflection, steam, text, scare events |
| 143 | BP_FakeWindow | BP_FakeWindow_WardensOffice — atmospheric window with weather overlay |
| 144 | M_CaptureSurface_Master | All mirror/portal/monitor surfaces (9-layer material stack) |
| 145 | MPC_CaptureSurface | All 10 MPC scalar params (SteamIntensity, DirtOpacity, MirrorDarkness, etc.) |
| 146 | DA_PlanarCaptureProfile | DA_PlanarCaptureProfile_Mirror — per-surface quality config |
| 147 | MI_MirrorInstances | MI_Mirror_Clean/Dirty/Steam/Horror, MI_Portal_Standard, MI_Monitor_Security, MI_FakeWindow_Interior |
Build Order (Dependency-Safe)
Follow this order when creating uasset files in UE5:
| Phase | Content | Depends On | Approx. Assets |
|---|---|---|---|
| 0 | Project Settings — Plugins, GameplayTags, Asset Manager, Collision | (none) | — |
| 1 | Core Classes — GI_HorrorGame, GM_HorrorGameMode, PC_HorrorController, PS_HorrorPlayerState, GS_HorrorGameState | Framework C++ classes | 5 |
| 2 | Maps — L_SplashScreen, L_MainMenu, L_Test_Sandbox | Core Classes | 3 |
| 3 | Input — DA_InputMapping_Horror_PC (_Xbox) + IMC/IA references | SS_EnhancedInputManager | 2 |
| 4 | Player Character — BP_HorrorPlayerCharacter + all BPC_ components | Core, Maps, Input | 1 |
| 5 | Data Assets (Items) — All DA_Item_* assets | DA_ItemData | 13 |
| 6 | Pickups — All BP_Pickup_* actors | BP_ItemPickup, DA_Item_* | 18 |
| 7 | Doors & Actors — All BP_Door_, BP_HidingSpot_ | BP_DoorActor, I_HidingSpot | 12 |
| 8 | Containers — BP_Chest_Supply, BP_Desk_Drawer, BP_FilingCabinet | BPC_ContainerInventory | 3 |
| 9 | Puzzles — BP_Puzzle_Fusebox, _PipeOrgan, _MorgueDrawers | BP_PuzzleDeviceActor | 3 |
| 10 | Weapons (Held) — BP_Pistol_Held, BP_Shotgun_Held, BP_Flashlight_Held, BP_Crowbar_Held | BP_WeaponBase | 4 |
| 11 | UI Widgets — All WBP_Game* widgets | SS_UIManager, WBP_* parents | 8 |
| 12 | Enemies — BP_Enemy_Patient, _Shade, _Orderly + AI controllers + BT + BB | BP_EnemyBase | 12 |
| 13 | Narrative — DA_Dialogue_, DA_Cutscene_, DA_Objective_*, trigger volumes, lore | DA_NarrativeDataAssets | 12+ |
| 14 | Data Assets (Content) — Encounters, Atmosphere, Scares, Puzzles, Objectives, Behaviour, Acoustic | DA_* parents | 20+ |
| 15 | Checkpoints — BP_Checkpoint_SafeRoom, _Mirror | BP_Checkpoint | 2 |
| 16 | Room Audio Zones — BP_RoomAudioZone_* | BP_RoomAudioZone | 3 |
| 17 | Capture Surfaces — BP_Mirror_NurseStation, BP_HorrorMirror_Morgue/WardensOffice, BP_Monitor_Security/Morgue, BP_Portal_VoidEntrance/Exit, BP_FakeWindow_WardensOffice | BP_PlanarCaptureActor | 9 |
| 18 | Encounter Spawners — BP_EncounterSpawner_* | BPC_ProceduralEncounter | 3 |
| 18 | Atmosphere Actors — BP_LightEvent_, BP_ScareEvent_, BP_AtmosphereController_* | BPC_* parent | 6 |
| 19 | Tutorial Triggers — BP_TutorialTrigger_* | BPC_TutorialSystem | 3 |
| 20 | Polish — BP_CreditsSequence, dev cheats, debug menu | Framework | 3 |
| 21 | Full Levels — L_Asylum_Entry → _WardA → _WardB → _Basement → _VoidSpace → _WardensOffice → _Ending → _Credits | All previous | 8 |
Documentation Map
Each docs/game/ file explains how to build a specific section of the prototype:
| Document | Covers | Build Phase |
|---|---|---|
GAMEINDEX.md |
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 |
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.