SnowRunner

SnowRunner

Not enough ratings
How to share saves and place them in any save slot
By Not Thelegend27
If you want to share a save to a friend to give them progress in a coop game and/or you want to move the saves to a specific save slot.
   
Award
Favorite
Favorited
Unfavorite
Getting your save files
1. Disable steam cloud save

Right click on snowrunner, click properties, and disable cloud saves.

2. Go to your save location.
Follow the file path below. After userdata there will be a folder of random numbers that is the identifier for your specific steam account. A easy way to know if you are in the right account is signing in and see what was the most recent date modified folder. Then after folder 1465360 is the snowrunner game id which will be there only if you at least launched the game.

C:\Program Files (x86)\Steam\userdata\USER SPECIFIC ID\1465360

3. save the whole 1465360 folder as a backup.

4. There are multiple components to the saves in this game that we care about.

  • CompleteSave.cfg
  • sts_(stuff).cfg
  • fog_level_(stuff).cfg
  • remotecache.vdf

Remotecache.vdf is in the 1465360 folder and the rest is in the remote folder.

CompleteSave.cfg, all the sts_(stuff).cfg, and all the fog_level_(stuff).cfg is all the stuff that you want to share to your friend. You need to change some things if you are placing them in a different save slot.
Importing saves and changing save slots
Save slot 1 in the game has no numbers in the file names. CompleteSave.cfg and sts.cfg and fog.cfg are named just liked that.

Every save slot after adds the correct number to the file names. CompleteSave(1,2, or 3).cfg and sts and fog files you need to add the number(1,2, or 3) and a _ to the front of the name.

example: save slot 2 needs CompleteSave1.cfg and rename all the sts and fog files to 1_sts(rest of it).cfg and 1_fog(rest of it).cfg

save slot 3 needs the numbers replaced with the number 2.

see below of what a save slot 3 files should look like. You might have fewer or more files depending on your progress in the game.


You also need to open CompleteSave file with note pad (or whatever text editor) and change the first parameter to match the save slot.

So Save slot 3 would need the file name to be CompleteSave2.cfg and edited to have {"CompleteSave2":(rest of it) at the beginning


Now you have to delete that remotecache.vdf file from earlier.

This file is what tells the game to actually look at the new save files that we just copied over.

Once you delete it you can just start playing but the fog and progress might be glitched out.

To make a new file we need to run a python script that "Murwen" made and posted in a discussion post.
https://steamproxy.net/app/1465360/discussions/0/4811511685077534336/?l=hungarian&ref=dtf.ru#c3111403360718313694
Making a new remotecache.vdf file to fix the fog issue
I found the solution here

https://steamproxy.net/app/1465360/discussions/0/4811511685077534336/?l=hungarian&ref=dtf.ru#c3111403360718313694

and script link here:
https://pastebin.com/ZhCESujt

I figured that I would also show how to run the script and post it again for more visibility

Here is the script reposted in here if the link breaks:

import os
import math
import hashlib
import argparse
from pathlib import Path


def sha1sum( stream, start=0 ):
sha1 = hashlib.sha1()
stream.seek( start, 0 )

while True:
data = stream.read( 1024 )
if not data:
break
sha1.update( data )

stream.seek( 0, 0 )
return sha1


def vdf_write( vdf, level, key="", val=None ):
pad = '\t' * level
if key == None or key == "":
vdf.write( f'{pad}' + "}\n" )
elif val == None:
vdf.write( f'{pad}"{key}"\n{pad}' + "{\n" )
else:
vdf.write( f'{pad}"{key}"\t\t"{val}"\n' )


def write_remcache_file( vdf, filepath ):
fstat = os.stat( filepath )
fsize = fstat.st_size
ftime = math.floor( fstat.st_mtime )

with open( filepath, "rb" ) as fs:
fsha = sha1sum( fs ).hexdigest()

vdf_write( vdf, 1, filepath.name )
vdf_write( vdf, 2, "root", 0 )
vdf_write( vdf, 2, "size", fsize )
vdf_write( vdf, 2, "localtime", ftime )
vdf_write( vdf, 2, "time", ftime )
vdf_write( vdf, 2, "remotetime", ftime )
vdf_write( vdf, 2, "sha", fsha )
vdf_write( vdf, 2, "syncstate", 4 )
vdf_write( vdf, 2, "persiststate", 0 )
vdf_write( vdf, 2, "platformstosync2", -1 )
vdf_write( vdf, 1 )


def write_remcache( remcache_path, data_path ):
with open( remcache_path, "w", newline='\n' ) as vdf:
vdf_write( vdf, 0, "1465360" )

for f in data_path.glob( "*" ):
write_remcache_file( vdf, f )

# for f in data_path.glob( "system.bin" ):
# write_remcache_file( vdf, f )
# write_remcache_file( vdf, Path( f"{f}slot" ) )

# for f in data_path.glob( "data*.bin" ):
# write_remcache_file( vdf, f )
# write_remcache_file( vdf, Path( f"{f}slot" ) )

vdf_write( vdf, 0 )


def main():
# parser = argparse.ArgumentParser()
# parser.add_argument( "save_dir", nargs=1, help="pc save dir" )
# args = parser.parse_args()

# save_path = Path( args.save_dir[ 0 ] )

save_path = Path( 'remote' )

if not save_path.is_dir():
raise Exception( "missing save dir or save dir doesn't exist" )

# files = [ f for f in save_path.glob( "data*.binslot" ) if f.is_file() ]
# if len( files ) == 0:
# raise Exception( "input dir doesn't contain pc saves" )
files = [ f for f in save_path.glob( "*.cfg" ) if f.is_file() ]
if len( files ) == 0:
raise Exception( "input dir doesn't contain pc saves" )

print( "generating remotecache.vdf" )
remcache_path = Path ( save_path.parent / "remotecache.vdf" )
write_remcache( remcache_path, save_path )

print( "done!" )


if __name__ == "__main__":
main()


Now copy or download the script. If you copied, make a text file and paste it inside. Now "save as" a .py file with a name that you would use for later. I named my remotecache.py.

Place it in your 1465360 folder next to the remote folder and where the remotecache.vdf was.

Delete the remotecache.vdf if you havent already.

It should look like this

Download and install python off the internet. Look up installation video if you need help.

Once installed open CMD on windows. Search up CMD on your windows search and it should say command prompt and it will look like a big black terminal.

Copy the file location where remotecache.py

It should look like this:
C:\Program Files (x86)\Steam\userdata\(USER ID)\1465360

In CMD type "cd" then right click using your mouse. This will change folder the terminal is going to be looking at.

That should paste the file location you just copied.

Should look like this:

The next line should show C:\Program Files (x86)\Steam\userdata\(USER ID)\1465360> vs showing \users\(user)>

Now you just have to type the name you named the .py script and add remote to the end of it and hit enter.

The command and the result should look like this and you will have a new remotecache.vdf in your folder.


You can now play snowrunner and hopefully everything works and progress copied over.

After you play you can enable steam cloud saves again.