Skip to content

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