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

ゲームラグ白書 › L1 クライアントのゲームプロセス

フレームタイムのスパイク Frame hitch

原因ID cg-hitch · 主担当 ゲーム開発チーム・クライアント開発

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

1フレームの計算に普段の数倍の時間がかかり、画面が一瞬止まります。

なぜ スキルエフェクトの急増、大量スポーン、UI全体の更新が1フレームに集中 → すると 16.7ms以内に終わらず、50〜300msかかる → 画面では 画面が一瞬止まり、次のフレームで全員が一気に動く

症状
カクつき, フリーズ
要因
ストール
誰に起きるか
自分だけ
いつ
人が集中したとき, 特定の操作をしたとき, ときどきランダムに
担当
主担当 ゲーム開発チーム・クライアント開発
ゲーム開発チームの対応
重い処理を複数フレームに分散、プロファイラーで跳ねるフレームを特定、エフェクト数の上限設定。
数値の目安
60FPSの1フレームは16.7ms。50msを超えるフレームが1つあるだけでも「カクついた」と感じやすくなります。
グラフでは
不定期なスパイク · フレームタイム
確認箇所
PresentMonで、プレイ中のフレームタイム(FrameTime)と、そのフレームにCPU・GPUが費やした時間(CPUBusy・GPUBusy)を記録。モバイルはAndroid vitalsの低速セッション・低速レンダリングのメトリクス
該当する場合
普段は16.7ms前後のフレームタイムが50ms超に跳ねる瞬間が、スキル演出・大量スポーン・UI全体の更新と重なる。その瞬間もPingは変わらない
該当しない場合
フレームタイムは安定しているのに他のキャラクターだけが一瞬止まるなら、「補間バッファがないか短い」のようなネットワーク側。跳ねる間隔が規則的なら、まず「クライアントのガベージコレクション」を確認
確認手段
ユーザー側の環境で確認

出典

  1. Slow rendering Android (Google)
    60FPSを出すには1フレームを16ms以内に描画する必要があり、遅れるとフレームが飛ばされてカクつき(jank)として見える
  2. Slow Sessions (games only) Android (Google)
    Android vitalsは、ゲームのフレームが50ms(20FPS)・34ms(30FPS)を超えると低速フレームとみなす
  3. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime(フレーム間のCPU時間)、CPUBusy・GPUBusy(そのフレームの生成にCPU・GPUが費やした時間)

あわせて読みたい原因

同じ層:L1 クライアントのゲームプロセス

同じ症状(カクつき)を起こすほかの層の原因

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