02b — Plugin dependencies, ownership & class hierarchy
MASTER LOCK (Programming Bible): This chapter is the single fire for live-host plugin inventory, Build.cs / uplugin dependency arrows, class hierarchy (live + FS target), and conflict / remake notes. Other docs point here — they do not fork a second ownership matrix.
Live host verified: E:\Dev\Local copies\5.8_terra_demo (Lyra_5p8.uproject) — 2026-10-30
Harness source (audit input): E:\Harness Workspaces\TF_Demo\TERRAPLUGIN_OWNERSHIP.html (+ .md)
Pack authority: FS-ARCH-010/011 · Architecture Map §2–3 · 01-repo-and-lyra-host.md · 02-gfp-cookbook.md · 03-pawn-composition.md · inventory/gfp-status.md · Demo / Full kanban (tracker)
Merges raw project inventory, FS / Architecture Map target tree, and kanban Needs.
1. Bottom line
Section titled “1. Bottom line”| Fact | Detail |
|---|---|
| Running pawn today | Lyra DefaultPawnData_EmptyPawn → ALyraCharacter |
| TF character | ATerraFirmaCharacter : ALyraCharacter — empty C++ body; content hero + AbilitySet exist under ADDON but are not the Asset Manager default |
| Dependency arrow | ADDON → LyraGame. LyraGame has zero Build.cs refs to ADDON / SKG / AimAssist |
| Boot maps | GameDefaultMap / Editor / Server → /ADDON/Maps/L_TestMap while ADDON is omitted from .uproject → clean-clone / package risk |
| Target architecture | Logical TFA* modules pack as GFPs (not Lyra forks). ADDON = SKG glue only (FS-ARCH-011) |
2. Host paths
Section titled “2. Host paths”| Pointer | Status |
|---|---|
E:\Dev\Local copies\5.8_terra_demo |
Live — verified this pass |
E:\Dev\projects\demo5.8 |
Missing — stale PB/DONE path |
E:\Harness Workspaces\TF_Demo |
Ownership HTML/MD + build logs only — not a full Plugins mirror |
3. Plugins on disk (raw project)
Section titled “3. Plugins on disk (raw project)”3.1 Top-level Plugins/
Section titled “3.1 Top-level Plugins/”| Folder | Role | In .uproject? |
|---|---|---|
| AsyncMixin | Lyra infra | Yes |
| CommonGame | Lyra infra | Yes |
| CommonLoadingScreen | Lyra infra | Yes |
| CommonStartupLoadingScreen | Lyra infra | Yes |
| CommonUser | Lyra infra | Yes |
| GameplayMessageRouter | Lyra infra | Yes |
| GameSettings | Lyra infra | Yes |
| GameSubtitles | Lyra infra | Yes |
| GreenRoom | Lyra content | (engine/content) |
| LyraExampleContent | Lyra content | Via ShooterCore dep |
| LyraExtTool | Editor | — |
| ModularGameplayActors | Lyra infra | Yes |
| PocketWorlds | Lyra infra | Yes |
| RedRoom | Lyra content | — |
| UIExtension | Lyra infra | Yes |
| VisualStudioTools | Editor | Yes |
| FPSFirstc0c0ff9d1ea1V12 (SKGShooterFramework) | Vendor shooter | No |
| ProAimAs71c3b70340fcV10 (AimAssistSystem) | Vendor AA | Yes (AimAssistSystem) |
| GameFeatures/ | GFPs (below) | partial |
3.2 Plugins/GameFeatures/
Section titled “3.2 Plugins/GameFeatures/”| GFP | On disk | In .uproject |
BuiltIn / notes |
|---|---|---|---|
| ADDON | Yes | No | uplugin: ExplicitlyLoaded: true, BuiltInInitialFeatureState: Active; deps ShooterCore, ShooterExplorer |
| ShooterCore | Yes | Yes | Registered; deps GAS, ModularGameplay, MessageRouter, AsyncMixin, CommonUI, CommonGame, … |
| ShooterExplorer | Yes | Yes | |
| ShooterMaps | Yes | Yes | |
| ShooterTests | Yes | Yes | |
| TopDownArena | Yes | Yes | |
| TFAWeapons | No | No | REMAKE — prior test-project scaffold; recreate on this host |
| TFACore / TFACombat | No | No | REMAKE with TFAWeapons (Architecture Map / kanban) |
| TFAOmniVisor / other TFA* | No | No | Still backlog (create when phase reaches them) |
3.3 .uproject enabled set (91 plugins)
Section titled “3.3 .uproject enabled set (91 plugins)”Includes AimAssistSystem, ShooterCore/Explorer/Maps/Tests, TopDownArena, Common*, GameFeatures, EnhancedInput, GameplayAbilities, Niagara, ReplicationGraph, Online/Steam/EOS-related, etc.
Does not include: ADDON, SKGShooterFramework / FPSFirst…, any TFA* GFP, MonetaryPlatform.
4. Module & plugin dependencies
Section titled “4. Module & plugin dependencies”4.1 Live Build.cs / uplugin (confirmed)
Section titled “4.1 Live Build.cs / uplugin (confirmed)” ┌─────────────────────┐ │ Engine / UE modules │ └──────────┬──────────┘ │ ┌─────────────────────┼─────────────────────┐ ▼ ▼ ▼ ┌─────────────┐ ┌──────────────┐ ┌────────────────┐ │ LyraGame │◄─────│ ADDONRuntime │ │ ShooterCore │ │ (host) │ │ Public: │ │ Runtime │ │ │ │ LyraGame, │ │ Public: │ │ NO dep on │ │ ModularGP, │ │ LyraGame, │ │ ADDON/SKG │ │ CommonGame │ │ ModularGP, │ └──────┬──────┘ └──────┬───────┘ │ CommonGame │ │ │ └───────┬────────┘ │ │ uplugin │ │ │ → ShooterCore │ │ │ → ShooterExplorer │ ▼ ▼ ▼ Lyra content/GFAs ADDON Content Shooter* content (hero, GAs, maps)
SKGShooterFramework (disk only) ──► Niagara, GameplayCameras, StructUtils │ many Runtime modules (Core, Actors, Attachment, Optic, NightVision, …) │ ASKGCharacter : ACharacter (NOT ALyraCharacter) └── NOT in .uproject → not part of cooked game graph until enabled
AimAssistSystem (in .uproject) ──► (no plugin deps in uplugin)| Module | Public deps (summary) |
|---|---|
| LyraGame | Core*, Engine, GAS, AIModule, ModularGameplay(+Actors), GameFeatures, Niagara, AsyncMixin, ReplicationGraph, Hotfix, CommonLoadingScreen, ControlFlows, … — no ADDON/SKG/AimAssist |
| ADDONRuntime | Public: Core, LyraGame, ModularGameplay, CommonGame · Private: GAS, MessageRuntime, CommonUI, UMG, EnhancedInput, AsyncMixin, … |
| ShooterCoreRuntime | Same pattern as ADDON — Public LyraGame + ModularGameplay + CommonGame |
| SKG* | Vendor graph (Niagara / cameras / struct utils); optional ASKGCharacter in SKGOptional |
4.2 Target GFP dependency (Architecture Map / FS — not on disk yet)
Section titled “4.2 Target GFP dependency (Architecture Map / FS — not on disk yet)”MonetaryPlatform ← portable plugin (not a GFP) ↑TFACore ← Boot Active · REMAKE ├── TFACombat (spine: camera · stance · vitality · ASC host) │ ├── TFAMelee ← Plugify melee │ └── TFASingularity ← Plugify Flow + Singularity ├── TFAWeapons ← Plugify guns / Firehand / Demo Mod │ └── TFAModular (optional) ← Plugify parts dials ├── TFAOmniVisor ← Plugify in-game GUI ├── TFAFrontend ← Plugify boot / Deck GUI ├── TFAVision · TFACharacterI · TFAEconomy → MonetaryPlatform ├── TFAProgression → TFACrafting ├── TFAWorld → TFAMaps · TFAAI └── TFAOnline → TFATrustADDON = SKG glue only (Boot Active) — must NOT absorb Combat/HUD/EconomyRule: dependencies point downward only. UI GFPs talk to gameplay via Gameplay Message Router + TFACore interfaces — not by including Combat headers. Plugify MASTER: 02-gfp-cookbook.md — one GFP per major surface; Experience enables/replaces; no sibling #include.
5. Class hierarchy (live + target)
Section titled “5. Class hierarchy (live + target)”5.1 Character / movement (live)
Section titled “5.1 Character / movement (live)”AActor └── APawn └── ACharacter ├── AModularCharacter (ModularGameplayActors) │ └── ALyraCharacter (LyraGame) ★ LIVE DEFAULT PAWN │ └── ATerraFirmaCharacter (ADDON) ★ EMPTY SHELL, not default │ └── ASKGCharacter (SKGOptional) ★ NOT WIRED; not Lyra-derived
UCharacterMovementComponent ├── ULyraCharacterMovementComponent (LyraGame) ★ used by Lyra character └── USKGCharacterMovementComponent (SKG) ★ not on live pawn5.2 Input / hero / pawn extension (live)
Section titled “5.2 Input / hero / pawn extension (live)”UActorComponent └── UPawnComponent ├── ULyraHeroComponent — binds InputTag_Crouch → Input_CrouchPress/Release └── ULyraPawnExtensionComponent — pawn data / ASC init state
UPlayerInput / UEnhancedInput… └── ULyraPlayerInput (DefaultInput.ini)
UInputComponent └── ULyraInputComponent (DefaultInput.ini)
APlayerController └── ALyraPlayerController
UAbilitySystemComponent └── ULyraAbilitySystemComponentLive crouch path: InputTag_Crouch → ULyraHeroComponent::Input_CrouchPress/Release → ALyraCharacter::ToggleCrouch() (+ movement crouch config / camera crouch offset in Lyra).
5.3 Target composition (FS / Architecture Map — mostly missing)
Section titled “5.3 Target composition (FS / Architecture Map — mostly missing)”| Class | Target GFP | Status on host |
|---|---|---|
ATFAGameMode / ATFAGameState |
TFACore (Online writers on GS) | Missing — Lyra GS stand-in. Ownership: 03-pawn-composition.md |
ATFACharacter / fleshed ATerraFirmaCharacter |
TFACore / ADDON glue | Stub only |
ATFAPlayerController |
TFACore | Missing (use Lyra PC) |
ATFAPlayerState |
TFACore (Progression / Combat / Economy / Online writers) | Missing — Lyra PS stand-in |
UTFAAbilitySystemComponent |
TFACombat spine (+ Progression grants) | Missing — Lyra ASC in use |
UTFALoadoutComponent |
TFACombat spine | Missing |
UTFAVitalityComponent |
TFACombat spine | Missing |
UTFACameraDirector |
TFACombat spine | Missing — kanban Need |
| Melee Drive GAs | TFAMelee (Plugify) | Missing — remake GFP |
| Flow / Singularity climax | TFASingularity (Plugify) | Missing — remake GFP |
| Firehand / gun frames | TFAWeapons (Plugify) | Missing — remake GFP |
| OmniVisor widgets | TFAOmniVisor (Plugify) | Missing |
UTFAFirehandBus |
TFAWeapons | Missing (GFP absent) |
UTFAInventoryComponent |
TFACharacterI | Missing |
UTFAVisionComponent |
TFAVision | Missing |
W_TFA_DemoMod |
TFAWeapons + CommonUI | HTML mock only in PB pack |
5.4 ADDON content stack (on disk, wiring gap)
Section titled “5.4 ADDON content stack (on disk, wiring gap)”| Asset | Role |
|---|---|
BP_Hero_TerraFirma |
Hero BP |
DA_HeroPawnData / DA_HeroInputConfig / DA_HeroAbilitySet |
Intended TF pawn data + parkour grants |
GA_Hero_Slide / WallRun / Roll + cooldown GEs |
Parkour abilities |
BP_MygameExperienceDefinition |
ADDON experience |
L_TestMap / L_Cine1 |
Iteration maps (also set as project default maps) |
IMC_Default_TerraFirma |
Redundant IMC in project Content (duplicated Lyra’s IMC_Default); attach emptied 2026-11-04 and the asset deleted 2026-11-14. Real TF input lives in the TFAInput plugin |
Conflict with default config: DefaultGame.ini still sets DefaultPawnData=…/DefaultPawnData_EmptyPawn. Experience / AbilitySet can exist while Asset Manager default still spawns Lyra empty pawn — see §8.
6. Ownership matrix (running vs assets)
Section titled “6. Ownership matrix (running vs assets)”| Subsystem | Running owner today | May TF edit? |
|---|---|---|
| Crouch bind / ToggleCrouch / crouch cam | Lyra | No (unless TF pawn wired + Lyra bind disabled) |
| Slide / WallRun / Roll assets | ADDON content | Yes — still not live on EmptyPawn path |
| Input framework / stock IMC / IA_* | Lyra | Additive IMC via GameFeatureAction_AddInputContextMapping only |
| Weapons / gunfeel / Demo Mod | Lyra + future TFAWeapons | Do not put lasting combat into ADDON |
| HUD / OmniVisor | Lyra UI until TFAOmniVisor | Not ADDON (FS-ARCH-011) |
| Economy / ledgers | — | MonetaryPlatform + TFAEconomy (both missing) |
| SKG presentation | Not wired | Vendor wrap later; no live effect now |
| Net / GameEngine / GameMode defaults | Lyra / project ini | Do not casually edit |
7. Kanban alignment (what the board already tracks)
Section titled “7. Kanban alignment (what the board already tracks)”| Board card / module | Ownership implication |
|---|---|
| Full addon | ADDON Active + SKG glue; FS-ARCH-011 — no inventory/HUD/economy/combat GAS in ADDON |
| Full tfacore / TFACombat | Create GFPs; combat systems leave ADDON |
| Full weapons / melee / singularity | TFAWeapons · TFAMelee · TFASingularity separate Plugify GFPs (not ADDON) |
| Demo demo-hybrid-camera | UTFACameraDirector on Demo pawn — TFACombat spine, not ADDON |
| Demo demo-movement-input | WallRun / keymapping (Vault WILL NOT USE) — ADDON parkour host until Melee/Combat spine owns lasting verbs |
| Demo demo-host-inventory | Persist GFP trees in uproject; experience must activate |
| Demo demo-mod-export-promote | Mod export schema; promote CLI pack-side Done; UMG Need |
8. Conflicts & problem areas (foresee / already true)
Section titled “8. Conflicts & problem areas (foresee / already true)”P0 — Break / ship blockers
Section titled “P0 — Break / ship blockers”-
ADDON not in
.uprojectbut maps default to/ADDON/Maps/…
Local editor may still load ADDON from disk; clean clone / CI / packaged builds can miss the GFP and fail map load. Kanban already: “Persist ADDON in Lyra_5p8.uproject”. -
Default pawn ≠ TF hero
DefaultPawnData_EmptyPawnvs ADDONDA_HeroPawnData/BP_Hero_TerraFirma. Crouch that runs is Lyra; parkour AbilitySet is easy to believe is “live” when it is not on the default pawn.
PB doc conflict:docs/03-pawn-composition.mdDone says “Parkour GAs granted via ability set” — true as asset authorship, false as default live pawn. Treat as Have/Need wiring, not Done gameplay. -
SKG on disk, not in uproject, not on pawn
Teams can edit SKG forever with zero gameplay effect. Also class fork:ASKGCharacter : ACharactercannot drop in as Lyra pawn without a bridge (ADDON’s job per FS).
P1 — Architecture / ownership fights
Section titled “P1 — Architecture / ownership fights”-
Parkour GAs living in ADDON vs FS-ARCH-011
FS: no lasting GAS combat in ADDON; kanban Demo still hosts WallRun in ADDON “for now” (Vault WILL NOT USE). Risk: ADDON becomes the combat dumping ground and TFACombat never absorbs verbs. -
HTML §7.1 “wire ATerraFirmaCharacter then own crouch in ADDON” vs pack long-term
Short Demo unblock OK; long-term camera/stance/vitality → TFACombat; Melee Drive → TFAMelee; Flow/Singularity → TFASingularity — not a fat ADDON. -
TFACore / TFACombat / TFAWeapons — remake (not port)
Those GFPs were built/tested on another project. On5.8_terra_demothey are absent. Do not chase olddemo5.8/ test folders as source of truth. Recreate three GFPs here from FS + Architecture Map + kanban contracts; then register in.uprojectand Experience-enable. Until then: no Firehand / UTFACameraDirector / TFA ASC home; parkour GAs stay stranded in ADDON. -
Boot Active: ADDON + TFACore (Architecture Map) but TFACore not remade yet
Only ADDON can be “Active”; shared tags/interfaces have no GFP yet → pressure to put shared types into ADDON or Lyra (both wrong long-term). Remake TFACore first. -
AimAssist enabled; Firehand / kit AA wiring absent
Plugin present ≠ Demo Mod / Receiver AA baselines wired (demo-modkit/ TBD-AA-FLOAT).
P2 — Process / doc drift
Section titled “P2 — Process / doc drift”- Stale host path in DONE.md / older chapters (
E:\Dev\projects\demo5.8). - Harness TF_Demo “junction” is not a full mirror — ownership HTML can drift from live Plugins.
- HTML crouch API drift — live uses
Input_CrouchPress/Release, not singleInput_Crouch(ownership claim still valid). - Melee Drive / Counter tutorial assumes TFAMelee + TFASingularity Plugify GFPs (not a fat TFACombat) — do not fork LyraGame; GFPs missing → tutorial stays deferred (kanban).
P3 — Soft risks
Section titled “P3 — Soft risks”- Double-bind risk if TF IMC + Lyra crouch both fire after partial wiring (HTML §7.1 step 5).
- ShooterCore still Registered/enabled — fine as reference; do not confuse Shooter experiences with TFA Demo experience.
- ReplicationGraph disabled in Lyra defaults — OK for Demo, but combat net assumptions later must match FS-ARCH-013 (server owns hits).
9. Decision procedure
Section titled “9. Decision procedure”- Affects live EmptyPawn / Lyra hero path? → Lyra (do not rip for TF features).
- ADDON-only asset (
GA_Hero_*, IMC TerraFirma)? → Edit ADDON; expect no runtime until pawn + grant + IMC registration. - Camera / stance / vitality spine? → TFACombat. Melee Drive? → TFAMelee. Flow / Singularity? → TFASingularity.
- Guns / Firehand / Demo Mod? → TFAWeapons. Modular parts product? → TFAModular (or Weapons until split).
- In-game HUD? → TFAOmniVisor. Boot/Deck GUI? → TFAFrontend. Money? → MonetaryPlatform + TFAEconomy.
- SKG mesh/attachments? → Enable plugin + ADDON glue — never rewrite vendor core.
- Want to rip out / replace a system? → Drop or swap that GFP in
GameFeaturesToEnable— do not edit LyraGame.
10. Re-verify commands
Section titled “10. Re-verify commands”$hostRoot = "E:\Dev\Local copies\5.8_terra_demo"Test-Path "$hostRoot\Plugins\GameFeatures\ADDON"(Get-Content "$hostRoot\Lyra_5p8.uproject" -Raw) -match '"Name": "ADDON"'Select-String "$hostRoot\Config\DefaultGame.ini" -Pattern "DefaultPawnData"Select-String "$hostRoot\Config\DefaultEngine.ini" -Pattern "GameDefaultMap"Select-String "$hostRoot\Source\LyraGame\LyraGame.Build.cs" -Pattern "ADDON|SKG"Select-String "$hostRoot\Plugins\GameFeatures\ADDON\Source\ADDONRuntime\ADDONRuntime.Build.cs" -Pattern "LyraGame"11. Related pack docs
Section titled “11. Related pack docs”| Doc | Use |
|---|---|
| 02-gfp-cookbook.md | GFP rules / tree |
| 03-pawn-composition.md | Target pawn components |
| inventory/gfp-status.md | Present / missing / REMAKE GFP table |
| inventory/HAVE-NEED.md | Master Have/Need |
Terra_Firma_Architecture_Map.md §2–3 |
Logical → GFP → classes |
| FS-ARCH-010 / 011 / 013 | Physical packing, vendor boundary, hit auth |
Kanban Full addon / TFACombat / Demo camera & movement cards |
Implementation tracking |
| inventory/terraplugin-ownership.md | Stub pointer only — do not fork |
| 25-howto-program-full-game.md | How to program Full game (learn chapter) |
| 26-howto-program-demo.md | How to program Demo (learn chapter) |
12. Lyra 5.8 practice verify (vs this matrix)
Section titled “12. Lyra 5.8 practice verify (vs this matrix)”Checked against: Epic UE 5.8 Lyra on 5.8_terra_demo · Experiences / GFPs · Tick (FS-ARCH-014) · external Lyra notes (Project Build Config · Plugins Structure — both tagged UE 5.5.4, patterns re-verified on 5.8 LyraGame.Target.cs). Our matrix lines up; older habits that fight updates are called out below.
| Practice (Lyra 5.8) | Our lock | Verdict |
|---|---|---|
| Put game systems in Game Feature Plugins; host stays thin | TFA* + ADDON under Plugins/GameFeatures/; do not fork LyraGame into TFA UBT modules (FS-ARCH-010) · Plugify catalog |
Aligned |
Enable features via ULyraExperienceDefinition::GameFeaturesToEnable (async load/activate) |
Boot Active: ADDON + TFACore; rest Experience-enabled | Aligned (TFACore still REMAKE) |
Wait for OnExperienceLoaded — do not start gameplay from raw BeginPlay alone |
Tutorials / Critical path assume Experience-driven boot | Aligned — call this out in how-to chapters |
Do not edit Epic-shipped Lyra .uassets (BPs/DAs/IMC/IA) — duplicate into your GFP |
Edit ADDON / TFA* duplicates only; additive IMC via GameFeatureAction_AddInputContextMapping |
Aligned |
Prefer subclass / component inject over patching Source/LyraGame/*.cpp |
ATerraFirmaCharacter : ALyraCharacter; combat/camera in TFACombat; SKG glue in ADDON |
Aligned |
| Lyra already owns crouch / default Enhanced Input / hero bind path | Leave ULyraHeroComponent crouch path alone; TF verbs = new GAs + IMC in GFP |
Aligned with §6–9 |
| Vendor plugins wrap, don’t rewrite | SKG + AimAssist — enable + adapt; ASKGCharacter is not the Lyra pawn |
Aligned |
Minimal forced Lyra C++ touch (e.g. LYRAGAME_API export) only when blocked |
Allowed as documented debt with merge note — never a place to put TF gameplay | Soft exception — document each touch |
Target.cs shared settings (ApplySharedLyraTargetSettings) |
Leave Lyra targets; TFA = GFPs not new Target forks (01) | Aligned |
ConfigureGameFeaturePlugins → ExplicitlyLoaded |
Every ADDON / TFA* .uplugin sets ExplicitlyLoaded: true (5.8 Target warns otherwise) |
Aligned |
| Editor Modular / cooked Game Monolithic; Shared vs Unique env | Don’t EnablePlugins in Target.cs on installed engine; use .uproject + Experience |
Aligned |
| Always-on stack: ModularGameplay · GameFeatures · GAS · CommonUI · UIExtension · MessageRouter · CommonUser · AsyncMixin | Architecture Map + cookbook; UI via UIExtension ports (Jayden “harbour”) | Aligned |
| Tick off on character / health by default | FS-ARCH-014 | Aligned |
Movement split (5.8-friendly)
Section titled “Movement split (5.8-friendly)”| Already in Lyra (keep / do not rip) | Custom plugin (no LyraGame edit) |
|---|---|
Crouch toggle + bIsCrouched replication |
Wall Run / Roll / Slide — absorb Carbon WallRun* (ParkourSystem/Character) into TFACombat (ADDON scratch OK); WILL NOT USE Vault* + Tic-Tac; never a ParkourSystem plugin |
| Default move / look / IMC registration on HeroComponent | Extra IMC via Game Feature Action: IMC_TFA_Default from the TFAInput plugin (built); do not add a copy of Lyra’s IMC_Default |
ULyraCharacterMovementComponent baseline |
Custom movement modes server-simulated in TFA/ADDON (FS-MOV-005) — subclass or CMC extension in our GFP, not patch Lyra CMC source |
| Stock IA assets | New IA assets owned by TF GFP if needed — never overwrite Lyra IA_* |
5.8 pitfalls that still bite us
Section titled “5.8 pitfalls that still bite us”- Maps point at ADDON while ADDON is omitted from
.uproject— violates clean GFP enable hygiene; fix first. - Editing Lyra content “just once” — binary merge hell on next Lyra drop; always duplicate.
- Putting Flow / Melee Drive / CameraDirector into ADDON — works short-term, breaks FS-ARCH-011 and Lyra-update story; remake TFACombat + TFAMelee + TFASingularity (Plugify).
3b. Enabling Actor/Component Tick everywhere — Lyra 5.8 characters default Tick off; client Tick for power desyncs and burns frames. Prefer timers/events; authority-gate gameplay (FS-ARCH-014). - Assuming SKG character is drop-in — 5.8 Lyra pawn is still Modular/Lyra ASC; SKG stays presentation via ADDON glue.
Net: Programming Bible ownership + “no LyraGame fork” is the correct UE 5.8 Lyra way to build Terra Firma. Remake Plugify Core/Combat/Melee/Singularity/Weapons on this host; keep Lyra updatable.
External notes vs us: Jayden’s Project Build / Plugins posts are excellent for UBT + plugin catalog (written on 5.5.4). On 5.8 we still have the same ApplySharedLyraTargetSettings / ConfigureGameFeaturePlugins / ExplicitlyLoaded gate (plus Steam target variants). Full plugin-category map: §13.
13. Jayden Plugins Structure verify (post · UE 5.5.4)
Section titled “13. Jayden Plugins Structure verify (post · UE 5.5.4)”Re-checked against live 5.8_terra_demo .uproject + disk Plugins/ (2026-10-30). Legend: Host = keep Lyra/engine on · Product = our Plugify GFP / portable plugin · Tool = keep enabled, not a TF product surface · Skip = editor/QC/cinematic only unless a phase needs it.
13.1 Plugin categories → TF ownership
Section titled “13.1 Plugin categories → TF ownership”| Jayden category | Plugins (his catalog) | On 5.8 host? | Our lock |
|---|---|---|---|
| Settings / UI chrome | GameSettings · CommonUI · CommonLoadingScreen · GameSubtitles · UIExtension | Yes | Host. Settings/loading stay Lyra. Product HUD/menus = TFAOmniVisor / TFAFrontend hooked via UIExtension ports (his “harbour”) — never fork Lyra HUDLayout into TFA |
| Editor helpers | ActorPalette · LyraExtTool · ModelingTools · GeometryScripting · AssetSearch · AssetReferenceRestrictions | Yes (most) | Skip for product; optional editor quality of life |
| Async / data | AsyncMixin · DataRegistry | Yes | Host. AsyncMixin required by GFP stack; DataRegistry OK for DA lookups — do not invent a parallel registry in TFACore |
| Rendering / VFX / water | Niagara · Volumetrics · Water | Yes | Tool. Content uses Niagara; no TFANiagara GFP |
| Animation libs | AnimationLocomotionLibrary · AnimationWarping · ContextualAnimation | Yes | Tool / later. Melee finishers may use ContextualAnimation from TFAMelee content — still not a separate GFP |
| Audio | MetaSound · AudioModulation · AudioGameplayVolume · SoundUtilities · Spatialization · ResonanceAudio | Yes | Tool. SFX in content; no TFA audio GFP |
| Cinematic | MovieRenderPipeline · MaskRenderPass | Yes | Skip (marketing renders only) |
| Input | EnhancedInput · WinDualShock · XInputDevice | Yes | Host. TF verbs = new IA/IMC in GFPs (GameFeatureAction_AddInputContextMapping) |
| Net / crypto | ReplicationGraph · AESGCM · DTLS · SteamSockets · OnlineFramework · OnlineServices* · Steam OSS | Yes | Host for ladder net. Product social/EOS surface = TFAOnline; money AntiCheat = MonetaryPlatform (not OnlineFramework) |
| Modular gameplay | GameFeatures · ModularGameplay · ModularGameplayActors · CommonGame | Yes | Host substrate. All TFA* GFPs depend on this — Plugify catalog lives on top |
| GAS / messages | GameplayAbilities · GameplayMessageRouter · CommonConversation · ControlFlows | Yes | Host. Cross-GFP = MessageRouter + Core tags (cookbook rule 1). Dialogue/ControlFlows stay Lyra until a World/Frontend phase needs them |
| User / session | CommonUser | Yes | Host. Login/session API; TF does not reimplement OSS |
| AI / Smart Objects | GameplayInteractions · GameplayBehaviors · SmartObjects · GameplayStateTree · GameplayBehaviorSmartObjects | Yes | Tool / optional. Product AI = TFAAI (Logic Driver) — may use StateTree later; do not ship duplicate damage/AI pipelines |
| QC / perf | Gauntlet · FunctionalTesting · RuntimeTests · GameplayInsights · SignificanceManager · AutomatedPerfTesting · Reflex | Yes | Skip until QA phase; SignificanceManager OK as host opt |
| PocketWorlds | PocketWorlds | Yes | Host/Tool. Character I / Frontend 3D previews may use it — still not a GFP |
| Lyra GFPs on disk | ShooterCore · ShooterMaps · ShooterExplorer · ShooterTests · TopDownArena · ADDON | Yes (ADDON disk, not in .uproject) |
Pattern refs. Product = Plugify TFA* + ADDON glue. Fix: persist ADDON in .uproject |
| Vendor (ours) | SKG · AimAssist | Disk / AimAssist in uproject | Wrap via ADDON — not Lyra catalog |
13.2 His LyraGame source tiers → our “don’t fork” map
Section titled “13.2 His LyraGame source tiers → our “don’t fork” map”Jayden’s Full Core / Core Extension / Full Extension is a map of Epic’s Source/LyraGame folders — not permission to edit them.
| His tier (examples) | Stay in LyraGame (use as-is) | Remake / extend in Plugify |
|---|---|---|
| Full Core — Character, Input, Player, Physics | ALyraCharacter, HeroComponent, CMC baseline, LocalPlayer, collision channels |
Subclass ATerraFirmaCharacter; TF input IMC in GFP; vitality/camera spine → TFACombat |
| Core Ext strong — Camera, GameModes/Experience, Messages, System | ExperienceManager, VerbMessage helpers, AssetManager, Significance | Experience DAs + Action Sets in ADDON/TFA*; CameraDirector product → TFACombat; messages = subscribe via MessageRouter |
| Core Ext weak — Abilities, GameFeatures actions, Inventory, UI, Teams, Settings | Lyra AbilitySet / GFA base classes, stock settings registries, teams for Shooter | Combat/Melee/Weapons GAs in TFA*; inventory product → TFACharacterI / Weapons; HUD → TFAOmniVisor; Frontend → TFAFrontend |
| Full Extension — Cosmetics, Equipment, Weapons, Interaction, Hotfix | Pattern only (Lyra shooter equipment/weapons) | TFAWeapons + TFAModular (+ SKG presentation); interact prompts → World/I GFPs; Hotfix stays host |
13.3 Verdict
Section titled “13.3 Verdict”| Claim from the post | Us |
|---|---|
| Lyra enables “dozens” of plugins across editor → frontend | True on 5.8 (~90 in .uproject); we keep the set, we do not mirror each as a TFA GFP |
| UIExtension = harbour / ports for Experience-swapped widgets | Aligned — OmniVisor / Frontend / Demo Mod widgets register into ports |
| ModularGameplayActors + GameFeatures = inject components/widgets at runtime | Aligned — Plugify GFPs + Experience GameFeaturesToEnable |
| MessageRouter = local tag bus (vs GAS network events) | Aligned — Melee → Singularity kill/Flow contracts |
| Shooter weapons/equipment live as LyraGame Full Extension | Aligned to remake — do not edit those folders; new GFP owns TF guns/melee |
| Catalog every plugin as “project feature” | Partially diverge — Niagara/MetaSound/MovieRender/Gauntlet are tools, not Plugify product surfaces |
Age: Post is 5.5.4; 5.8 still has the same plugin families (plus Steam/online variants we already enable). No structural miss for Terra Firma.
Gap already tracked: ADDON (and eventually every TFA*) must be in .uproject + ExplicitlyLoaded — his GFP enable story assumes that hygiene.