A Subnautica Mod that randomises many aspects of the game for replayability, originally based on the first Subnautica randomizer. Over time, this project grew to become completely independent and today no longer shares any code with the original.
On first startup, the mod will randomise using recommended settings. You can either start playing immediately, or customise your experience in the mod options menu. Note that, should you choose to re-randomise from the mod options menu, you must restart your game for all changes to properly take effect.
The randomisation persists between play sessions and save games. This means you don't have to play it all through in one sitting, but also that you cannot have different save files with different seeds.
git clone
Dependencies
folder. This includes:
Assembly-CSharp.dll
. Start the game once using the BepinEx publiciser to generate them.SubnauticaRandomiser.dll
in SubnauticaRandomiser/bin/Release/
and automatically update the installed version in $SUBNAUTICA_DIR/BepInEx/plugins
Under the hood, the randomiser creates a new Unity GameObject for storing all randomisation logic. It then attaches Components as needed, depending on which config options are set. Only those Components which are actually needed are attached to the GameObject. Components primarily communicate via events, which means they do not rely on each other and can be individually turned on/off with no repercussions.
There are some basic Components that are responsible for steering the overall logic and are always attached. These are the Core Logic module and the Progression Manager. The core logic is what actually runs the main loop where game entities are randomised one by one, while the manager keeps track of overall game progression and ensures no softlocks. Events are invoked between the two of them as certain milestones are reached.
Here's a rough diagram of the overall structure and execution flow: