Skip to content
Beta: this is a preview of the new SplitScreen.Me. Data may be reset before launch.

Dark Souls III · handler “Dark Souls 3 Seamless Co-op”

Version 1

Release notes

New year release!

Released
Size
8.9 MB
Downloads
50
Check
Verified
SHA-256
95acb3c9d511e37b04cbf5c51cf0b14d62d1b30b678ae179d6793cdcdf17e6d9
Download v1 (.nc)All versions

Files 16

PathSize
DarkSouls3/Loader/Loader.deps.json414 B
DarkSouls3/Loader/Loader.dll762 KB
DarkSouls3/Loader/Loader.exe303 KB
DarkSouls3/Loader/Loader.runtimeconfig.dev.json182 B
DarkSouls3/Loader/Loader.runtimeconfig.json154 B
DarkSouls3/Loader/ref/Loader.dll194 KB
DarkSouls3/Server/libcrypto-1_1-x64.dll3.3 MB
DarkSouls3/Server/libcurl.dll497 KB
DarkSouls3/Server/Saved/config.json4.4 KB
DarkSouls3/Server/Saved/database.sqlite7.4 MB
DarkSouls3/Server/Saved/private.key1.7 KB
DarkSouls3/Server/Saved/public.key434 B
DarkSouls3/Server/Saved/server.ds3osconfig701 B
DarkSouls3/Server/Server.exe2.3 MB
DarkSouls3/Server/zlib1.dll85 KB
handler.js7.1 KB

handler.js

Plain text
Hub.Handler.Version = 1; // Released at https://hub.splitscreen.me/ on Sat Jan 01 2022 06:23:17 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "8ToryPKXFmff7D8h7";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";

var answers1 = ["No", "Yes"];
Game.AddOption("Souls Unsqueezed mod?", "Only select yes if you have it installed, fixes stretching in split-screen.", "Mod", answers1);

Game.ExecutableContext = ["binkw64.dll"];
Game.KillMutex = ["DarkSoulsIIIMutex"];
Game.DirSymlinkExclusions = ["Server\\Saved", "Loader\\ref"];
Game.FileSymlinkExclusions = ["steam_api64.dll", "steam_appid.txt", "steam_interfaces.txt"];
Game.FileSymlinkCopyInstead = ["SoulsUnsqueezed.ini", "dxgi.ini"];
Game.NeedsSteamEmulation = false;
Game.UseGoldberg = true;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = true;
Game.ExecutableName = "DarkSoulsIII.exe";
Game.SteamID = "374320";
Game.GUID = "DARK SOULS III";
Game.GameName = "DARK SOULS III";
Game.MaxPlayers = 6;
Game.MaxPlayersOneMonitor = 6;
Game.LauncherTitle = "";
Game.LauncherExe = "Loader\\Loader.exe";
Game.LauncherExeIgnoreFileCheck = true;
Game.StartArguments = "";
Game.HideTaskbar = false;
Game.Hook.ForceFocus = false;
Game.Hook.ForceFocusWindowName = "DARK SOULS III";
Game.HookFocus = true;
Game.SetForegroundWindowElsewhere = true;
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.XInputPlusDll = ["xinput1_3.dll"];
Game.Hook.CustomDllEnabled = false;
Game.UserProfileSavePath = "AppData\\Roaming\\DarkSoulsIII";
Game.Description =
  'IMPORTANT: Launch with Steam opened. When launching this the DarkSouls III server and server loader windows will open, in the open server loader window select and remove all the servers in the list if you see any, then click on import server and select the server.ds3osconfig file that is located in the same path as the DarkSoulsIII exe you see in the open server loader window "DarkSoulsIII.exe Location", after importing the file select the Nucleus server in the list and click launch game, once the game instance launches you can close the launcher window, repeat the same process for all instances.';
Game.KeepSymLinkOnExit = false;
Game.PromptBetweenInstances = true;
Game.PauseBetweenContextAndLaunch = 7;
Game.PauseBetweenProcessGrab = 35;
Game.PauseBetweenStarts = 35;

