1
Project Setup And Migration Guide
admin edited this page 2026-05-19 16:30:10 +00:00
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.

Project Setup & Migration Guide — UE5 Modular Game Framework

Version: 1.0 | Target UE: 5.55.7

This guide covers everything you need to configure when migrating the framework into a new or existing UE5 project. Follow these steps in order.


1. Prerequisites

1.1 Required UE5 Plugins

Enable these in Edit → Plugins:

Plugin Category Required For
Enhanced Input Input SS_EnhancedInputManager, all input handling
GameplayTags Gameplay All tag-driven state management (enabled by default)
Motion Warping Animation BPC_ContextualTraversalSystem vault/mantle
Gameplay Abilities Gameplay (optional — only if using GAS for combat layer)

1.2 Framework Files to Copy

Copy these folders into your project's Content/ directory:

YourProject/Content/
├── Framework/
│   ├── Core/          ← Foundation (GI_GameFramework, DA_GameTagRegistry, FL_GameUtilities, etc.)
│   ├── Player/        ← Health, Stamina, Stress, Movement, Hiding, Camera, Body
│   ├── Interaction/   ← Doors, Puzzles, Traversal, Physics, UsableObjects, Displays
│   ├── Inventory/     ← InventorySystem, Containers, Pickups, Equipment, Keys, etc.
│   ├── Weapons/       ← WeaponBase, Firearm, Melee, Ammo, Reload, Recoil, Shield
│   ├── UI/            ← HUD, Menus, Inventory UI, Notifications, Settings
│   ├── Narrative/     ← NarrativeState, Dialogue, Objectives, Choices, Cutscenes
│   ├── AI/            ← EnemyBase, Controller, Perception, Alert, StateMachine
│   ├── Adaptive/      ← Atmosphere, Difficulty, Scares, Pacing, Audio
│   ├── Save/          ← SaveManager, Checkpoints, Death, Respawn, Corpses
│   ├── Meta/          ← Achievements, Progress Stats
│   ├── Settings/      ← Settings, Accessibility
│   ├── Polish/        ← Tutorial, Loading, Credits, Debug
│   ├── DataAssets/    ← All DA_* Data Assets
│   ├── Input/         ← IA_* Input Actions, IMC_* Input Mapping Contexts
│   ├── DataTables/    ← All DT_Tags_* Data Tables
│   ├── State/         ← BPC_StateManager, DA_StateGatingTable, Enums, Structs
│   └── Audio/         ← MS_* MetaSound buses, SS_AudioManager, RoomZones

2. Project Settings Configuration

2.1 Maps & Modes

Edit → Project Settings → Maps & Modes

Setting Value Notes
Default GameMode GM_CoreGameMode Or your project's subclass
Default Game Instance GI_GameFramework Critical — owns all SS_ subsystems
Default Pawn Class Your GASP-based player character With all BPC_ components attached
Default Player Controller PC_CoreController Handles input routing
Game Default Map Your main menu / startup level
Editor Startup Map Your testing/development level

2.2 Gameplay Tags — Register All Data Tables

Edit → Project Settings → Gameplay Tags

Under Gameplay Tag Table List, click + 11 times and assign:

Index Data Table Tag Count
0 DT_Tags_Player 34
1 DT_Tags_Interaction 36
2 DT_Tags_Item 26
3 DT_Tags_Narrative 48
4 DT_Tags_AI 23
5 DT_Tags_Save 22
6 DT_Tags_Environment 30
7 DT_Tags_Combat 26
8 DT_Tags_State 39
9 DT_Tags_Audio 30
10 DT_Tags_Achievement 20

⚠️ Critical: Without this step, NO framework GameplayTags will be recognized. Is Gameplay Tag Valid will return false for all tags. DA_GameTagRegistry.ValidateTag() will fail.

Alternative — .ini approach: If you prefer DefaultGameplayTags.ini, add entries manually:

+GameplayTagList=(Tag="Framework.Player.State.Alive",DevComment="Player is alive and active")
+GameplayTagList=(Tag="Framework.Player.State.Dead",DevComment="Player health reached zero")
; ... (all 334 tags)

The Data Table approach is recommended because the CSV files are maintained alongside the framework docs.

