Skip to documentation

Rekall Global Events

Build your first signal.
Then build a system around it.

Practical guides for Blueprint authors, C++ programmers, multiplayer engineers, and technical designers.

Start in BlueprintStart in C++
01

Start here

Quick start

Create one typed Blueprint event and see it travel from a producer to a listener.

  1. Install and enable.

    Copy the plugin to <Project>/Plugins/RekallGlobalEvents, or to <UE_5.8>/Engine/Plugins/Marketplace/RekallGlobalEvents for every project using that engine. Enable Rekall Global Events and restart. Blueprint-only projects need no Visual Studio generation or module dependency.

  2. Create the payload.

    In the Content Browser, choose Add > Blueprint > Structure. Name it ST_InventoryItemAdded and add the fields your listeners need.

  3. Create the definition.

    Choose Add > Data > Data Asset, select Rekall Event Definition, give it the tag Event.Inventory.ItemAdded, and select your Blueprint Struct as its payload.

  4. Build a catalog.

    Repeat Add > Data > Data Asset, select Rekall Event Catalog, add the definition, then assign it under Project Settings > Game > Rekall Events.

  5. Publish and listen.

    Place Publish Inventory Item Added and Bind Inventory Item Added. Their payload pins are the exact ST_InventoryItemAdded type.

02

Visual authoring

Blueprint workflow

Definition-backed K2 nodes give designers a familiar node workflow without sacrificing the event’s exact payload contract.

Publish

Select the definition on Publish Rekall Event, or choose the generated event-specific action. Set the exact payload fields and inspect the structured result for status, counts, and correlation.

Bind

Bind Rekall Event returns a subscription handle. Store it when you need explicit unbinding; owner destruction also removes the listener safely.

Wait

Wait for Rekall Event suspends execution until delivery, timeout, cancellation, or context loss and returns the typed payload plus context.

Retain

Query retained data directly or replay it through an existing handle. Rekall never coerces an incompatible struct into the expected payload.

Blueprint Struct
  → Rekall Event Definition
    → Rekall Event Catalog
      → Publish / Bind / Wait / Query / Replay
03

Native API

C++ workflow

The typed facade resolves a definition once, enforces the payload type, and keeps the routing implementation out of gameplay code.

USTRUCT(BlueprintType)
struct FInventoryItemAdded
{
    GENERATED_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Inventory")
    TObjectPtr<UObject> Item = nullptr;

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Inventory")
    int32 Quantity = 0;
};

TRekallEvent<FInventoryItemAdded> Event =
    Rekall::Events::Resolve<FInventoryItemAdded>(World, EventTag);

FRekallScopedSubscription Subscription = Event.Subscribe(
    Owner,
    [](const FInventoryItemAdded& Payload,
       const FRekallEventContext& Context)
    {
        // Exact payload. Read-only delivery context.
    });

Event.Publish(FInventoryItemAdded{ Item, 1 });

The scoped subscription is move-only and removes its handle on reset or destruction. UObject owners are weak. Off-thread ordinary API calls reject without touching UObject state; certified POD events can use the dedicated bounded worker handoff.

04

Core runtime

Routing and scheduling

ConcernChoicesUse it for
ScopeWorld · Game Instance · Local Player · Directed · AudienceChoose the eligible in-process listener set
DeliveryImmediate · Next Tick · Tick PhaseInline reactions or deterministic deferred work
Tick phasePre Physics · Post Physics · End FrameOrdering against engine simulation
Recipient selectionAll · Target owner · Local player · Tag queryNarrow Directed, Local Player, or Audience delivery
PrioritySigned integerStable higher-priority-first scheduling

Event definitions own defaults. Publication options override scope, delivery mode, tick phase, or priority only when their corresponding override flag is set. Selectors and parent correlation remain publication-owned.

05

Stateful signals

Retention and replay

None

Deliver and forget. Use for transient actions such as effects, audio cues, and momentary reactions.

Latest

Keep the newest accepted envelope for a scope key. New systems can query the current state explicitly.

Latest per audience

Keep one value per audience identity or query key for segmented state and late-join behavior.

06

Transport

Secure networking

The Network module transports approved Core events. It never turns a client-supplied tag into trusted authority.

01

Standalone

Bypasses RPC transport, validates the live definition and payload, then publishes through the local World router.

02

Listen Server

Uses the same coordinator and owned endpoint rules while the host also has a local player.

03

Dedicated Server

Runs authoritative definition, policy, direction, schema, rate, byte, recipient, and late-join decisions without a local player.

Admission sequence

  1. Resolve the registered player-owned endpoint.
  2. Resolve the live Core definition on authority.
  3. Validate route direction and Network policy.
  4. Validate payload schema and configured readiness.
  5. Consume rate and byte budgets.
  6. Publish locally or fan out to Owner, Audience, or All.
07

Orchestration

Flow runtime

Flow Assets compile authored graphs into immutable plans. Invalid types, missing extensions, unreachable nodes, unbounded cycles, and authority mismatches fail validation before runtime.

Control

Branch, Gate, bounded Repeat, Subflow, Parallel, Race, End, and Cancel.

Time & events

Delay, Wait with timeout, Publish, and event-driven resume.

State & extension

Typed variables, Set Variable, registered Actions, registered Conditions, and weak extension owners.

Project Settings > Game > Rekall Flow caps active instances, runtime bytes, World steps per frame, and terminal history. Each instance cleans subscriptions, timers, child flows, and extension handles on every terminal path.

08

Observe

Insights and tracing

Register an event trace sink or enable the RekallEvents Unreal Trace channel. The optional Insights module merges Core stages, network hops and authorization outcomes, and Flow transitions into a bounded timeline.

  • Attempt sequence follows one logical publication across worker handoff and router stages.
  • Delivery sequence is router-local and preserves dispatch ordering.
  • Correlation and parent correlation connect nested publications.
  • Payload capture requires definition permission, Full policy, sampling, and consumer interest.
  • Payload text is bounded and sanitized; raw reflected values are never retained by the trace record.
09

Ship

Packaging

The installed customer package contains exactly five customer modules:

RekallEventsCoreRekallEventsNetworkRekallEventsFlowRekallEventsEditorRekallEventsInsights

Core does not depend on Network, Flow, Insights, Slate, BlueprintGraph, KismetCompiler, or UnrealEd. Network and Flow depend one-way on Core. Editor and Insights are available for authoring and diagnostics, but they do not enter packaged Game, Client, or Server runtime receipts. Tests, QA tags, and docs-test modules are not delivered.

10

Troubleshoot

Support checklist

  1. Confirm the definition asset is saved and belongs to the configured catalog.
  2. Confirm the payload is the exact struct declared by the definition.
  3. Inspect the structured result’s status and diagnostic code.
  4. Check the event’s effective scope, delivery defaults, selectors, and authority.
  5. Enable Rekall Insights or the trace channel for correlation-level evidence.
  6. For packaged builds, confirm Core plus any intentionally used Network/Flow modules are enabled.

Rekall Global Events 1.0.0 has passed clean-project qualification on UE 5.8 and Win64. Legal Publisher: Rekall Software Solutions / Marius Myburg. Final Marketplace support URLs, license selection, and account verification are completed during submission.