Core Systems: Save, Load & Multiplayer
Now that your project is fully integrated, it’s time to look at the backbone of this system: saving game state and managing multiplayer sessions.
Ultimate Menu System includes a modular Save & Load system for single-player games and a lightweight, expandable Host/Find Game system for multiplayer setups. You can use them as-is or customize them to match your game’s logic.
Save & Load System
The built-in save system gives you full control over game persistence without writing a single line of C++. It’s perfect for games that require:
• Player-named save slots
• Unlimited saves per player
• Quick access from any menu panel
Here’s how it works:
1. The system uses a custom SaveGame class, already included in the plugin.
2. Every save slot stores player data, slot name, and timestamp.
3. Slots are managed dynamically — so there’s no limit unless you add one.
4. When saving, the system calls a function in GameInstance to collect current state.
5. You can easily expand this by storing variables like inventory, level name, player stats, or anything you want.
To customize it:
• Open the SaveGame Blueprint and add new variables.
• Update the Save/Load logic inside the GameInstance (you’ll find events already in place).
• Hook into the save buttons in the UI — just look at the existing widget as a reference.
Multiplayer Session System
Out of the box, the system supports:
• Host Game
• Find Games
• Join Sessions
This is designed to be simple and clean — perfect for LAN or listen-server use cases.
Here’s how it works:
1. The main menu has a Host Game button that creates a new session via GameInstance.
2. The Find Game button searches for available sessions and displays them in a panel.
3. You can join a session directly by selecting it from the list.
Important Notes:
• All session logic is Owning Client-safe
• This system can be extended for Steam or EOS
• The current version uses native Create Session, Find Sessions, and Join Session Blueprint nodes
To expand it further:
• Add filters or custom session names
• Hook into online subsystems like EOS or Steam
• Handle session lifecycle (on disconnect, return to main menu, etc.)
Where to Edit Logic
• Multiplayer logic lives in the GameInstance Blueprint
• Save/load slot behavior is inside the UI panels and the SaveGame Blueprint
• Session feedback (like join success/fail) can be routed through the request box system if needed
What’s Next?
At this point, your game can save progress and host sessions — great progress!
In the next page, we’ll explore how input and navigation are handled across devices, including how to use custom keybindings and how the menu system dynamically handles mouse, keyboard, and gamepad input.