reznok/gmcabilitysystem/gmas-debug

Claude Code and agent skill by reznok/gmcabilitysystem

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Use when GMAS or GMC gameplay misbehaves - desync, double activation, late or missing effects, attributes stuck at zero, replay oddities, crashes in the ability component; covers logs, console variables, the debugger and a symptom table.

Install

npx vskill@latest install reznok/gmcabilitysystem/gmas-debug

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

A GMAS fault is almost always one of three things: the two sides of a move disagreed (a correction and a replay), an operation did not reach the move it was meant for (dropped or forced), or something ran on a replayed or combined move that should have run once. This skill lists the places where GMAS and GMC show that, a procedure that separates the three, how a healthy activation reads in the log, and a symptom table: references/symptoms.md. The rules the symptoms violate live in gmas:gmas-rules and gmas:gmc-prediction; the networked test setup in gmas:gmas-testing. GMAS paths below are relative to Source/GMCAbilitySystem/.

Surfaces

Log categories. Raise one with Log <Category> Verbose in the console (VeryVerbose for the per-move lines), -LogCmds="LogGMCAbilitySystem Verbose" on the command line, or [Core.Log] in DefaultEngine.ini. All default to Log.

CategoryDeclared inCovers
LogGMCAbilitySystemPublic/GMCAbilitySystem.heverything the ability component, abilities, effects, tasks and the bound queue log; the trace tags below. 1.4.1+: the only category GMAS writes to
LogGMCReplicationSource/GMCCore/Public/Utility/GMCLogCategory.hGMC moves, corrections, replays, smoothing, the world-time notice; on 1.4.0 also GMAS's task heartbeat timeout
LogGMCMovement, LogGMCPawn, LogGMCControllersame headerthe movement components (VeryVerbose traces every executed move), pawn lifetime, controllers
LogTempengine1.4.0 only: server-side mirrors of [AbilityCut], [TaskDiag], [BatchOp], [TaskHeartbeat] and one [ServerProcessOperation] rejection. 1.4.1+ writes nothing here

Trace tags (1.4+). Bracketed prefixes in LogGMCAbilitySystem lines (Private/Components/GMCAbilityComponent.cpp, Private/Ability/GMCAbility.cpp, Private/Ability/Tasks/GMCAbilityTaskBase.cpp). op is the operation id: negative for client-made operations, positive for server-made ones; move_ts is the move timestamp, identical on both machines for the same move.

TagLevelTraces
[AckTrace:Client:GenTick], [AckTrace:Server:GenTick]Verbosethe operation slot read at the start of each prediction tick: on the owner what it is about to process, on the server what the client's move carried
[AckTrace:Client:WroteAck], [AckTrace:Client:BatchEnd], [AckTrace:Client:BatchAckWritten]Verbosethe owner acknowledging a server operation (single, or a batch with the acknowledged ids)
[AckTrace:Server:ProcessAck]Verbosethe server receiving an acknowledgement: has_payload, has_grace must both be 1 for it to apply
[ImpulseTrace]Verboseevery AddImpulse operation applied, on both sides: auth, replay, move_ts, velocity before and after
[ReconnectSnapshot]Verbosean owning client rehydrating active effects after a reconnect
[TaskDiag]Verbose for benign end races; Warning for task-id or ability-id divergence; Error for a task registered during a replaytask payload and heartbeat routing (gmas:gmas-task)
[AbilityCut]Error on the client confirm timeout; Warning for an ability ending with unfinished tasks or cancelled by the serverabnormal ability ends, with a diagnostics dump (below)
[ReplayActivation]Warningan activation whose first run on this side happened inside a replay
[AbilityGate]Warninga single-instance refusal whose blocker is older than 2 s
[EffectLeak]Warninga declared effect id that no longer resolved at ability end (replay renumbering); removed by tag instead
[BatchOp]Errora batched server operation whose payload is missing on this side
[ReplayBurst]Warningthe replay-burst detector tripped (settings below)
[ServerProcessOperation]Warningthe server rejecting a client-auth ability or effect
[TaskHeartbeat]Error (LogGMCAbilitySystem on 1.4.1+, LogTemp on 1.4.0)the server watchdog cancelling (1.4.1+; ending on 1.4.0) an ability after 3 s without heartbeats
[EffectID] <Generator>: (1.4.1+; <Generator> = Predicted, ServerAuth or ClientAuth)Erroreffect-id generation: ids are ActionTimer × 100 offset into the generator's range. ActionTimer is 0: no id, the apply fails (a smoothed listen-server pawn, or an apply before the first move). outside the id range ... ids wrap: the clock left the range (a session past about 83 days, or a negative clock) and ids wrap inside it from here on, reported once per component. every id ... is live or reserved: the range is exhausted. VeryVerbose: every id generated. On 1.4.0 the same faults were [ApplyAbilityEffect] / [GetNextAvailable*EffectID] lines, and the range overflow was Fatal
[OperationLost] (1.4.1+)Errorthe server read a client operation (negative id) whose payload it never cached: not applied. Once per id
[RemoveEffectByIdSafe]Warninga client-auth removal with an id outside the client-auth range, rejected
[ProcessOp], [ServerOpAccept], [ServerOpDrop], [ApplyTrace]Log (1.4.1+; Warning on 1.4.0), only while GMAS.LogApplyTrace is on (on 1.4.0 one [ServerOpDrop] Error, a failed base-struct cast, was always on)every activation and effect operation through ProcessOperation, each client operation the server accepted or dropped (with the reason), and a C++ plus script call stack per effect instance created
[AttrBindMap] (1.4.1+; [BLMoveEnqueue] on 1.4.0)Logthe output of GMAS.DumpAttrBindMap
[RPC]VeryVerbosethe client receiving the server's confirm, end-ability and end-effect RPCs

