Microsoft DirectX 8.0 (Visual Basic) |
Microsoft® DirectPlay® プロトコルは、以下の 2 種類の基本的なネットワーク メッセージングを処理するようになっている。
ゲームでは、さまざまな目的でメッセージングが使用され、個々の要求も多様である。メッセージングへのこの広範な要求に対応するため、DirectPlay プロトコルでは、メッセージを以下の 4 つのカテゴリに分類できる。
DirectPlay プロトコルでは、メッセージごとにカテゴリを割り当てて、メッセージング方法を最適化することができる。
メッセージは伝送の過程で失われることがある。"高信頼性" メッセージングでは、すべてのメッセージがターゲットに届くことが保証される。データの損失が許されないときは、この種類のメッセージングが必要になる。"高信頼性" メッセージングの多くのスキームでは、ターゲットに対して各メッセージの受信確認を求める。指定されたタイムアウト時間内に受信確認が届かない場合、差出人はメッセージを再送信する。通常、メッセージが届いたことを示す受信確認を差出人が受け取るまで、この手順が繰り返される。
DirectPlay プロトコルでは、再送信の回数に上限が設定されている。再送信をある程度繰り返しても受信確認が届かない場合、DirectPlay は接続が失われたものと見なし、接続を閉じる。
低信頼性メッセージングは、最も簡単な形のネットワーク通信である。メッセージがターゲットに配信されることを保証しないため、高信頼性メッセージングより高速で通信できる。差出人がメッセージを送信する。ターゲットにメッセージが届かない場合、差出人はメッセージを再送信せず、パケットは失われる。
低信頼性メッセージングは、主に、メッセージが失われないことより速度または帯域幅を優先する場合に使用される。たとえば、高帯域幅のストリーミング メディア アプリケーションでは、低信頼性メッセージングを採用することが多い。これらのアプリケーションでは、帯域幅を受信確認や再送信に充てる余裕がなく、失われたメッセージの再送信を待つこともできない。メッセージがときどき失われることは、品質にほとんど影響しないことが多く、無視しても問題ない。
メッセージは特定の順序で差出人の手を離れる。ただし、送信されたときと同じ順序でメッセージがターゲットのコンピュータに届くという保証はない。たとえば、メッセージが失われて再送信が必要になった場合、通常、そのメッセージは元の順序で後ろにあったメッセージより後に届く。
シーケンシャル メッセージングでは、メッセージに埋め込まれた順序情報を使って、メッセージが正しい順序でターゲット アプリケーションに渡される。ターゲット アプリケーションがメッセージを正しい順序で受信しなければならないときには、この種類のメッセージングが必要になる。順序どおりでないメッセージは、欠けているメッセージが届くまでバッファリングされる。
非シーケンシャル メッセージングでは、メッセージが、送信された順序に関係なく、ターゲット コンピュータに届くと同時にターゲットに渡される。非シーケンシャル メッセージングは、欠けているパケットを待つ必要がないので、メッセージが順序どおりに届くことより速度を優先する場合に使用されることが多い。順序どおりでないメッセージは無視される。
メッセージに適したカテゴリの選択は、マルチプレーヤー ゲームを開発するうえで中心になる問題である。DirectPlay にはメッセージングを管理するためのツールが用意されているが、メッセージ カテゴリの選択は、最終的にはメッセージの意味とゲームの性質に依存する。
最適なメッセージ カテゴリを選択するための一般的なガイドラインは、以下のようになる。