Quick answer: Confirm AbilitySystemComponent has bReplicates=true, GameplayCueManager initialized client-side, and the GameplayCueTag is present in your cue path scan.
A multiplayer MMO uses GAS gameplay cues for spell VFX. Caster sees their own VFX; nearby players don’t. Server triggers the cue, but simulated proxies miss it.
Replication Setup
AbilitySystemComponent->SetIsReplicated(true);
AbilitySystemComponent->SetReplicationMode(EGameplayEffectReplicationMode::Mixed);
Mixed means owner gets full data; simulated proxies get cosmetic data including cues. Set in component constructor.
Cue Tag Registration
Project Settings → GameplayAbilities. GameplayCueSet paths: ensure the path containing your cues is scanned. Add paths like /Game/Abilities/Cues/.
Without registration, the tag fires but no actor is spawned client-side.
Cue Triggers
// server-side, replicates to all
AbilitySystemComponent->ExecuteGameplayCue(CueTag, CueParameters);
// local-only (won't reach other clients)
AbilitySystemComponent->ExecuteGameplayCueLocal(CueTag, CueParameters);
Use ExecuteGameplayCue for events to replicate. Local variants exist for HUD/owner-only effects.
GameplayCueNotify Configuration
Your cue notify actor (BP_GC_Fireball, etc.) has:
- Gameplay Cue Tag: matches the trigger tag.
- Auto Destroy On Remove: cleans up after end-event.
- Async Visual Effects: starts on receive.
Debug Console
showdebug abilitysystem
AbilitySystem.GameplayCue.PrintTagOnExecute 1
First shows live cues per ASC. Second logs each cue execution — check both server and client logs to confirm replication.
Connection Type
Listen Server: simulated proxies in the same process; replication is essentially in-memory.
Dedicated Server: simulated proxies receive via UDP; needs MinNetUpdateFrequency and NetCullDistance to ensure events reach them.
Verifying
Two clients connected, observe each other. One casts a spell; both see VFX. Server logs and client logs both show cue execution. Latency under target.
“Cues are cosmetic but replicated. Treat them like RPC events — ensure replication path is wired top to bottom.”
For high-frequency cues (autofire, particles per hit), batch through GameplayEvents instead — replication is more efficient than per-cue dispatches.