Multiplayer Update and Server Tech Info
Updated: Nov 8, 2022
We know that many of you are eager to know when you’ll be able to battle in teams online in Robocraft 2. Well, I can reveal that we’re working hard on that now and it will be our next major release. We will reveal more about the actual release date and the online team battle gameplay from the first map in the run-up, but for now, we wanted to share some details about how the server tech between RC1 and RC2 will differ and what that means in terms of your experience and the potential of RC2.
First, let's talk about the core server technologies in RC1 and RC2 and how they differ.
Client Authoritative in RC1 vs Server Authoritative in RC2
TLDR: RC1 is “client authoritative” so easily hackable whereas RC2 is “server authoritative” so super secure
In Robocraft 1 each player's client was what we call “authoritative” (as opposed to the server being authoritative). This meant that the servers just trusted your own PC’s view of what was happening. Without EAC, you could just edit the speed of your Wheels using something like CheatEngine and you’d easily move super fast and the server wouldn’t know that this wasn’t normal. Additionally, if you knew how, you could intercept network packets from your PC to the server and edit them to ensure you caused loads of damage to enemies that you didn’t actually do in normal gameplay and the server wouldn't know this was not normal. “Client-authoritative” means your client is in charge over the state of the game and not the server and so it’s quite open to hacking.
Physics on Clients vs Physics on Server
TLDR: RC1 could not simulate the physics of Robots pushing\colliding with each other without glitching very often, RC2 handles these physical reactions solidly allowing things like ramming, crashes, pushing, pulling, light vs. heavy etc.
In RC1 each player's client simulated the physics of their own Robot. According to your client, all other players' Robots were like immovable static objects just moved by the server. If the server moved another player's Robot so that it overlapped your Robot, then your physics simulation would react badly, sometimes flipping or glitching you. If your Robot was a Megabot then it could not push aside the tiny little enemy Robot when it got under your wheels, so your client would react by flipping your Megabot upside down when that little Robot moved.
Video Credit: Firenyth
In RC2 all the physics is simulated on the server, your client sends the input, the server processes it and sends everyone the result. This means that everything is where it should be on the server and we can make physical reactions between Robots feel right. Weight can really matter in RC2, light things can be pushed around and smashed to pieces by heavy things, Megabots can work properly, Robots can flip other Robots with intention instead of because of glitches.
Dumb Server vs Physics and Logic on Server
TLDR: In RC1 we could only do limited things in gameplay, in RC2 we can add tons of fun and varied dynamic elements within the gamepay of each map
In RC1 it was difficult to do any gameplay that required the map itself to play a role in the gameplay. The Protonium Crystals, Base Shield and Capture Points were minimal interactive elements that your clients managed (not the server).
In RC2 the gameplay logic and physics are done on the server. This opens up tons of opportunities for cool dynamic map elements for rich and varied gameplay differences between maps. In RC2 we can have a drivable Payload which requires players to hop in and deliver it to the enemy end zone. We can have manned and automated turrets that can be captured and controlled by your team. We can have moving capture points, and even OP pre-made Megabots that spawn when your team completes a certain objective and your team can all hop in and pilot it together as it romps down the map towards the enemy.
TLDR: When that guy drove sideways right into you as you rolled into battle, or when that guy seemed to shoot you through walls in RC1, that wasn’t some idiot driver or hacking it was the RC1 server tech. In RC2 we fix all this stuff.
In RC1, when you see the allies and enemies on your screen they are all in positions in the past relative to your Robot. How far in the past varies depending on how poor that player's ping time is to the server. If you’re playing against players in Asia, then you could be viewing their Robot even as much as two seconds ago. Robots can move quite far in two seconds so this can cause all kinds of problems.
Consider the moment at the start of every battle when you all roll out of the base shield. One of your teammates drives sideways right into you flipping you over, why? Well, on his screen your Robot was where it was a while in the past, so, on his screen he was moving into a space and your Robot wasn’t there and by the time your PC received his movement sideways you had moved into the space and he sideswiped you.
This issue happens when in combat too. You move behind cover, but due to his slow ping you are still in clear sight on his PC so he can shoot you. On your PC you see the bullets coming through the wall and call him out as a hacker. Your swift move into cover did nothing to protect you.
In RC2 everyone sends their input and the server does the physics and sends the results back to everyone. This means that all Robots are where they should be and no bullets can pass through walls (as that is done on the server too). All this time synchronisation is fixed and ‘what you see is what you get’.
What about Latency?
So, RC1 tech has one strong point. When you push your keys or move your mouse your Robot responds instantly on your client so it feels responsive, even if you have the worst ping in the whole world. The thing is, although you get a good response from your Robot, everything else in the game is a reflection of the past and makes playing with players all over the world pretty broken sometimes (shooting through walls etc.).
In RC2, since you send your input to the server and wait for the server to process that input and send you the result, there is a latency. If the latency is below a certain amount you don’t notice it (latency is measured in milliseconds) and it still feels perfectly responsive. When the latency gets above a certain amount you begin to notice and it feels less responsive.
So, our key aim is to get you all the benefits listed above over RC1 whilst still getting you low latency so it remains feeling responsive in RC2. This is a big challenge. There are two main areas of latency that we need to address and keep small:
Robocraft tech latency
Internet latency is straightforward. It is your ping time to the server. There are two ways to keep this super small:
Be close to the server (i.e. on Europe servers if you live in Europe and on Asia servers if you live in Asia). We will offer servers at key places in the world.
Make sure your PC has a solid connection to the internet (i.e. wired is better than wifi, wifi is still OK, using your mobile phones 4g signal is probably not so good)
The good thing about the RC2 system is that a player with a poor ping will not affect your experience negatively. They will not gain advantages like being able to shoot you through walls and they will not drive into you (unless they intended it).
‘Robocraft tech latency’ is the time your input takes being packaged up and sent from your PC to the server. It’s also the time it takes the server to simulate the results of your input. Finally, it’s the time it takes your PC to unpack the results so you see them on your screen. This part is all down to Freejam, and we need to work hard to get these times down. Techblox was the earliest version of this tech and we had latency issues for sure. In RC2 it’s a key area of focus and we aim to keep focusing on this until we solve it. We’re not the first company to do server authoritative technology and so it’s certainly doable and not rocket science, but it’s harder to achieve than the simple client-authoritative tech that RC1 used.