ロビー クライアント
ロビー クライアント
ロビー クライアントとは、ロビー サーバーのベンダーが実装し、各プレーヤのコンピュータにインストールされるアプリケーションである。ロビー クライアントは、プレーヤおよびゲーム アプリケーションと、ロビー サーバーの間の通信を処理する。ロビー クライアントをインストールするには、通常、サインアップ手順の一部で、ユーザーにロビー サーバーの Web サイトからロビー クライアントをダウンロードさせる。
一般的なシナリオは次のようになる。
- 新しいプレーヤが Web サイトにアクセスし、サインアップする。
- サインアップ手順の一部で、ロビー クライアントがクライアントのコンピュータにダウンロードされる。
- プレーヤが、プレーするゲームを選び、セッションへの参加を要求する。
- Web サイトが、プレーヤのコンピュータにあるロビー クライアントを起動する。通常の起動メカニズムは、ロビー クライアントの実行ファイルを指す URL である。
- ロビー クライアントが、手順を踏んでセッションを準備してから、ユーザーのゲーム アプリケーションを起動する。
- そのゲームがロビー可能アプリケーションなら、ロビー クライアントは、ゲーム アプリケーションがロビー サーバーと通信できるようにする。この接続により、ロビー サーバーは、プレーヤがゲームに加わったりゲームから抜けたりする、ホストが移行する、といったイベントを把握できる。
ロビー クライアントは、リモート サーバーにリンクされていなくてもよい。ユーザーがロビー クライアントを直接起動する、という別のシナリオもある。この場合、ロビー クライアントが、(たとえばユーザーのローカル エリア ネットワーク (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 はアプリケーションにデータをそのまま渡す。ロビー クライアントは、このデータを処理しなければならない。