33
\$\begingroup\$

My documents folder is flooded with subfolders of various games, including those of some very recent AAA titles. As a professional application developer with no experience in the gaming industry this is just plain wrong, these files belong into %APPDATA% or %LOCALAPDATA%.

My question is, is there a conscious decision to put these files in %UserProfile%\Documents to gain some specific benefits, or is this just legacy behavior that carried over from the days of Windows XP? Or is there an even better reason like, e.g. Steam requiring or recommending this, or a popular engine doing this by default?

Related: In which directory to write game save files/data? (to avoid pointless discussions)

\$\endgroup\$
  • 2
    \$\begingroup\$ See also Legitimate use of the Windows “Documents” folder in programs \$\endgroup\$ – RomanSt Sep 12 '15 at 19:05
  • 4
    \$\begingroup\$ @Loren No, a save game is an application specific file/data = APPDATA. User documents are documents saved consciously by the user. That's how these places are defined. \$\endgroup\$ – Peter Sep 12 '15 at 22:21
  • 1
    \$\begingroup\$ One could argue this either way. I would expect to find saves in documents, configuration in AppData. \$\endgroup\$ – Loren Pechtel Sep 12 '15 at 22:22
  • 2
    \$\begingroup\$ How are campaigns in a game not "documents saved consciously"? And how are Photoshop documents (PSD) not "application specific"? \$\endgroup\$ – Damian Yerrick Sep 13 '15 at 3:24
  • 4
    \$\begingroup\$ This has peeved me for a long time. The Documents folder is a poor place to automatically put files whether it's a suitable location for them or not. The 'My Documents' folder should be reserved for MY documents that I have explicitly chosen to put there, so I can keep track of my own personal stuff. Not pieces of data related to half the software on my system. What an ungodly mess! I don't even use the Documents folder anymore. I use my own, on a separate drive then I have that directory in my Documents library and have the default removed. \$\endgroup\$ – Fuzzy Logic Sep 14 '15 at 2:26
35
\$\begingroup\$

No, not really.

Game developers have not traditionally been great at respecting the conventions established by an operating system. Although to be fair, lots of regular application developers don't either.

The %AppData% and documents folders are for saving per-user data. The difference between them, for the purposes of this question, is primarily that %AppData% is where stuff the user should not need to see or interact with goes, and the documents folder is for the user's documents: stuff they'd want to see and interact with.

Games will sometimes store their settings and save files in the documents folder because it makes them visible, so less technical users will see them and be reassured that they do exist, or will be more likely to correctly back them up if their backup method is a crude, "copy the stuff in my user folder to another drive."

Games will also sometimes store files there because they haven't changed the behavior of the relevant code from older OS versions, as you suspect, or simply because they don't care to think about the problem that much.

It's silly and usually wrong, but it is what it is.

\$\endgroup\$
  • 2
    \$\begingroup\$ Another advantage is that users can install worlds, texture packs, etc. without having to dig in %APPDATA%. \$\endgroup\$ – Bardi Harborow Sep 12 '15 at 16:24
  • 14
    \$\begingroup\$ I remember SPORE saving its data to my documents folder instead of the %appdata% back when I got it. When I looked into its folder, my creatures were all saved as png images, that was quite amazing, and I think it was put on the documents folder on purpose, so people could easily share and download more creatures and vehicles. With that said, I have no idea why games that only use a crude save.dat decide to put their stuff there. \$\endgroup\$ – Gustavo Maciel Sep 12 '15 at 18:11
  • \$\begingroup\$ There's a good writeup somewhere about how Spore pulled at off, wish I could find it. \$\endgroup\$ – TankorSmash Sep 13 '15 at 1:36
  • 2
    \$\begingroup\$ Somebody asked about it on this site here; one of the answers references a write-up you might be thinking of (which is located here ). \$\endgroup\$ – Josh Sep 13 '15 at 2:33
  • 6
    \$\begingroup\$ Theoretically, the best course of action on Vista or newer is to use SHGetKnownFolderPath(FOLDERID_SavedGames, 0, NULL, &path) which by default is %UserProfile%\Saved Games. That way the user can find and backup their saved game data easily, but it won't get in the way. Any data other than progress and/or configuration (eg. compiled shaders, platform-optimized or downloaded assets, etc) should go in appdata. \$\endgroup\$ – bcrist Sep 13 '15 at 9:52
18
\$\begingroup\$

Looking at my disk, I have

  • 1 game that saves savegames in %APPDATA%
  • 1 game that saves savegames in %LOCALAPPDATA%
  • 2 games that save "other stuff" in %APPDATA%
  • 3 games that save "other stuff" in %LOCALAPPDATA%
  • 2 games that save savegames in %UserProfile%\Saved Games
  • 21 Games that save savegames and loads of other stuff in %UserProfile%\Documents, not counting...
  • 15 Games that save savegames and loads of other stuff in %UserProfile%\Documents\My Games

That's a ratio of 1:9 for savegames being stored in %APPDATA%, %LOCALAPPDATA%, %UserProfile%\Saved Games versus %UserProfile%\Documents\*. In my sample, all 4 games that don't put savegames in %UserProfile%\Documents\ or %UserProfile%\Documents\My Games\ are from tiny studios. So I have to assume the big studios with multi-million development costs have a reason for putting all their files - including temp files - in %UserProfile%\Documents\*.

While legacy behavior can explain some of this, I don't think it is a strong enough reason to account for every major studio putting their files in the wrong place. So there has to be better reason.

