スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UDP通信

UDP通信の骨組みが完成しパケットを作成していてふと思った。
1パケットでどれくらいの大きさまでいけるんだろう??・・・

早速調べてみた。

・UDP パケットのサイズを 512 バイトより大きくする場合、 ホスト以外のデバイス (ルーターなど)の中には 512 バイトを超える UDP パケットをサポートしていないものがある点を考慮しなければならない

・PC自体(レジストリ)にもUDPパケットの最大サイズを指定するMaximumUdpPacketSizeという項目があり512 ~ 16384 の範囲で指定できる。デフォルトでは1280 バイト。

・Ethernetのフレームサイズの上限は1500バイト。
IP側で分割(Fragmentation)と再組立(Re-assembly)という機能があるため1500以下に規制されることはない。

・IP仕様書には最大長を規定しない代わりに「総てのサブネットワークは少なくとも576バイト長のデータグラムが処理できること」としている。
MTUの大きさに関わらず、576バイト以下でIPデータグラムを実装しろとな。

・IPv4ヘッダは20バイト。

・UDPヘッダは8バイト。(送信元ポート番号)(送信先ポート番号)(UDP長)(チェックサム)

・UDPで「安全」に送れるデータは548バイトまで(576 - 20 - 8 = 548)


結論:上記から最大は512バイトにしておこう。

具体的には:
FPSネットワーク対戦で仮に、

アプリケーションレベルのヘッダ+フッタ=4バイト
登録人数=1バイト
floatのXYZ情報=32bit*3=一人あたりの位置情報は12バイト
視点情報は精度により1バイトから12バイト(悩み中)


とすると
高精度だとして21人分となる。(11:11が限界)
モーション情報を含むとするとやはり視点ベクトルをを痩せさせるほうがいいのかもしれない。
別のパケットを用意して送ることも要検討といったところかな。

FPSやTPSのチーム戦で自分が生き返るまでの時間に仲間の視点になるゲームがよくあるが、照準方向まで再現してくれるものとそうでないものがある。
この辺を削ってしまうと再現しにくいことになる。悩む




話は変わって、1:複数のUDP送信には「マルチキャスト」が言いという話を聞いて調べてみたが、内容を見てみるとゲームに使う「それ」とは勝手が違い流用できず、がっかり。(手間が減り気分が良い。わーい)

ねよっと。

コメントの投稿

非公開コメント

プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。