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

Subnautica · handler “Subnautica Nitrox”

Version 1

Release notes

First release

Released
Size
10.9 MB
Downloads
1,375
Check
Verified
SHA-256
40ec45eb65c8112f2c4bfab686732b0dd6b8e46256e578c36914d3079c2ee0d2
Download v1 (.nc)All versions

Files 68

PathSize
handler.js8.1 KB
SubnauticaNitrox/Nitrox/AssetBundles/chatkeyhint217 KB
SubnauticaNitrox/Nitrox/AssetBundles/chatlog177 KB
SubnauticaNitrox/Nitrox/LanguageFiles/English.json1.8 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Finnish.json2.0 KB
SubnauticaNitrox/Nitrox/LanguageFiles/French.json1.9 KB
SubnauticaNitrox/Nitrox/LanguageFiles/German.json2.0 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Hungarian.json2.1 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Italian.json2.0 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Polish.json2.0 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Portuguese.json2.0 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Romanian.json2.1 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Russian.json2.4 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Slovak.json1.9 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Spanish.json1.9 KB
SubnauticaNitrox/Nitrox/LanguageFiles/Turkish.json1.9 KB
SubnauticaNitrox/Nitrox/lib/0Harmony.dll186 KB
SubnauticaNitrox/Nitrox/lib/AssetsTools.NET.dll164 KB
SubnauticaNitrox/Nitrox/lib/Autofac.dll227 KB
SubnauticaNitrox/Nitrox/lib/discord-rpc.dll391 KB
SubnauticaNitrox/Nitrox/lib/dnlib.dll1.1 MB
SubnauticaNitrox/Nitrox/lib/LiteNetLib.dll93 KB
SubnauticaNitrox/Nitrox/lib/LiteNetLib.xml56 KB
SubnauticaNitrox/Nitrox/lib/LitJSON.dll60 KB
SubnauticaNitrox/Nitrox/lib/LZ4.dll44 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.Bcl.AsyncInterfaces.dll20 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.DotNet.PlatformAbstractions.dll23 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Configuration.Abstractions.dll20 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Configuration.Binder.dll24 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Configuration.dll24 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.DependencyInjection.Abstractions.dll36 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.DependencyModel.dll57 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Options.ConfigurationExtensions.dll17 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Options.dll26 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.Extensions.Primitives.dll33 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.WindowsAPICodePack.dll96 KB
SubnauticaNitrox/Nitrox/lib/Microsoft.WindowsAPICodePack.Shell.dll530 KB
SubnauticaNitrox/Nitrox/lib/Mono.Cecil.dll350 KB
SubnauticaNitrox/Nitrox/lib/Mono.Cecil.Mdb.dll42 KB
SubnauticaNitrox/Nitrox/lib/Mono.Cecil.Rocks.dll27 KB
SubnauticaNitrox/Nitrox/lib/Mono.Nat.dll67 KB
SubnauticaNitrox/Nitrox/lib/MonoMod.RuntimeDetour.dll106 KB
SubnauticaNitrox/Nitrox/lib/MonoMod.Utils.dll191 KB
SubnauticaNitrox/Nitrox/lib/Newtonsoft.Json.dll684 KB
SubnauticaNitrox/Nitrox/lib/Nitrox.Bootloader.dll6.5 KB
SubnauticaNitrox/Nitrox/lib/NitroxClient.dll421 KB
SubnauticaNitrox/Nitrox/lib/NitroxModel-Subnautica.dll36 KB
SubnauticaNitrox/Nitrox/lib/NitroxModel.dll149 KB
SubnauticaNitrox/Nitrox/lib/NitroxPatcher.dll120 KB
SubnauticaNitrox/Nitrox/lib/NitroxPatcher.dll.config527 B
SubnauticaNitrox/Nitrox/lib/NitroxServer.dll165 KB
SubnauticaNitrox/Nitrox/lib/NitroxServer.dll.config1.2 KB
SubnauticaNitrox/Nitrox/lib/protobuf-net.dll179 KB
SubnauticaNitrox/Nitrox/lib/Serilog.dll124 KB
SubnauticaNitrox/Nitrox/lib/Serilog.Settings.Configuration.dll47 KB
SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.Async.dll9.0 KB
SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.Console.dll32 KB
SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.File.dll28 KB
SubnauticaNitrox/Nitrox/lib/Serilog.Sinks.Map.dll12 KB
SubnauticaNitrox/Nitrox/lib/System.Numerics.Vectors.dll113 KB
SubnauticaNitrox/Nitrox/lib/System.Runtime.CompilerServices.Unsafe.dll16 KB
SubnauticaNitrox/Nitrox/lib/System.Runtime.Serialization.dll416 KB
SubnauticaNitrox/Nitrox/lib/System.ServiceModel.dll2.4 MB
SubnauticaNitrox/Nitrox/lib/System.Threading.Tasks.Extensions.dll25 KB
SubnauticaNitrox/Nitrox/NitroxLauncher.exe9.9 MB
SubnauticaNitrox/Nitrox/NitroxLauncher.exe.config2.2 KB
SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.exe49 KB
SubnauticaNitrox/Nitrox/NitroxServer-Subnautica.exe.config1.2 KB

