Quick answer: Event Dispatchers are local-only. To replicate, wrap the dispatcher call inside a NetMulticast custom event called from the authority. Or use a RepNotify variable whose OnRep function calls the dispatcher.
Here is how to fix Unreal Blueprint Event Dispatchers that fire on the server but not on clients (or vice versa). Dispatchers are an in-process pub/sub system; they do not cross network boundaries. Replication needs explicit RPCs.
The Symptom
Server fires CallDispatcher; bound client functions do not run. Or client fires; server does not see.
What Causes This
Dispatchers are local. No network traversal happens for the dispatcher itself.
Bindings are per-machine. A client’s bound delegate runs only when the client’s own machine fires the dispatcher.
RPC vs dispatcher confusion. RPCs replicate; dispatchers do not.
The Fix
Step 1: Wrap dispatcher in a NetMulticast event.
UFUNCTION(NetMulticast, Reliable)
void Multicast_OnPlayerScored(int32 NewScore);
void AScoreActor::Multicast_OnPlayerScored_Implementation(int32 NewScore)
{
OnScoreChanged.Broadcast(NewScore); // dispatcher fires on every machine
}
// Server-side trigger
void AScoreActor::AddScore(int32 delta)
{
if (HasAuthority())
{
Score += delta;
Multicast_OnPlayerScored(Score);
}
}
In Blueprint: Add Custom Event, set Replicates to Multicast, add Reliable flag, then Call Dispatcher inside.
Step 2: For state-driven events, use RepNotify.
UPROPERTY(ReplicatedUsing = OnRep_Score)
int32 Score;
UFUNCTION()
void OnRep_Score()
{
OnScoreChanged.Broadcast(Score);
}
Whenever Score replicates, OnRep_Score runs on each client and fires the dispatcher locally.
Step 3: Confirm the actor is replicated. bReplicates must be true for any RPC or RepNotify to traverse the network.
Step 4: Bind dispatcher in BeginPlay on every machine. Each machine needs to subscribe; binding happens on each side independently.
Step 5: Verify with showdebug net. The on-screen overlay shows RPC traffic; if the multicast is firing but bindings are not running, the binding side has the issue.
“Dispatchers are local. NetMulticast or RepNotify carries the cue across the wire.”
Related Issues
For multicast RPC issues, see Multicast RPC. For Mass replication, see Mass Entity Replication.
Wrap dispatcher in Multicast. Or RepNotify the variable. Bind on every side.