ネットワーク その4 帯域 ボイスチャットについて

XNAフレームワークはボイスチャットをサポートしており、ヘッドセットがある場合に自動でチャットができるようになっています。便利な機能ではありますが、使用中はより多くのネットワーク帯域が必要になることに注意が必要です。

音声データは500 B/s以下の帯域に圧縮され、ヘッドセットに向かって喋った時のみにデータ転送を行います。

デフォルトの状態では全てのプレイヤー同士で会話することができるようになっています。もし、ひとりが他の15人のプレイヤーに話しかけた場合、

  • 500 * 15 = 7.3KB/s

ひゃー!! 8KB/sが目標だったことを覚えていますか?これではゲームデータを送る前に殆どの帯域を使い切ってしまいます。

 

では、この厄介なボイスデータ帯域問題をどのようにして解決することができるのでしょうか?

  • 同時にプレイできるプレイヤー数を少なくする
  • もしくは、LocalNetworkGamer.EnableSendVoiceを状況に合わせて変更する
    • 同じチームにのみ話せるようにする
    • 自分の近くにいるプレイヤーに対してのみ話せるようにする。ただし、頻繁にEnableSendVoiceを変更するのは止めましょう。この値を変更する度にその情報をネットワーク上に転送しないといけないので、頻繁に変更してしまうと逆により多くの帯域を使ってしまうことになってしまいます。
    • MotoGPではゲーム用のデータ転送量の少ないロビー内では16人全員が自由に会話でき、ゲーム内では最も近い3人のプレイヤーと会話ができるようになっています。

 

原文:
http://blogs.msdn.com/shawnhar/archive/2007/12/20/network-bandwidth-voice.aspx