Microsoft DirectX 8.0 (C++)

ネットワーク使用量の最適化

快適なゲーム体験の提供とは、通常、最新情報やその他の情報を、ターゲットの処理能力を超えない範囲で、できる限り速く送信することを意味する。Microsoft® DirectPlay® プロトコルと非同期メッセージングを組み合わせると、メッセージング方法を動的に最適化して、ユーザーに快適なゲーム体験を提供することができる。

メッセージングの大半では、IDirectPlay8Peer::SendToIDirectPlay8Client::Send、または IDirectPlay8Server::SendTo メソッドを使用する。これらのメソッドは、通常、メッセージ カテゴリに関係なく非同期に動作する。メソッドからは即座に復帰し、メッセージが実際に送信されると、メッセージ ハンドラに DPNMSG_SEND_COMPLETE メッセージが届く。一方、DPNSEND_SYNC フラグを設定すれば、メッセージを同期で送信できる。その場合、メソッドはメッセージが実際に送信されるまでブロックする。

DirectPlay プロトコルのスロットリング メカニズムでは、クライアントの処理能力を超える速度でメッセージが渡されないことが保証される。ただし、流出用のキューにメッセージが入る頻度は制御されない。このため、未送信メッセージのキューに大量のメッセージが溜まってしまうことがある。この状況はメッセージの送信頻度を抑えることによって避けることができるが、こうするとユーザーに提供されるゲーム体験の品質が不必要に低下しかねない。最もよいメッセージング方法は、ターゲットの処理能力を超えない範囲で、メッセージをできる限り速く送信することである。

メッセージング方法を最適化するためのヒントは、以下のようになる。