Nucleus Co-op v2.2.0
This is a new and improved official version of the Nucleus Co-op application and is part of the SplitScreen.Me github organization. This new version is based off of the Nucleus Co-op Alpha 8 Mod build and features a ton of enhancements.
Note: Some Nucleus Co-op hook dlls and Goldberg emulator, used by Nucleus, can sometimes be detected by Microsoft Defender and other anti-viruses and web browsers: this is 100% a false positive see here and here. You may have to allow Nucleus as an exception before extracting.
Prerequisites:
.NET Framework 4.7.2 or higher.
Microsoft direct download link :
https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net472-web-installer
Microsoft Visual C++ 2015-2022 Redistributable (both x86 and x64).
Microsoft direct download links :
https://aka.ms/vs/17/release/vc_redist.x86.exe
https://aka.ms/vs/17/release/vc_redist.x64.exe
Changelog:
- Huge code clean up and refactoring.
- New per game profile system (20 max per game) and new settings. The new profile system allows specific configurations per game, can be disabled in Nucleus Co-op settings.
- New UI changes and QOL improvements (crash windows, credits, prompt windows, handler downloader and more).
- New shortcuts: switch player layout (2 players only), toggle cutscene mode, reset windows. If using 2 or more monitors in cutscene mode all screens will have one instance unmuted.
- Added basic gamepad UI navigation, can be enabled/disabled in settings.
- Added gamepad support to all Nucleus shortcuts.
- Fixed UI highlighting the wrong controller in the UI when polling and controller sometimes being wrongly assigned in-game.
- Instances launch order changed from left to right/top to bottom to the order that input devices icons are dropped on each screen (same for single monitor). P1,P2,P3 etc. on the setup screen represent the launch order now.
- Removed the splashscreen.
- Better sorting of the game list.
- Better userprofile.json indentation.
- Added Goldberg emulator updater.
- Now Nucleus will try to unlock all the original game files (read only files) before symlinking, hard copying etc.
- Added new information messages that give feedback on Nucleus actions and shortcuts calls (keyboard and controller).
- Added Microsoft Visual C++ Redistributable version check and redirection to Microsoft website.
- Fixed "Download or update game covers" crash if no game handler has been selected/downloaded.
- Fixed game options menu at higher scaling factors.
- Fixed a long standing bug where it was possible to drop an input device in an expanded player area.
- Fixed a long standing bug (and not documented) where it was not possible to expand player bounds on negative monitors.
- Nucleus will now save its windows size and position.
- Fixed infinite loop when cleaning game content containing read only file(s) on session end or errors.
- Added debug log size check (max size 150kb) if max size is reached the log is deleted and logging is disabled.
- Fixed an issue with Steamless not applying when the game executable is inside a bin folder.
- Nucleus Co-op will not get stuck if the hub is down now (will still take ~ 4 seconds waiting for hub response).
- Added placeholder text for Game.Options: Game.AddOption("Title", "Description", "Option Name" , [leave empty]); // var option = Context.Options["Option Name"]; to retrieve the typed text. It works like the regular one but with an empty string array.
- Added Context.StartProcess(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\an-executable.exe");
- Added per-game KeepSymlink option in game menu.
- Added Context.EditTextFile(string filePath, string[] refLines, string[] newLines, string encoder); //refLines are partial or full strings to look for. newLines are new strings (full strings) that will replace refLines. Adding "Delete" as newLine will delete the corresponding reflLine from the file. Should work with any type of text files (xml, ini, txt).
- Added Game.GoldbergNoWarning = true; so Nucleus will not prompt if the Goldberg dlls are missing if the handler supports different platforms.
- Added Context.PlayerSteamID so we can get players steam ids from Game.Play.
- Added Context.FindFilePartialName (string sourceFolder, string[] partialNames);
- Added Context.GetFileName(string fullFilePath); //get the name of a file from its full path;
- Added hide taskbar parameter to Context.HideDesktop(); function, Context.HideDesktop(bool hideTaskbar) so no need to add the hide taskbar line.
- Added Game.BackupFiles = ["file1.txt", "file2.txt"]; and Context.BackupFiles = ["file1.txt", "file2.txt"]; both can be used in the same handler.
- Added Game.BackupFolders = ["folder1", "folder2"]; and Context.BackupFolders = ["folder1", "folder2"];
- Added Context.ToUpperCase to convert string to uppercase.
- Added Context.ToLowerCase to convert string to lowercase.
- Added a prompt on error so user can enable logging from it.
- Added debug log button when enabled in settings (opens debug-log.txt and a Nucleus install folder explorer window).
- Added Context.CopyFolder(string sourcePath,string destinationPath) example => Context.CopyFolder(Context.GetFolder(Nucleus.Folder.InstancedGameFolder) +"\Engine", Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\Citadel\Engine");
- Added Context.DeleteRegKeyValues(string baseKey, string sKey, string[] values); //where values is a string array of the value(s) you want to delete;
- Added Context.ExtractZip(string sourceZip, string contentDestination,string password);
- Added Context.EditZipFile(string sourceZip, string password, string savePath, string[] itemsToAdd, string[] entriesToRemove); //itemsToAdd => ["path where to copy in the zip|path of file/folder to add"]; Always add "\" at the end off the path if the content to remove is a folder;
- New Nucleus updater /!\ EXPERIMENTAL /!\ .