Diarkis の概要

Diarkis とモジュール

Diarkis はオンライン・マルチプレイヤー・ゲームなどのためのサーバーとクライアントのネットワーク・ミドルウェアです。

本ミドルウェアには、サーバー側とクライアント側の両方の SDK が付属しています。(サーバー側:Go、クライアント側:C++ および C#)

クライアント側には Unreal Engine のプラグインと Unity Engine の SDK も用意されています。

サポートする OS

  • Linux

  • Windows

  • MacOS

  • iOS

  • Android

サポートする Platform:

  • PS4, PS5

  • Xbox One, Xbox Series X, Xbox Series S

  • Nintendo Switch

  • Steam

サーバー・アーキテクチャの理念

Diarkis のサーバー設計は、サーバーの非集中化分散化に重点を置いています。

Diarkis サーバーは、単一のサーバーのように動作するサーバークラスタを形成するように設計されています。サーバーは100% Golang で書かれています。

この設計により、サーバー・クラスターは耐障害性(クラスター内の一部のサーバーに障害が発生しても、クラスタ内の残りのサーバーは全く影響を受けず、ゲーム・クライアントは単純に継続するために再接続する必要がある)と水平方向にスケーラブル(ユーザーのトラフィック量に応じて、単純にスケールイン/スケールアウトするために追加または削除)であることができます。

以下の図は、Diarkis サーバー・クラスターがどのように構成されているかを示しています。

  1. Pod はサーバーです。

  2. Diarkis クライアントを持つすべてのユーザー・クライアントは、UDP または TCP Pod と直接通信します。

  3. Diarkis は、TCP および UDP ネットワーク・プロトコルの両方をサポートしています。

  4. UDP の場合、Diarkis は再送、パケット順序制御、MTU 超過能力を備えた独自の RUDP を実装しています。

従来のアーキテクチャとの比較

Diarkis を使用せずに、同様のネットワーク・サーバー・システムを実装する方法は多数あります。

ここでは、そのようなシステムの最も一般的な方法の一つを取り上げ、Diarkis と比較します。

サーバーの維持管理 - 従来の方法

従来の方法では、リアルタイム・サーバーの追加や削除など、サーバーに対する変更はすべて手動でのメンテナンスと変更が必要です。これにより、人為的なエラーやその他の潜在的な問題が発生する可能性があります。

一方、Diarkis は手動メンテナンスを全く必要としません。すべてが自動的に処理されます。

システム全体の耐障害性

従来の方法で解決するのが非常に難しい問題が一つあります。それは、システム全体の単一障害点です。

システム全体を管理するために中央制御が必要です。この場合は、データベースになります。

Diarkis のサーバー・クラスターは完全に分散化されており、中央制御システムが存在しないため、Diarkis サーバーのクラスター全体を管理する中央制御システムがありません。これにより、システム全体の単一障害点の問題が効果的に解消されます。

クライアントからサーバーへの通信

Diarkis は、主にリモート・クライアントとのサーバー・リレー同期を使用します。

つまり、Diarkis サーバーはクライアントがデータを交換するためのハブとして機能します。

クライアントとサーバーの通信

Diarkis は主にリモート・クライアントとのサーバー・リレー同期を使用します。

これは、Diarkis サーバーがクライアント間のデータ交換のハブとして機能することを意味します。

Diarkis が提供するもう一つの同期方法は peer-to-peer (P2P) 通信です。

クライアントはデータを peer-to-peer で直接送受信します。サーバー・リレーのようにクライアント間にサーバーは存在しません。Diarkis はクライアントが直接通信するためのディスカバリーポイントとして機能します。

peer-to-peer 通信には 2 つのステップが必要です。まず、クライアントは自分のアドレスを交換し、ホールパンチングを行います。ホールパンチングが成功すると、クライアントはパケットを直接送受信することができます。

Diarkis クライアント SDK

Diarkis クライアントは C++ で書かれています。また、 C# インターフェースもあります。クライアント SDK には Unreal Engine プラグインと Unity Engine プラグインが付属しています。

Diarkis モジュール

Diarkis にはゲーム開発者が使用できる組み込みモジュールがあります。

最終更新