Найти в Дзене
Данил Кузнецов

Сравнение систем

Старая система ("система сетевого сглаживания") работала на основе предположений клиента игры о дальнейших действиях персонажей внутри игровой сессии. Она старалась предугадать действия игроков, опираясь на статистику и прежнее поведение бойцов, за счет чего отображала другим игрокам действия, которые персонажи должны были совершить по ее мнению в следующее мгновение.

Приемлемой рассинхронизацией между клиентом и сервером ранее считалось расстояние до полуметра (не постоянное, а в короткие промежутки времени). В такой ситуации игровой процесс выглядел корректно и плавно — "телепорта" не происходило. Хотя из-за этой разницы могли наблюдаться случаи "непрохождения урона".

Были и другие ситуации, когда фактическое поведение игрока слишком значительно отличалось от предположений игрового клиента. Тогда система понимала, что ошиблась, и пыталась исправиться — резко перемещала игрока в корректную точку, иными словами, случался "телепорт". В среде разработки это называется "ресинк".

В отличие от старой системы, новая синхронизация не допускает предположений, благодаря гораздо более активному общению между сервером и игровыми клиентами. В актуальных расчетах наблюдается рассинхронизация всего на 1-2 миллиметра практически в любой момент времени. Изредка эта разница достигает 3-5 миллиметров — и это огромная победа!

Более того, само понятие "ресинк" стало неактуальным в том смысле, в котором мы употребляли его ранее. Сейчас оно приобретает совсем иной характер, ведь корректировка измеряется в миллиметрах, но никак не в метрах.