#Vordarim: Massive Medieval Battles with 512+ Simultaneous Online Players

1 messages · Page 1 of 1 (latest)

lucid valve
#

Hey guys, just wanted to bring you along on my dev progress with my current project "Vordarim", its a medieval battle game that we got a bunch of different game modes ideas, the crazy part is we are developing a custom dedicated server solution for handling massive 512+ player battles.

#

First test of the Dedicated Server (developed with rust).

All traffic sended with UDP, using 2 dedicated server for doing this test

x1 Germany dedi i9-10900K, 64ram
x1 France dedi with xeon e5-2680v4, 16gb ram

Germany dedi used for handling the server instances and all traffic.
France dedi was used for sending motion data to the german dedi to simulate the clients updates that you see on the video.

#

Net info at germany dedi

#

There are 646 total clients
Each client is sending 1 motion packet each 62.5msec to the server and the server replicates these movement based on 12hz syncrate to the other clients

#

All packets are compressed and batch sended to 1024 bytes limit to prevent udp fragmentation

lucid valve
#

Doing tests with 1024 clients

#

Trying to implement custom packets and network optimizations to make custom syncrate for each player scope

lucid valve
#

Success test with 1024 players

#

fps performance increased around 30%

#

And now net packets are a little bit more compressed

hollow crest
#

Is this networking framework going to be release to the public?

#

Also curious to know the network stack and libraries you are using to achieve this 🙂

lucid valve
lucid valve
#

ZSTD is used for decompressing the buffers that are received from the server

#

And with the socket lib we create one TCP Socket and other one UDP

#

UDP is used for fast sync / fast RPC like, shoots, raytraces, movement and these things

#

TCP only for secure RPC or things that you dont want to be losted or fragmented for nothing

#

And the server is developed with rust language and currently im using these libs:

zstd: Compressing / Decompressing outgoing and incoming traffic
mimalloc = Custom microsoft mem allocator for better performance
zerocopy: with that library its possible to send raw C++ structure and read as Rust structures without any memory manipulation cost
zerocopy-derive: Custom derives for zerocopy lib
tokio = For high I/O operations and spawning threads for socket and custom tasks

#

Thats all @hollow crest ^^

lucid valve
#

Reduced packet size 20% and improve error handling for packet loss