NarrativeGMC — Architecture¶
Problem¶
NarrativePro, GMCv2, and GMCAbilitySystem (GMAS) are architecturally incompatible:
- NarrativePro:
ACharacter+CharacterMovementComponent+ GAS - GMCv2:
APawn+OrganicMovementComponent(no ACharacter) - GMAS: Own ability system on GMC (no GAS)
Solution¶
NarrativeGMC bridges all three by inheriting from GMC and composing NarrativePro components.
Class Hierarchy¶
AGMC_Pawn (GMCv2)
└── AGMAS_Pawn (GMAS — adds AbilitySystemComponent)
└── ANarrativeGMCPawn (bridge — adds NarrativePro interfaces + components)
├── ANarrativeGMCPlayerPawn (player input, PlayerDefinition)
└── ANarrativeGMCNPCPawn (NPCDefinition, trading inventory)
Movement Component Hierarchy¶
UGMC_OrganicMovementCmp (GMCv2)
└── UGMCE_CoreComponent (GMCExtended — shared variables)
└── UGMCE_OrganicMovementCmp (GMCExtended — turn-in-place, trajectory, solvers)
└── UNarrativeGMCMovementComponent (bridge — sprint, climb, ragdoll, cover)
Ability System¶
UGMCAbility (GMAS)
└── UNarrativeGMCAbility (bridge — Narrative helpers, attribute shortcuts)
├── NGMC_JumpAbility, NGMC_SprintAbility, NGMC_CrouchAbility, NGMC_DodgeAbility
├── NGMC_DeathAbility, NGMC_WeaponAimAbility, NGMC_ReloadAbility
├── NGMC_ToggleHolsterAbility, NGMC_MeleeBlockAbility
└── UNarrativeGMCCombatAbility (trace-based targeting)
└── NGMC_HitscanAbility
Component Ownership¶
| Component | Owner | Source |
|---|---|---|
| UGMC_AbilitySystemComponent | Pawn (AGMAS_Pawn) | GMAS |
| UNarrativeGMCMovementComponent | Pawn | NarrativeGMC |
| UNarrativeInventoryComponent | Pawn | NarrativePro (portable) |
| UEquipmentComponent | Pawn | NarrativePro (portable) |
| UGMCE_MotionWarpingComponent | Pawn | GMCExtended |
| UTalesComponent | PlayerController | NarrativePro (portable) |
| NarrativeGMCInteractionComponent | Pawn | NarrativeGMC |
Networking¶
- Movement: GMCv2's prediction/reconciliation (FGMC_Move structs)
- Abilities: GMAS predicted effects (bound via GMC channel)
- Attributes: GMC-bound (predicted) or standard replication (non-predicted)
- Quests/Inventory: NarrativePro's standard UE replication
- No conflicts between systems — they use separate replication channels.
What Was Replaced¶
| NarrativePro | NarrativeGMC Replacement |
|---|---|
| ANarrativeCharacter : ACharacter | ANarrativeGMCPawn : AGMAS_Pawn |
| UNarrativeCharacterMovement : CMC | UNarrativeGMCMovementComponent : UGMCE_OrganicMovementCmp |
| UNarrativeAbilitySystemComponent : GAS ASC | UGMC_AbilitySystemComponent (GMAS) |
| UNarrativeGameplayAbility : UGameplayAbility | UNarrativeGMCAbility : UGMCAbility |
| UNarrativeAttributeSetBase : UAttributeSet | GMAS FAttribute with GameplayTags |
| ANarrativePlayerState (owns GAS ASC) | ANarrativeGMCPlayerState (no ASC) |
What Was Kept¶
- UTalesComponent (quest/dialogue) — on PlayerController
- UNarrativeInventoryComponent — on Pawn
- UEquipmentComponent — on Pawn
- UCharacterDefinition / UPlayerDefinition / UNPCDefinition data assets
- All NarrativePro interfaces (INarrativeCharacterOwner, INarrativeTeamAgentInterface)
Credits¶
- GMCv2 by GRIMTEC (Dominik Lips) — Movement and networking framework
- GMCAbilitySystem by Reznok — Ability system for GMC
- GMCExtended by Rooibot Games (MIT License) — Extended movement, motion warping, animation
- GMC-ALS by Dixon6 — ALS locomotion reference for GMC
- NarrativePro by Narrative Tools — Quest, dialogue, inventory, equipment systems