Hello everyone!As I’m sure many of you are aware, last month we announced the Besiege Multiverse update, which will bring a Multiplayer game mode as well as a Multiplayer Level Editor.Today I’m bringing you the first in a series of development blogs which will go into greater detail about the features of the Multiverse update and generally explaining how things will work!We decided to focus on how Physics will work in Multiplayer for this first blog, as we’ve noticed it’s been a major point of query and concern amongst the community.Anyway let’s just jump right into it. Performance
In Besiege Multiplayer all the session’s physics is handled by the host’s computer which then communicates with the connected player’s computers telling them what is happening. This ensures a relatively smooth experience, with all war machine’s appearance & movements being synced together giving each connected player an accurate view of what’s going on in the game.
Because all the physics is simulated on a single computer, you can expect to get a similar performance in multiplayer as you do in singleplayer. If your host’s computer can handle 500 blocks easily in singleplayer, then they can handle 500 blocks easily in a multiplayer session. Just to be clear, we’re talking 500 blocks total when all player’s machines are added together.
Another useful benefit of running all the game’s physics on one computer is that there is almost no performance load on the client player’s computers. This means that even if you have a low end computer, you can take part in multiplayer sessions containing as many blocks as the host can handle without experiencing poor performance!
We want to be abundantly clear here.
If the total block count of every player’s machines added together is too much for the host’s computer to handle, there will be performance drops. We have decided not to put a cap on the total allowed blocks, so it’s in the hands of the players to decide whether they want to load large elaborate machines into multiplayer.
During the course of multiplayer’s development we have tried several different ways of simulating accurate interactions between machines over a network and found the current method to be the best at balancing performance with accuracy.
Besiege’s Multiplayer mode has two different types of physics simulation, Global and Local.
During Global simulation, all players can interact with each other’s machines and the environment they’re playing in. In global simulation all the physics behind war machines and the level are run on the Host’s computer (aka the server).
Whilst Global simulation is active the level cannot be edited, but if a player is in local simulation, then the other players can continue editing the map.
Local simulation was created to allow players to test their machines without preventing other players from continuing to edit the level!
Local simulation (aka Ghost Mode) is where individual players simulate their machines independently from everyone else in the Multiplayer session. Players in Local simulation can still interact with the environment/level as it existed when they pressed the simulate button. During Local simulation all physics are simulated on the player’s computer and their machine is still visible to other players in a kind of ghostly form.
One of the first hurdles we had to overcome when making Besiege multiplayer was the sheer volume of information that would have to be sent via networking to the host and other players.
The main way in which we overcame this problem was using an innovative clustering system which, without wanting to get too technical, allows blocks to be placed into groups in order to reduce the amount of information being sent to other players.
This system reduces lag between players and the host whilst providing an accurate view of simulated machines which is shared by all players without sync issues.
Under the in-game menu you can toggle on a visual representation of the cluster system and see how your war machine’s blocks are grouped into clusters. You can use this mode to help you design machines that are more efficient for use in multiplayer, as some methods of building work better with the cluster system than others, see below for examples.
That’s all for now but we’ll be bringing you more Dev blogs about the Multiverse update as we get closer to releasing it!
We also thought we’d include this live action reproduction of a typical Besiege multiplayer session:
EDIT: Just to remind people, we’re aiming for release of the Multiverse update before the end of Q3 this year. (Around September)