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 のマッチメイキング方式
  • Diarkis MatchMaker の特徴
  • マッチメイキング中の通信
  • バックフィルマッチメイキング
  • チームマッチメイキング

役に立ちましたか?

  1. Diarkis のモジュール

MatchMaker モジュール

前へRoom のその他の機能次へMatchMaker モジュールをサーバーでセットアップする

最終更新 9 か月前

役に立ちましたか?

概要

Diarkis MatchMaker は、オンラインマルチプレイヤーゲームのユーザーのマッチメイキングを幅広くカバーします。Diarkis MatchMaker のデザインは非常にユニークです。中央集権的なデータストレージを持つのではなく、Diarkis サーバー・クラスター内の複数のサーバを共有ストレージとして使用します。

Diarkis MatchMaker は高速で、堅牢かつスケーラブルです。

Diarkis MatchMaker の分散型デザインにより、フォールトトレラント(障害耐性)とスケーラブル(拡張可能)な特性を持っています。

Diarkis MatchMaker の詳細およびドキュメントについては、をご覧ください。

従来のマッチメイキング方法

ここでは、従来の一般的なマッチメイキングの実装方法と、Diarkis MatchMaker によるマッチメイキングの実装方法を比較します。

データベース方式

データベース方式では、マッチメイキング・データを保存し、データベースのクエリを使用してマッチを作成します。

データベース方式の特徴

  • スケールの限界はデータベースのパフォーマンスの限界です。

  • マッチメイキング・プロセスの速度は、固定間隔で実行されるバックグラウンド・プロセスの間隔に大きく依存します。

  • 異なるデータベースにいるユーザーはマッチングされません。

インメモリ方式

インメモリ方式では、フロント・サーバー(ユーザーと直接通信するサーバー)を使用してマッチメイキング・データを保存し、マッチメイキング操作を実行します。

インメモリ方式の特徴

  • スケールの限界は、マッチメイキングのストレージと実行者としても機能するフロント・サーバーの限界です。

  • 異なるフロント・サーバーにいるユーザーはマッチングされません。

Diarkis のマッチメイキング方式

従来のマッチメイキング方法と比較して、Diarkis MatchMaker は無制限にスケーリングが可能です。

データはクラスター内のすべてのサーバーに共有されるメモリに保存されているため(冗長性を含む)、マッチメイキング操作は非常に高速に行われ、クラスター内の各サーバーは複数の操作を並行して実行することができます。これにより、非常に高速なマッチメイキングと堅牢な耐障害性(単一障害点がないため)が実現します。

Diarkis MatchMaker の特徴

  • スケーリングに制限がありません。サーバー・ノードを追加または削除するだけで、マッチメイキングのスケールイン/スケールアウトが可能です。

  • すべてのユーザーは、異なるサーバーにいてもマッチングが可能です。これは、Diarkis クラスタ内のすべてのサーバーがマッチメイキング・データを共有しているためです。

  • Diarkis MatchMaker は、要求に応じて複数のマッチメイキング操作を並行して実行できるため(バックグラウンド操作はありません)、マッチメイキング結果が非常に速く(秒単位、さらにはミリ秒単位で)得られます。

  • Diarkis MatchMaker には単一障害点がないため、サーバー障害がマッチメイキング全体に影響を与えることはありません。

マッチメイキング中の通信

Diarkis MatchMaker は、マッチングされたユーザーが自由に通信できるユニークな機能を備えています。これは、ゲームにロビー機能を組み込むのに最適です。

例えば、ユーザーが他のユーザーとマッチングを待っている間に装備やコスチュームを変更するシナリオを考えてみましょう。Diarkis MatchMaker は、ユーザーがそのような変更をリアルタイムで同期し、メッセージをやり取りすることを可能にします。

バックフィルマッチメイキング

Diarkis MatchMaker はバックフィルをサポートしています。マルチプレイヤー・ゲーム・セッションを開始する際に、他のユーザーがプレイしている間に追加のユーザーをゲーム・セッションに参加させる必要があるシナリオを考えてみましょう。ここでバックフィルが役立ちます。バックフィルは、すでにマッチングされたユーザーがプレイしている間に、他のユーザーがマッチングしてゲーム・セッションに参加できるように「扉を開けておく」ことを可能にします。

チームマッチメイキング

Diarkis MatchMaker は、複数のマッチメイキングを並行して実行することができます。これにより、Diarkis MatchMaker を通じてチームを編成し、対戦相手のチームを見つけることができます。

こちらのサーバー API ドキュメント