Skip to main content

Project Architecture

Nitrox-Architecture

Application projects​

Nitrox.Server.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​

Nitrox.Model​

Contains code common to the client and server without referencing Subnautica code directly. For example: Packet classes that are serialized between client and server.

Nitrox.Model.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.

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.