Sekiro™: Shadows Die Twice

Sekiro™: Shadows Die Twice

Ikke nok vurderinger
How to Manually Save in Sekiro
Af Burryaga
This guide explains how to use a small (open source) C# program that will replace your Sekiro saves with backups at any folder location that has been copied to your computer's clipboard. You can bind the resave process to a keyboard shortcut because Resaver is an executable file. After that, you may quickly replace the current Sekiro saves with those in the copied backup-save location by going to the Continue screen, alt+tabbing, hitting the keyboard shortcut for Resaver, returning to Sekiro, and choosing Continue. This is as easy as it gets, since manual saving isn't built into the game.
   
Pris
Føj til foretrukne
Gjort til foretrukken
Fjern som foretrukken
Purpose
This guide is for people who (A) grabbed Sekiro for Windows 10 via Steam, (B) want to more easily assert manual control over Sekiro's saves, (C) understand basic programming, and (D) keep their saves in the ordinary location, which is inside %APPDATA%\Sekiro. If you have no knowledge of programming or you're afraid of executable programs or you lack the confidence to move files around (but for some reason you're still playing Sekiro), then this might not be the best strategy for you, because I'm not going to explain every detail of this process, offer a safety analysis, or anything like that. I did this. It works well for me. If it doesn't work for you, go do something else.

I have no knowledge of how non-Steam, non-Windows-10 Sekiro saves are managed, so please don't expect these steps to work unmodified under those conditions.
Getting Sekisave
  • You can either trust me and download my .exe, or you can use the code below to compile the executable yourself. I really couldn't care less.
    • The path of trust:
    • The path of skepticism:
      • Create a C# Console Application using .NET 4.6.1 in Visual Studio.
      • Change the type to a Windows Application in Project Settings.
      • Add System.Windows.Forms to the References.
      • Replace all of the code in Program.cs with the code below (see Sekisave in navbar).
      • Build the project and find the .exe (in the bin/Debug directory of your project).
  • Create a shortcut to the .exe.
  • Pin the shortcut to your taskbar.
  • Right-click the shortcut and open properties to change its icon as you like, and give it a keyboard shortcut.
    • I use Ctrl + Alt + B (for backup). I'm sure there are programs that use this for something else, so it might not be ideal for you.
Using Sekisave
Now, whenever you want to backup saves in Sekiro:

  • Alt + Tab out of Sekiro.
  • Open any program that gives you space for typing (such as Notepad++).
  • Type a name for a folder that will contain your current save state. If you're about to fight Lady Butterfly, you might use "Butterfly".
  • Copy whatever you just wrote.
    • For newbs, that means highlight it, hold Ctrl (Control), and press C while holding Ctrl.
  • Hit the shortcut key associated with Sekisave.
    • Wait a brief moment (less than a second should be fine on any computer that can run Sekiro).
    • Sekisave has backed up Sekiro's saves in %USERPROFILE%/Documents/Sekiro/Backups/TheNameYouChose.
    • Your taskbar will likely appear and disappear when you run this program.
    • This program will otherwise run silently.
  • Alt + Tab back to Sekiro.

That's it. You've backed up your saves.
Getting Resaver
  • You can either trust me and download my .exe, or you can use the code below to compile the executable yourself. I really couldn't care less.
    • The path of trust:
    • The path of skepticism:
      • Create a C# Console Application using .NET 4.6.1 in Visual Studio.
      • Change the type to a Windows Application in Project Settings.
      • Add System.Windows.Forms to the References.
      • Replace all of the code in Program.cs with the code below (see Resaver in navbar).
      • Build the project and find the .exe (in the bin/Debug directory of your project).
  • Create a shortcut to the .exe.
  • Pin the shortcut to your taskbar.
  • Right-click the shortcut and open properties to change its icon as you like, and give it a keyboard shortcut.
    • I use Ctrl + Alt + R (for resave, or recreate saves). I'm sure there are programs that use this for something else, so it might not be ideal for you.
Using Resaver
Now, whenever you want to reload old saves in Sekiro:

  • Copy the location of the backup folder you want to load.
    • For example, to load Lady Butterfly, I grab "C:\Users\Zendachi\Documents\Sekiro\Backups\Butterfly" (NO QUOTES).
    • Do not copy the FILES, copy the LOCATION.
    • You could keep a notepad file with a list of your backup locations like so:
      • C:\Users\Zendachi\Documents\Sekiro\Backups\Butterfly
      • C:\Users\Zendachi\Documents\Sekiro\Backups\Genichiro
      • C:\Users\Zendachi\Documents\Sekiro\Backups\Drunkard
      • ...et cetera. Then copy the desired backup location to your clipboard and run Resaver in order to load that backup into Sekiro.
  • Quit your current game (or start Sekiro) to get to the title screen, and hit start to get to the Continue screen.
  • Alt + Tab out of Sekiro.
    • Keyboard shortcuts probably won't work while the full-screen game has focus, hence the importance of this step.
  • Hit the shortcut key associated with Resaver.
    • Wait a brief moment (less than a second should be fine on any computer that can run Sekiro).
    • Resaver has now replaced Sekiro's save folder contents with your backup data.
    • If the Resaver shortcut is on your taskbar, your taskbar will likely appear and disappear.
    • This program will otherwise run silently.
  • Alt + Tab back to Sekiro.
  • Choose continue. Sekiro will load your backup save.

That's it. Enjoy some minor amount of control over your saves.
Sekisave
Here's the Sekisave code for the skeptical and the curious:

using System; using System.IO; using System.Windows.Forms; namespace Zendachi { class Sekisave { [STAThread] static void Main(string[] args) { string filename = ""; string foldername = ""; string savefolder = ""; string destination = ""; string copy = ""; string backup = "Documents/Sekiro/Backups/" + Clipboard.GetText(); string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); string user = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); string target = Path.Combine(appdata, "Sekiro"); destination = Path.Combine(user, backup); Directory.CreateDirectory(destination); if (Directory.Exists(target)) { string[] files = Directory.GetFiles(target); foreach (string file in files) { // static Path methods extract only filename from path. if (!Directory.Exists(file)) { filename = Path.GetFileName(file); copy = Path.Combine(destination, filename); File.Copy(file, copy, true); } } string[] directories = Directory.GetDirectories(target); // Only descends into first directory. Not infinite recursion. foreach (string directory in directories) { foldername = Path.GetFileName(directory); savefolder = Path.Combine(destination, foldername); string[] savefiles = Directory.GetFiles(directory); foreach (string save in savefiles) { // static Path methods extract only filename from path. Directory.CreateDirectory(savefolder); filename = Path.GetFileName(save); copy = Path.Combine(savefolder, filename); File.Copy(save, copy, true); } } } else { Console.WriteLine("Source path does not exist!"); } } } }
Resaver
And here's the Resaver code:

using System; using System.IO; using System.Windows.Forms; namespace Zendachi { class Resaver { [STAThread] static void Main(string[] args) { string filename = ""; string foldername = ""; string usertarget = ""; string destination = ""; // Here, the source location (i.e. the directory of save state) // is grabbed from your PC clipboard, which is why you simply need // to copy (Control + C) the text of the location of your backup. string source = Clipboard.GetText(); // Finds Sekiro save folder via %APPDATA% // to avoid need to know your Windows username. string appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); // Only grabs "Sekiro" folder, NOT the #### folder // containing the S0000 files, in order to avoid // the need to know the weird user IDs that label your saves. // The number folder is found by looping // through the first layer of directories (see below). string target = Path.Combine(appdata, "Sekiro"); if (Directory.Exists(source)) { string[] files = Directory.GetFiles(source); // This part grabs all the files in Sekiro. // Theoretically, this should only be one file, GraphicsConfig.xml. // Just in case you threw other stuff in there, I copy it in a loop. foreach (string file in files) { // static Path methods extract only filename from path. filename = Path.GetFileName(file); destination = Path.Combine(target, filename); File.Copy(file, destination, true); } string[] directories = Directory.GetDirectories(source); // Only descends into first level of each directory. // Does not allow infinite recursion. // This copies from Backups/[Butterfly]/########### // to %APPDATA%/Sekiro/###########, // where [Butterfly] is the folder label for any save state in your Backups, // and ########### is a user ID associated with those saves. foreach (string directory in directories) { foldername = Path.GetFileName(directory); usertarget = Path.Combine(target, foldername); string[] userfiles = Directory.GetFiles(directory); foreach (string userfile in userfiles) { // static Path methods extract only filename from path. Directory.CreateDirectory(usertarget); filename = Path.GetFileName(userfile); destination = Path.Combine(usertarget, filename); File.Copy(userfile, destination, true); } } } else { Console.WriteLine("Source path does not exist!"); } } } }
Tips
  • Make sure you remember to copy the FOLDER ADDRESS of the backup save data. If you copy the files instead of their location, the program *will not work*. Do *not* include quotation marks around the address you copy. Resaver won't work. I have written 0 error-handling, so it's up to you to format the input properly before you copy it. The address that appears in the URL bar of your file browser while exploring folders will work.
  • Windows 10 keyboard shortcuts get disabled by many fullscreen programs, so you'll need to Alt+Tab to a program that isn't when using them to make or reload backups.
    • You may notice that keyboard shortcuts don't work from the Windows Desktop because Windows 10 is trash.
    • You can get these to work by using an open source program called Auto Hotkey.
    • To bind the keys I recommended, see Advanced in the navigation on the right.
  • Note that you will run into a problem if you copy the save data and delete it before pasting it into your Backups folder. Windows copy-pastes according to file addresses, and will only copy the reference to files that you attempt to copy. If you delete the files themselves before pasting them, Windows will have no file to grab, and be confused. Just rescue your saves from recycling if you accidentally do this.
  • In Steam, bind the long press of your Start button to turbo-press Start, Xbox Controller X, and Xbox Controller A for faster loading in the menu screen, and also faster respawns and resurrections when you die.
  • Still getting stomped, even though you can backup saves right before that tough boss you're trying to beat? Try watching some pro videos and carefully learning what they do in response to each attack before you attempt the fight further. Sometimes there are some pretty awesome tricks you can do to avoid the threat of certain attacks entirely while continuing to deal damage. Don't watch players who seem afraid, because they obviously haven't mastered the counters, yet. Watch people who destroy the bosses, slow down the video playback speed in YouTube, and study the moves of the experts.
  • People using Razer Cortex will need to rebind manual boost bindings if you want to use Ctrl + Alt + B/R. (Thanks to TheRecruitMainTK for this bonus tip.)

Happy slaying, friends.
Advanced
If you want to use Auto Hotkey to make your shortcuts work when nothing is open (for instance, after you quit Sekiro with Alt+F4 and return to your desktop), this script may help:

; Every line with a semicolon ; is just a comment. ; To change your hotkeys, you ; must change the letter that ; appears before "::". ; Changing the capital letters, ; such as the "K" in "Ctrl+Alt+K", ; will do absolutely nothing. ; Ctrl+Alt+K => Launch Sekiro ^!k:: Run, "S:\Apps\Steam Games\steamapps\common\Sekiro\sekiro.exe" return ; Ctrl+Alt+R => Overwrite Sekiro Saves ^!r:: Run, "S:\Code\C-Sharp\Resaver\Resaver\bin\Debug\Resaver.exe" return ; Ctrl+Alt+B => Backup Sekiro Saves ^!b:: Run, "S:\Code\Binary\Sekisave.exe" return

I use an SSD labeled as drive S, and I created a custom folder called "Apps" for all of my games (most of which are in "S:\Apps\Steam Games"). You will need to change these addresses to match where you stored Resaver, Sekisave, and Sekiro in order to make this script work for you. I'm not generalizing this one. Good luck!
3 kommentarer
Celshade 29. dec. 2021 kl. 9:18 
This is a pretty sick slice of code. Well done, fam.
Burryaga  [ophavsmand] 31. juli 2019 kl. 8:00 
Thanks for the gratitude and the protip RecruitMain! I'll add your note to mine so that new people can see it easier. I appreciate you. :steamhappy:
TheRecruitMainTK 31. juli 2019 kl. 4:02 
Thank you, works well and is quick to use.
Side Note: People using Razer Cortex will need to rebind manual boost bindings if you want to use Ctrl + Alt + B/R.