Originally published at https://gamesindustry.biz, republishing here for more people to enjoy.
A fundamental but often overlooked feature of video games is tracking player progression. This ability to lay down the controller and pick up where you left off in the game in another time or place is an expected video game feature.
When we talk about storing player progress, we need to talk about everything that the game needs to remember about the player. This may include the last town the player has visited, the character level of the avatar, or how many enemies the player defeated (and should stay down).
And then there's the player statistics -- how many times you've swung your sword, how many headshots you did, how many times you defeated your all-powerful father in Hades, your best time, and so on.
With the implementation of various cloud save features approximately a decade ago, players were introduced to the comfort of having progress saved in the cloud, so you can pick it back up when you move from device to device.
However, with the recent trend of cross-platform gaming, there is no consistent way for games to implement cross-platform, or even cross-gen cloud save features.
Fans were delighted when they heard about Witcher 3 supporting cross-save, but it turned out to be pretty limited in nature -- Switch users are able to load and save their progress using Steam or GOG. Currently there are no plans to support other platforms, such as Xbox or PlayStation.
And what does that mean for cross-progression between sequel games such as Overwatch 2, with Blizzard promising that players would be able to carry all progress from Overwatch, in addition to cross-play between the two games?
In this article, we will go over the basics of platform cloud save, and how to design platform-agnostic capabilities for your game to track your players' progression across platforms, or even across different games within the same franchise.
Cloud save was introduced about a decade ago, popularized by Steam and Xbox Live -- it empowered players to play a game on one device, and continue it on a different one. Fast forward to today, most platforms now provide some level of cloud save -- whether it's free for all, or behind a premium membership (such as PSN and Nintendo Switch Online).
How does it work?
For most platforms, you would carry on to read and write local files using the APIs provided by the platform, and that platform will take care of uploading and doing timestamp validation on the files.
For example, this is the behavior for Steam cloud save: "The Steam Cloud provides an easy and transparent remote file storage system for your game. Files specified in the Auto-Cloud configuration or written to disk (created, modified, deleted, etc.) using the Cloud API will automatically be replicated to the Steam servers after the game exits.
"If the user changes computers, the files are automatically downloaded to the new computer prior to the game launching. The game can then access the files by reading them through the Cloud API or reading them directly from disk as usual. Avoid machine specific configurations such as video settings."
The benefit of Save game is that it is local files on the device, so it works best for offline single player games.
However, there are limitations with having client side save game:
- Security and tampering -- while you can roll out your own encryption mechanism, local save games are prone to client side tampering; which means you cannot really store important multiplayer data such as power level, ELO rating and premium currency in local save.
- Most (if not all) platforms handle cloud save per Title ID/App ID. That means that if you release a sequel to your game, that's considered to be a separate game, which means that it will have a separate Title ID/App ID. And since one game cannot query and manage the cloud save of another game, your two games will not be able to share game progressions.
To get around some of these limitations, a lot of games store player data on the game backend as well, in addition to the local save.
This ensures that certain player data (that only game servers have the ability to write to) will be secure -- such as ELO rating, to be used for fair matchmaking. The obvious drawback is players have to be online to retrieve the values.
A platform-agnostic way to store your player progression
Now that you are familiar with the basics of storing player data on the backend side, we can extend that to support cross-platform, cross-gen, or even cross-titles. The key is to build a platform-agnostic solution.
If you can identify your players, regardless of what platform or Device or even TitleID they are using, you can build mapping logic on your Backend to enable cross-progression. I discussed this in my 2020 GDC talk, which was covered on the GamesIndustry.biz Academy.
By using a technique called Account Linking, you can create a federated account on your backend to identify all players on your games, whether they are playing on Steam, PS4, PS5, Xbox One, Series X, Switch, and so on.
With that information, you can then decide whether you would want to segregate your Player Storage per platform, or if you opt to go with a more unified strategy.
This will also allow you to be creative to support cross-game promotion and progression for your games.
One way to achieve this is to segregate your data to store the player data that should be shared across multiple games in its own partition that multiple games have access to read and write to.
One word of advice: if you want to enable unified storage for the same players across multiple platforms or titles, you want to consider implementing SPOP (Single Point of Presence) for your backend system.
SPOP is when users can only be logged into their account on one device at a time, and logging into one will log out the other. This will ensure that all write and read operations are safe, and you are not dealing with non deterministic behavior of players manipulating their player state from different locations at the same time.
In summary, various platforms provide great quality-of-life cloud save features that games can utilize. As we are entering the cross-platform gaming era, you will discover that you will need some kind of platform agnostic cloud save system that lets you design how you store player progression, to get around the various platform limitations.