Concept: Supported Session Types
This save system is built for a co-op-shaped game: one authoritative machine running a world, and up to a handful of players in it. Single player, a listen server where the host plays, a dedicated server, and splitscreen on one machine all work with the same code and the same files. Nothing needs to be swapped out between them.
The one rule
The four shapes
| Session | Authoritative | Writes World | Writes each player's Player data | Notes |
|---|---|---|---|---|
| Single player / Standalone | The one machine | Yes | Yes (one player) | No net driver. Identity comes from the local profile store. |
| Listen server | The host | Yes | Yes, for the host and every client | The host is a server AND a player, so it does both jobs at once. |
| Dedicated server | The server | Yes | Yes, for every client | The server has no local player, so it never writes a Profile of its own. |
| Splitscreen / couch co-op | The one machine | Yes | Yes, one set per local player | Each local player gets its own profile id from the local store, keyed by controller id. |
What a client is allowed to write
Exactly one thing: its own Profile. A profile belongs to the machine it is on, so a client saving its own character writes nothing the host owns. Everything else - world state, and that player's progression inside the host's slot - is written by the authority, because that is the only machine that has the authoritative copy to write.
Testing each shape in PIE
The editor can reproduce three of the four directly. Test the shape you actually ship - a bug that only appears once a second player connects will not show up in Play Standalone.
| PIE mode | Reproduces | Worth checking |
|---|---|---|
| Play Standalone | Single player | One profile id, reused on every relaunch. |
| Play as Listen Server | Listen server | Host and client get different profile ids and separate Player folders. |
| Play as Client | Dedicated server | The client's data lands under its own profile id, not the server's. |
| Number of Players > 1, no net mode | Splitscreen | One profile id per local player index. |
See also
- Concept: Multiplayer & Save Scopes - what each scope means and how identity is resolved
- Concept: Where Saves Are Stored - the on-disk layout for each scope
- How-To: Turnkey Save Setup with CrimsonCore - the wiring already done for you