handler.js

Plain text
Hub.Handler.Version = 1; // Released at https://hub.splitscreen.me/ on Mon Oct 11 2021 02:04:19 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "SXxys76eLF6BC36PF";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";

Game.ExecutableContext = ["Subnautica_Data"];
Game.RequiresAdmin = true;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = false;
Game.ExecutableName = "Subnautica.exe";
Game.SteamID = "264710";
Game.GUID = "Subnautica";
Game.GameName = "Subnautica Nitrox";
Game.MaxPlayers = 5;
Game.MaxPlayersOneMonitor = 5;
Game.LauncherTitle = "";
Game.UseGoldberg = false;
Game.NotTopMost = true;
Game.Hook.ForceFocus = false;
Game.Hook.ForceFocusWindowName = "Subnautica";
Game.FakeFocus = true;
Game.FakeFocusInterval = 10000;
Game.SendFakeFocusMsg = true;
Game.ResetWindows = true;
Game.SetForegroundWindowElsewhere = true;
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.Hook.CustomDllEnabled = false;
Game.Description =
  "IMPORTANT: This uses a Nucleus forked Subnautica Nitrox build. After running via Nucleus select multiplayer in the Nitrox launcher window that will open, once the game instance has launched set the game to windowed if it is in exclusive fullscreen, join the local server using the game multiplayer menu, write a name and select a color using your main mouse\\kb, once you are in-game select the Subnautica process in Nucleus process picker window, click refresh if you do not see it, wait for the instance to reposition then open the next Subnautica instance via the Nitrox Launcher too, repeat the same steps as in the previous instance. Enable the controller in the game options for the gamepad instances. If you use keyboards and mice after all the instances have launched, resized and positioned correctly, press the END key to lock the input for all instances to have their own cursor. You need to left click each mouse to make the emulated cursors appear after locking the input. Press the END key again to unlock the input whe you finish playing. You can also use CTRL+Q to close Nucleus and all its instances when the input is unlocked. Reduce in-game graphics settings to improve performance.";
Game.ThirdPartyLaunch = true;
Game.IgnoreThirdPartyPrompt = true;
Game.ForceProcessPick = true;
Game.PauseBetweenProcessGrab = 15;
Game.PauseBetweenStarts = 30;

//USS deprecated options:

Game.HookSetCursorPos = false;
Game.HookGetCursorPos = false;
Game.HookGetKeyState = false;
Game.HookGetAsyncKeyState = false;
Game.HookGetKeyboardState = false;
Game.HookFilterRawInput = false;
Game.HookFilterMouseMessages = false;
Game.HookUseLegacyInput = false;
Game.HookDontUpdateLegacyInMouseMsg = false;
Game.HookMouseVisibility = false;

Game.SendNormalMouseInput = false;
Game.SendNormalKeyboardInput = false;
Game.SendScrollWheel = false;
Game.ForwardRawKeyboardInput = false;
Game.ForwardRawMouseInput = false;
Game.HookReRegisterRawInput = false;
Game.HookReRegisterRawInputMouse = false;
Game.HookReRegisterRawInputKeyboard = false;
Game.DrawFakeMouseCursor = false;

//ProtoInput:

Game.SupportsMultipleKeyboardsAndMice = true;

Game.ProtoInput.InjectStartup = false;
Game.ProtoInput.InjectRuntime_RemoteLoadMethod = true;
Game.ProtoInput.InjectRuntime_EasyHookMethod = false;
Game.ProtoInput.InjectRuntime_EasyHookStealthMethod = false;

Game.LockInputAtStart = false;
Game.LockInputSuspendsExplorer = true;
Game.ProtoInput.FreezeExternalInputWhenInputNotLocked = false;
Game.LockInputToggleKey = 0x23;

Game.ProtoInput.RenameHandlesHook = false;
Game.ProtoInput.RenameHandles = [];
Game.ProtoInput.RenameNamedPipes = [];

