한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

ゲームラグ白書 › L8 ソケットとプロトコル

信頼性UDPの再送設定 Reliable-UDP tuning (KCP, ENet…)

原因ID sk-reliable-udp · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発

図と実験のあるメインページでこのカードを開く →

UDPの上に独自に作った再送ルールが保守的すぎると復旧が遅れ、攻撃的すぎると回線をさらに詰まらせます。

なぜ 再送の間隔・回数・ウィンドウサイズの設定が回線に合っていない → すると 復旧の遅れ、または重複送信による輻輳の悪化 → 画面では スキル不発、早送り、輻輳時にさらにひどいラグ

症状
不発・ロールバック, 早送り
要因
パケットロス, 遅延
誰に起きるか
自分だけ
いつ
ときどきランダムに
担当
主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
ゲーム開発チームの対応
サーバー:測定した往復時間に基づく再送、重要度ごとのチャネル分離。クライアント:サーバーと同じ再送・チャネル設定を適用。
グラフでは
不定期なスパイク · 信頼性UDPの再送率、ゲーム内のRTT
確認箇所
使っているライブラリが接続ごとに持つ統計(再送数、推定往復時間、再送待ち時間)をサーバー・クライアントで記録し、同じユーザーの実際の回線のロス率(mtrで測った値)と比較
該当する場合
再送率が実際の回線のロス率より数倍高ければ攻撃的すぎる設定、再送待ち時間が測定した往復時間の数倍なら保守的すぎる設定
該当しない場合
再送率が回線のロス率と同程度で、待ち時間が往復時間に見合っていれば設定の問題ではない。回線のパケットロスそのものを確認
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要

出典

  1. RFC 8085: UDP Usage Guidelines IETF
    再送は輻輳を悪化させうるので輻輳制御の対象、往復時間は複数の測定の平均(EWMA)で推定、初期値1秒、タイマー満了時は送信レートを下げる

あわせて読みたい原因

同じ層:L8 ソケットとプロトコル

同じ症状(不発・ロールバック)を起こすほかの層の原因

図と実験のあるメインページでこのカードを見る