[Unite2019] 大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
動画・スライド:https://learning.unity3d.jp/3330/
竹原 涼 株式会社セガゲームス
山田 英伸 株式会社セガゲームス
学んだ知見
結論:HTTP/2でのダウンロードがおすすめ
講演概要
HTTP/2特徴
- stream多重化(TCP)
- HTTP/1.1は6コネクションくらい
- HTTP/2は100以上が推奨
- レスポンスを待たずに通信が可能
- ウィンドウサイズ制御(TCPのウィンドウサイズではない)
- 受信バッファあふれを防ぐ
- ヘッダ圧縮
- HPACKフォーマット(ヘッダサイズが減る)
- バイナリフレーム
- 通信データがテキストデータからバイナリに
ダウンロード特性の解説
HTTP/1.1では帯域を使い切れない
- 小さいファイルの転送では帯域が余る
- HoLBの仕様
帯域を無駄にしないHTTP/2
- 転送が終了したらすぐ別のストリームが開始される
- ストリームが複数動いたら帯域を分配する
- HoLB解消
- リクエストを送りながらレスポンスを受け取れる
HTTP/2の弱点
- 下層がTCPのためパケット欠損でHoLBが発生しうる
HoLBはHTTP/3で解決?
まだドラフトの状態
HTTP/2通信の実装の注意点
そのため登壇者はc/c++で実装した
2019/8現在もc#で利用できるモジュールは存在してない
所感
- アセットバンドルのDLを高速化したい場合はこの方法が良いとおもいました
- ただし開発工数がそれなりに掛かりそうなので要注意
- 今後HTTP/2対応が進んだ場合は優先的に対応を進める価値はありそう