ゲームラグ白書 › L8 ソケットとプロトコル
信頼性UDPの再送設定 Reliable-UDP tuning (KCP, ENet…)
原因ID sk-reliable-udp · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
図と実験のあるメインページでこのカードを開く →
UDPの上に独自に作った再送ルールが保守的すぎると復旧が遅れ、攻撃的すぎると回線をさらに詰まらせます。
なぜ 再送の間隔・回数・ウィンドウサイズの設定が回線に合っていない → すると 復旧の遅れ、または重複送信による輻輳の悪化 → 画面では スキル不発、早送り、輻輳時にさらにひどいラグ
- 症状
- 不発・ロールバック, 早送り
- 要因
- パケットロス, 遅延
- 誰に起きるか
- 自分だけ
- いつ
- ときどきランダムに
- 担当
- 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
- ゲーム開発チームの対応
- サーバー:測定した往復時間に基づく再送、重要度ごとのチャネル分離。クライアント:サーバーと同じ再送・チャネル設定を適用。
- グラフでは
- 不定期なスパイク · 信頼性UDPの再送率、ゲーム内のRTT
- 確認箇所
- 使っているライブラリが接続ごとに持つ統計(再送数、推定往復時間、再送待ち時間)をサーバー・クライアントで記録し、同じユーザーの実際の回線のロス率(mtrで測った値)と比較
- 該当する場合
- 再送率が実際の回線のロス率より数倍高ければ攻撃的すぎる設定、再送待ち時間が測定した往復時間の数倍なら保守的すぎる設定
- 該当しない場合
- 再送率が回線のロス率と同程度で、待ち時間が往復時間に見合っていれば設定の問題ではない。回線のパケットロスそのものを確認
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
出典
- RFC 8085: UDP Usage Guidelines IETF
再送は輻輳を悪化させうるので輻輳制御の対象、往復時間は複数の測定の平均(EWMA)で推定、初期値1秒、タイマー満了時は送信レートを下げる
あわせて読みたい原因
同じ層:L8 ソケットとプロトコル
同じ症状(不発・ロールバック)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る