A long time coming
Hello everyone! Long time no see. You might or might not know, that we have been very (seriously, very busy). The “Subnautica 2.0” update had a massive update to the code of the game, breaking Nitrox compatibility completely. Very few parts of the code still worked somewhat, but honestly? Barely anything worked and would just instantly crash Nitrox, meaning we had a lot of work to do. We have had to rewrite practically everything to fix this, and that is what we have been doing.
Back to the future
One of the things that have made working on the Nitrox project extra tedious is that UWE (Unknown Worlds Entertainment, developers of Subnautica) have been doing updates sporadically over the 7 or so years the Nitrox project has existed. Every update has broken major things and we have had to redo large portions of code for every single update. This big “Subnautica 2.0” update is however the final update to the game. So now we don’t have to worry about a potential update that will force us to completely rewrite large portions of the Nitrox code again. This should speed things up after we get this next update out, making it easier to fix bugs and sync various things. – You know, actually work on fixing things instead of just making it compatible to the same degree as the previous update.
Now, let’s get to what we have been up to!
The past, the present and the future
Going into this new update we decided to do something big. Go back in time, roughly 7 years, and overhaul the base code of Nitrox to make it more future-proof. A backlog of 7 years of documentation needed to be improved, so we have been working on that for Nitrox.
The main culprit however was and always have been the Subnautica code itself. There is a complete lack of documentation on how the Subnautica code works. Meaning we for most parts have to take educated guesses as to what code does what. Having to guess what is deprecated code or what code is still in use is an extremely slow process as every tiny change must be tested manually. This is what is making the update take so long to do.
So many lines of code
What we decided then was to do a rewrite, how big of a rewrite? Here are some numbers (as of this writing). On our master branch, we have 1330 files for Nitrox, with 60,2000 lines of code. The difference Between 22.214.171.124 and master (open-pr’s included) we have changed 1150 files, with 27,600 lines of code added and 25,100 deletions. This means that 87% of the files have been touched and a whole 65% of the code for Nitrox has been either completely rewritten or adjusted to make it compatible with the new code, that is a massive amount of work to have had to test manually and make sure works again.
Now the big question is, what do these lines of code do exactly? Well, one of the major things we have been working on is squeezing as much performance out of it as possible. Making sure we use less bandwidth where possible while still improving the amount of data sent and making it more reliable.
One of the things we worked on to improve our bandwidth usage was the packet size. In the current version of Nitrox, the packet sizes are always 1kb big. Sure does not sound like a lot in the modern day of gigabit internet, but it does add up rather quickly. So we went through the code and optimized it, by how much do you ask? About 4000% improvement, the packets should now be in the ballpark of 15-25bytes when you get your hands on the new update.
A new beginning
Besides optimizing the code we have been working on quality-of-life improvements is one of them. You see, in the lifepods, there happens to only be one seat for whatever reason. Obviously, it is a design flaw by the Alterra Corporation. So we added another seat to them!
As you also might have noticed, is that you can also see the other player in your lifepod! There are now 2 seats per lifepod, meaning if you join the server at the same time you should be able to see another player. Our end goal with this is that when more players join, they spawn into different lifepods either alone or together. However, this is something that will be worked on at a later date. For now, the world will hopefully feel more alive and you are all finding out that you are not all alone.
A stricter diet
As some of you might have noticed, the Crabsnakes seem a bit overfed, so we have given them a strict diet of no more than 1x Cyclops submarine per week. This will hopefully make sure that they are able to fit inside their mushroom houses again.
Some of the other things we have been improving on are syncing objects like the Gravity trap. The gravity trap should now be able to grab small objects like the fish and keep them there. If you log out, and back in again it should be there with all of the fish that it had trapped into its orbit.
If you liked having the posters around in your base, well now is your time to shine as we have worked on the code for them. They should now no longer fall through the floor but stay on the walls (obviously, just gave you better sticky tape!).
What is left?
There are some major things holding back the update, they are dealbreakers at this point.
- Movement is currently in a worse state than in the currently live version of the mod – For obvious reasons, we can not release until that has been fixed
- Finishing rework of the base building code, and then running extensive testing on it
- Fine-tuning the new Entity spawning system
- Vehicle Bay and Air pipes – Things that can be dropped or deployed into water
- Reefbacks – Spawning in “lumps”
- Crash fish – Stuck in their “homes”
These are, of course, some more things left for us to do. But these are the ones that come to mind first.
What we do not know, is how long is left before we can release the update in between work, social life and all the other things that happen. We will let you know as fast as possible when we have a more concrete time or at the very least an idea of when it will be ready.
A small thing to note, we are now on Bluesky! If you happen to be there feel free to say hello! https://bsky.app/profile/nitroxmod.bsky.social
Thank you for your patience!
– The Nitrox Team