How to change the Saved folder location?

According to Microsoft’s documentation (that’s where the CSIDL_MYDOCUMENTS variable comes from), CSIDL_MYDOCUMENTS, among the other variables in that file, will have a different value on different systems.

For example, a system that has the “My Documents” folder it will be that, but on a system where it changed to just “Documents” it will be just “Documents.”

bump… is there a way to change where the savedgame files are stored in a “shipping” packaged game?

I was doing an early access build for a while using a debug build and now switched over to a shipping build and its going to be a hassle to tell everyone to move their saved games to the new directory otherwise.

Having trouble with this too. If anyone can figure out or explain a way of doing this in blueprints/nodes, please help! Been dealing with this save nonsense for months.

For anyone who is having this issue while switching from a Debug/Development build to a Shipping build, here’s an extremely simple fix so you won’t have to have your players move any files around manually.

Run the game with the -NotInstalled command line argument. If your game is on Steam, you can do this by going to your game’s Steamworks options>Installation>General Installation, and adding “-NotInstalled” to the Arguments box. Your next update should activate this change for your players. Verify the game files after applying this update to test.

1 Like

Can you explain what happens when you add that argument? I want to understand what’s happening behind the scenes because the argument itself doesn’t explain much.

Shipping builds default to using a different default folder (appdata) for game data like saves and configs than Debug and Development builds do (game root folder).

The -NotInstalled argument keeps the game root folder as the default folder.

Bump…

this was easier than all the other stuff I found.
I feel a good vid is way easier to watch than try to explain without pics.

Bump

Bump~

bump as well. ideally i want to make my save game location to be the exact same for all builds (debug, dev, and shipping). it would allow me to give debug builds without them losing all their save game data.

Edit: i manged to do it. i went digging in the source (4.27) and just set this function to true in paths.cpp
idk if theres going to be some kind of knock-on effect from this change, but im assuming its fine.

bool FPaths::ShouldSaveToUserDir()
{
	//static bool bShouldSaveToUserDir =
	//	FApp::IsInstalled()
	//	|| FParse::Param(FCommandLine::Get(), TEXT("SaveToUserDir"))
	//	|| FPlatformProcess::ShouldSaveToUserDir()
	//	|| !CustomUserDirArgument().IsEmpty();
		
	//return bShouldSaveToUserDir;
	return true;
}

Is there a solution to this problem yet?

When I was checking the behavior on SteamDeck, I found that the current path causes save data to be shared between users.
https://www.reddit.com/r/SteamDeck/comments/ua4amg/how_saves_work_with_multiple_steam_accounts/

Steam seems to want SteamID in the directory name.
(See Save File Paths at ↓ for details.)
https://partner.steamgames.com/doc/features/cloud

Hopefully it will be possible to change to any path from Blueprint without having to modify the engine.

Seems like it’s impossible without rebuilding from source. I guess the workaround would be to copy *.sav files before each load/after each save. I know, that’s a bad solution, but I don’t see how else I can create separate save per-steam user

1 Like

When launching, add command line parameters like -UserDir=…

1 Like