ゲームラグ白書 › 同期設計
二重のティック待ち Double tick quantization
原因ID sy-double-tick · 主担当 ゲーム開発チーム・サーバー開発
図と実験のあるメインページでこのカードを開く →
リクエストを次のティックまでためてから処理し、結果もその次のティックで送ると、ティック間隔が2回分加わります。
なぜ 受け取ったリクエストは次のティックで処理 → すると 処理結果も次の送信ティックにまとめて送る → 画面では 回線のPingは低いのに、反応がティック間隔の1.5倍ほど一定に遅れる。10ティックのサーバーなら平均0.15秒、最悪0.2秒
- 症状
- 入力遅延
- 要因
- 遅延
- 誰に起きるか
- サーバー全体
- いつ
- 常に
- 担当
- 主担当 ゲーム開発チーム・サーバー開発
- ゲーム開発チームの対応
- 処理したティックですぐ応答を送る、ティックレートを上げる、重要な応答は即時送信。
- 数値の目安
- 10ティックのサーバーは1ティックが100msなので、ティック待ちだけで平均150ms、最悪200msが加わります。待つのが1回だけなら平均50msです。
- グラフでは
- 最初から常に高い · リクエスト到着から応答送信までの時間
- 確認箇所
- サーバー側のパケットキャプチャで、試験アカウントが同じ行動(例:アイテム使用)を何回か行うとき、リクエストパケットが届いた時刻とその応答パケットが出た時刻の間隔を測る。サーバーログがあれば、リクエスト到着時刻、処理したティック番号、応答を送った時刻を確認
- 該当する場合
- サーバー内でかかった時間が平均でティック間隔の1.5倍、最大で2倍ほどで、RTTに関係なく一定
- 該当しない場合
- サーバー内の時間が平均でティック間隔の半分前後なら、ティック待ちは1回だけ。ティック間隔よりばらついて長いならティックバジェット超過を確認
- 確認手段
- インフラのツールで確認(ゲームコード不要)
出典
- Peeking into VALORANT's Netcode Riot Games
届いた入力はティックの境界まで最大1ティック待ち、適用・送信にさらに1フレームかかる。ティックレートが高いほど短くなる - VALORANT's 128-Tick Servers Riot Games
遅延の一部はネットワーク、一部はサーバーのティックレートから来る - NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
NetworkVariableの変更はすぐには送らず、ネットワークティックごとにまとめて送信
あわせて読みたい原因
同じ層:同期設計
同じ症状(入力遅延)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る