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.
Diarkis servers are engineered to form server clusters that operate as a single server unit. The server is entirely written in Golang.
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 only a reconnection for the game client to proceed) and horizontally scalable (easy scaling in or out by adding or removing servers based on user traffic needs).
The following illustration shows how a Diarkis server cluster is structured:
Pods represent servers.
All user clients with the Diarkis client communicate directly with the UDP or TCP pods.
Diarkis supports both TCP and UDP network protocols.
For UDP, Diarkis implements a proprietary RUDP with features such as retransmission, packet order control, and MTU exceedance capability.
Comparison with Traditional Architectures
There are numerous ways to implement similar network server systems without using Diarkis.
Here, we compare one of the most common methods for such a system with Diarkis.
Server Maintenance - Traditional Methods
Under traditional methods, all changes to servers, such as the addition or removal of real-time servers, require manual maintenance and modifications. This can lead to human errors and other potential issues.
In contrast, Diarkis requires no manual maintenance. Everything is handled automatically.
System-Wide Fault Tolerance
A significant challenge with traditional methods is the single point of failure for the entire system.
A centralized control is required to manage the entire system, which in this case, would be a database.
Diarkis server clusters are fully decentralized, with no central control system, thereby eliminating a single point of failure in the entire system.
Communication from Client to Server
Diarkis primarily utilizes server relay synchronization with remote clients.
This means the Diarkis server acts as a hub for clients to exchange data.
Client and Server Communication
Diarkis mainly uses server relay synchronization with remote clients.
This indicates that 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 can send and receive data directly peer-to-peer. Unlike server relay, there is no server between clients. Diarkis serves as a discovery point to enable clients to communicate directly.
P2P communication involves two steps. First, clients exchange their addresses and perform hole punching. Once hole punching is successful, clients can send and receive packets directly.
Diarkis Client SDK
The Diarkis client is written in C++. Additionally, there is a C# interface. The client SDK includes plugins for Unreal Engine and Unity Engine.
Diarkis Modules
Diarkis has built-in modules available for game developers to utilize.
Last updated