KnossosNET / Knossos.NET

Repository for the Knossos.NET launcher, currently in development.
GNU General Public License v3.0
21 stars 10 forks source link

Knossos.NET

KnossosNET

Knossos.NET, also known as KNet, is a multi-platform launcher for Freespace 2 Open using .NET 6.0 and AvaloniaUI



Current Status:

Version 1.2 has been released!
Check out our download page: https://knossoslauncher.com/



Main Improvements:

Knossos.NET offers greatly improved performance and stability over the old Python-based Knossos. Because it is written in C#, builds can be released much more easily. Knossos.NET also minimizes the amount of memory and VRAM used, so that slower computers will not suffer performance penalties when running FSO. Knossos.NET furthermore supports compressed VPs, it can create compressed VPs when using the dev tab, and it can detect duplicate installations and hardlink them, reducing hard drive footprint. Finally Knossos.NET has additional features compared to original Knossos, while still maintaining feature parity. Some of these features are detailed below.



Mod Hardlinking:

Knossos.Net is able to create hardlinks between duplicate files or packages within the same mod. If a file has not changed in a new version of an FSO mod, then a hardlink can be created. Hardlinks are a way to tell the OS that we want the same file referenced in two different folders. A hardlinked file will appear in both folders that reference it, and it will be counted again with every reference when calculating hard drive space, even though it only exists once on the disk. Hardlinking can be disabled in Knossos.Net's settings tab, or during mod installation.

This greately minimizes hard drive usage, but comes with two things to keep in mind:
1) A hardlinked file will only be deleted once all of its references have been deleted. 2) If one copy of a hardlinked file is altered, then all the references point to the altered file. It really is multiple references to the same file. If you want to edit a mod's hardlinked file, please create a dev version of it in the dev tab. This will create a non-hardlinked version that can be safely edited.



Quick Launch Cmdline:

KnossosNET supports direct mod launch by adding a Command Line argument, this will open the launcher, and will launch FSO to play a mod with all the current settings and configurations, and close the launcher.
Example:

KnossosNET.exe -playmod mod-id -version mod-version (optional)

If no version is given (KnossosNET.exe -playmod mod-id) the highest version of the mod will be launched.
The "Mod Settings" window displays the Command Line to play that mod directly via quick launch.



Software Rendering Mode:

By default Knet will render the UI in the GPU, can be set to run completely on software rendering what effectively avoids any use of the user GPU, this will come at the cost of increased CPU usage, what should not be a problem when in idle.
You can force the software rendering mode by using the "-software" Command Line argument or by setting an environment variable "KNET_RENDER_MODE" to "software".



mod.ini Support:

Using legacy mod.ini files for mod folders is also supported, and some additional keys were added to extend support. mod.ini can be used to attempt to load an old mod or to manually add a mod to the launcher whiout having to write a mod.json file. The folder still has to be placed in the correct path inside the library as with any other mod.

Details on how Knet handles mod.ini and the new keys can be found here:
https://wiki.hard-light.net/index.php/Mod.ini#KnossosNET_Support



CmdLine Priority Explained:

On KnossosNET there are multiples sources of Command Line arguments that are eventually joined into a single one to launch the game, repeating arguments are not allowed.



Dev Environment:



Included Libs:



Current NuGet Packages:



Compiling for Linux and Mac: