Files
realms-in-ruin-dev/Documentation/Archaeology/02-ProjectArchitecture.md
T
tedwardsandCursor ff5640a020 Establish UE 5.8 known-good baseline with Batch 1 archaeology docs.
Initialize Git with LFS for binary assets and add standard Unreal Engine .gitignore/.gitattributes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 19:40:19 -07:00

10 KiB

02 — Project Architecture

Status: Draft

  • Scope: Project modules, targets, Build.cs dependencies, plugins (engine + project-local), gameplay-relevant configuration (maps, tags, input, networking, GAS-related settings), engine vs project boundaries.
  • Inspection method: Read-only inspection of .uproject, Target.cs, Build.cs, module startup, plugin descriptors, Config/*.ini, and PluginToolset (ListEnabledPlugins, GetPluginInfo, IsEnabled).
  • Evidence classifications used: Observed Implementation, Documented Intent, Inferred, Unknown.
  • Tool or visibility limitations: No Git repository at project root (filesystem integrity used). PluginToolset ListEnabledPlugins returns the full editor-enabled set (engine + project). No OnlineSubsystem / Steam settings found under Config/. SemanticSearch not used.
  • Last updated: 2026-07-16
  • Current phase: Phase 1 — Static Architecture
  • Last completed pass: Pass 1 (Batch 1)
  • Next pass expected to contribute: Batch 4 Pass 10 (map/GameMode relationships); Batch 4 Pass 4 (session usage confirmation)

Draft tracking

Completed sections

  • Module and target descriptors
  • REALMSINRUIN Build.cs public dependencies
  • .uproject plugin declarations vs project-local plugins
  • Advanced Sessions / Advanced Steam Sessions descriptors
  • DefaultEngine / DefaultGame / DefaultGameplayTags / DefaultInput highlights
  • CoreRedirects (GAS* → RIR* rename evidence)

Pending sections

  • Per-map GameMode assignment (requires map World Settings / asset inspection without loading levels)
  • Confirmation of which enabled engine plugins are referenced by live gameplay content
  • OnlineSubsystem / Steam runtime configuration location

Evidence still required

  • Map asset tags / World Settings for MainMenu, Test01, Dev_Island, character-select maps
  • Whether NetworkPrediction / OnlineFramework / AbilitySystemGameFeatureActions are used by project Blueprints or only enabled

Tool or visibility limitations

  • Cannot load levels; map GameMode must come from asset metadata / config
  • Full enabled-plugin list is large; usage confirmation deferred to later batches

Unknowns requiring later verification

  • Where GameInstance class is configured (GI_Dungeoneer discovered via subclass search; not set in inspected DefaultEngine.ini)
  • GlobalDefaultGameMode absent from DefaultEngine.ini — GameMode likely per-map
  • No project OnlineSubsystem INI under Config/

1. Project descriptor

Observed ImplementationREALMSINRUIN_DEV.uproject

Field Value
EngineAssociation 5.8
Runtime module REALMSINRUIN (Type Runtime, LoadingPhase Default)
Module AdditionalDependencies Engine, GameplayAbilities, CoreUObject, UMG

Enabled plugins declared in .uproject (non-exhaustive thematic groups):

  • Gameplay / online: GameplayAbilities, CommonUI, NetworkPrediction, OnlineFramework, AbilitySystemGameFeatureActions
  • World / water: Landmass, Water, WaterExtras, Buoyancy
  • Editor modeling: ModelingToolsEditorMode, SkeletalMeshModelingTools, StaticMeshEditorModeling
  • MCP / toolsets: MCPClientToolset, ModelContextProtocol, AIModuleToolset, AllToolsets, GASToolsets, GameplayTagsToolset, GameFeaturesToolset
  • Disabled in uproject: Cargo, FlatNodes, AutoSizeComments

Observed Implementation: Project-local plugins AdvancedSessions and AdvancedSteamSessions are not listed in the .uproject Plugins array, but exist under Plugins/ and are reported enabled by PluginToolset (see §3).


2. Modules and build

Observed Implementation

Artifact Path Notes
Game target Source/REALMSINRUIN.Target.cs TargetType.Game; BuildSettingsVersion.V7; EngineIncludeOrderVersion.Unreal5_8; ExtraModule REALMSINRUIN
Editor target Source/REALMSINRUINEditor.Target.cs Same settings; TargetType.Editor
Module rules Source/REALMSINRUIN/REALMSINRUIN.Build.cs Public deps: Core, CoreUObject, Engine, InputCore, EnhancedInput, GameplayAbilities, GameplayTags, GameplayTasks
Module startup Source/REALMSINRUIN/REALMSINRUIN.cpp IMPLEMENT_PRIMARY_GAME_MODULE(FDefaultGameModuleImpl, REALMSINRUIN, "REALMSINRUIN")
Module header Source/REALMSINRUIN/REALMSINRUIN.h Defines CUSTOM_DEPTH_RED 250 (used by enemy highlight)

Observed Implementation: PrivateDependencyModuleNames is empty. UMG is listed in .uproject AdditionalDependencies but not in Build.cs Public/Private dependencies. Native HUD/widget code includes UMG headers regardless.

Inferred — Technical Debt: Module may rely on transitive/engine linkage for UMG; Build.cs does not declare UMG or OnlineSubsystem (commented OnlineSubsystem line present).

Observed Implementation: There is a single project runtime module. No native GameMode, GameInstance, or GameState classes exist under Source/REALMSINRUIN/.


3. Plugins

3.1 Project-local plugins

Observed Implementation — PluginToolset GetPluginInfo / ListEnabledPlugins

Plugin Enabled Descriptor Depends on
AdvancedSessions Yes Plugins/AdvancedSessions/AdvancedSessions.uplugin (VersionName 5.8) OnlineSubsystem, OnlineSubsystemUtils
AdvancedSteamSessions Yes Plugins/AdvancedSteamSessions/AdvancedSteamSessions.uplugin (VersionName 5.8) AdvancedSessions, OnlineSubsystem, OnlineSubsystemSteam, OnlineSubsystemUtils, SteamShared

AdvancedSessions Build.cs defines WITH_ADVANCED_SESSIONS=1 and depends on OnlineSubsystem / Networking / Sockets.

AdvancedSteamSessions Build.cs defines WITH_ADVANCED_STEAM_SESSIONS=1; on Win64/Linux/Mac also depends on SteamShared, Steamworks, OnlineSubsystemSteam.

Classification: Foundational to multiplayer session UI flow (usage confirmation deferred to Batch 4 Pass 4). Do not recommend removal.

3.2 Foundational engine plugins (project-declared)

Observed Implementation: GameplayAbilities enabled — required by native ASC / AttributeSet / EffectActor / RIRGameplayAbility.

Observed Implementation: EnhancedInput enabled (also Build.cs dependency) — used by ARIRPlayerController.

Observed Implementation: CommonUI enabled in .uprojectusage unconfirmed in native code (no CommonUI includes under Source/REALMSINRUIN/). Issue: Requires Manual Editor Inspection / Batch 4 UI pass.

3.3 Enabled but usage unconfirmed (sample)

From .uproject + ListEnabledPlugins: NetworkPrediction, OnlineFramework, AbilitySystemGameFeatureActions, Water stack, MCP toolset plugins. Issue: Defer usage confirmation; do not recommend disable.


4. Configuration

4.1 Maps (Config/DefaultEngine.ini [/Script/EngineSettings.GameMapsSettings])

Setting Value Evidence
GameDefaultMap /Game/_Main/Levels/Maps/MainMenu.MainMenu Observed Implementation
EditorStartupMap /Game/_Main/Levels/Testing/Test01.Test01 Observed Implementation

Unknown: GlobalDefaultGameMode not present in this file.

4.2 CoreRedirects (GAS rename history)

Observed Implementation[CoreRedirects] in DefaultEngine.ini:

  • GASPlayerBase / GASBaseCharacterRIRBaseCharacter
  • GASBaseEnemy / GASEnemyCharacter / GASBaseEnemyCharacterRIRBaseEnemyCharacter
  • GASPlayerStateRIRPlayerState
  • GASPlayerControllerRIRPlayerController
  • GASPlayerCharacterRIRPlayerCharacter
  • EffectActorRIREffectActor

Documented Intent / Incomplete Refactor: Class names were renamed from a GAS-* prefix to RIR-*; redirects preserve asset compatibility.

4.3 Gameplay Tags (Config/DefaultGameplayTags.ini)

Project tags (Observed Implementation, with DevComment Documented Intent):

  • State: State.Dead, State.Stunned, State.Blocking, State.Casting
  • Disable: Disable.Movement, Disable.Input, Disable.Attack, Disable.Ability
  • Effect: Effect.Damage, Effect.Heal, Effect.Buff, Effect.Debuff

FastReplication=False.

4.4 Input (Config/DefaultInput.ini)

Observed Implementation:

  • DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput
  • DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent
  • Legacy ActionMappings: Jump (SpaceBar / Gamepad)
  • Legacy AxisMappings: Move Forward/Backward, Move Right/Left, Look, Turn

Inferred: Dual input stack (Enhanced Input defaults + legacy mappings). Ability input bindings not present in this INI — likely Blueprint / IMC assets (Batch 2+).

4.5 DefaultGame.ini

Observed Implementation: ProjectID, CopyrightNotice; empty [/Script/GameplayAbilitiesEditor.GameplayEffectCreationMenu] section.

4.6 Networking / online

Unknown: No OnlineSubsystem / Steam / NetDriver sections found under Config/ via text search. OnlineFramework and OnlineSubsystem* appear enabled via plugins. Location of Steam AppId / OSS config Requires Manual Editor Inspection or Engine/default config outside inspected files.


5. Engine vs project boundaries

Layer Responsibility (Batch 1 evidence)
Engine plugins GAS, Enhanced Input, CommonUI, Water, OnlineSubsystem*, MCP toolsets
Project plugins AdvancedSessions, AdvancedSteamSessions
Project module REALMSINRUIN Character/Player/ASC/AttributeSet/EffectActor/HUD/WidgetController scaffolding
Project Blueprints (seeds only) GI_Dungeoneer, GM_Dungeoneer, GM_MainMenu, player/enemy BPs, widgets, GEs

6. Issue classifications (Batch 1)

Finding Classification
GAS* → RIR* CoreRedirects Incomplete Refactor
AdvancedSessions not listed in .uproject but enabled Intended Behavior (project plugin discovery) — confirm
UMG used without Build.cs dependency Technical Debt
No OnlineSubsystem INI in Config/ Unknown / Requires Manual Editor Inspection
CommonUI enabled, unused in native Requires Manual Editor Inspection
GlobalDefaultGameMode absent Unknown until map inspection

No findings classified as Runtime Regression (UE 5.8 migration).