Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
If you google for "windows where to store save games programmer" (without quotes)
the first two hits are for
https://www.gamedev.net/forums/topic/665801-what-are-the-recommended-places-to-store-save-data/ and
https://gamedev.stackexchange.com/questions/35700/in-which-directory-to-write-game-save-files-data
which suggest the %appdata% (and AppData\Roaming) folder.
(and, actually, %appdata% is a shortcut for AppData\Roaming).
Until recently Factorio has also supported Windows XP, which has an %appdata% folder (although it's called Application Data) but no FOLDERID_SavedGames folder. Therefore one reason the folder is in its current location is legacy.
In fact, every Factorio version (even when going back 4 years) has used that folder, and there are many resources out there (official forum, other forums, reddit posts, the wiki, third party sites, even youtube videos) which will tell you that the savegame folder is in %appdata%\Factorio.
Changing the folder location now would give no benefit, instead it will confuse players even more.
You also mention that your proposed folder is for savegames. Where should the config file, player credentials and mods be stored, since they are currently in the same folder? (Also, how would it work on different OS since both Linux and OSX also only use one folder.)
As for relocating that folder, go to <UserName>\AppData, right-click on Roaming, choose Properties, select the Location tab and enter the new destination folder.
If you seriously want the devs to change the folder, please make a post on the Ideas and Suggestions[forums.factorio.com] subforum of the official forums. Your argumentation is not that bad, but you should also address the points I made above.
EDIT: (I'm just curious) can you provide a source for your quote?
First off: thanks for the quick response.
Secondly; I'm willing to address those points, but at the risk of being a bit blunt: I'm not willing to jump the hoops of creating yet another account on yet another forum for it. I have enough accounts to juggle as is.
You're selling Factorio via Steam; you have a Steam Community presence and you've set up an actual Ideas & Suggestions section on its boards. So having that type of discussion here should be fine as well, no?
So; without further ado...
There's an equal amount of responses in those threads which state that they actually prefer the Documents folder, for its greater visibility and ease of taking backups. AppData is a hidden folder and most users treat it as a 'system' folder because of that. Actually; with good reason since most apps do treat it like that as well; violently breaking if the files they store there are messed with in wrong ways, rather than reverting to sane defaults.
Should I have time to burn I would probably be able to dig up threads that are solidly anti-AppData and pro-Documents, but since what you posted is already at a 50-50 split -- and honestly; I'd rather burn that time playing the game itself ;-) --, I'll let that be.
XP compatibility is why I mentioned the Documents folder.
And while I appreciate that switching over for existing users might be troublesome, I also believe that just because you did something wrong in the past does not mean you have to keep doing it wrong for the sake of not upsetting the status quo.
Windows itself has a ton of folder redirection cruft stacked layer on layer to handle bad programs continuing to do bad things with the OS 'special folders'; but they're kind of a special case as they have to deal with software that is long passed its active support term but is still in use.
However, in recent years even Microsoft has said enough is enough and if some of the old and obnoxious stuff breaks; then it breaks. Maybe there's some food for thought there?
As for giving no benefit; I already listed a few. Better visibility to end-users. Easier to move off-disk for users with limited SSD space. Easier to include in backup schemes -- Actually; the documents and saved games folders are both included by default in the backup tooling that's part of Windows itself, iirc -- and in cloud-syncing schemes. Etc.
There's anecdotal evidence of users losing save games because they were stored in AppData as well. One relatively well-known is Scott Hanselman blogging about almost losing Minecraft worlds that way[www.hanselman.com]. And this is an actual tech-savvy person. Imagine what the response of a normal user would be.
Iirc this is new -- added with Windows 8[technet.microsoft.com] -- and thus not supported in all current Windows versions.
Also; moving AppData or following the advice in the wiki to create a symlink is a bad idea in general. While it's possible and many tools and OS features do work correctly with it, several Microsoft articles continue to advise against it, because it may break user-profile migration and thus may leave your user account broken when an OS feature upgrade happens. (E.g. upgrading the major Windows version; installing 8.1 from a base 8.0; or performing any of the milestone updates for Windows 10.)
Right here:
The same page also mentions that:
I recall a discussion that one of the arguments for using the AppData/Roaming folder over the Documents folder was that it would automatically sync if you're logged into Windows with a LiveID. It won't if the files are hard-coded to not roam.
There's some other things to consider here as well, which you can learn from Microsoft's documentation on roaming application data.
Firstly, roaming is only enabled for users logged in to Windows with a LiveID or those users that are logged onto a domain with Active Directory, which makes it a poor backup or continue-elsewhere mechanism for home users that are not interested in having a LiveID and that just log into Windows with local accounts. (I imagine a lot of people actually do this.) Also; syncing with a LiveID is only possible in Windows 10, iirc. Not in 7 or 8.
Secondly, roaming has stringent quotas. This is why you should aim to keep what you store in AppData limited to configuration ( fairly static pre-determined small file sizes) and one or two work-in-progress auto-saved files (for resuming work-in-progress on other synced devices) but no more. I.e. a few gigs worth of piled up save games is definitely not OK.
Quota is also not per-app, but is global. If your app stores gigs worth of data in the roaming folder, it will flood the available space and leave none for other apps. If you have users with roaming enabled, they'd surely be silently cursing you for doing so while they go in and manually clean out their folder.
Also, I've skipped over one part of your post before. Going to answer that one here as it makes for a good closing section to my post, being a bit of a todo-list / proposed solution.
Savegames should go into FOLDERID_SavedGames, i.e. , Users\<<User>>\SavedGames by default, or into FOLDERID_Documents, i.e. , Users\<<User>>\Documents by default. In case of the former they should go into a subfolder .\Factorio. In case of the latter nest it inside one of the generic saved games folders proposed earlier, e.g. , .\My Games\Factorio or .\SavedGames\Factorio.
Mods should typically go there as well. Even though they're not actually saves, they're linked intrinsically to them. Moreover, some may be too big to fit the "small data file" criterium for AppData.
System-dependent configuration values such as graphics related options should go in FOLDERID_LocalAppData, i.e., Users\<<User>>\AppData\Local by default.
Non-system dependent configuration values such as key binding configuration, volume settings, etc. should go in FOLDERID_RoamingAppData, i.e., Users\<<User>>\AppData\Roaming by default.
Credentials (login credentials?) ideally would go in a protected and tamper-proof location such as Isolated Storage. Failing that, you should see to it yourself that they're properly encrypted / hashed and then store them inside FOLDERID_LocalAppData. It's good to be security-conscious and not roam sensitive material automatically without user intervention.
As for how this would work on different OSes; specifically *nix/BSD which use only one folder:
create a platform-specific abstraction layer in the game's own code that follows the Windows conventions of split folders for the various types of files. Make the *nix/BSD platforms the exception and point them all to the same folder under-the-hood.
You assume that since I'm a moderator on this forum (and answered your questions) I'm a developer, however I'm not. I'm just an ordinary guy who finds joy by voluntarily helping other people, and since Factorio is a game where you can invest a lot of hours in I chose to help out with the Steam discussions.
I can not speak for the developers, in fact I actually opposed them on several issues in the past. However the answers I gave you closely represent the answers an actual developer would give you, in fact I wager that if you reposted it on the official forums you'd get the same answers.
I know that making a new account for anything is tiring and you'll only use it once, however there has been an "Ideas and Suggestions" section on the official forums for a long time, and after the Steam release (Feb 2016) it was quickly clear that there has to be a subforum for Ideas and Suggestions (this one) on the Steam discusslion page. But since most of the ideas here are the same (and have been repeatedly suggested on the official forums) this subforum is not frequented by actual Factorio developers. That's why I mentioned the official forums, where the actual developers will read your proposal.
Since i'm only a volunteer, and because you wrote a really, really long post, I'm going to address just a few issues.
Folder direction (as mentioned in your link) is a new feature in Win 8, however just changing the directory of %appdata% is a feature of Windows 7, with and without SP1. (I actually tried this on Win7SP1, otherwise I wouldn't have mentioned it.)
Better visibility to end-users? Just enter %appdata%\Factorio into the run dialog (Win+R) and you are done. Actually, I tried to find the FOLDERID_SavedGames folder on my PC since it's in "%USERPROFILE%\Saved Games", however the only way to reach it is by entering that location in a cmd/Run window, I can't enter it using the Windows Explorer (which has invisible files enabled). FOLDERID_SavedGames is located next to the Documents folder, so it won't get backed up by defaut unless the backuo software supports it. Appdata however, which also isn't in Documents, is older and more known and more software will include it.
As for Roaming / Windows LiveID: go to your Factorio folder (be it Steam or website version) and open config-path.cfg. Line 7-9 will tell you that the creator of Factorio (kovarex) intended to have the game played from a single directory, also storing the save data in the same directory.
The thing is, Factorio uses the Steam cloud feature, and it just copies directories on one machine to directories on another machine, it is OS-independent. Factorio actually works on both Linux and Windows interchangeably with cloud-sync enabled, but if you would split the folder on Windows then Steam couldn't sync it, since Steam doesn't support 1 <-> n folder mappings.
TL;DR don't argue with me (or on here in general), since i/we don't have the power to change it.
(although I'm still up for any discussion on where new games should store their files)
First thing that pops into my head: urgh.. what a pain.
I understand their position, but this is the very reason that makes most consumers hate dealing with triple-A publishers and developers. They don't monitor Steam community or engage with Steam consumers.
Given its long trackrecord of excellent communication with its players, I'd hoped Factorio's developers would atleast have gotten that part right. That's ... well; a letdown, to be honest. :-(
The crux of the problem is that Microsoft still advises against it, since it may affect the ability to migrate your user-profile correctly when performing feature updates to Windows. And there are plenty of feature updates now, with Windows 10. (Each milestone update installs as a feature update; i.e. an upgrade-install to a newer version of Windows.)
Also, there are sadly still lots of badly written applications aplenty that assume AppData to be at the default location and break if it's not. That includes lots of games which store temporary files in AppData and access it in the wrong way, e.g. directly via %userprofile%\AppData.
Windows has a native way to include a link to the special system-folder view of the logged in userprofile's home folder on the desktop. It's under Personalization > Themes > Desktop Icon Settings. Tick the box for "User's files" to add it.
Alternatively, open it directly via Explorer by entering your username into its address bar. You'll get the special system-folder view for your user profile, which merges the locations of all the special userprofile sub-folders into that one view, even if they're on separate disks. That includes Saved Games and others.
One-time set-up and very easily discovered afterwards.
In Windows 10, don't use the method of adding the user's "Personal folder" to the Start Menu. Whoever on MS's staff programmed that particular feature wasn't having his best day and linked it directly to the 'dumb' normal file folder view, which doesn't perform the source-aggregation magic that the system-folder view gives.
(Using the dumb file folder view would indeed result in lots of 'missing' folders if you've moved some off of the system disk...)
This will sound harsh; but there's no excuse for that kind of stupidity. *nix/BSD systems have never worked that way and Windows systems haven't worked that way since Windows XP.
Factorio is actively using [1..n] folder mappings. It's syncing the config.ini and player-data.json files which are located directly in the userdata/<<game-id>>/remote folder and it's syncing savegame zip files located in AppData/Roaming.
The remotecache.vdf file that resides in the Steam userdata folder and which drives Steam Cloud syncs, can specify different types of root per synced file. E.g. root=0 is the remote folder inside Steam's own userdata folder structure and root=4 is the AppData\Roaming profile folder.
root=2 is the Documents profile folder. And root=9 is the SavedGames profile folder.
Out of those Factorio uses both root=0 and root=4.
Interesting thing, btw.
I just noticed that Factorio sets up Steam Cloud to only sync the savegame zip files from the AppData/Roaming folder. The other stuff, including configuration settings would be lost when transferring to a new machine.
The configuration that the game actually boots off of, and which is changed when you update settings in the game's config screens, lives inside its AppData\Roaming folder. But the configuration that's actually being synced with Steam Cloud is the one that lives directly inside the userdata remote folder and which is not used by the game at all, it seems.
That seems like a bug. ;-)
Is there a bug tracker somewhere?
Arguing was never the intent. But you did ask for arguments, so I gave them. ;-)
Also, the legacy reasoning doesn't really hold up, as it is equally easy to set up a guide for moving old saves to the new save folder, as it is to set up a guide on how to find the save folder.
Mentioned earlier was a case where an entire Minecraft world disappeared because it was in the Roaming folder. This is the exact reason why many modding platforms for Minecraft, including Feed The Beast, moved the save data from the Minecraft folder in Roaming to the installation folder, with the option of letting the user specify another folder to use.
Roaming is only used for configuration files that are specific to each user. As many Microsoft courses will tell you, it's support data that is different for each user and never your working files. In this case, working file would be the save and the support data would be the config settings, like screen resolution, options etc., as well as settings made automatically by the game based on the circumstances, like what OS version you're running, what mods you have installed etc..
And yes, that is the short version of it :P
As for this being the right forum or not, the devs might not poke around here too often, but since the forum is actually here and there's obviously a great number of people here who believes this to be the right one, maybe you moderators should discuss with the devs about how to bridge the two instead of berrating all users who mistakes the Ideas & Suggestions forum to mean it's for ideas and suggestions about the game? :P
How is a save file not "application specific data"?
For example:
"Don't use roam for frequently changing data." You know, like save files that get updated once every 10 minutes.
"oaming app data is not intended for simultaneous use on more than one device at a time." As in the built-in Microsoft syncronization on Win10 and Steam Cloud. If both try to sync at once, the files may become corrupted.
There are great many examples for things that SHOULD be put there, but mainly, the folder should only be used for things you need the Microsoft syncronization for, and ONLY the Microsoft syncronization. That's why it's great for user settings, as those aren't generally synced with Steam Sync, so that a player can play Factorio on two different machines and have the same settings.
Have you experienced any trouble yourself?
I've also had write protection errors, buffer overflows and sync fails on them too.
If it happens to settings, it's not a big deal. Oh, I need to spend 1 minute to click a few tick-boxes. Big deal.
If it happens to a 100+ hour Minecraft or Factorio world, I'm a bit more ticked off about it.
Let's just say there's a reason why Microsoft's own products save such files in the Document folder, and why there's so many options for the user to relocate the Documents, and so many quick ways for the developers to use Documents, and why Microsoft themselves recommend not using Roaming for permanence...
You COULD put onions in a milk carton, if you modify the carton a bit. But it's not what the milk carton is for, and there's several things that can go wrong, and it requires a bit of work to keep the onions from rotting faster. In the same vein, you COULD use Roaming for save files, but it's not what its for, there's several things that can go wrong and it requires a bit of work to keep them from getting corrupted.
Apart from what BitterSwede so aptly explains by example;
There's still a ton of software out there which attempts to save user data to the application directory; which hardcodes access to user folders that are relocatable; which places 32-bit executable DLLs into a 64-bit System32 folder on 64-bit Windows editions; etc. etc. etc.
However, the fact that so many software does it, does not make it any less wrong.
In general: if hundreds of morons jump off a bridge, that still does not make it a smart example to follow. Because they're morons. And morons do stupid things. Which you should not.
Uhh. The %appdata% IS in the "Document Folder". It's called through a system variable called %userprofile%. Both %appdata% and %userprofile% is located under c:\users\[USERNAME]\
This is not new info. It's been like this since Vista.
Roaming is located at "C:\Users\[username]\AppData\Roaming"
This is nothing new, it's been like this since Roaming and Documents became a thing, back in Vista. App Data is NOT the Documents folder. They are both part of the User Profile folders, but that's where the similarities end.
Kinda like saying that the Central Park and Statue of Liberty is the same thing, because they are both located in New York.
Because you cannot come up with any arguments against it that would hold any weight?
If software has certain features implemented in a wrong way, that does not suddenly become the right way when enough software gets it wrong.
And the sad reality is that a lot of software does get it wrong, and a lot of other software continues to get it wrong because instead of following official documentation and guidelines from the OS vendor, they are following industry examples which got it wrong.
As for the actual argument you attempt to make there, which followed from you writing
Well...
Either you don't have all the facts straight on what Documents and App Data are and how they work - in which case I kindly ask that you educate yourself on the topic first - ; or you are consciously conflating matters in an attempt to bend reality to fit your argument - in which case I kindly ask that you remove yourself from the discussion, because you are being counter-productive.
In addition to it being a mess with all other garbage, there are cases where I want other systems to access those safe files, but I don't want (nor know if they can) have access to the Windows folders.
It's ******* gross