During my bachelor thesis at CipSoft, an independent developer and operator of online games from Germany, my task was to evaluate Netcode for Entities and its usability for massively multiplayer online games. After thoroughly testing Megacity Metro (results in Megacity Metro Demo Now Available ) I made my own Unity project from the ground up. Here is a short video about that project:
The project was used to conduct load tests trying to evaluate the maximum amount of connected clients (“concurrent users”). Running on off-the-shelf hardware, the game server was able to host 700+ concurrent users at 30 updates per second by the game server without visible stuttering. With higher amounts, for example with 1000+ concurrent users, the network traffic became the bottleneck, resulting in visible stuttering of the avatars. This was fully expected because synchronizing player avatars simply results in a square-growing amount of network traffic, hitting a physical limit at some point. Bottlenecks for CPU, GPU or RAM did not appear in the conducted load tests.
We made the project open source to enable others to try things out for themselves: GitHub - CipSoft/IncubationEvaluationNetcodeForEntities2024: CipSoft's evaluation of Unity's Netcode for Entities in June 2024
During our evaluation, Netcode for Entities did run stable and fast and supported several hundred concurrent users. It appears to be possible to build massively multiplayer online games with it. On the other hand, its documentation is below our expectations. Especially, such a remarkable feature like ThinClients is not really documented at all.
Unity’s Entity Component System (ECS) adds both performance and complexity to a project. One must make an informed decision whether that is a good deal for the own project. On the other hand, its documentation also is below our expectations. In addition, ECS in its current state in June 2024 does lack basic features compared to GameObjects, for example animation, sound or user interface. This lack requires hybrid solutions, adding even more complexity and reducing performance benefits.
Among the programmers at CipSoft it is the opinion that ECS currently is not ready to be used, but with the right improvements this might (and hopefully does) change in the future.