Если игровое время хранится в формате с плавающей точкой низкой точности (float), то чем дольше работает клиент, тем хуже разрешение времени (наименьшая различимая разница во времени), и движения и эффекты начинают дрожать.
Почему Время с запуска игры накапливается во float или как есть передаётся в шейдеры → Следствие Чем дольше работает клиент, тем больше наименьшая разница, которую может выразить float → На экране Только в клиенте, проработавшем несколько дней, дрожат персонажи, анимации и эффекты с бегущей текстурой, а после перезапуска всё нормально
Основной ответственный Команда разработки · Разработка клиента
Команда разработки: задачи
Хранить прошедшее время в double (64 бита) или в целых числах, время для шейдеров периодически сбрасывать (зацикливать), гонять многодневные автотесты.
Цифры для ориентира
У 32-битного float чуть больше 7 значащих цифр, поэтому через сутки работы (около 86 400 с) разрешение времени становится около 8 ms, то есть примерно половиной кадра при 60 FPS (16,7 ms), а через неделю около 60 ms, что уже больше одного кадра.
На графике
Плавный рост · жалобы на дрожание в зависимости от времени работы клиента
Где смотреть
Вместе с жалобой на дрожание узнавать, сколько клиент работал без перезапуска, и сравнивать до и после перезапуска. На стороне разработки: тест, в котором время старта игры выставлено на несколько дней назад
Подтверждает
Дрожание есть только в клиентах, проработавших несколько дней, пропадает после перезапуска и тем сильнее, чем дольше работает клиент
Опровергает
Если дрожит сразу после запуска, это «Буфер интерполяции отсутствует или слишком короткий» или «Разрешение таймера»
Чем проверить
Проверка на стороне игрока
Подробнее
Особенно часто встречается в мобильных MMO, где игроки включают автобой и не выключают игру по несколько дней. Time.time в Unity тоже float, поэтому в Unity есть отдельное значение Time.timeAsDouble в double, и рекомендуется использовать его.
Источники
Time.timeAsDoubleUnity Версия Time.time в double: при долгой работе точнее float, поэтому в большинстве случаев рекомендуется она