Concept: Multiplayer & Authority
The interact-ability shape from the Quick Start is LocalPredicted and instanced per actor: scan and input run on the owning client while authority-only work stays on the server.
| Concern | Where it runs |
|---|---|
| Scanning / option detection | Owning client (drives the local prompt). Gate the scan-task spawn on IsLocallyControlled() so dedicated servers do not trace every tick. |
| Granting option abilities | Server only - GrantNearbyInteraction early-outs unless IsOwnerActorAuthoritative(), and revokes grants for interactables that leave range. Gate its spawn on IsNetAuthority(). |
| Firing the interaction | Through GAS - TriggerInteractionOption triggers by replicated handle, so the granted/target ability runs with normal GAS prediction and server authority. |
| Handler side effects | A LocalPredicted handler runs on owning client and server - guard authoritative mutations (loot, doors) with HasAuthority(). |
| Progress display | Local - broadcast via the message bus and filtered on Instigator == local pawn. |
AI and non-controlled avatars
The scan tasks' aim helpers tolerate a missing
PlayerController (AI, server-driven, or non-locally-controlled avatars) instead of asserting, so a listen-server host running multiple pawns will not crash.