Untagged lines worth knowing, same category: RPCOnServerOperationAdded: N (Verbose, the owner received a server operation), Forcing Operation On Server (Verbose, the grace expired and the server applied the operation outside the move; one frame after the call for AI and unpossessed pawns), Activation operation N already consumed on this side (redelivery/replay) — skipped (Verbose, a replay re-delivering an activation that already ran), Ability Activation for Ability.Dash Stopped By Cooldown / ... Stopped By Cost (1.4.1+) / ... Failing PreExecution check / ... Blocked By Other Ability / ... Stopped by an OnAbilityActivated listener (1.4.1+) / ... Stopped By Tags (Verbose, a refused activation; Stopped (Already Instanced) at VeryVerbose), Input tag not granted: X / Input tag not in the ability map: X (Warning, 1.4.1+; Ability Tag Not Granted / Ability Tag Not Found before), Effect X Not Confirmed By Server (ID: N), Removing... (Error), Dropped client operation N: payload expired after M moves (Warning), No Abilities Granted for InputTag (Error), Client attempted to apply server-auth event (Warning), Client operation type X is not allowed by server as client input (Error), X is deprecated ... Reported once. (Warning, 1.4.1+: a deprecated function was called, once per component). GMAS <version> loaded (Log, 1.4.1+) is the module's version line; on 1.4.0 it was the [GMAS-LIVE-CHECK] Module loaded banner at Warning.

Console (1.4+, `Private/Components/GMCAbilityComponent.cpp`, not in Shipping builds).

NameDefaultDoes
GMAS.LogApplyTrace (bool)falseenables the four gated tags above (at Log on 1.4.1+). The [ApplyTrace] stack dump fires for every effect instance created on this machine whose class name contains the filter
GMAS.ApplyTraceFilter (string)empty (1.4.1+; 1.4.0 shipped a leftover non-empty default, so set it explicitly there)class-name substring for [ApplyTrace] and the effect half of [ProcessOp]; empty traces every effect, so set it to your class (GMAS.ApplyTraceFilter MyEffect_Burn) to isolate one
GMAS.DumpAttrBindMap (command; BL.GMAS.DumpAttrBindMap on 1.4.0, a deprecated alias until 1.5)–logs [AttrBindMap] lines: for the local player's pawn, each bound attribute's float binding index (Float[i] = Value, Float[i+1] = RawValue) with its tag and combine mode. GMC's own sync-data dumps (gmc.LogClientReplay, gmc.LogClientMoveTrace) list bound values by type and index, so this is how a deviating float becomes an attribute name

GMC console variables. Full table, with the GMC .cpp files that define them: gmc-diagnostics.md. The five that matter most for GMAS work:

VariableReach for it when
gmc.ShowNetRoleanything differs per machine: label every pawn with its role on this machine first
gmc.ShowClientCorrectionsthe owner snaps, an ability or effect misbehaves after a correction: marks each correction (predicted red, server green)
gmc.LogClientReplaya correction needs a name: dumps the client state, the server state and the replayed history, every bound value by type and index
gmc.StatNetMovementValuesthe live movement values of pawns with a chosen role (1 authority, 2 autonomous, 3 simulated) on screen
gmc.LogClientMoveTracemoves seem not to arrive: follows individual moves around the round trip

Gameplay Debugger. The runtime module registers category GMCAbilitySystem (Private/GMCAbilitySystem.cpp, slot 9, enabled in game and simulate). Open the debugger with its activation key (' by default, an engine setting) and enable the category. For the debugger's selected actor it prints the server's data pack ([server]) and the local component ([client]) for granted abilities, active abilities, bound active tags, client-auth tags (1.4+), attributes, active effects (1.4.1+: one ToString() line each, with its state and the client's answer for its id: Pending, Validated, Timeout, or Authority on the server; 1.4.0 never showed the answer) and cached operation payloads (1.4+); a row whose count differs between the two is marked [INCOHERENCY] in red. 1.4.0 also had an Active Effects Data row that printed UNDER CONSTRUCTION; 1.4.1 removed it. On a listen server the server rows are read from the movement component's server state, so the host's own pawn shows its authoritative view.

Project Settings → GMC Ability System (1.4+), stored in DefaultGame.ini:

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

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
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/reznok/gmcabilitysystem/gmas-debug/badge)](https://verified-skill.com/skills/reznok/gmcabilitysystem/gmas-debug)

Something wrong with this skill or its page? Tell us.