Microsoft DirectX 8.0 (C++)

混雑の制御

理想的な環境では、メッセージを必要なだけ送信できる。メッセージは直ちにターゲットへ届き、即座に処理される。ゲームにかかわるすべてのコンピュータが、十分な処理能力を持ち、負荷の軽い高帯域幅のネットワーク リンクで接続されていれば、この理想的環境に近付くことができる。そのうえで、メッセージを必要なだけ送信できる。ただし、多くの要因によって "混雑" が発生し、メッセージングが理想より遅くなることがある。

メッセージのスロットリング

メッセージの送信速度を制御しないと、大量のメッセージがターゲットに届き、処理しきれない可能性がある。この状況を避けるため、Microsoft® DirectPlay® プロトコルでは、メッセージの送信速度を "スロットリング" する。スロットリングの最終的な効果は、ターゲットがメッセージを処理できる速度によって、メッセージが送信される速度が制御されることである。

スロットリングは、"スライディング ウィンドウ" メカニズムを使って実装される。スライディング ウィンドウは、基本的には限られた数のスロットを持つキューであり、受信されていない送信済みのメッセージを保持する。流出するメッセージは、メッセージのカテゴリに関係なく、すべてこのキューに入れられる。送信済みメッセージ キューが一杯になると、キュー内のメッセージのいずれかが受信されるまで、流出するメッセージが受け付けられなくなる。

最高のパフォーマンスを提供するためには、スライディング ウィンドウのサイズを現在のネットワーク状況に合わせる必要がある。DirectPlay プロトコルでは、送信済みメッセージ キュー内のメッセージ数や総バイト数などの要素が、自動的に監視される。次に、現在のネットワーク状況に合わせてメッセージングを最適化するため、この情報を使ってスライディング ウィンドウのサイズが動的に調整される。

接続の検査

リンクが利用されていないと、DirectPlay プロトコルでは、高信頼性の空パケットを送信して繰り返し接続をテストする。再送信をある程度繰り返してもターゲットから受信確認が届かない場合、DirectPlay は接続が切断されたものと見なす。