Files
realms-in-ruin-dev/Documentation/Archaeology/02-ProjectArchitecture.md
T
tedwardsandCursor aa0058a018 Document Pass 11 Phase 1 synthesis and close static archaeology.
Add executive summary and ability migration matrix; finalize evidence index, runtime validation plan, and Phase 1 handoff.

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

11 KiB

02 — Project Architecture

Status: Complete

  • 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: PluginToolset ListEnabledPlugins returns the full editor-enabled set (engine + project). No OnlineSubsystem / Steam settings found under Config/ (Pass 4 reconfirmed). Map World Settings GameMode not in asset-registry tags — inferred from package dependencies. SemanticSearch not used.
  • Last updated: 2026-07-16
  • Current phase: Phase 1 — Static Architecture (complete)
  • Last completed pass: Pass 11 (Batch 5) — status close; static content from Pass 4 + Pass 10
  • Next pass expected to contribute: Phase 2E (OSS/runtime config) when authorized

Completion notes

Static Phase 1 scope for this document is exhausted. Remaining items (OSS runtime defaults, JoinSession travel, live plugin usage) are Requires Runtime Inspection / Manual Editor — tracked in 13-Unknowns-And-RuntimeQuestions.md.

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)
  • Pass 4: Per-map GameMode via deps; GameDefaultMap/EditorStartupMap; GI unwired; OnlineSubsystem INI negative inventory; production AdvancedSessions node consumers

Deferred to runtime / Phase 2

  • Confirmation of which other enabled engine plugins are referenced by live gameplay content
  • Runtime OnlineSubsystem default platform when INI keys absent
  • Whether JoinSession travels without explicit ClientTravel pin
  • Steam runtime defaults

Pass 4 — Maps, GameModes, sessions, config (Batch 4D)

Observed Implementation

Topic Finding
Startup maps GameDefaultMap=/Game/_Main/Levels/Maps/MainMenu.MainMenu; EditorStartupMap=/Game/_Main/Levels/Testing/Test01.Test01
Map → GameMode (deps) MainMenu→GM_MainMenu; Test01 / Dev_Island / LEVEL_01→GM_Dungeoneer
GameInstance GI_Dungeoneer empty; not in GameInstanceClass; 0 asset referencers
Sessions Production create/find/join in PC_MainMenu / WBP_MainMenu / WBP_GameSlot; example BP 0 refs
OnlineSubsystem INI Absent from project Config/*.ini and plugin Config greps
DefaultPawn GM_Dungeoneer DefaultPawn=None; pawn from character-select SpawnActor+Possess

Full matrices: 11-UI-HUD-And-Sessions.md.


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).