Skip to main content

Crowdy State Metadata Keys

This page lists the metadata you place on a property to control Crowdy State property replication. For the full guide, see Crowdy State.

In C++ the keys go on the UPROPERTY(meta=(...)) line. In Blueprint they are set from the variable's Details panel through the Crowdy Replication dropdown, not typed by hand.

UPROPERTY(meta = (CrowdyState,
CrowdyOnRep = "OnRep_Stance",
CrowdyOwnerOnly,
CrowdyManualDirty,
CrowdyHeartbeat))
uint8 Stance = 0;

UFUNCTION()
void OnRep_Stance();

Keys

KeyBlueprint controlValueDefaultNotes
CrowdyStateReplicated (the mode)(marker, no value)requiredMarks the property for Crowdy State. The other four keys do nothing without it.
CrowdyOnRepRepNotifya parameterless notify function namenoneRun on the receiver right after the value is written, and only when the value actually changed. GAS-style: no arguments, no previous value. Read the new value off the property.
CrowdyOwnerOnlyOnly send to owner(marker, no value)offDelivery scope. The property ships only to the entity's owning client, never on the spatial broadcast. This changes who receives the value, not who could intercept it; it is not secrecy.
CrowdyManualDirtyUpdate manually(marker, no value)offSkip the automatic per-tick diff. The value ships only when you call MarkStateDirty. One mark sends exactly the next update, then clears.
CrowdyHeartbeatHeartbeat(marker, no value)off in C++; on when you first pick Replicated in BlueprintInclude this property in the periodic keyframe baseline so a late-relevant peer gets its current value. On-change replication is unaffected either way: a changed property always ships, marked or not.
note

CrowdyOwnerOnly, CrowdyManualDirty, and CrowdyHeartbeat are presence markers. You add the bare key to turn each on; they take no value. The code tests only whether the key is present, so do not write = true -- and = false would still count as on. CrowdyOnRep is the one key that takes a value, the notify function's name.

note

In C++ a property never heartbeats unless you add CrowdyHeartbeat explicitly. The Blueprint dropdown pre-checks Heartbeat the first time a variable enters Replicated mode as a convenience, but the mechanism is the same opt-in metadata.

What can be marked

Crowdy State covers plain values and plain structs: numbers, bools, enums, FName, FString, and USTRUCTs built from those. Object references, containers (TArray, TSet, TMap, including buried inside a struct), and static arrays are rejected at discovery and simply do not replicate. See Unsupported types for the full list and the reasons.

A struct type that carries a native net serializer (FVector_NetQuantize, FRotator, and the rest of the _NetQuantize family) quantizes on the wire automatically, with no key to set. See type-driven quantization.

See Crowdy State for owner diffing, host precedence, world entities, and the keyframe baseline.