Skip to content

Latest commit

 

History

History
96 lines (81 loc) · 5.48 KB

README.md

File metadata and controls

96 lines (81 loc) · 5.48 KB

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.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) -exec fso-exec-type (optional)

If no version is given (KnossosNET.exe -playmod mod-id) the highest version of the mod will be launched.
If no fso-exec-type is given or "Default", or an invalid type is passed "Release" will be used instead.
Exec type options:
-Default
-Release
-Debug
-Fred2
-Fred2Debug
-QtFred
-QtFredDebug
The "Settings" window on a mod displays the Command Line to play that mod directly via Quick Launch. You can copy that Quick Launch Command Line and use it to create a shortcut to easily launch that mod.



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.

  • By default, the priority works in this order:

    • SystemCMD(Global Settings) > Global CMD > User/Mod CMD
  • Users also have the option to not apply the global Command Line on a per-mod basis by checking the box in a mod's settings. If checked, the priority is then only:

    • User/Mod CMD



Dev Environment:



Included Libs:

  • VP.NET
  • IonKiwi.lz4 (modified for LZ41 support)



Current NuGet Packages:

  • Avalonia 11.0.5
  • Avalonia.Desktop 11.0.5
  • Avalonia.Diagnostics 11.0.5
  • Avalonia.Themes.Fluent 11.0.5
  • Avalonia.HtmlRenderer 11.0.0
  • CommunityToolkit.Mvvm 8.2.1
  • ini-parser-netstandard 2.5.2
  • SharpCompress 0.33.0
  • AnimatedImage.Avalonia 1.0.7



Compiling for Linux and Mac:

  • Right click on the project -> Publish
  • Export to folder
  • From there you can pick the dest enviroment on the list