reznok/gmcabilitysystem/gmas-setup
Claude Code and agent skill by reznok/gmcabilitysystem
- community
Checking that the SKILL.md file is still in the repository.
Use when adding GMAS to a project or wiring a new GMC pawn or movement component to a GMC_AbilitySystemComponent, in C++ or Blueprint, including submodule install and Build.cs dependencies.
Install
npx vskill@latest install reznok/gmcabilitysystem/gmas-setupSKILL.md
Behavior below was verified against GMC 2.3.x and GMAS 1.4. Confirm signatures in this project's own headers (paths are relative to each plugin's root, e.g.Source/GMCCore/Public/Components/GMCReplicationComponent.h); GMC's source is not part of this plugin.
This skill gets GMAS (GMC Ability System) into a project and a first pawn wired to it, in C++ or Blueprint. The rules that govern what you build afterwards live in gmas:gmas-rules (where state lives, binding order, effects, server operations) and gmas:gmc-prediction (GMC's move cycle). GMAS paths below are relative to Source/GMCAbilitySystem/; GMC paths to the GMC plugin root.
Requirements
| Need | Detail | |
|---|---|---|
| a GMC license | GMC (General Movement Component, GMCv2) is a paid plugin. Its source lives only in the project, under Plugins/GMC (module GMCCore); GMAS never ships it, and neither do the skills in this plugin. GMAS 1.4 is verified against GMC 2.3.x | |
| Unreal 5.5 to 5.8 | 5.4 unverified. On 1.4.0 Public/Utility/GMASBoundQueueV2.h includes StructUtils/InstancedStruct.h without the ENGINE_MINOR_VERSION >= 5 guard the other GMAS headers carry (on 5.4 that header lives in the StructUtils plugin under a different path); 1.4.1 adds the guard | |
plugins enabled in .uproject | GMC and GMCAbilitySystem. GMAS's .uplugin declares GMC, StructUtils and Niagara (1.4+) as plugin dependencies, so enabling GMAS enables them: Niagara is on by default anyway; StructUtils is a real plugin on 5.4 and a deprecated shim from 5.5 that still exists in 5.8. GMC's own .uplugin pulls EnhancedInput and OnlineSubsystemSteam | |
| GameplayTags | an engine module, not a plugin: your Build.cs lists it; the tag editor plugin GameplayTagsEditor is enabled by default | |
| GMC controllers | player controllers derive from AGMC_PlayerController, AI controllers from AGMC_AIController, and the game mode spawns exactly one AGMC_WorldTimeReplicator (gmas:gmc-prediction) |
GMAS has two modules, GMCAbilitySystem (runtime) and GMCAbilitySystemEditor (editor), plus from 1.4.1 GMCAbilitySystemTests (UncookedOnly: the specs and test stubs, never in a cooked or Shipping game); all load at the Default phase.
Installing GMAS
Submodule (recommended: upgrades are a pointer bump, and you can read the exact tree you build against):
-b mainfollows releases (tagsv1.x.y);-b devfollows the integration branch, which the repository'sdocs/BRANCHING.mdrecipe uses and which moves daily. To pin a release:git -C Plugins/GMCAbilitySystem checkout v1.4.0, then commit the pointer. To update:git submodule update --remote Plugins/GMCAbilitySystem, rebuild, commit the pointer (gmas:gmas-upgrade).- Never patch inside the submodule: fix upstream, then bump the pointer. The plugin's name is
GMCAbilitySystemwhatever the folder is called.
Copied folder: download a release archive (or git clone --depth 1 -b v1.4.0) into Plugins/GMCAbilitySystem and drop its .git. You own updates from then on: diff against the release you copied when upgrading.
`.uproject`:
`Build.cs` of every module that includes GMC or GMAS headers:
GMCAbilitySystem exports GMCCore, GameplayTags, GameplayTasks, EnhancedInput, StructUtils and NetCore as public dependencies (Source/GMCAbilitySystem/GMCAbilitySystem.Build.cs), so its headers compile in your module without more. List GMCCore and GameplayTags anyway: your own headers use them directly. List GameplayTasks yourself when you subclass the ability system component (a UGameplayTasksComponent) or write ability tasks. StructUtils is normally not needed on any version: on 5.5+ FInstancedStruct lives in CoreUObject (header StructUtils/InstancedStruct.h), and on 5.4 UBT propagates the module through GMAS's public dependencies; add it only if your 5.4 build complains.
Regenerate project files, build (a source plugin compiles with the project), open the editor: Edit → Plugins lists "GMAS - GMC Ability System" under the GMAS category.
C++ wiring
| Piece | Class | Notes | |
|---|---|---|---|
| pawn | AGMC_Pawn (Source/GMCCore/Public/Actors/GMCPawn.h) | an APawn that owns GMC's move pipeline: finds its replication component (GetReplicationComponent()), binds it from PostInitializeComponents (SetupReplicationComponent() calls BindReplicationData), and handles possession and move-state replication | |
| convenience pawn | AGMAS_Pawn (Public/Actors/GMAS_Pawn.h) | AGMC_Pawn plus a capsule root, skeletal mesh, spring arm, camera, an ability system component (AbilitySystemComponent, subobject Ability Component) and an optional InputMappingContext added at priority 0. No movement component: you add yours. Purely optional | |
| movement component | UGMC_OrganicMovementCmp (Source/GMCCore/Public/Components/GMCOrganicMovementComponent.h) for characters; UGMC_MovementUtilityCmp (GMCMovementUtilityComponent.h, same folder) for anything else | your subclass overrides the five hooks below and forwards them | |
| ability system component ("the ASC") | UGMC_AbilitySystemComponent (Public/Components/GMCAbilityComponent.h), a UGameplayTasksComponent, replicated by default | one per pawn. Set its GMCMovementComponent pointer (UGMC_MovementUtilityCmp*, BlueprintReadWrite) yourself before the bind. 1.4.1+ resolves a null pointer from the owner's UGMC_MovementUtilityCmp at the bind and binds nothing (Error) when there is none; 1.4.0 dereferenced it unchecked and crashed |
Timing. AGMC_Pawn::PostInitializeComponents runs the bind, so your BindReplicationData_Implementation executes before any BeginPlay. The ASC reads AttributeDataAssets during the bind (InstantiateAttributes) and StartingAbilities, AbilityMaps, StartingTags in its own BeginPlay; StartingEffects go out from the server once the pawn has a controller. Fill all of them in class defaults, the constructor, or in the pawn's PostInitializeComponents before Super, identically on every machine (gmas:gmas-rules).
| Movement component override | Forward to the ASC | |
|---|---|---|
BindReplicationData_Implementation() | Super, your own Bind* calls, then GMCMovementComponent = this and BindReplicationData() as the last line | |
PreLocalMoveExecution_Implementation(const FGMC_Move& LocalMove) | Super, then PreLocalMoveExecution() | |
GenPredictionTick_Implementation(float DeltaTime) | Super, your predicted logic, then GenPredictionTick(DeltaTime) | |
GenSimulationTick_Implementation(float DeltaTime) | Super, then GenSimulationTick(DeltaTime) | |
GenAncillaryTick_Implementation(float DeltaTime, bool bLocalMove, bool bCombinedClientMove) | Super, then GenAncillaryTick(DeltaTime, bCombinedClientMove); bLocalMove is not forwarded |
UGMC_OrganicMovementCmp implements four of the five itself (all but the ancillary tick), so always call Super first. Where the ASC call sits relative to your own logic inside a hook is yours to decide; keep it the same on every machine.
The pawn adds the movement component (and, from a bare AGMC_Pawn, a root collision component plus CreateDefaultSubobject<UGMC_AbilitySystemComponent>); the pawn's root becomes GMC's updated component. Attribute data chosen at runtime (an archetype) is injected before the bind:
Blueprint wiring
The same five events, in the movement component Blueprint (a child of GMC_OrganicMovementCmp), with the ASC on the character. Step by step with screenshots: https://github.com/reznok/GMCAbilitySystem/wiki/Getting-Started (the wiki is stale: since 1.0 the tag-to-class rows live in GMCAbilityMapData assets, below, not in an editable map, and its Ability.Jump map key and activation tag are an Input.* tag today).
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingClaude/gmas/skills/gmas-setup/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/reznok/gmcabilitysystem/gmas-setup)