It’s Sylvain here, your CTO (Chief Tricks Officer) here at Bossa.
It is pretty clear you have been concerned about Worlds Adrift’s performance, and wondering how come it’s not completely fixed already. I’ll try to give you some explanations as to why it is a hard problem to track and how you can help.
This is long one, so if you do not care about the reasons we have issues, but still want to help, then just jump to the last section.
Framerate, Performance, Optimization, Lag, Stutter – what does it all mean?
The game you see is an animated sequences of rendered frames, if anything on screen does not update fast enough (25 frames per second at least) your brain perceives what it sees as a sequence of frozen frames rather than smooth movement. We have what we can call missed frames issues.
The second effect on some game implementation is that your control becomes sluggish as something called time dilation happens. This is when what was supposed to take, for example, 33ms (30 FPS) to render now takes more. The effect on screen is that things (animation, creatures, character control, etc) start to move slower. You could experience that even with a smooth game running at 30FPS instead of a planned 60FPS. The time dilation issue can be solved usually by performing any operations in the game proportionally to the duration of the render frame (we cheat and use the previous frame duration). E.g : if the software runs at 30FPS rather than 60FPS, move twice as much as you would per frame. All of Worlds Adrift code does this and only when reaching very slow frame rates would time dilation be a problem on your computer.
The third effect can be actions taking longer to respond than acceptable. This one is definitely specific to MMOs and Worlds Adrift in particular. This is related to any non-physical action you take in the game (change inventory, learn knowledge, access a chest. etc..) if the servers running that logic are under too much load then these operations that cannot be ignored start queuing and until the queue is empty, you will experience delayed response to your actions. This is the only one that does not take the effect of a sluggish game or animation, but of an unresponsive system. Operations take longer than expected to take effect. So usually this starts becoming a problem when the delay hits 1 second or more. Let’s call it Delayed Online Logic because we need to give it a name.
Different types of missed frames
So let’s look at the different types of missed frames we can identify.
- Bad FPS : the whole screens starts to be rendered at too low an FPS, when rotating the camera, you can perceive each frame separately or a slight stutter, controls can feel slightly more sluggish. Depending on your sensitivity and your hardware, this can start being a problem at any point under 60FPS, but it is usually considered that 30FPS or more is OK for an adventure game. Racing games and competitive shooters usually expect 60FPS. In VR this goes up to 80-90FPS. When we get bad FPS, each frame in a sequence we consider too slow, despite being stable-ish. There are two types of bad FPS:
- Orientation dependent FPS issues : the FPS becomes better when looking at the floor and worse when looking at some distant object. This is usually due to rendering issues (too much to render, GPU overloaded, etc).
- Constant FPS issues : the FPS is bad wherever you look. This is usually due to NON-rendering issues. (In reality, looking at the floor almost always helps. How much it helps is the defining factor; if when looking at the floor the FPS is still not great then you have a constant issue.)
- Frame Stutter : This is when one or a few frames out of a lot is significantly slower than the others. For example this can happen when an operation is running that stalls the whole computer; it could be due to Worlds Adrift or some other software (Windows has become a lot better at dedicating all of your computer to your game but it still happens). In Worlds Adrift this happens when reaching new islands and loading them or spawning at the beginning. Once this event is passed, the game then resumes its normal average framerate.
- Object Stutter : When an isolated object is not updating at the right framerate. This sometimes happens due to optimizations (object in the distance not updating at the full framerate) or because animation missed frames due to bad implementation. Your framerate is smooth, with no stutter (camera rotation is smooth) but something on screen is not animated smoothly. Worlds Adrift has few of these, but it has a lot of the next one.
- Online Physics stutter: This one is specific to Worlds Adrift and Multiplayer physics games (not that there are a lot of those). This is object stutter due to the online simulation not updating the object position on your screen often enough. This results is stuttering tree chunks, creatures jumping about and sometimes even other players’ animation being jumpy. This is usually due to bad network connection or very high Online time dilation (see under).
- Online Physics time dilation: This one is also specific to worlds adrift and online physics simulated games. In Worlds Adrift, almost all non-player related physics simulations are run on the servers. If for some reason the physics simulation is so taxing that the servers cannot run the simulation at 1 second every second, the simulation will start time dilating. The effect on screen is physical objects (tree chunks, creatures, ships, etc.) starting to move sluggishly.
- Ship Stutter/Rubberbanding: This is another example of Online Physics stutter, affecting ships. Because of their complex implementation, Ships suffer from specific issues with regards to stutter on top of all the other physics online issues. The main one is around authority handover. This is when the physics simulation of a ship gets handed over from one physics server to another. There is obviously a complex smoothing system to cover for these issues but sometimes things take longer than expected and no server is simulating your ship for a few frames. Also, of course being a more complex system, there are places where the code could be improved. Working on this actually requires understanding 8 different timelines, which are not only single point in space but points in space-time with some of these timelines potentially happening at a slower pace. If you were confused by the plot of Interstellar please do not apply for fixing these bugs.
Who’s fault is it then?
First is code optimization, or the lack thereof. Worlds Adrift is made of 3 separate code bases for the runtime rendering the frames, plus a bunch of other ones for slower systems like login, etc. Each system you see on screen has part of its functionality on more than one of those three parts. Until the whole game runs together with players putting load on it, it is hard to know what will be expensive and optimizing everything before knowing what is expensive can be an infinite time sink – one of the most effective ways to never release a game. So we needed information about what what to fix and how much effort to put towards it, and how to prioritize it against delivering actual game features. You can help with that.
The Worlds that are Adrift are big: each part of the world is simulated by different servers and this can make it difficult to even know that there is a problem. We cannot observe every part of the world at all times, and knowing that there are issues and where they’re at is part of the Early Access process. Some will result in needed optimization, some in modifying the server configuration, and some in changing the game map. As a result, knowing which area of the game world is having performance issues is important. You can also help with that.
This is your game too: By that I mean that most of what happens on screen is an expression of players’ choices. The islands were player created, the ships are player created, the players gathered together trading are based on player choices. We really only fully control the clouds and the creatures (they still react to players in some ways). This makes it hard for us to anticipate which parts of the system the player choices are going to put under stress. Knowing what players choose to do and where and how much/often and with whom is critical in focusing our development efforts. Knowing which scenarios you put yourself when experiencing performance issues is important. You can help with that.
Why should you care?
Worlds Adrift is a technological achievement and an ambitious design. Made by an indie studio, it achieves what no AAA studio even dares to tackle. Online multiplayer freeform physics play in a massive world created by players, with huge customization options. And it works… most of the time. So when it does not as well as expected, it is easy to ignore all of that and put out a review complaining about general performance issues. But if you want to help make Worlds Adrift better, please provide as much information as you can when reporting issues. Anything from that list (or all of it!) helps:
- Which server you were on
- Character name or steamID (not in a review or on public forums)
- Time/date of the issue
- Location on the map (if you have it, we made it hard on purpose), any info can help
- Type of issues experienced, it can be multiple ones from the list I gave above
- Duration (did it get better?)
- Number of ships/players around
- Your hardware configuration
- Are you using a VPN?
- Where are you in the world (the real one)
The amount of information helps us differentiate between the report being a statistical bit of info helping prioritize to actually pointing at one specific issue that we can then fix right away.
In the end, rest assured that your issues reports are all helping us. Even the general “Performance issues” ones. They help us decide where to focus our efforts and what to fix first for the biggest positive impact on gameplay.
We have already prioritized fixes for the upcoming updates : Ship rubberbanding (Updates 27, 28, 29), Delayed Online Logic (Update 29), general bad FPS issues (Updates 28 and 29), Frame stutter (Updates 27 and 29). These will not fix all of these problems completely, so please keep reporting as you have been already!
Thank you for your support and your help in making game history.