Suggestion for where to store save games

Standards are a lovely thing, but hard to achieve, it depends on one thing, everyone actually using it, otherwise it’s just a rule no one cares about.

There is one thing that is very common to see in the “game sphere”:
Where are [X] save games located?

There are a couple of common directories used but I think as game developers we could do a bit better and using a common location.

Some games create a folder on My Documents:
my_documents

This is a bit messy, you have your games mixed with other software, if you have 5-10 games it’s hard to manage since it gets in the way of your work files.

Other games save them on obscure locations like

C:\Users\[USER]\AppData\Game

that can lead to lost save files as some cleaning software might erase them, also it’s hard to find. And lately I’ve been noticing that some Steam games store them directly on the Game Directory itself, that’s not very intuitive as well.

Windows introduced a system folder some time ago called “Saved Games”

C:\Users\David\Saved Games

windows_save_games_folder

But from my research it’s not very used, I think one of the reasons is that older Windows versions didn’t had them, like Windows XP and it wasn’t very adopted. I also noticed some games creating their own versions of “common” folders inside Documents, like “SaveGames” or “SavedGames”.

What can we do?

I did noticed that more devs are using a solution that I personally like, and I adopted it for my last game.

So my suggestion for all game developers for a save game directory is

[User Documents Folder]\My Games\[Game]\

For example

C:\Users\David\Documents\My Games\AwesomeGame\

Here’s that folder on my computer right now
common_save_game_folder

As you can see some developers already use it, from indie developers to AAA studios.
This way, everything is inside your Documents, the user can easily access, backup, restore, everything is inside that folder.
Even if a studio were to create a folder for its own brand, that would be ok too.

C:\Users\David\Documents\My Games\CAPCOM\
C:\Users\David\Documents\My Games\CAPCOM\Resident Evil
C:\Users\David\Documents\My Games\CAPCOM\Resident Evil 2

How can you get the current user documents location you ask?

CHAR my_documents[MAX_PATH];
HRESULT result = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, my_documents);
if (result != S_OK)
{
     //Handle no save permissions
}
else
{
     //Append \My Games\[Your Game] to my_documents and there's your final save location
}

So my vote is for this solution.
What do you think?

Leave a Reply