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

Анатомия игровых лагов › L1 Процесс игрового клиента

Всплески времени кадра Frame hitch

ID причины cg-hitch · Основной ответственный Команда разработки · Разработка клиента

Открыть карточку в основной версии с иллюстрациями и экспериментами →

Расчёт одного кадра занимает в несколько раз больше времени, чем обычно, и картинка на миг замирает.

Почему Наплыв эффектов умений, массовый спавн и полное обновление UI приходятся на один кадр → Следствие Кадр не укладывается в 16,7 ms и занимает 50–300 ms → На экране Картинка на миг замирает, а в следующем кадре все разом сдвигаются

Симптомы
Микрофризы, Фриз
Факторы
Остановка
У кого
Только у меня
Когда
При наплыве игроков, При определённом действии, Изредка, случайно
Ответственные
Основной ответственный Команда разработки · Разработка клиента
Команда разработки: задачи
Разбивать тяжёлую работу на несколько кадров, искать долгие кадры профайлером, ограничить число эффектов.
Цифры для ориентира
При 60 FPS один кадр длится 16,7 ms. Хватает одного кадра длиннее 50 ms, чтобы игроку показалось, что игра «дёрнулась».
На графике
Случайные всплески · Время кадра
Где смотреть
Записать в PresentMon время кадра (FrameTime) и время, которое CPU и GPU потратили на этот кадр (CPUBusy, GPUBusy). На мобильных смотреть метрики медленных сессий и медленного рендеринга в Android vitals
Подтверждает
Время кадра, обычно около 16,7 ms, подскакивает выше 50 ms в моменты эффектов умений, массового спавна и полного обновления UI, а пинг в эти моменты не меняется
Опровергает
Если время кадра ровное, а дёргаются только другие персонажи, проблема на стороне сети, например «Буфер интерполяции отсутствует или слишком короткий». Если всплески идут через равные промежутки, сначала проверить причину «Сборка мусора на клиенте»
Чем проверить
Проверка на стороне игрока

Источники

  1. Slow rendering Android (Google)
    Для 60 FPS кадр нужно отрисовать за 16 ms. Если не успеть, кадр пропускается и картинка дёргается (jank)
  2. Slow Sessions (games only) Android (Google)
    Android vitals считает кадр игры медленным, если он длиннее 50 ms (20 FPS) или 34 ms (30 FPS)
  3. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime (время CPU между кадрами), CPUBusy и GPUBusy (время, которое CPU и GPU потратили на создание кадра)

Смотрите также

Тот же слой: L1 Процесс игрового клиента

Причины с тем же симптомом (Микрофризы) на других слоях

Карточка в основной версии с иллюстрациями и экспериментами