#
Changelog
#
[1.0.0] — Initial Release
UAP_EventBusComponent— server-authoritative pub/sub event messaging component- RPC-based replication — no replicated UPROPERTYs, all delivery via targeted RPCs
- Transparent client-to-server routing —
PublishEventworks from any machine without authority checks
- Four delivery scopes:
All,OwnerOnly,ServerOnly,LocalOnly All— NetMulticast to server and all connected clientsOwnerOnly— Client RPC to the owning connection onlyServerOnly— server-local dispatch, zero client costLocalOnly— calling machine only, zero network cost — ideal for UI events
OnEventReceived— catch-all delegate, fires for every event on the bus regardless of tagOnListenedEventReceived— filtered delegate, fires only for tags registered viaListenForEvent- Both delegates share the same
(FGameplayTag, FAP_EventPayload)signature - Both can be bound and used simultaneously on the same component
ListenForEvent— register a tag filterStopListeningForEvent— remove a single tag filterStopAllListening— clear all filters, called automatically inEndPlayIsListeningForEvent— query whether a tag is currently filtered
RegisterPersistentEvent— mark a tag as persistent, cache its last payload server-sideUnregisterPersistentEvent— remove a tag from the persistent set- Automatic late-join delivery — clients call
ServerRequestCachedEventsinBeginPlayautomatically ClientReceiveCachedEventdelivers each cached event to joining clients viaOnEventReceived
WasEventFired— check if a persistent event has fired at least onceGetLastPayload— retrieve the last cached payload for a persistent tagGetAllCachedEventTags— get all tags currently in the persistent cache- All three are
BlueprintPure— no execution pin in Blueprint
UAP_EventBusBlueprintLibrarywith four static helpersGetEventBusFromGameState— most common accessor for the global bus patternGetEventBusComponent— find the bus on any actorPublishEventOnBus— convenience wrapper combining lookup and publishMakeEventPayload— construct a payload as a pure node without splitting struct pins
AAP_EventBusDemoCharacter— C++ reference implementation with input-driven examples across all four delivery scopes- Four demo input actions: DemoPublishDamage (All), DemoPublishHeal (All), DemoPublishAlert (ServerOnly), DemoPublishUINotify (LocalOnly)
#
Known Limitations in v1.0
Planned for Future Versions
No listener priority ordering — all listeners fire in registration order. Planned for v1.1.
No wildcard or parent-tag matching — ListenForEvent requires an exact tag match. Listening on a parent tag does not catch child tag events. Planned for v1.1.
No timed or delayed events — PublishEvent fires immediately. Scheduled/delayed delivery planned for v1.2.
Cache is transient — persistent event cache does not survive level loads or game session restarts.
#
[1.1.0] — Planned
Planned for v1.1
- Listener priority ordering
- Wildcard and parent-tag event matching +++
#
[1.2.0] — Planned
Planned for v1.2
- Timed and delayed event delivery
AfterPrime Systems — Building the Gameplay Foundation