ゲームラグ白書 › 同期設計
スキルの先行入力なし No input/spell queue
原因ID sy-no-queue · 主担当 ゲーム開発チーム・クライアント開発 · 副担当 ゲーム開発チーム・サーバー開発
図と実験のあるメインページでこのカードを開く →
前のスキルがサーバーで終わったという確認を受けるまで次のスキルを押せないと、連携のたびに往復時間が挟まります。
なぜ 次のスキル入力を「前のスキルの確定後」にだけ受け付ける → すると スキルとスキルの間に、毎回Pingの分だけ空白の時間ができる → 画面では 連携の間に毎回すき間ができ、Pingが高いほどDPSが下がる
- 症状
- 入力遅延, 不発・ロールバック
- 要因
- 遅延
- 誰に起きるか
- 自分だけ, 特定の機能だけ
- いつ
- 特定の操作をしたとき
- 担当
- 主担当 ゲーム開発チーム・クライアント開発 · 副担当 ゲーム開発チーム・サーバー開発
- ゲーム開発チームの対応
- クライアント:クールタイムが終わる前の一定時間(例:0.3〜0.4秒)以内の入力も受け付けてすぐサーバーへ送る、先行入力の受付時間。サーバー:少し早く届いた入力を拒否せず、クールタイムが終わった瞬間に実行。
- 数値の目安
- クールタイム1秒の連携でPingが150msなら、スキルの間が毎回0.15秒以上空き、同じ時間に使えるスキルが13%以上減ります。
- グラフでは
- 最初から常に高い · スキル間の空白時間、RTT(Ping)
- 確認箇所
- サーバーログに、キャラクターごとのスキルのクールタイムが終わった時刻、次のスキルのリクエストが届いた時刻、実行時刻を記録し、その間の空白時間をユーザーのRTTと比較
- 該当する場合
- クールタイムが終わってから次のスキルが実行されるまで常にRTT程度の空白があり、Pingが高いユーザーほど空白時間が長く、同じ時間に使ったスキル数が少ない
- 該当しない場合
- 空白時間がPingに関係なく一定なら、共通クールタイム(GCD)やアニメーションの長さの設計。空白時間がときどきだけ大きく跳ねるなら、ジッター・パケットロスかティックバジェット超過を確認
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
- もっと詳しく
- たとえばWorld of Warcraftは先行入力の受付時間を設け、プレイヤーが設定で調整できるようにしました。受付時間が往復時間より長ければ、連携の間にPingがほとんど挟まりません。
出典
- Latency and Player Actions in Online Games (Communications of the ACM, 2006) ACM
EverQuest IIでは、遅延が大きくなるほどキャラクターが与えるダメージが減って戦闘が長引いた(0→500msで約2分の戦闘が5秒延長)
あわせて読みたい原因
同じ層:同期設計
同じ症状(入力遅延)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る