CrimsonSaveSystem · Lesson 5 of 8

Multiplayer Login Hooks

Intermediate4 minMultiplayer

Before you start

  • Completed: Save & Load
Video coming soon

Chapters

1. Wire the GameMode

In your GameMode: on PostLogin call NotifyPlayerLoggedIn(NewPlayer), and in Logout call NotifyPlayerLoggedOut(Exiting)before calling Super::Logout, while the controller and its player objects are still valid.

PostLogin → Notify Player Logged In; Logout → Notify Player Logged Out, then Super.

2. Player-scoped fragments

A system that saves per player (progression, loadout) overrides GetPlayerSaveKey and returns UCrimsonSavePlayerIdentity::ResolvePlayerSaveKey(PC) — a stable key from the player's UniqueNetId (with PIE and offline fallbacks). The manager then writes one fragment per player: FragmentName__PlayerKey.sav.

A player-scoped system resolving its save key from the player identity helper.
No double underscores
__ delimits the player key in fragment filenames — fragment, level, and player names must not contain it.
SaveGame is not Replicated
A restore happens on the server. If a property is SaveGame but not Replicated, clients keep their stale value — correct on the listen host, wrong everywhere else. Persistent and visible state needs both flags.