Platform SDK: DirectX

ピアツーピア セッション

ピアツーピア セッションでは、1 台のコンピュータがネーム サーバーに指定される。このコンピュータは、列挙要求に応答し、セッションに参加するコンピュータを調整し、セッションに参加した新しいコンピュータにセッションの状態をダウンロードし、プレーヤーおよびグループが作成されるたびに ID 番号を生成する。しかしそれ以前に、ネーム サーバーはセッションにおける 1 つのピアであり、ほかのすべてのピアと同じアプリケーションを実行する。メッセージはネーム サーバーを経由しない。また、ネーム サーバーはすべてのシステム メッセージを生成するわけではない。

DirectPlay は、ネーム サーバー機能を自動的に実行する。このネーム サーバー機能は、いかなる方法でもアプリケーションに公開されない。ネーム サーバー上で実行される DirectPlay アプリケーションのインスタンスは、セッションのホストでもある。セッション記述のデータを変更できるのは、ホスト インスタンスだけである。セッション内の各ピア アプリケーションは、セッションに参加しているプレーヤーとグループの完全なリストにアクセスでき、セッション内のほかのプレーヤーとの間でメッセージを送受信したり、セッション内のほかのグループにメッセージを送信したりすることができる。詳細については、「セッション管理」を参照すること。

セッションのネットワーク アドレスは、ネーム サーバーのネットワーク アドレスに対応する。コンピュータは、セッションに参加する必要がある場合、参加要求をネーム サーバーに送る。ネーム サーバーはこれに応答し、セッション状態を新しいコンピュータにダウンロードする。ネーム サーバーがセッションを離れると、新しいコンピュータがネーム サーバーとして選択される。ネーム サーバーが移行すると、セッションのネットワーク アドレスも変更される。

次の図は、セッションへの参加を示している。コンピュータがセッションに参加するには、セッションのネーム サーバーに参加要求を送る必要がある。

ピアツーピア セッションでは、すべてのコンピュータにおけるすべての状態変更 (プレーヤーの移動など) を、セッション内のほかのすべてのコンピュータにブロードキャストする必要がある。コンピュータが電話回線を使用して接続されている場合は特にそうだが、コンピュータが受信できるデータの量には制限があるため、アプリケーションでは参加できるコンピュータの数を制限すべきである。データ変更の量と頻度を最小限に抑えると、パフォーマンスを低下させずにセッションに参加できるコンピュータの数を増やすことができる。

ピアツーピアの DirectPlay セッションに参加しているコンピュータは、互いに直接通信する。つまり、メッセージは中間のコンピュータを経由して転送先に送信されるわけではない (ただし、ルーターを経由する場合がある)。同じメッセージを複数のコンピュータに送信する必要がある場合、DirectPlay はサービス プロバイダ内の任意のマルチキャスト機能の使用を試みる。マルチキャストがサポートされていない場合は、個別のユニキャスト メッセージが転送先の各コンピュータに送信される。

次の図は、マルチキャストを使用しない場合のグループ メッセージングを示している。メッセージをブロードキャストするために、個別のメッセージが各マシンに送信される。

グループ メッセージングは、4 人以上が参加するセッションでは効率を低下させる原因となる場合がある。セッションにマルチキャスト サーバーを追加すると、効率の低下を緩和することができる。マルチキャスト サーバーは、単一のメッセージを複数の転送先に転送するコンピュータである。セッションに参加しているほかのすべてのコンピュータにメッセージをブロードキャストするコンピュータは、1 つのメッセージをマルチキャスト サーバーに送信する。これに対し、マルチキャスト サーバーは、各メッセージをほかのすべてのコンピュータに送信する。この方法は、ほかのコンピュータが低速リンク (電話回線など) でネットワークに接続していて、サーバーが高速リンク (T1 回線など) で接続していれば、より効率が高くなる。

次の図は、マルチキャスト サーバーを使用したグループ メッセージングを示している。プレーヤー対プレーヤーのメッセージは、転送先に直接送信される。グループ メッセージはマルチキャスト サーバーに送信され、マルチキャスト サーバーがそのメッセージをすべての転送先マシンに転送する。

DirectPlay は、セッションでのマルチキャスト サーバーの作成をサポートしている。ネーム サーバーが十分に高速なリンクで接続している場合は、そのネーム サーバーをセッションに対するマルチキャスト サーバーとしても機能させることが可能である。マルチキャスト サーバーをセッションに追加しても、グループ メッセージ (ブロードキャストを含む) のルーティング方法が変わるだけであり、アプリケーションの動作は変わらない。プレーヤー対プレーヤーのユニキャスト メッセージは、引き続き転送先へ直接送信される。