Расчёт одного кадра занимает в несколько раз больше времени, чем обычно, и картинка на миг замирает.
Почему Наплыв эффектов умений, массовый спавн и полное обновление 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, а пинг в эти моменты не меняется
Опровергает
Если время кадра ровное, а дёргаются только другие персонажи, проблема на стороне сети, например «Буфер интерполяции отсутствует или слишком короткий». Если всплески идут через равные промежутки, сначала проверить причину «Сборка мусора на клиенте»
Чем проверить
Проверка на стороне игрока
Источники
Slow renderingAndroid (Google) Для 60 FPS кадр нужно отрисовать за 16 ms. Если не успеть, кадр пропускается и картинка дёргается (jank)
Slow Sessions (games only)Android (Google) Android vitals считает кадр игры медленным, если он длиннее 50 ms (20 FPS) или 34 ms (30 FPS)