# Troubleshooting

Common issues and their solutions for AP Timer Suite.


# Events Not Firing on Clients

Checklist:

  • Delegate bindings are NOT gated behind HasAuthority()
  • The owning actor has Replicates enabled
  • The Timer Suite component is set to replicate
  • BeginPlay binding occurs on both server and client (it will if Actor Replicates is on)

# Late Joiner Replays Old Thresholds

If a client joining mid-timer sees threshold events fire for thresholds that already passed, the elapsed baseline is not being set correctly.

Checklist:

  • PostReplicatedAdd computes the elapsed threshold baseline correctly
  • The baseline is set before any threshold comparison runs
  • LastThresholdIndexFired is being replicated correctly
  • Thresholds are normalized (sorted and clamped to [0..1]) before storage

# Inspector Shows 0 Snapshots Initially

The inspector widget may show an empty list on first open due to replication timing — the component may not have received its first update yet.

Checklist:

  • Bootstrap retry logic is implemented in the inspector widget
  • The PlayerController is finding the correct Timer Suite component (use tag-based lookup or an explicit reference)
  • The component's owning actor is fully replicated before the inspector opens

# Timers Not Starting

  • AddTimer(Tag) is called before StartTimerSimple or StartTimerAdvanced
  • Both calls are made on the server (or in a Server RPC)
  • The Gameplay Tag is registered in Project Settings

AfterPrime Systems — Building the Gameplay Foundation