Important note: Unless otherwise stated FPS refers to server FPS.
As most will know, we achieved quite a milestone with over 50 players on the server recently. While this is pretty normal for the mod, it's a big deal for the standalone as the architecture is entirely different and so much has been moved onto the server. So what does this mean?
DayZ handles a minimum of 15000 dynamic objects. This is a huge amount of things to synchronize, in a MP environment. We implemented an entire rewrite of how objects are managed, linked with the "network bubble". Our chosen system was to implement an R-Tree approach and we have seen some success with this. Our aim was to reduce the massive FPS burden that all these dynamic objects bought, grinding the server to a halt. The main problem appeared to be scaling, in that the more players the worse it got.
Some details about server FPS:
- Not strictly "frames per second" on a client more akin to "simulation cycles"
- Max is 50 FPS
- Max simulation of player is 25 times per second
- Max simulation of zombie is 10 times per second
That means below 10 FPS, zombie behavior could be noticeably affected.
The Good news
We are no longer player number bound. It appears the server loses about 3 FPS per 40 players. We have only tested to 52 players currently. At that time, it was our first efforts with this number and we immediately found some missed areas of optimization, so with our next mass test we expect better results. The more players we threw at the server, its FPS numbers didn't change.
The Not-so-Good news
I was initially quite surprised because we still had a very high starting frame usage. 15000 loot items were using 1 FPS, that's right - just 1! But for some reason, 1000 zombies (despite all but 10 being at rest) were using a whopping 35 FPS. It didn't make sense and we've been going through this, optimizing and looking for the reason.
The Feedback from those involved
Overall, despite the performance concerns, with the server running around 8-12 FPS when under its heaviest load, the server was "reasonably responsive". Some people experienced inventory actions being a little bit slow occasionally, but generally it seemed things went okay.
Progress since the test
Since the test, we isolated two major crashes (resulting in server soak with constant players with no stability issue, no increase in RAM, and no decrease in FPS). We also optimized some areas. We're also busy hiding some areas and functions that are incomplete, as they either break or cause problems that we don't have the time to resolve before the Alpha's release. Perhaps one of the most serious gameplay issues we have at the moment is a very long time the player spends unconscious. It causes a problem for testing, so it's something we will be fixing before the release of the alpha.
Overall, the mood on development is quite upbeat. We're all pretty tired, as it has been very late and long working days. We had a new programmer and new designer start this week, and some assistance from the ArmA3 team to prepare the creation of our own audio team. We're looking forward to getting the Alpha out into Early-Access. I think that while some might be disappointed that this is not some feature-packed, graphically focused, masterpiece - we've been focused on addressing the major architectural issues and it's represented a massive body of work over the last 12 months.
We need a little more out of the server in terms of framerate. Just a little bit more, to ensure the inventory stays reasonably responsive. The remaining time will be spent tidying up remaining issues to try and give a more solid experience when we kick into the early access.
It really is an Alpha
I really can't emphasize enough - this is going to be an early access project on steam. It's a true-blue alpha. Massive areas of the engine were entirely reworked, involving a large team of people over the last 12 months. Much of what these achievements will enable won't be seen for many months - so I really plead for anyone who is on the fence to take a skeptical approach - watch streams, read reviews, watch some let's play and form your opinion. You could always come back to the game in three, six months time and buy it then.
Buying early will be a recipe for disappointment, it's a chance for those who want to be part of that whole process. For them, the process is as much as part of the game as the whole experience. For many, this is the opposite of what they want. To enable a smooth launch, we really are targeting it at a core audience who want to get deeply involved in a very barebones experience that is a platform for future development.