Skip to content

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.


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)

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

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

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.


┌─────────────────────┐
│ 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 → TFATrust
ADDON = SKG glue only (Boot Active) — must NOT absorb Combat/HUD/Economy

Rule: 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.


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 pawn
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
└── ULyraAbilitySystemComponent

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


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)”
  1. ADDON not in .uproject but 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”.

  2. Default pawn ≠ TF hero
    DefaultPawnData_EmptyPawn vs ADDON DA_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.md Done says “Parkour GAs granted via ability set” — true as asset authorship, false as default live pawn. Treat as Have/Need wiring, not Done gameplay.

  3. SKG on disk, not in uproject, not on pawn
    Teams can edit SKG forever with zero gameplay effect. Also class fork: ASKGCharacter : ACharacter cannot drop in as Lyra pawn without a bridge (ADDON’s job per FS).

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

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

  3. TFACore / TFACombat / TFAWeapons — remake (not port)
    Those GFPs were built/tested on another project. On 5.8_terra_demo they are absent. Do not chase old demo5.8 / test folders as source of truth. Recreate three GFPs here from FS + Architecture Map + kanban contracts; then register in .uproject and Experience-enable. Until then: no Firehand / UTFACameraDirector / TFA ASC home; parkour GAs stay stranded in ADDON.

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

  5. AimAssist enabled; Firehand / kit AA wiring absent
    Plugin present ≠ Demo Mod / Receiver AA baselines wired (demo-modkit / TBD-AA-FLOAT).

  1. Stale host path in DONE.md / older chapters (E:\Dev\projects\demo5.8).
  2. Harness TF_Demo “junction” is not a full mirror — ownership HTML can drift from live Plugins.
  3. HTML crouch API drift — live uses Input_CrouchPress/Release, not single Input_Crouch (ownership claim still valid).
  4. Melee Drive / Counter tutorial assumes TFAMelee + TFASingularity Plugify GFPs (not a fat TFACombat) — do not fork LyraGame; GFPs missing → tutorial stays deferred (kanban).
  1. Double-bind risk if TF IMC + Lyra crouch both fire after partial wiring (HTML §7.1 step 5).
  2. ShooterCore still Registered/enabled — fine as reference; do not confuse Shooter experiences with TFA Demo experience.
  3. ReplicationGraph disabled in Lyra defaults — OK for Demo, but combat net assumptions later must match FS-ARCH-013 (server owns hits).

  1. Affects live EmptyPawn / Lyra hero path? → Lyra (do not rip for TF features).
  2. ADDON-only asset (GA_Hero_*, IMC TerraFirma)? → Edit ADDON; expect no runtime until pawn + grant + IMC registration.
  3. Camera / stance / vitality spine? → TFACombat. Melee Drive? → TFAMelee. Flow / Singularity? → TFASingularity.
  4. Guns / Firehand / Demo Mod? → TFAWeapons. Modular parts product? → TFAModular (or Weapons until split).
  5. In-game HUD? → TFAOmniVisor. Boot/Deck GUI? → TFAFrontend. Money? → MonetaryPlatform + TFAEconomy.
  6. SKG mesh/attachments? → Enable plugin + ADDON glue — never rewrite vendor core.
  7. Want to rip out / replace a system? → Drop or swap that GFP in GameFeaturesToEnable — do not edit LyraGame.

Terminal window
$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"

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
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_*
  1. Maps point at ADDON while ADDON is omitted from .uproject — violates clean GFP enable hygiene; fix first.
  2. Editing Lyra content “just once” — binary merge hell on next Lyra drop; always duplicate.
  3. 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).
  4. 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.


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.

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