SignalBus Runtime Inspector
Review draft. This source page has not completed website editorial and release-specific verification.
The SignalBus Runtime Inspector is an editor-only debugging tool for viewing live SignalBus activity.
Open it from:
Tools → Director Suite → Runtime Inspectors → SignalBus Runtime InspectorThe Inspector displays copied runtime snapshots. It does not hold direct mutable references to live SignalBus storage, so opening or closing it does not change routing.
What It Is For
Section titled “What It Is For”Use the Inspector to answer questions such as:
- Is my subscriber registered?
- Did a message publish?
- Was it Immediate or Queued?
- Which payload type was used?
- Which World or Game Instance handled it?
- Is a queued message still waiting?
- Did a warning occur?
- Which publishers and subscribers are connected?
- Am I viewing the wrong PIE context?
The Inspector is observational only. It does not publish, replay, edit payloads, subscribe, unsubscribe, clear queues, repair warnings, change callback order, replicate messages, or modify gameplay state.
Opening the Inspector
Section titled “Opening the Inspector”- Open
Tools → Director Suite → Runtime Inspectors → SignalBus Runtime Inspector. - Start PIE.
- Select the correct SignalBus context.
- If no new diagnostics appear, use Runtime Controls to enable diagnostics for this context.
- Trigger the gameplay event.
- Review subscriptions, queue state, history, warnings, and graph topology.
Before PIE starts, the Inspector may show no runtime contexts.
Contexts
Section titled “Contexts”Each SignalBus subsystem appears as a separate context.
Examples:
World - PIE 0Game Instance - PIE 0World - PIE 1Game Instance - PIE 1Each context has separate:
- Subscriptions
- Pending queue
- Diagnostic history
- Warnings
- Payload snapshots
- Broadcast Graph state
The Inspector never merges these automatically.
World Context
Section titled “World Context”A World context represents one USignalBusWorldSubsystem.
Use it for map, match, Actor, and gameplay events such as:
Combat.DamageAppliedEnemy.SpawnedDoor.OpenedObjective.ProgressChangedProjectile.ImpactWhen the World is destroyed, that context disappears.
Game Instance Context
Section titled “Game Instance Context”A Game Instance context represents one USignalBusGameInstanceSubsystem.
Use it for local session-level and cross-travel events such as:
Profile.LoadedSave.CompletedLogin.StatusChangedTravel.StartedTravel.CompletedMatchmaking.SearchStartedThe Game Instance context may remain while one World is destroyed and another is created.
Multi-PIE
Section titled “Multi-PIE”In Multi-PIE, server and client Worlds may exist in one editor process. The Inspector lists each separately.
A server World publish should not appear inside a client World context unless the client separately publishes its own local message after replication or an RPC.
Main Panels
Section titled “Main Panels”The main panels are:
Active SubscriptionsPending QueueEvent HistoryWarningsBroadcast GraphEach panel shows information only for the selected context.
Active Subscriptions
Section titled “Active Subscriptions”Shows currently registered subscribers.
Typical fields include:
- Subscription handle
- Message ID
- Payload type
- Subscriber identity
- Lifetime owner
- Insertion order
- Scope
- Context
Use this panel first when a listener does not receive a message.
Example:
Message ID: Combat.HealthChangedPayload Type: ST_HealthChangedSubscriber: BP_HUDController.SignalBusListenerScope: WorldIf the subscription is missing, likely causes include:
- Subscribe node never executed
- Wrong scope
- Wrong payload type sample
- Missing Listener Component
- Actor already ended play
- Manual unsubscribe ran
- Auto-unsubscribe removed the handle
- Wrong PIE context is selected
Subscribers are explicitly registered, so they may appear before any publisher has sent a message.
Pending Queue
Section titled “Pending Queue”Shows queued messages that were accepted but have not yet been delivered.
Typical fields include:
- Queue ID
- Message ID
- Payload type
- Publisher identity
- Enqueue order
- Pending count
- Scope
- Context
Example:
Queue ID: 42Message ID: Inventory.RefreshedPayload Type: ST_InventoryRefreshedStatus: PendingA queued message may remain pending because:
- The next queue-processing pass has not occurred
- It was queued during an active processing pass
- A large backlog exists
- The context is paused or not ticking
- The message belongs to another context
Queued means deferred, not timed. The Inspector cannot cancel or reorder queued messages.
Event History
Section titled “Event History”Event History shows retained diagnostic events for the selected context.
Possible events include:
- Subscription added
- Subscription removed
- Immediate publish started
- Publish rejected
- Message queued
- Queue rejected
- Dispatch started
- Subscriber invoked
- Subscriber completed
- Dispatch completed
- Warning state changes
- Context lifecycle events
Details may include:
- Message ID
- Payload type
- Publisher
- Subscriber
- Dispatch mode
- Dispatch ID
- Queue ID
- Callback duration
- Dispatch duration
- Queue delay
- Result counts
- Failure reason
Immediate Example
Section titled “Immediate Example”Expected event sequence:
ImmediatePublishStartedDispatchStartedSubscriberInvokedSubscriberCompletedDispatchCompletedBlueprint execution order:
Before PublishReceive CallbackAfter PublishQueued Example
Section titled “Queued Example”Expected event sequence:
MessageQueuedQueuedDispatchStartedSubscriberInvokedSubscriberCompletedQueuedDispatchCompletedBlueprint execution order:
Before QueueAfter QueueReceive CallbackUse Queue ID and Dispatch ID to correlate enqueue and later delivery.
Warnings
Section titled “Warnings”Warnings show runtime diagnostic conditions for the selected context.
Examples may include:
- No subscribers
- Slow subscriber callback
- Queue backlog
- Repeated high-rate publishing
- Payload inspection issues
- Expired subscription cleanup
Typical fields include:
- Warning type
- Severity
- Message ID
- Subscription handle
- Queue ID
- Dispatch ID
- Occurrence count
- First occurrence
- Last occurrence
- Resolved state
- Summary
Warnings do not change routing.
For example:
No Subscriber warningdoes not create a subscriber.
Slow Subscriber warningdoes not cancel the callback.
Queue Backlog warningdoes not clear the queue.
Broadcast Graph
Section titled “Broadcast Graph”The Broadcast Graph shows:
Publisher -> Message -> SubscriberPublisher nodes come from retained diagnostic history.
Subscriber nodes come from active subscriptions.
Message nodes represent:
ScopeContextMessage IDPayload typeUse it to find:
- Missing subscribers
- Unexpected publishers
- Scope mismatches
- Payload contract mismatches
- Large fan-out routes
- Multi-PIE isolation issues
The graph does not prove every subscriber ran during every publish. Use Event History for exact dispatch behavior.
Runtime Settings
Section titled “Runtime Settings”Runtime settings are intentionally managed in SignalBus Runtime Controls. The Inspector displays the selected context’s current diagnostic snapshots and payload policy but cannot change diagnostic capture, warning analysis, payload capture policy, retained event history, or retained warnings.
Open Tools → Director Suite → Runtime Controls → SignalBus Runtime Controls to make those changes. Clearing retained history or warnings does not alter message delivery.
Payload Viewer
Section titled “Payload Viewer”Payload snapshots are read-only diagnostic representations captured during publish or enqueue.
They may show:
- Payload type
- Struct size
- Property names
- Supported values
- Container summaries
- Truncation state
- Inspection policy
- Hidden-property markers
Snapshots do not contain live editable references to the original runtime payload.
Hidden Properties
Section titled “Hidden Properties”Properties marked with SignalBusHidden are not shown by value and are not searchable by that hidden value.
Example:
UPROPERTY(meta = (SignalBusHidden))FString AuthenticationToken;The Inspector may show that the property exists, but not its contents.
Snapshot Limits
Section titled “Snapshot Limits”Typical limits include:
Payload snapshot budget: 64 KiBContainer inspection limit: 64 elementsNested depth limit: 8Scalar text limit: 1,024 charactersLarge payloads may be marked Truncated. This affects only diagnostic capture, not delivery.
Common Workflows
Section titled “Common Workflows”Subscriber Does Not Receive a Message
Section titled “Subscriber Does Not Receive a Message”- Select the expected context.
- Open Active Subscriptions.
- Confirm the subscriber exists.
- Confirm the Message ID.
- Confirm the exact payload type.
- Open Event History.
- Trigger one publish.
- Confirm the publish was accepted.
- Check whether dispatch occurred.
- Check subscriber invocation records.
- Review Warnings.
Common causes are wrong scope, Message ID typo, payload mismatch, missing subscription, wrong PIE context, or queued delivery not yet processed.
Queued Message Did Not Deliver
Section titled “Queued Message Did Not Deliver”- Open Pending Queue.
- Find the Queue ID.
- Wait for the next processing pass.
- Check Event History for queued dispatch start.
- Confirm the subscriber was still active at delivery.
- Check queue backlog warnings.
- Verify the context is ticking.
Queued payloads are copied at enqueue. Subscribers are matched at delivery.
Wrong Server or Client Behavior
Section titled “Wrong Server or Client Behavior”- Confirm whether the selected context is server or client.
- Confirm World versus Game Instance.
- Check the PIE instance.
- Inspect publisher identity.
- Confirm replication or RPC arrived first.
- Confirm the local SignalBus publish occurred in the intended context.
SignalBus does not move messages across the network.
Publisher Missing from Graph
Section titled “Publisher Missing from Graph”- Enable diagnostics in SignalBus Runtime Controls.
- Select the correct context.
- Clear retained history in SignalBus Runtime Controls if needed.
- Trigger the publisher once.
- Confirm a publish event appears in Event History.
- Refresh the graph.
Publishers are observed, not registered.
Payload Appears Wrong
Section titled “Payload Appears Wrong”- Inspect the payload type in Event History.
- Compare it with the subscriber’s expected struct.
- Confirm exact type identity.
- Check whether the snapshot was truncated.
- Confirm the Payload Policy.
- Check whether the property is hidden.
SignalBus does not convert payload types.
Troubleshooting
Section titled “Troubleshooting”No Contexts Appear
Section titled “No Contexts Appear”Possible causes:
- PIE is not running
- No runtime subsystem exists yet
- The Inspector has not refreshed
- PIE ended and contexts were destroyed
Start PIE and wait for the next refresh.
Event History Is Empty
Section titled “Event History Is Empty”Possible causes:
- Diagnostics are disabled
- No activity occurred
- Wrong context selected
- History was cleared
- PIE restarted
- Old entries were evicted
Enable diagnostics in SignalBus Runtime Controls, then trigger one known publish.
Active Subscriptions Is Empty
Section titled “Active Subscriptions Is Empty”Possible causes:
- Subscribe code never ran
- Wrong context selected
- Listener was destroyed
- Manual unsubscribe ran
- Auto-unsubscribe occurred
Check listener lifecycle and subscription timing.
Pending Queue Is Always Empty
Section titled “Pending Queue Is Always Empty”Possible explanations:
- Only Immediate publish is used
- Queued messages process between refreshes
- Wrong context selected
- Queue request was rejected
- Delivery completed before refresh
Use Event History to confirm enqueue and delivery.
Warning Returns After Clear Warnings
Section titled “Warning Returns After Clear Warnings”Clear Warnings removes the record, not the condition. If the condition occurs again, the warning returns.
Publisher Appears but No Subscriber Edge Exists
Section titled “Publisher Appears but No Subscriber Edge Exists”Check active subscriptions, scope, Message ID, payload type, lifetime, and selected context.
Subscriber Appears but No Publisher Exists
Section titled “Subscriber Appears but No Publisher Exists”This may be normal. The listener may be waiting, diagnostics may have been disabled, or publisher history may have been cleared.
Stale-Looking Data After PIE Restart
Section titled “Stale-Looking Data After PIE Restart”Select the new context created by the restarted PIE session. Close and reopen the Inspector only if the context list does not recover.
Performance Notes
Section titled “Performance Notes”The Inspector refreshes periodically rather than on every SignalBus event.
For better responsiveness:
- Inspect one context at a time
- Clear history before reproducing one issue
- Avoid publishing every Tick
- Use compact payloads
- Close the Inspector when not needed
- Reduce unrelated test activity
- Use Metadata Only or Hidden when full values are unnecessary
The tool has been validated with bounded data sets including:
2,000 diagnostic events1,000 warnings250 graph nodes1,000 graph edgesThese limits protect editor responsiveness and do not alter runtime routing.
Safety and Data Exposure
Section titled “Safety and Data Exposure”The Inspector may expose:
- Object names
- Object paths
- Message IDs
- Payload type names
- Warning summaries
- Captured payload values when allowed
Do not place secrets in ordinary diagnostic fields. Use SignalBusHidden for sensitive properties.
Recommended Debugging Order
Section titled “Recommended Debugging Order”Use this order:
1. Context2. Active Subscriptions3. Event History4. Pending Queue5. Warnings6. Broadcast Graph7. Payload ViewerThis separates context, registration, execution, queueing, warning, topology, and payload problems.
Summary
Section titled “Summary”The SignalBus Runtime Inspector is:
A live, read-only editor view of copied SignalBus runtime stateAlways select the correct World or Game Instance context first.
Then verify:
ScopeMessage IDExact payload typeActive subscriptionDispatch modeQueue stateWarning state