Platform SDK: DirectX

ロビー

DirectPlay の ロビー サーバー は、(最低でも) DirectPlay アプリケーションの進行中のセッションと接続しているユーザーを追跡するための、ネットワーク上の共通の場所である。ユーザーはロビー サーバーを経由して興味のある場所を見つけたり、ほかのユーザーとチャットしたり、セッションに参加したり、プレーヤーのグループを作成して新しいセッションを開始したりすることができる。

ロビー サーバーの大きな利点は、それが中央の既知の位置として機能し、そこでユーザーがセッションを検索したり、対話相手のユーザーを見つけたりできるということだ。ロビー サーバーはさまざまなプレーヤーおよびセッションのネットワーク アドレスをすべて管理し、ユーザーのコンピュータ上でアプリケーションを自動的に起動して、それをユーザーの介在なしに適切なネットワーク アドレスに接続することができる。セッション、プレーヤー、およびネットワーク アドレスの管理は、インターネット上では特に有効である。

ロビー サーバーは、多数のサービスをユーザーに提供するように拡張することができる。たとえば、トーナメント、個別のスコア追跡、ハイスコア リスト、パーソナル プロファイル、アバター (ユーザーを表すグラフィカル要素)、掲示板、ニュース、会員の認証、ソフトウェアの更新などのサービスを提供することができる。

ロビー対応アプリケーションは、ロビー サーバーと共に機能するように特別に設計されたアプリケーションである。ユーザーが利用するロビーには 2 つの種類がある。つまり、外部ロビーと内部ロビーである。

外部ロビーは、ロビー サーバーおよびロビー サーバーに接続しているほかのユーザーとやり取りすることを唯一の目的としたクライアント アプリケーションである。ロビー クライアントは、アプリケーション セッションを開始したり、アプリケーション セッションに参加したりするときに、アプリケーションを独立したプロセスで起動し、セッションへの接続を確立するために必要な情報をすべて提供する。外部ロビーの起動に対するサポートを DirectPlay アプリケーションに追加することは簡単である。詳細については、「外部ロビーによる開始のサポート」で説明している。

内部ロビーは、ロビーのユーザー インターフェイスであり、アプリケーション自体に統合されている。内部ロビーは実装するのが難しい。これは、アプリケーションでゲームに対するユーザーインターフェイスだけでなく、ロビーに対するユーザー インターフェイスも実装しなければならないからである。しかし、アプリケーションのテーマに応じてロビーをカスタマイズできるという利点がある。

DirectPlay ロビーのアーキテクチャは、すべてのアプリケーション (外部ロビーのクライアントや、ロビー クライアントが組み込まれたアプリケーションを含む) が DirectPlay 互換のロビー サーバーに接続するために使用するクライアント API で構成される。このアーキテクチャは、ロビー プロバイダのインターフェイスを介して実現している。ロビー プロバイダは、サービス プロバイダと同じような機能を持ち、ロビー サーバーとのやり取りを抽象化する。ロビー サーバー アプリケーションの作成者は、クライアント コンピュータ上に常駐するロビー プロバイダを記述する必要がある。アプリケーションが標準の DirectPlay メソッドを呼び出すと、ロビー プロバイダのダイナミックリンク ライブラリ (DLL) が、ロビー サーバー ソフトウェアと通信することでこれらのメソッドをサポートする。

次の図は、DirectPlay ロビーのアーキテクチャを示している。異なるロビー クライアントのアプリケーションが DirectPlay API を介して、同じロビー サーバーに接続することができる。

最後に、ロビー サーバーは現在接続しているすべてのユーザーを追跡し、それらをグループ化して管理し、アプリケーション セッションの起動を同期させる必要がある。

DirectPlay API は、すべてのロビー サーバーに対する共通レベルの機能を定義する。任意の汎用ロビー クライアント アプリケーションが任意の汎用ロビー サーバーに接続し、DirectPlay API とロビー プロバイダのアーキテクチャを介して共に機能することができる。アプリケーションは、メッセージに対応して変更可能なプロパティを定義することにより、基本的な機能を拡張することができる。特定のロビー サーバーと共に機能するように設計されたロビー クライアントは、DirectPlay API で定義されていない拡張機能を実装することができる。