First things first: We decided to go back to the old alpha schedule. This means servers will open Friday afternoon (PDT) and will be up until Monday morning. We will start handing out alpha keys again next week (read further to find out why).
With that out of the way, let’s talk a little more about the network refactor. First of all:
What is the Network Refactor?
If Due Process was a car, the network refactor would be comparable to replacing its original gas engine with an electric one. You can't just swap one out for the other by itself, you'd need to replace the gas tank, strip out the existing wiring and exhaust systems, and rethink the gearbox and clutch. It might look the same on the outside, but once it's done, it's a completely different car under the hood.
At first glance, the game might look the same, but under the hood, almost every system has been replaced by something new. This is true for core game mechanics like moving and shooting and every other piece of gameplay interaction like grenades, doors, and the bomb. It might not be obvious, but the same is true for things like animations - the animations our artists created are still the same, but the code that's responsible for them to be activated correctly changed. If you are wondering how animations are related to networking code, imagine a situation where they are not synced between clients. It would cause you to hit the wrong part of your opponent or even miss them, while it looked fine on your end.
What will be different?
As you can imagine, the network refactor is a very complex task with a lot of different facets and a myriad of different sub-tasks. The core of the work is done. There are, however, still a lot of things that are not hooked up or are not working correctly yet. We consider the build you will play this weekend a preview of the network refactor. This is the reason we won’t be sending keys out this week. Here is a video from one of our recent internal tests, to give you an idea of the current state of the game:
These features will not be available in this build:
Shield
Shopping-cart technical
NVGs
Silencers
Shooting objects (lights, fan, props, fire extinguisher)
Threat indicators
And here are some of our known issues:
Sounds and animations behave unexpected at times
Muzzle and shooting effects are inconsistent
Molotov fire spreads through walls and doesn’t fall to the ground
Match count (the number below your circle in the main menu) will not increment
Lighting occasionally breaks
Sometimes after spawning you start “vibrating”, crouch to make it stop
Doors just vanish when kicked or charged instead of having physics
Besides that, prototype changes were only implemented for the old build and are therefore missing from the new one. This means no med-kits, no stims, and no armor system. We might see some of these concepts reintroduced later down the line in a non-prototype way.
Additionally, as mentioned above, a lot of the code in the game is network related. This is also true for the workload of your CPU. While the core of the refactor is done, we haven't yet had the opportunity to optimize it. This means that you might experience lower FPS and higher memory usage than you were used to with the old build.
Why was it necessary?
The old networking code was written at the very beginning of the project. As you know, though, this game has been in development for a long time and a lot has changed. As the game's systems developed and grew, so did our requirements for the networking code. We had to constantly adapt and tweak the code to keep it compatible with the current state of the game. Over time, it got harder and harder to address network-related issues like lag, bad hit detection, and disconnects. Especially desync issues used to be very common with the old system. At some point, our engineers concluded that it would be best to replace the system as a whole.
Today, we have a way better idea of what the exact requirements for our networking code are. The new code has been designed with these requirements in mind, and because of this, it is more flexible and easier to adapt than the old code. This means that we’ll have an easier time tackling network related issues and more stable networking logic in general.
How does it work?
The old system was built from nothing into something quite substantial, incrementally. In that system, each behavior and every object was handled independently. On one hand, this allowed us to easily make new objects network-aware. On the other, the complexity grew with the number of objects we were independently tracking. This ultimately led to a lot of the desync issues mentioned above: The state of an object is different for different clients and the server. If, for example, two players try to pick up the same weapon, sometimes both clients assumed that they successfully picked it up. On the server, however, obviously only one of them can have it, with the other owning a ghost copy that'd cause bad things when they tried to fire it. Another common example was picking up something right before a round ends. The client would send a message to pick up the item on the server, but it would be lost in the shuffle of loading the next map.
The new system is way more centralized - there is a single game object that all other objects use as a single source of truth. Now we only have to make sure this single object is properly synchronized on all clients. And as you can imagine, doing this for one object is way easier than doing this for a multitude of them.
Go play!
As mentioned above, this build is what we consider a first showing - we'll continue to bring back old features and improve the gameplay experience in the coming weeks. Expect another update before next weekend. Until then, have fun finally playing Due Process again. Don’t forget to give us feedback in the appropriate feedback channels on Discord. I’ll monitor these closely and make sure no feedback will be missed.
Thanks for sticking with us,
-th_pion