Platform SDK: DirectX

ロビー セッション

ロビー セッションは、DirectPlay クライアント/サーバー セッション (「クライアント/サーバー セッション」の図を参照) によく似ている。ロビー セッションとは、ロビー サーバーへの接続を表す。この場合、クライアントとサーバーは、共同で機能するようには記述されていない。アプリケーション セッションとは、伝統的な DirectPlay セッションを表す。このセッションでは、すべてのクライアントとサーバーは、共同で機能するように記述されている。

DirectPlay を使用してロビー サーバーと通信するための最初のステップは、使用するロビー プロバイダと接続するロビー サーバーを選択することである。利用可能なプロバイダをほかの DirectPlay サービス プロバイダと同じように列挙し、接続を同じ方法で確立する。「DirectPlay アプリケーションを記述するための基本手順」を参照すること。

ロビー クライアントは、アプリケーション クライアントがアプリケーション セッションを検索してそれに参加する方法と同じ方法でロビー セッションを検索し、それに参加する (「セッション管理」を参照)。ロビー セッションに参加すると、クライアント アプリケーションはロビー サーバー上のすべての情報にアクセスできるようになり、ユーザーはロビー サーバー上のほかのユーザーとやり取りできるようになる。

DirectPlay アプリケーション セッションの場合と同じく、プレーヤーはロビー セッションにおける基本エンティティである。各プレーヤーは、ロビー サーバーに接続しているクライアント コンピュータ上のユーザーを表す。また、ロビー サーバーを表すサーバー プレーヤーも存在する。ロビー クライアントは、(ロビー セッションに参加することにより) ロビー サーバーに接続した後、ユーザーの存在を確立しなければならない。そのために、プレーヤーを作成し、そのプレーヤーがサーバーやほかのプレーヤーとの通信を開始する前に、そのプレーヤーを初期グループに追加する。事実、セッションに接続しているほかのユーザーは、このようにしてユーザーの存在が確立されるまでは、そのユーザーの存在に気付かない。

ロビー セッションに参加しているプレーヤーを管理するためには、アプリケーション セッションで利用するプレーヤー管理方法と同じ方法を使用する。「プレーヤー管理」を参照。

ロビー セッションに参加しているプレーヤーは、通常のメッセージを互いにやり取りすることはできない。DirectPlay のロビー構造では、DirectPlay API を使用する任意のアプリケーションは、任意のロビー サーバーに接続できる。つまり、同じロビー セッション内に複数の異なるロビー クライアント アプリケーションが存在し、それらすべてがアプリケーションで定義された異なるメッセージ セットを使用している可能性がある。

[C++]

しかし、クライアントは、標準のロビー メッセージと IDirectPlayLobby3::SendLobbyMessage メソッドを使用して、ロビーとメッセージをやり取りすることができる。さらに、プレーヤーは IDirectPlay4::SendChatMessage メソッドを使用して、互いにテキストを送信することができる。このメソッドを使用すると、ロビーはチャット メッセージを含むシステム メッセージを受け手に送信する。

[Visual Basic]

しかし、クライアントは、標準のロビー メッセージと DirectPlayLobby3.SendLobbyMessage メソッドを使用して、ロビーとメッセージをやり取りすることができる。さらに、プレーヤーは DirectPlay4.SendChatMessage メソッドを使用して、互いにテキストを送信することができる。このメソッドを使用すると、ロビーはチャット メッセージを含むシステム メッセージを受け手に送信する。

グループは、ロビー セッションではより重要な役割を果たす。これは、グループはロビー サーバー全体の編成を定義し、アプリケーション セッションを起動するために利用されるからである。

ロビー サーバーの目的上、グループはルームまたはステージング領域のいずれかに区分される。

ルームは、プレーヤーやほかのグループを保持できる標準のグループである。ルームは、主にプレーヤーがロビーのコンテキスト内でほかのプレーヤーとやり取りする出会いの場として利用される。ルームは、ほかのルームへのリンクと、もう 1 つの種類のグループ、つまりステージング領域へのリンクを保持する。

ステージング領域は、通常はプレーヤーだけを保持する。ステージング領域は、新しいセッションの開始にあたってプレーヤーを整理するために利用される。セッションを開始した後は、ステージング領域を破棄するか、または新しいプレーヤーが進行中のセッションに参加できるようにそのまま維持しておくことができる。

ルーム グループは、主に階層構造で整理される。最上位グループがいくつか作成され、続いて既存のグループ内にほかのグループが作成される。ロビー クライアントは、最上位グループと、グループ内に含まれているグループをすべて列挙することができる。ロビー サーバーは、グループを Web 構造に整理することもできる。作成したグループは、ほかのグループに追加することができる。すると、2 つのグループ間にリンクが作成される。ロビー クライアントがグループ内のグループを列挙すると、サブグループとリンク先グループがすべて返される。

次の図は、ロビー セッションの編成を示している。

プレーヤーは、グループに参加するまでは、認識されない。プレーヤーは一度に 2 つ以上のグループに属することができる。

通常、プレーヤーが確認できるロビー セッションの範囲は、そのプレーヤーが属するグループによって制限される。この制限により、サーバーがクライアントにダウンロードしなければならない情報量が軽減される。プレーヤーは、自らを現在のグループから削除し、新しいグループに追加することにより、ロビー サーバーの空間を移動することができる。