Platform SDK: DirectX

ロビーとの関係の維持

アプリケーションでは、ロビーによって起動されたり、ロビーに動的に接続した後で、ロビーとの情報の交換を継続したい場合がある。たとえば、ロビー サーバーでは、現在ゲームに参加しているプレーヤーの人数やそのスコアをロビー内のほかのユーザーに表示するために、これらの情報を追跡したい場合がある。同様に、プレーヤーやゲームの構成がアプリケーション自体ではなく、ロビーで設定されている場合には、それらのデータを受信したい場合もある。

[C++]

ロビーとメッセージを交換するには、IDirectPlayLobby3::SendLobbyMessage メソッドと IDirectPlayLobby3::ReceiveLobbyMessage メソッドを使用する。

情報は、プロパティを設定することにより、ロビーに送信される。アプリケーションは、DPLMSG_SETPROPERTY メッセージ構造体を作成してデータを代入し、SendLobbyMessage メソッドを使用してそれをロビーに送信する必要がある。各プロパティは、データの個別のタイプを識別する。アプリケーション開発者は、デザイン時に、設定可能な各プロパティに GUID を割り当てる。ロビー オペレータは、この GUID のリストと、各プロパティの説明およびデータ構造体をアプリケーション開発者から取得する必要がある。

アプリケーションは、プロパティが正しく設定されたことの確認を求めることができる。それには、DPLMSG_SETPROPERTY.dwRequestID にゼロ以外の値を指定する。すると、ロビーは DPLMSG_SETPROPERTYRESPONSE メッセージを返す。

ロビーから情報を取得するときも、同じようにプロパティを要求する。アプリケーションは、DPLMSG_GETPROPERTY 構造体にデータを代入し、SendLobbyMessage メソッドを使用してそれをロビーに送信する。ロビーは、要求されたプロパティ データを含む DPLMSG_GETPROPERTYRESPONSE 構造体を返す。先ほどと同じく、アプリケーション開発者は各プロパティに対する GUID を作成し、それらをロビー開発者と共有する。

すべてのロビーがこれらの標準のロビー メッセージをサポートできるわけではない。アプリケーションでは、起動元のロビーが標準のロビー メッセージをサポートしているかどうかを判断することができる。それには、DPLMSG_GETPROPERTY メッセージを送信し、DPLPROPERTY_MessagesSupported プロパティを要求する。

詳細については、「DirectPlay 定義済みプロパティ」を参照すること。

[Visual Basic]

ロビーとメッセージを交換するには、DirectPlayLobby3.SendLobbyMessage メソッドと DirectPlayLobby3.ReceiveLobbyMessage メソッドを使用する。

情報は、プロパティを設定することにより、ロビーに送信される。アプリケーションは、DirectPlayMessage.WriteLong メソッドと DirectPlayMessage.WriteGuid メソッドを使用し、DPLMSG_SETPROPERTY C 構造体と同じ順序でデータを含む DirectPlayMessage オブジェクトを作成する必要がある。

ロビーから情報を取得するときも、同じようにプロパティを要求する。アプリケーションは、DPLMSG_GETPROPERTY C 構造体に含まれているデータと同じデータを含むメッセージを作成し、それをロビーに送信する。ロビーは、要求されたプロパティ データを含む DPLMSG_GETPROPERTYRESPONSE メッセージを返す。データを取得するには、DirectPlayMessage.ReadLong メソッドと DirectPlayMessage.ReadGuid メソッドを使用する。

詳細については、このトピックの C++ の記述を参照すること。