Hi there. I would like to share my open source plugin that enables distributed simulation of dedicated server:
Basically, you can combine multiple dedicated servers into one large world to support thousands of concurrent players online. Seamless travel and some basic interactions (rigidbody physics) across the servers are supported too.
The plugin has replaced the underlying networking and replication systems with custom code. In short, it uses TCP, Protobuf, and a code generation solution for the property replication and RPC. The developer should be able to develop in the native way, e.g. UPROPERTY(Replicated) and UFUNCTION(Server) , although some features are not fully compatible yet.
The whole system runs with a standalone gateway service which is also open source. The gateway service interconnects the UE clients and servers, and do jobs like message forwarding/broadcasting and interest management. The design is inspired by SpatialOS. It’s written in Go, which was preferred for fast iteration. I’m also considering rewritten it in C++ or Rust, as there are pain points like slow GC and reflection-based Protobuf marshal/merge.
Performance-wise, you can have 150+ concurrent players running in a single dedicated server stably at 30 FPS, thanks to the code-gen-based replication system and the offloading of interest management to the gateway service. Combing the servers is a different story though - the cross-server handovers add load on the system heavily. As of today, I have tested 600+ concurrently players running in 9 dedicated servers. With some optimization, I believe the CCU number can go up to 1K.
If anyone is interested in this technology, you can have a try - it’s totally free. Feedback is always welcome! If you are also interested in contribution, you are welcome to join the open source community!
I’m also looking forwarding to suggestions on the product. Like, do game devs really need this technology in the future?