Exclude REALMSINRUIN_TITLE_DEV.png from Git LFS so the README hero renders on Gitea. Co-authored-by: Cursor <cursoragent@cursor.com>
11 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: PluginToolset
ListEnabledPluginsreturns the full editor-enabled set (engine + project). NoOnlineSubsystem/ Steam settings found underConfig/(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
- Last completed pass: Pass 4 + Pass 10 (Batch 4D)
- Next pass expected to contribute: Pass 11 when authorized
Draft tracking
Completed sections
- Module and target descriptors
- REALMSINRUIN Build.cs public dependencies
.uprojectplugin 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
Pending sections
- Confirmation of which other enabled engine plugins are referenced by live gameplay content
- Runtime OnlineSubsystem default platform when INI keys absent
Evidence still required
- Whether JoinSession travels without explicit ClientTravel pin
- Steam runtime defaults
Tool or visibility limitations
- Map World Settings GameMode tags unavailable; dependency inference used
- Full enabled-plugin list is large
Unknowns requiring later verification
GI_Dungeoneernot assigned viaGameInstanceClassand has 0 referencers — Present but Unconnected- GlobalDefaultGameMode absent — per-map overrides only
- No project OnlineSubsystem INI under
Config/
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 Implementation — REALMSINRUIN_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 .uproject — usage 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/GASBaseCharacter→RIRBaseCharacterGASBaseEnemy/GASEnemyCharacter/GASBaseEnemyCharacter→RIRBaseEnemyCharacterGASPlayerState→RIRPlayerStateGASPlayerController→RIRPlayerControllerGASPlayerCharacter→RIRPlayerCharacterEffectActor→RIREffectActor
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.EnhancedPlayerInputDefaultInputComponentClass=/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).