次の方法で共有


ロビー クライアント

ロビー クライアント

ロビー クライアントとは、ロビー サーバーのベンダーが実装し、各プレーヤのコンピュータにインストールされるアプリケーションである。ロビー クライアントは、プレーヤおよびゲーム アプリケーションと、ロビー サーバーの間の通信を処理する。ロビー クライアントをインストールするには、通常、サインアップ手順の一部で、ユーザーにロビー サーバーの Web サイトからロビー クライアントをダウンロードさせる。

一般的なシナリオは次のようになる。

  1. 新しいプレーヤが Web サイトにアクセスし、サインアップする。
  2. サインアップ手順の一部で、ロビー クライアントがクライアントのコンピュータにダウンロードされる。
  3. プレーヤが、プレーするゲームを選び、セッションへの参加を要求する。
  4. Web サイトが、プレーヤのコンピュータにあるロビー クライアントを起動する。通常の起動メカニズムは、ロビー クライアントの実行ファイルを指す URL である。
  5. ロビー クライアントが、手順を踏んでセッションを準備してから、ユーザーのゲーム アプリケーションを起動する。
  6. そのゲームがロビー可能アプリケーションなら、ロビー クライアントは、ゲーム アプリケーションがロビー サーバーと通信できるようにする。この接続により、ロビー サーバーは、プレーヤがゲームに加わったりゲームから抜けたりする、ホストが移行する、といったイベントを把握できる。

ロビー クライアントは、リモート サーバーにリンクされていなくてもよい。ユーザーがロビー クライアントを直接起動する、という別のシナリオもある。この場合、ロビー クライアントが、(たとえばユーザーのローカル エリア ネットワーク (LAN) サブネットに接続されている) 利用可能なゲームとセッションを表示する。ユーザーがゲームとセッションを選択すると、ロビー クライアントがゲームを起動する。

ここでは、ロビー クライアントが持ついくつかの一般的な機能について説明する。ロビー クライアントと関連するロビー サーバーとの通信の詳細については、「ロビー対象アプリケーションとの通信」を参照すること。

実装の詳細については、「ロビー クライアントの実装」またはソフトウェア開発キット (SDK) に付属の LobbyClient サンプル アプリケーションを参照すること。

ロビー クライアントとの通信

ロビー対象アプリケーションと関連するロビー クライアントのやり取りの大半は、間接的に行われる。アプリケーションがロビー クライアントに影響する何らかの処理を実行 (または逆にロビー クライアントがアプリケーションに影響する何らかの処理を実行) すると、Microsoft® DirectPlay® が適切なメッセージを送信する。たとえば、アプリケーションが接続の設定を変更すると、DirectPlay がロビー クライアントに通知し、新しい設定内容を提供する。ただし、ロビー クライアントに情報を直接提供するため、以下の 2 つのメソッドも用意されている。それらは、IDirectPlay8LobbiedApplication::UpdateStatus および IDirectPlay8LobbiedApplication::Send である。

ゲームの状態に以下の変化のいずれかが発生したときには、ロビー クライアントに通知する必要がある。

  • セッションが接続された。
  • セッションが接続できない。
  • セッションが切断された。
  • セッションが終了した。
  • セッション ホストが移行した。
  • このコンピュータがセッション ホストになった。

ロビー クライアントにこれらの状態変化のいずれかを通知するには、IDirectPlay8LobbiedApplication::UpdateStatus を呼び出し、dwStatus パラメータを適切な値に設定する。状態の変化を知らせる DPL_MSGID_SESSION_STATUS メッセージが、ロビー クライアントに届く。

IDirectPlay8LobbiedApplication::Send メソッドにより、アプリケーションはロビー クライアントに直接メッセージを送信できる。DirectPlay はロビー クライアントにデータをそのまま渡す。そのデータの処理は、ロビー クライアントが行わなければならない。

ロビー クライアントも、アプリケーションにデータを直接送信することができる。データは、ロビー クライアントのメッセージ ハンドラに、DPL_MSGID_RECEIVE メッセージで渡される。DirectPlay はアプリケーションにデータをそのまま渡す。ロビー クライアントは、このデータを処理しなければならない。