Subnautica PDA

A companion app that extends the functionality of the PDA from the game Subnautica.

Subnautica is an underwater exploration and survival game, first published in 2014 by Unknown Worlds. Players assume the role of a passenger aboard the massive starship Aurora, which crashes into the watery Planet 4546B, where they must dive deeper and deeper to find the resources they need to stay alive, and eventually, to escape.

To progress is a cyclical process: Explore as far as you can, collect the resources you find there, use those resources to create more advanced tools to aid your exploration efforts, and repeat. In doing so, you create dozens of unique materials and pieces of equipment, made from the elements you find scattered across an area of about 12 square kilometers. There is an exponential aspect to the variety of these materials and equipment, and by the end of the journey, it’s a lot to keep track of!

When I first played through Subnautica, I was also starting to learn about JavaScript Arrays and Objects, and how to use them to do more in the “client-side” of web applications. I could think of no better dataset for such a project than Subnautica’s many items and crafting recipes, and Subnautica PDA was the result. It extended the PDA tool in the game, by adding the ability to “pin” the recipes for multiple items to a single screen, negating the requirement to remember all the items you need, and what those items are made of.

Subnautica PDA is built with PHP, JavaScript and VueJS. I originally wrote it procedurally, with jQuery instead of VueJS, but later discovered the awesome “reactive” power of VueJS, and made the switch. I also use Node, NPM, Gulp, and a few Gulp plugins to automate build-time tasks, like minifying and concatenating CSS and JS.

On December 13th of 2022, Unknown Worlds updated Subnautica to include several features from the sequel, Subnautica: Below Zero — including the ability to “pin” crafting recipes in the game.