LogoLogo
日本語
日本語
  • Diarkis ヘルプセンター
  • Diarkis の概要
  • 始めよう
    • Diarkis サーバーテンプレート
    • Diarkis クライアント SDK
    • チュートリアル
      • 1. Diarkis サーバーをローカル環境で起動する
      • 2. テストクライアントで疎通確認する
      • 3. カスタムコマンドを実装する
      • Diarkis クライアントからサーバに接続する
    • サンプル
  • Diarkis のモジュール
    • Room モジュール
      • Room モジュールをサーバーでセットアップする
      • Room サンプル
        • room_broadcast
      • Room モジュールをクライアントから利用する
      • Room のその他の機能
    • MatchMaker モジュール
      • MatchMaker モジュールをサーバーでセットアップする
    • Field モジュール
      • Field モジュールをサーバーでセットアップする
    • P2P モジュール
      • P2P モジュールをサーバーでセットアップする
      • P2P サンプル
    • DM (Direct Message) モジュール
      • DM モジュールをサーバーでセットアップする
    • Notifier モジュール
      • Notifier モジュールをサーバーでセットアップする
    • Session モジュール
      • Session モジュールをサーバーでセットアップする
    • Group モジュール
      • Group モジュールをサーバーでセットアップする
  • Diarkis サーバー
    • Diarkis サーバをクラウド環境で起動する
      • AWS
    • Diarkis サーバーを Windows 環境で起動する
    • MARS サーバー
    • UDP サーバー
    • TCP サーバー
    • HTTP サーバー
    • Metrics API
    • サーバー間通信 - Mesh
  • Diarkis クライアント
    • ランタイム・ライブラリ
      • Diarkis RUDP
    • Diarkis Module
      • Diarkis Module の初期化と終了
      • Diarkis Module のカスタイマイズ
      • Diarkis Module のロギング・システム
      • マイグレーション
      • Diarkis のスレッド
    • サンプル
      • C++
        • room_broadcast
        • directmessage_simple
        • group_sample
        • matching_and_turn
        • matchmaker_ticker
        • p2p_rudp_sample
        • session_simple
      • Unreal Engine Plugin
        • FieldWalker
      • Unity Plugin
        • FieldWalker
          • HowToReplicatePosition.md
  • Diarkis ツール
    • Diarkis CLI
      • cgo を利用するプロジェクトをビルドする方法
      • Diarkis CLI v3 への切り替え手順
  • リファレンス
    • API リファレンス
    • リリースノート
      • v1.0
      • v1.0.1
      • v1.0.2
      • v1.0.3
      • v1.0.4
      • v1.0.5
      • v1.0.6
  • サポート
    • ライセンスと購入
GitBook提供
このページ内
  • Diarkis とモジュール
  • サポートする OS
  • サポートする Platform:
  • サーバー・アーキテクチャの理念
  • 従来のアーキテクチャとの比較
  • サーバーの維持管理 - 従来の方法
  • システム全体の耐障害性
  • クライアントからサーバーへの通信
  • クライアントとサーバーの通信
  • Diarkis クライアント SDK
  • Diarkis モジュール

役に立ちましたか?

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 サーバー・クラスターがどのように構成されているかを示しています。

  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 はクライアントが直接通信するためのディスカバリーポイントとして機能します。

Diarkis クライアント SDK

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

Diarkis モジュール

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

前へDiarkis ヘルプセンター次へ始めよう

最終更新 9 か月前

役に立ちましたか?

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

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

Golang
ホールパンチング
Room モジュール
MatchMaker モジュール
Field モジュール
P2P(peer-to-peer)モジュール
DM(Direct Message)モジュール
Notifier モジュール
Session モジュール
Group モジュール