Platform Architecture
Application projects
NitroxServer-Subnautica
Server application that is started by the Nitrox.Launcher project. It has serialization logic for Subnautica game entities which makes it easier to communicate with Nitrox clients. A future plan is to abstract away serialization to custom Nitrox objects instead of Subnautica game objects.
Nitrox.Launcher
Avalonia application for starting the server and/or Subnautica. The launcher will inject the Nitrox client code by patching the Assembly-CSharp.dll of Subnautica, just before starting Subnautica.
Nitrox library projects
NitroxModel
Contains code common to the client and server without referencing Subnautica code directly. For example: Packet classes that are serialized between client and server.
NitroxModel-Subnautica
Contains code common to the client and server (like NitroxModel) with serialization logic for Subnautica game entities which makes it easier to communicate with Nitrox clients. A future plan is to abstract away serialization to custom Nitrox objects instead of Subnautica game objects.
NitroxPatcher
Library that is injected into Subnautica. Handles modifying internal data structures and bootstrapping the client. It depends on the HarmonyX library.
NitroxServer
Server code library that knows about the packets sent between client and server. It should not reference any code of Subnautica directly.
NitroxClient
Injected as a reference to Subnautica via the NitroxPatcher project. Contains monobehaviours, UDP client, and packet handlers.
NitroxUnity
Asset library for UI/Game components introduced by Nitrox.
Nitrox.Test
Core unit testing project for all the other projects.