Multiplayer
In a networked game, the server chooses the experience, and every client runs the same one. That works in standalone, listen-server and dedicated-server games without any setup.
How clients follow
- The machine with authority (a standalone game, a listen server or a dedicated server) sets the experience, at startup or with Set Experience By Tag.
- Gantry publishes the decision on the GameState, through a Gantry Experience State Component it adds itself. A game that prefers to declare the component on its GameState class can; Gantry uses the one it finds.
- Each client receives the decision, works out the same activation chain from its own installed content, checks that it matches the server's, and runs the stages itself.
Players who join late receive the current decision with the GameState. Clients never choose: on a client, Set Experience By Tag is refused with a warning.
Every machine reaches Ready on its own; the server does not wait for clients. On a client, Wait For Experience Ready fires once the server's experience is running there.
Which stages run where
Each stage has Net Execution:
| Net Execution | Runs on | Right for |
|---|---|---|
| Everywhere | Every machine | Loading content, activating game features. |
| Server Only | Standalone, listen server, dedicated server | Game state: spawning, rules, scoring. |
| Client Only | Standalone, listen server, clients | What players see and use: UI, input, settings. |
A standalone game and a listen server are both server and client, so they run every stage. The split matters on a dedicated server, which has no players to show anything to, and on clients, which have no authority over game state. Gantry's player-facing stages (Add Input Mappings, Add Settings Pages, Add UI Extensions) default to Client Only.
When content differs
A client whose content resolves a different chain from the server's, because it lacks a DLC pack
or a mod, has an older version of one, or is missing an optional dependency, does not run a
different experience. It fails the activation, and the reason names both chains. The example
project shows this on a "Can't play this round" screen (WBP_YR_Mismatch). Every machine needs
the same content: the same DLC packs, and the same mods if the game takes them.
Two other things stay on each machine: messages are never replicated, and each player's settings are their own.