I worked on this.

I worked on this.

Hello, this is Zabir from the Astroneer dev team. The last time I wrote a blog post I spoke about the important of optimization and bringing that to Astroneer. Lately I’ve been focused on our plan for increasing performance and stability of the game, and was responsible for the first pass of a bigger update to performance that you would have seen in Patch 125. Performance is an on going challenge of building a game this early. So, I wanted to quickly talk about Astroneer’s performance and what is our plan going forward? There are three major ways we are going to attack the performance problem: streaming system, optimizing algorithms, and better OS/hardware interaction.

Streaming System

Astroneer is already a big game – both in size and in time spent exploring. Pair that with objects that don’t support streaming, e.g. foliage, tethers, and crafting objects, and it leads to a gradual slow down as you play the game. The goal of a streaming system is to unload/delete things that are far from the player so the engine does not spend CPU cycles or RAM managing them. Less things equals more FPS.

Prior to patch 0.2.10125.0 (“125”) once an object had spawned on to your planet it would not de-spawn. This meant after 3-4 hours of exploration the game was potentially managing over 10,000 objects. With Patch 125 we took our first step in build a streaming system for Astroneer. The current streaming system only supports grass/insignificant foliage like objects, but this was only step 1. The next stages will incorporate more object types into the streaming system (interactive items, base modules, vehicles, etc.). As more object types are supported, the less we have to be concerned with the size of the world or how much you’ve explored or how long you’ve been playing! A streaming system will allow us to create the illusion of a much bigger world, but only simulate things around you.

Optimizing Algorithms

Even if we are only simulating objects near the player, we still want to simulate them as efficiently as we can. This means we’ll optimize the various algorithms that compose Astroneer’s game mechanics, e.g. marching cubes algorithm used for terrain deformation and graph traversal of the tether and power networks to deliver power and oxygen. Optimizing these algorithms will improve host/client performance, draw distance since we can simulate more things in less time, and lower min spec by maintaining the same quality level, but running more efficient algorithms on lower end hardware. The more core an algorithm is to the game the higher it’ll be prioritized for being optimized.

Better OS/Hardware Interaction

Since shipping Astroneer we’ve made a big splash all thanks to the countless players of the game. This attention and positive reaction to our pre-alpha game has given us street cred to reach out to Microsoft, Intel, AMD and Nvidia for advice on how to best take advantage of their hardware and OS. There may be various things we are doing poorly on some specific machine configurations that we just don’t have in house. By working with partners we can learn to avoid pitfalls and run optimally on their platforms. As time goes on we’ll be diving in to these things as best as we can.

 

While brief, I do hope this gives an overview of our plan of attack to improve performance issues going forward. We are definitely taking notes and getting feedback. We are definitely making performance a priority.