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 2

Release notes

Fixed notes.

Released
Size
8.9 MB
Downloads
3,468
Check
Verified
SHA-256
72631443062359642eaeac8cc8bcfdf219ab2f38856a25d38ccd39cbe7e427d8
Download v2 (.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.5 KB

handler.js

Plain text
Hub.Handler.Version = 2; // Released at https://hub.splitscreen.me/ on Sat Jan 01 2022 12:19:37 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 the ... to the right of "DarkSoulsIII.exe Location" and select the first instance DarkSoulsIII exe inside Nucleus content folder, the path in the "DarkSoulsIII.exe Location" should look like NucleusCo-op\\content\\DARK SOULS III\\Instance0\\DarkSoulsIII.exe. Next click import server and select the server.ds3osconfig file that is located in the same path as the DarkSoulsIII exe Location you now see in the open server loader window. 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, select a different instance folder per instance, the path in the "DarkSoulsIII.exe Location" should look like \\content\\DARK SOULS III\\Instance1\\ for the second instance for example.';
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");
  }
};