Game.Play = function() {
  var interfaces = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\steam_interfaces.txt";
  var lines = [
    "SteamClient012",
    "SteamGameServer011",
    "SteamGameServerStats001",
    "SteamUser016",
    "SteamFriends013",
    "SteamUtils005",
    "SteamMatchMaking009",
    "SteamMatchMakingServers002",
    "STEAMUSERSTATS_INTERFACE_VERSION011",
    "STEAMAPPS_INTERFACE_VERSION005",
    "SteamNetworking005",
    "STEAMREMOTESTORAGE_INTERFACE_VERSION010",
    "STEAMSCREENSHOTS_INTERFACE_VERSION002",
    "STEAMHTTP_INTERFACE_VERSION002",
    "STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001"
  ];
  Context.WriteTextFile(interfaces, lines);

  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Loader\\ref");
  System.IO.Directory.CreateDirectory(filePath);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Loader\\Loader.exe");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Loader\\Loader.exe");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Loader\\Loader.deps.json");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Loader\\Loader.deps.json");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Loader\\Loader.dll");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Loader\\Loader.dll");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Loader\\Loader.runtimeconfig.dev.json");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Loader\\Loader.runtimeconfig.dev.json");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Loader\\Loader.runtimeconfig.json");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Loader\\Loader.runtimeconfig.json");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Loader\\ref\\Loader.dll");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Loader\\ref\\Loader.dll");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\server.ds3osconfig");
  var savePkgOrigin = System.IO.Path.Combine(Game.Folder, "Server\\Saved\\server.ds3osconfig");
  System.IO.File.Copy(savePkgOrigin, savePath, true);

  var xml = Context.NucleusUserRoot + "\\AppData\\Roaming\\DarkSoulsIII\\GraphicsConfig.xml";
  var Gamefolder = System.IO.Path.Combine(Game.Folder);

  Context.RunAdditionalFiles(["1|" + Gamefolder + "\\Server\\Server.exe"], false, 1);

  Game.KillProcessesOnClose = ["Server", "Loader", "cmd"];

  if (System.IO.File.Exists(xml)) {
    System.IO.File.SetAttributes(xml, System.IO.File.GetAttributes(xml) & ~System.IO.FileAttributes.ReadOnly);
  }

  var mod = Context.Options["Mod"];

  if (mod == "Yes") {
    var path = Context.NucleusUserRoot + "\\AppData\\Roaming\\DarkSoulsIII\\GraphicsConfig.xml";
    Context.ChangeXmlNodeInnerTextValue(path, "//ScreenMode", "WINDOW");
    Context.ChangeXmlNodeInnerTextValue(path, "//Resolution-WindowScreenWidth", Context.Width);
    Context.ChangeXmlNodeInnerTextValue(path, "//Resolution-WindowScreenHeight", Context.Height);

    var videoconfig = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\SoulsUnsqueezed.ini");
    Context.ModifySaveFile(videoconfig, videoconfig, Nucleus.SaveType.INI, [
      new Nucleus.IniSaveInfo("SUS.Window", "Borderless", "false"),
      new Nucleus.IniSaveInfo("SUS.Window", "Fullscreen", "false"),
      new Nucleus.IniSaveInfo("SUS.Window", "Center", "false"),
      new Nucleus.IniSaveInfo("SUS.Display", "HUDResX", Context.Width),
      new Nucleus.IniSaveInfo("SUS.Display", "HUDResY", Context.Height),
      new Nucleus.IniSaveInfo("SUS.Display", "StretchHUD", "false"),
      new Nucleus.IniSaveInfo("SUS.Render", "CorrectAspect", "true"),
      new Nucleus.IniSaveInfo("SUS.Render", "StartFullscreen", "false"),
      new Nucleus.IniSaveInfo("SUS.Render", "DefaultResX", Context.Width),
      new Nucleus.IniSaveInfo("SUS.Render", "DefaultResY", Context.Height)
    ]);
  }

  if (mod == "No") {
    var path = Context.NucleusUserRoot + "\\AppData\\Roaming\\DarkSoulsIII\\GraphicsConfig.xml";
    Context.ChangeXmlNodeInnerTextValue(path, "//ScreenMode", "WINDOW");
  }
};