Game.ProtoInput.RegisterRawInputHook = true;
Game.ProtoInput.GetRawInputDataHook = true;
Game.ProtoInput.MessageFilterHook = true;
Game.ProtoInput.GetCursorPosHook = false;
Game.ProtoInput.SetCursorPosHook = false;
Game.ProtoInput.GetKeyStateHook = true;
Game.ProtoInput.GetAsyncKeyStateHook = true;
Game.ProtoInput.GetKeyboardStateHook = true;
Game.ProtoInput.CursorVisibilityHook = true;
Game.ProtoInput.ClipCursorHook = true;
Game.ProtoInput.FocusHooks = true;
Game.ProtoInput.DrawFakeCursor = false;
Game.ProtoInput.ClipCursorHookCreatesFakeClip = true;
Game.ProtoInput.EnableToggleFakeCursorVisibilityShortcut = false;
Game.ProtoInput.DontShowCursorWhenImageUpdated = true;

Game.ProtoInput.RawInputFilter = false;
Game.ProtoInput.MouseMoveFilter = false;
Game.ProtoInput.MouseActivateFilter = true;
Game.ProtoInput.WindowActivateFilter = true;
Game.ProtoInput.WindowActvateAppFilter = true;
Game.ProtoInput.MouseWheelFilter = true;
Game.ProtoInput.MouseButtonFilter = false;
Game.ProtoInput.KeyboardButtonFilter = true;
Game.ProtoInput.AutoHideTaskbar = true;

Game.ProtoInput.SendMouseWheelMessages = true;
Game.ProtoInput.SendMouseButtonMessages = true;
Game.ProtoInput.SendMouseMovementMessages = true;
Game.ProtoInput.SendKeyboardButtonMessages = true;
Game.ProtoInput.XinputHook = true;

Game.ProtoInput.EnableFocusMessageLoop = false;
//Game.ProtoInput.FocusLoopIntervalMilliseconds = 5;
//Game.ProtoInput.FocusLoop_WM_ACTIVATE = true;
//Game.ProtoInput.FocusLoop_WM_ACTIVATEAPP = true;
//Game.ProtoInput.FocusLoop_WM_NCACTIVATE = true;
//Game.ProtoInput.FocusLoop_WM_SETFOCUS = true;
//Game.ProtoInput.FocusLoop_WM_MOUSEACTIVATE = true;
Game.ProtoInput.BlockedMessages = [0x0008, 0x02a3, 0x02a1]; // Blocks WM_KILLFOCUS, WM_MOUSEHOVER and WM_MOUSELEAVE

Game.Play = function() {
  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Fullscreen mode_h3630240806", 3, Nucleus.RegType.DWord);
  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Is Fullscreen mode_h3981298716", 0, Nucleus.RegType.DWord);
  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Resolution Height_h2627697771", Context.Height, Nucleus.RegType.DWord);
  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Resolution Width_h182942802", Context.Width, Nucleus.RegType.DWord);
  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Unknown Worlds\\Subnautica", "Screenmanager Resolution Use Native_h1405027254", 0, Nucleus.RegType.DWord);

  var appid = Context.RootInstallFolder + "\\steam_appid.txt";
  var lines = ["264710"];
  Context.WriteTextFile(appid, lines);

  var Gamefolder = System.IO.Path.Combine(Game.Folder);

  Context.RunAdditionalFiles(["1|" + Gamefolder + "\\Nitrox\\NitroxServer-Subnautica.exe"], false, 1);

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

  var path = Gamefolder + "\\Nitrox\\path.txt";
  var lines = ["" + Context.RootInstallFolder];
  Context.WriteTextFile(path, lines);

  Game.KillProcessesOnClose = ["NitroxLauncher", "NitroxServer-Subnautica"];

  Game.ProtoInput.OnInputLocked = function() {
    for (var i = 0; i < PlayerList.Count; i++) {
      var player = PlayerList[i];

      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetCursorPosHookID);
      ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.SetCursorPosHookID);

      ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.RawInputFilterID);
      ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);

      ProtoInput.SetDrawFakeCursor(player.ProtoInputInstanceHandle, true);
    }
  };

  Game.ProtoInput.OnInputUnlocked = function() {
    for (var i = 0; i < PlayerList.Count; i++) {
      var player = PlayerList[i];

      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetCursorPosHookID);
      ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.SetCursorPosHookID);

      ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.RawInputFilterID);
      ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);

      ProtoInput.SetDrawFakeCursor(player.ProtoInputInstanceHandle, false);
    }
  };
};