2.3 Asset Manager — Data Asset Registration

Edit → Project Settings → Asset Manager

Under Primary Asset Types to Scan, add entries for framework Data Asset types:

Primary Asset Type Base Class Has Blueprint Classes Directory
Item PrimaryDataAsset /Game/Framework/DataAssets/Items
Equipment PrimaryDataAsset /Game/Framework/DataAssets/Equipment
Weapon PrimaryDataAsset /Game/Framework/DataAssets/Weapons
AIProfile PrimaryDataAsset /Game/Framework/DataAssets/AI
Narrative PrimaryDataAsset /Game/Framework/DataAssets/Narrative
Encounter PrimaryDataAsset /Game/Framework/DataAssets/Encounters
Objective PrimaryDataAsset /Game/Framework/DataAssets/Objectives
Puzzle PrimaryDataAsset /Game/Framework/DataAssets/Puzzles
Atmosphere PrimaryDataAsset /Game/Framework/DataAssets/Atmosphere
Scare PrimaryDataAsset /Game/Framework/DataAssets/Scares
Audio PrimaryDataAsset /Game/Framework/DataAssets/Audio
Input PrimaryDataAsset /Game/Framework/DataAssets/Input

⚠️ Why: This enables Async Load Primary Asset for Data Assets. Without it, async loading and the DA_GameTagRegistry lookups via Asset Manager will fail.

2.4 Collision Presets

Edit → Project Settings → Collision

Create these custom Object Channels and Presets:

Name Type Response
Interaction Object Channel Used by BPC_InteractionDetector traces
HideSpot Object Channel Used by I_HidingSpot overlap detection
WeaponTrace Trace Channel Used by BPC_FirearmSystem hitscan
MeleeHitbox Object Channel Used by BPC_MeleeSystem swing detection

Interaction Preset:

  • Block: WorldStatic, WorldDynamic
  • Ignore: Pawn, Camera
  • Overlap: Interaction objects

3. Enhanced Input Setup

3.1 Input Actions Required (Create in Content/Framework/Input/Actions/)

Input Action Type Used By
IA_Move Axis2D Movement
IA_Look Axis2D Camera
IA_Jump Digital Jump / Traversal
IA_Sprint Digital Stamina drain
IA_Crouch Digital Posture toggle
IA_Interact Digital InteractionDetector
IA_Fire Digital WeaponBase
IA_Aim Digital ADS aim
IA_Reload Digital ReloadSystem
IA_Melee Digital MeleeSystem
IA_Block Digital Shield / Block
IA_UseItem Digital ActiveItemSystem / Consumable
IA_Hotkey1 through IA_Hotkey8 Digital Quick slot selection
IA_NextItem Digital Cycle quick slot forward
IA_PreviousItem Digital Cycle quick slot backward
IA_Pause Digital Pause menu
IA_Inventory Digital Inventory toggle
IA_Journal Digital Journal toggle
IA_Map Digital Map toggle
IA_SkipCutscene Digital CutsceneBridge skip
IA_SkipDialogue Digital DialoguePlayback skip
IA_Grab Digital PhysicsDragSystem

3.2 Input Mapping Contexts (Create in Content/Framework/Input/Contexts/)

Mapping Context Priority Contains
IMC_Default 0 Move, Look, Jump, Sprint, Crouch, Interact, Fire, Aim, Reload, Melee, Block, UseItem, Hotkey1-8, NextItem, PreviousItem, Pause, Inventory, Journal, Map, Grab
IMC_Hiding 5 PeekLeft, PeekRight, ExitHide, HoldBreath
IMC_WristwatchUI 10 Menu navigation (d-pad), Confirm, Back
IMC_Inspection 20 RotateItem, ZoomItem, ExitInspect
IMC_UI 100 Menu navigation, Confirm, Back (consumes input)

3.3 Platform Input Profiles

Create DA_InputMappingProfile Data Assets per platform:

  • DA_InputProfile_PC — Keyboard + Mouse bindings
  • DA_InputProfile_Xbox — Xbox controller bindings
  • DA_InputProfile_PS5 — DualSense bindings