The best reason I can think of is to reduce cost of customer support. The problem is that %APPDATA% and %LOCALAPPDATA% are hidden directories, and nobody seems to know about %UserProfile%\Saved Games. Placing the files in Documents, studios can save money on support calls that ask how to backup savegames, or how to migrate the savegames from one machine to another. Examples of users who couldn't find savegames because they were located in %APPDATA% here, here, here, and here.

Another reason might be because users ask for it, as happens in this example.

\$\endgroup\$
  • 1
    \$\begingroup\$ Just to add another data point (and because I was curious) the counts for my PC are 19, 10, 10, 17, 6, 45 and 31. There are also 50 games with save games and/or other data in steam\userdata and 5 games with saves/data in %ProgramData%. This doesn't count any games that keep all this stuff in their install directory or have managed to find some other place to store data or saves. \$\endgroup\$ – Ross Ridge Sep 14 '15 at 18:24
  • \$\begingroup\$ @RossRidge Thanks, that's useful. In your sample, do you see any tendency regarding indie games vs big studio games? \$\endgroup\$ – Peter Sep 14 '15 at 19:49
  • \$\begingroup\$ It seems more likely for indie games to be in one first four categories, if only because that's where their runtime environment puts stuff (eg. Flash). \$\endgroup\$ – Ross Ridge Sep 14 '15 at 20:04
4
\$\begingroup\$

I don't care to recall the number of games I've had to start over after a backup/restore or similar thing because I moved all my important files from my documents, but totally forgot about user application data such as save files because it's often in with the program files or other weird places (like in a hidden folder such as appdata).

Personally for this reason I like having it in my documents, although I'm sure someone will tell me to just get a proper backup system instead of doing it manually.

A little consistency would be nice, and even nicer would be for services like Steam to keep copies of save files on a network somewhere.

\$\endgroup\$
  • 1
    \$\begingroup\$ Steam has had cloud storage since 2009. It does require developers to choose to use it however, and it only works if the user has it enabled. Most newer games now support it, but a lot of older ones still don't. \$\endgroup\$ – bcrist Sep 14 '15 at 7:00
  • \$\begingroup\$ I'll use any excuse to tell people they need to be making backups, and I like consistency too, but the application data directory is not a 'weird place' to store application data, the documents folder is. Storing files where they don't belong makes it much harder for me to manage my backups. \$\endgroup\$ – Marcks Thomas Sep 14 '15 at 20:40
0
\$\begingroup\$

From my own personal experience, I chose to save into %UserProfile% because the user always had read/write/modify access to it without having to change any of the permissions.

This was not true with %APPDATA%. Particularly when using Restricted user accounts, you often don't have write access to files created by other accounts inside %APPDATA%. I imagine the AAA titles made the choice for the same reason as us; we didn't want the headache.

\$\endgroup\$
  • 3
    \$\begingroup\$ I'm pretty sure you're getting APPDATA (C:\Users\Username\AppData) which is user-writable, mixed up with PROGRAMDATA (C:\ProgramData) which often isn't user-writable. windows.microsoft.com/en-us/windows-8/what-appdata-folder \$\endgroup\$ – Patrick M Sep 14 '15 at 5:05
  • 1
    \$\begingroup\$ The whole point of %APPDATA% is that it's user-writeable. It's specifically there because C:\Program Files isn't user writeable. \$\endgroup\$ – Bardi Harborow Sep 14 '15 at 18:41
  • \$\begingroup\$ @PatrickM You're right, I was talking about ProgramData. Sorry. What's the best way to get the answer deleted? \$\endgroup\$ – David May 16 '16 at 21:01
0
\$\begingroup\$

From my personal perspective as a user, I primarily distinguish between data I want backups of and data where I don't care about it.

Creating incremental backups of %LOCALAPPDATA% is a mess, because it will clutter the backup with tens of thousands of temporary files, many of which are locked by background services. This makes backups slow (high overhead from many small files), and unnecessarily big (frequently changing temporary files sabotage the "incremental" part). Preventing this requires manually maintaining an exclusion list.

%APPDATA% is slightly better, as it isn't supposed to contain temporary files such as caches - sadly it does anyway, and a lot of the program settings really don't warrant a backup.

Ultimately, save games are a type of data I want to interact with as a user, and the %UserProfile%\AppData doesn't lend itself to that.

\$\endgroup\$
-3
\$\begingroup\$

Why not use /"game installation folder"/savegame/ as did older games ? I never understood why put savegames in hidden folder or even in my documents on system drive ?

In the old days you always knew where savegames were.

\$\endgroup\$
  • 3
    \$\begingroup\$ This folder is write protected. You'd have to start your game as an admisnistrator. This is annoying, and not available to all users (a parent wanting to protect their computer from their children installing whatever, for instance). \$\endgroup\$ – Alexandre Vaillancourt Oct 5 '18 at 15:28
  • 1
    \$\begingroup\$ "game installation folder" is %ProgramFiles%\<gamename>. %ProgramFiles% is meant to be modified only during installation/deinstallation of programs. Since Windows XP/Vista applications writing to that directory need to be run as administrator, to make it harder for say, a virus to replace word.exe with an infected version of word.exe. Another reason is that Microsoft wanted multiple users to be able to use the same programs without having to share their personal files, in this case savegames. There are other/better ways to address these issues, but they were not chosen at the time. \$\endgroup\$ – Peter Oct 6 '18 at 10:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.