about 2 years ago - /u/ - Direct link
A lil somethin somethin: You can find the details for this event on the announcement page here.
about 2 years ago - sknightly - Direct link


We’ve made some big decisions and big improvements which we believe set Stationeers up for a great year in 2022.

While we’ve been quiet for a while, this isn’t because we haven’t been working on Stationeers. Quite the opposite. In October last year we did a strategic review, and identified key areas of technical debt that if we took the time to redo would lead to big gains.

However, it meant we paused our monthly updates while we replaced some fundamental systems (such as networking). This decision did not come lightly but we felt it was best investment for the long-term success of Stationeers. Once we started refactoring the multiplayer we realised there was more work than anticipated, but it also created the opportunity to tackle other key systems and go more in-depth than originally planned.

While we don’t have a game update today, we can share what we’ve been working on and the results. This work will be a major milestone on our path towards Stationeers 1.0.

We are on the road to completing the biggest changes in the project since it began. This involved us rebuilding the way we handle multiplayer from scratch, adding a very efficient batched rendering approach for graphics optimization, and a massive cleanup of how memory is managed.

Rebuilt Multiplayer from Scratch

Stationeers was originally built using Unity’s High-Level Multiplayer API (HLAPI), a perfectly reasonable choice when the game was first made. However, as time went on and Stationeers grew beyond what we initially thought it would be, we found that the HLAPI became a bottleneck. We started to push the limits of what HLAPI could cope with. The effects of this could be seen when you had a save with a lot of things - every extra player would put a massive amount of extra load on the server, causing desync and failed connections.

In October last year we decided to stop, rethink and resolve this foundational issue. After serious deliberation of many different options we decided that, based on experiences on other RocketWerkz projects (such as Art of the Rail, which was designed for the tremendous scale like seen in games like Factorio), to build our own bespoke solution just for Stationeers.

The new system sends less data between players, will be more reliable to establish a connection and will allow larger groups to player together smoothly.

However, multiplayer was baked into how Stationeers was made from the start. This meant that even the task of removing multiplayer was already a big task. It turns out it was bigger than we originally anticipated!

Last year we successfully removed all traces of the HLAPI and had the game working again as a single-player experience. This year we’ve been busy doing the hard work of rebuilding multiplayer and the new system will be in the next game update.

Graphics Optimization: Batched Rendering
Screenshot from Masoneer#5778 Vulkan Base

Since we were not pushing monthly updates we saw this as a good opportunity to do further experiments in other problem areas of the game. One of those was that Unity’s batched rendering wasn’t doing the best job for how Stationeers is structured.

A Stationeers map can have thousands or even tens of thousands of things in the game, many of which are exactly the same item repeated. When these are sent to your graphics card to be rendered, if two things are the same with the same mesh and material then we can batch them and get performance gains.

We’ve been working on our own system that focuses on the high volume items in the game such as frames, cables and pipes and have had great results.

Metrics

These changes combine to double framerate on large bases!
To give you an idea of what kind of impact this work will have on Stationeers, we tested it out on community member Masoneer's large Vulkan base.

Removing the HLAPI saved 5ms from the time it takes to process each frame. This is approximately 14% of the time taken for a frame.

Removing redundant Animator components reduced the time to process a frame by about another 6.5ms (an additional nearly 20% optimization).

Additionally, the game was making significant memory allocations every game tick that would then need to be cleaned up. This is an expensive process that impacts performance in a big way. We reduced the amount of Garbage Collection from 500KB to under 1KB

Stationeers' Bright Future You’ll get to try out these performance improvements and the new networking system in the next update (coming soon, once through testing).

Now that we have clearly defined technical boundaries we can start to define the gameplay boundaries through game design. We often discuss “what is Stationeers?” internally and “where do we want this game to go?” Over and over again these conversations ended in frustration over the uncertainty of the technical limitations. Now that uncertainty is being resolved we look forward to publishing regular updates again.

While we still don’t have an exact date for you, we’re all very excited to share this work with you and to get back to making Stationeers everything that it deserves to be.