Each profile maps Input Actions to keys/buttons. Reference: SS_EnhancedInputManager reads these at init.


4. Gameplay Tag Configuration

4.1 Verify Tag Registration

After adding all 11 Data Tables to Project Settings:

  1. Open DA_GameTagRegistry → call GetAllRegisteredTags() → output should show ~334 tags
  2. Call ValidateTag(Framework.Player.State.Alive) → should return true
  3. Call ValidateTag(NonExistent.Tag) → should return false

4.2 Project-Specific Tags

Add project narrative/achievement tags to the existing CSVs (e.g., DT_Tags_Narrative.csv) or create a new DT_Tags_Project.csv. The Game. prefix namespace is reserved for project-specific tags. Example:

Name,Tag,DevComment
Game_Narrative_MyBossFight,Game.Narrative.Flag.BossDefeated,Boss fight completed
Game_Narrative_MySecretEnding,Game.Narrative.Ending.Secret,Secret ending flag

4.3 Tag-Driven State Gates

BPC_StateManager reads DA_StateGatingTable which maps action tags to blocking state tags. Ensure all state tags in the gating table exist in DT_Tags_State.csv.


5. Data Asset Population

5.1 Minimum Required Data Assets

Create these before running the game:

Data Asset Type Required For
DA_GameTagRegistry Base Tag validation (loaded by GI_GameFramework.Init)
DA_StateGatingTable State BPC_StateManager action permission checks
DA_AudioSettings Audio SS_AudioManager bus volumes and defaults
DA_InputMappingProfile Input SS_EnhancedInputManager key bindings
DA_AISettings (or per-enemy) AI AI_BaseAgentController perception config

5.2 Content Data Assets (Populate as you build content)

Data Asset One Per
DA_ItemData Each item in the game
DA_EquipmentConfig Each weapon / equipment piece
DA_ObjectiveData Each quest / objective
DA_DialogueSequence Each conversation
DA_PuzzleData Each puzzle device
DA_EncounterData Each enemy encounter group
DA_AtmosphereProfile Each room / zone
DA_ScareEvent Each scare event
DA_RoomAcousticPreset Each acoustic zone
DA_EndingCondition Each ending path

6. Player Character Setup

Your player character Blueprint must have these components attached:

Component Location Notes
BPC_HealthSystem Character Must be first-tier for damage cascade
BPC_StaminaSystem Character
BPC_StressSystem Character
BPC_MovementStateSystem Character Bridges to CMC + ABP_GASP
BPC_HidingSystem Character
BPC_InteractionDetector Character
BPC_InventorySystem Character Central authority
BPC_ActiveItemSystem Character Quick slots
BPC_EquipmentSlotSystem Character Equipped items
BPC_ConsumableSystem Character
BPC_KeyItemSystem Character
BPC_DocumentArchiveSystem Character
BPC_JournalSystem Character
BPC_CameraStateLayer Character Camera FOV / shake
BPC_EmbodimentSystem Character First-person body
BPC_PlayerMetricsTracker Character Analytics
BPC_DeathHandlingSystem PlayerController Death orchestrator
BPC_StateManager PlayerController State authority
BPC_ContextualTraversalSystem Character Motion warping vaults
BPC_PhysicsDragSystem Character Grab/drag

GASP Integration: Add your GASP Animation Blueprint to the character's Mesh. BPC_MovementStateSystem sets GASP variables directly.


7. Level Setup

7.1 Minimum Level Requirements

Every playable level needs:

  • GameMode override: GM_CoreGameMode (or per-level subclass)
  • Player Start: Standard PlayerStart actor
  • Lighting: At minimum a DirectionalLight + Skylight

7.2 World-Placed Framework Actors

Place these as needed:

Actor Purpose
BP_DoorActor Interactive doors (set LinkedActors, DoorConfig per instance)
BP_ItemPickup World items (set ItemData Data Asset per instance)
BP_ContainerInventory Lootable containers
BP_PuzzleDeviceActor Puzzles (set PuzzleData per instance)
BP_NarrativeTriggerVolume Story triggers (set TriggerActions per instance)
BP_Checkpoint Respawn points
BP_RoomAudioZone Acoustic zones
BP_EnemyBase AI enemies (set AIProfile per instance)
BP_PatrolPath Enemy patrol routes

