Knossos.NET, also known as KNet, is a multi-platform launcher for Freespace 2 Open using .NET 6.0 and AvaloniaUI
Version 1.3.0 has been released!
Check out our download page: https://knossoslauncher.com/
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.
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:
- A hardlinked file will only be deleted once all of its references have been deleted.
- 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.
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) -build {buildid} (optional) -build-version {version} -cmdline "{additional cmd arguments for fso}"
If no -build is given it will default to "FSO" if -build-version is also used. If -build-version is not used either mod default will be used.
-build-version supports both a specific version and the special strings "NewerStable", "NewerNightly" and "NewerRc" to select the newest one of each condition that is installed.
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.
You can launch installed mod development tools with a Command Line argument (just like how you can launch mods with QuickLaunch).
KnossosNET.exe -tool {tool-id}
On 1.3.0 a feature to "close to tray" has been implemented, this can be enabled on global settings.
Additionally, a Command Line argument (-traymode) has been added to Knossos.NET. By starting in this mode the launcher will start to tray and will not load UI resources until the user opens the UI for the first time.
The tray icon allow to launch mods directly from there.
From 1.3.0 KnossosNET will render the UI in software mode by default to avoid use of the user GPU, but it can be set to run on hardware GPU rendering.
You can force the hardware rendering mode by using the "-hardware" Command Line argument or by setting an environment variable "KNET_RENDER_MODE" to "hardware".
For versions older than 1.3.0 hardware rendering is used by default and can be set to run on software mode by using "-software" or KNET_RENDER_MODE" to "software".
A filter and tags feature offers QOL improvements to mod search and listening.
Filters are a physical button that will display all mods that contain that filter.
Tags are words that will be used in the search function to improve search results. Before this only the mod name was used for the search.
To add filters and tags to your mods please consult in the Discord channel or create a PR or issue at the GitHub link here: https://github.com/KnossosNET/KNet-General-Resources-Repo
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 KnossosNET handles mod.ini and the new keys can be found here:
https://wiki.hard-light.net/index.php/Mod.ini#KnossosNET_Support
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
- MSVC 2022
- .NET 6.0.406(or newer) SDK https://dotnet.microsoft.com/en-us/download/dotnet/6.0
- Avalonia Extension for Visual Studio https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaVS
- VP.NET
- IonKiwi.lz4 (modified for LZ41 support)
- Avalonia 11.2.3
- Avalonia.Desktop 11.2.3
- Avalonia.Control.DataGrid 11.2.3
- Avalonia.Diagnostics 11.2.3
- Avalonia.Markup.Xaml.Loader 11.2.3
- Avalonia.Themes.Fluent 11.2.3
- Avalonia.HtmlRenderer 11.0.0
- CommunityToolkit.Mvvm 8.4.0
- Microsoft.Extensions.Http 8.0.1
- ini-parser-netstandard 2.5.2
- SharpCompress 0.39.0
- AnimatedImage.Avalonia 1.0.7
- ObservableCollections 3.3.3
- WindowsShortcutFactory 1.2.0
- Right click on the project -> Publish
- Export to folder
- From there you can pick the destination environment on the list
Starting from 1.3.0, Knossos.NET supports "Custom TC Mode" which can be used to provide a customized launcher for a specific Total Conversion mod. "Custom TC Mode" supports customization via an additional json file or by hard-coding the data in.
More information and examples here: https://github.com/KnossosNET/Knet-CustomTc-Mode-Example