Overview of Diarkis
Diarkis and Modules
Diarkis is a network middleware designed for servers and clients, primarily intended for online multiplayer games.
This middleware comes with SDKs for both the server and client sides. (Server side: Go, Client side: C++ and C#)
For the client side, plugins for Unreal Engine and an SDK for Unity Engine are also available.
Supported Operating Systems
Linux
Windows
MacOS
iOS
Android
Supported Platforms:
PS4, PS5
Xbox One, Xbox Series X, Xbox Series S
Nintendo Switch
Steam
Server Architecture Philosophy
The design of the Diarkis server focuses on decentralization and distribution of servers.
This design enables server clusters to be fault-tolerant (even if some servers in the cluster fail, the remaining servers in the cluster continue to operate without any effect, requiring game clients to simply reconnect) and horizontally scalable (allowing for simple scaling in or out by adding or removing servers based on user traffic).
The diagram below illustrates the configuration of a Diarkis server cluster.
Pods are servers.
All user clients with Diarkis clients communicate directly with UDP or TCP Pods.
Diarkis supports both TCP and UDP network protocols.
For UDP, Diarkis implements its proprietary RUDP with retransmission, packet order control, and MTU exceed capabilities.
Comparison with Traditional Architectures
There are numerous ways to implement similar network server systems without using Diarkis.
Here, we will look at one of the most common approaches and compare it with Diarkis.
Server Maintenance - Traditional Method
In traditional methods, any changes to the server, such as adding or removing real-time servers, require manual maintenance and modifications. This can lead to human error and other potential issues.
In contrast, Diarkis requires no manual maintenance. Everything is handled automatically.
System-Wide Fault Tolerance
One particularly challenging issue to resolve using traditional methods is the single point of failure for the entire system.
Centralized control is required to manage the entire system. In this case, it would be a database.
Diarkis server clusters are completely decentralized, with no central control system to manage the whole cluster of Diarkis servers. This effectively eliminates the single point of failure problem for the entire system.
Communication from Client to Server
Diarkis primarily uses server relay synchronization with remote clients.
This means the Diarkis server acts as a hub for clients to exchange data.
Client-to-Server Communication
Diarkis primarily uses server relay synchronization with remote clients.
This means the Diarkis server functions as a hub for data exchange between clients.
Another synchronization method offered by Diarkis is peer-to-peer (P2P) communication.
Clients send and receive data directly in a peer-to-peer manner. There is no server between clients, like in server relay. Diarkis serves as a discovery point for clients to communicate directly.
Diarkis Client SDK
The Diarkis client is written in C++. There is also a C# interface available. The client SDK includes plugins for Unreal Engine and Unity Engine.
Diarkis Modules
Diarkis includes built-in modules that game developers can utilize.
Last updated
Was this helpful?