8. Initialization Sequence (First Boot)

The framework boot order on a fresh project launch:

1. Engine creates UGameInstance → GI_GameFramework
2. GI_GameFramework.Init()
   ├─ InitPlatformServices()
   ├─ UE auto-creates all SS_ GameInstanceSubsystems:
   │   ├─ SS_SaveManager.Initialize()
   │   ├─ SS_AudioManager.Initialize() → loads DA_AudioSettings
   │   ├─ SS_EnhancedInputManager.Initialize() → loads DA_InputMappingProfile
   │   ├─ SS_UIManager.Initialize()
   │   └─ SS_AchievementSystem.Initialize()
   ├─ SS_SettingsSystem loads persistent settings
   └─ SetGamePhase(MainMenu)

3. GM_CoreGameMode loads (on level start)
   ├─ Spawns GS_CoreGameState (replicated state bus)
   ├─ Spawns PlayerController → auto-possesses Player Pawn
   └─ All BPC_ components BeginPlay → bind dispatchers

4. PlayerController.BeginPlay()
   ├─ BPC_StateManager.BeginPlay() → load DA_StateGatingTable
   ├─ SS_EnhancedInputManager.PushContext(IMC_Default, Priority=0)
   └─ GI_GameFramework.SetGamePhase(InGame)

5. If loading a save:
   ├─ SS_SaveManager.LoadFromSlot(SlotIndex)
   ├─ Deserializes all I_Persistable actors
   └─ Restores player position, inventory, narrative flags

9. Common Migration Pitfalls

9.1 "No Gameplay Tags Registered" Warning

Cause: Data Tables not added to Project Settings → Gameplay Tags → Gameplay Tag Table List.
Fix: Add all 11 DT_Tags_* tables. Restart editor to refresh tag table.

9.2 "GetAllRegisteredTags Returns Empty Array"

Cause: DA_GameTagRegistry.TagDataTables array is empty (the variable defaults need populating in the Data Asset).
Fix: Open DA_GameTagRegistry → set TagDataTables array → add all 11 Data Table references.

9.3 "SS_Subsystem Not Found" / Null Subsystem

Cause: GI_GameFramework not set as Default Game Instance in Project Settings.
Fix: Project Settings → Maps & Modes → Default Game Instance → GI_GameFramework.

9.4 Enhanced Input Not Working

Cause: Enhanced Input plugin not enabled, or Input Mapping Contexts not pushed.
Fix: Enable plugin → verify SS_EnhancedInputManager.PushContext() is called in PlayerController.BeginPlay.

9.5 Motion Warping Traversals Not Aligning

Cause: Motion Warping plugin not enabled.
Fix: Edit → Plugins → Motion Warping → Enable → Restart Editor.

9.6 AI Behavior Trees Not Running

Cause: AI_BaseAgentController not assigned to enemy pawn, or Blackboard not configured.
Fix: Set AI Controller Class on BP_EnemyBase to AI_BaseAgentController. Ensure BB_AgentBoard is assigned.


10. Testing the Migration

10.1 Smoke Test Checklist

  • Editor opens without asset-loading errors
  • PIE (Play In Editor): no GetSubsystem() null pointer errors
  • GameplayTag validation: DA_GameTagRegistry.ValidateTag(Framework.Player.State.Alive) returns true
  • Player can move (IMC_Default pushed, input routed)
  • Health/Stamina/Stress bars appear on HUD
  • Interaction: approach a door, see prompt, press E → door opens
  • Inventory: pick up an item → appears in inventory UI
  • Combat: fire weapon → damage applies → enemy reacts
  • Save/Load: save game → quit → load → state restored
  • Death: die → respawn at checkpoint
  • State Gating: sprint → reload while sprinting → sprint blocked

11. Updating This Document

When adding new framework systems that require Project Settings changes:

  1. Add the setting to the appropriate section above
  2. Update the Prerequisites or Data Asset lists
  3. Add a Common Pitfall if the setting is easy to forget
  4. Increment the version at the top

Project Setup & Migration Guide v1.0 — Required reading before importing the framework into any UE5 project.