Как файтинг научился исправлять прошлое

В обычном сетевом файтинге игра иногда ждёт удалённый ввод, прежде чем показать следующий ход. При большой задержке это ощущается как пауза: нажал кнопку — персонаж ответил не сразу. Rollback netcode использует другой приём: игра не ждёт, а временно предполагает, что соперник продолжит делать то же, что и мгновение назад.

Когда настоящий ввод приходит, игра сверяет его с предположением. Если они не совпали, она возвращается к состоянию за несколько кадров до этого, подставляет полученные действия и быстро пересчитывает бой. «Откат» происходит внутри симуляции; иногда зритель замечает короткий рывок персонажа, но собственное нажатие обычно не приходится задерживать.

Почему это важно для старых игр

Такой подход особенно ценен в файтингах, где исход раунда может зависеть от точного момента: нужно успеть прервать атаку, защититься или выполнить комбинацию. При ожидании сети оба игрока чувствуют чужую задержку. При откате каждый чаще видит немедленную реакцию на свой ввод, а игра исправляет расхождение позже.

Для этого движок должен уметь быстро и одинаково пересчитывать состояние боя — позиции, удары, таймеры и другие события. Если пересчёт расходится у игроков, исправление само становится заметным. Поэтому добавить rollback к старой игре — не просто включить настройку: сетевую логику приходится приспосабливать к тому, как устроена сама игра.

Когда такой вариант связи становится доступен, расстояние перестаёт быть столь жёстким барьером для матчей. У старого файтинга появляется шанс собрать соперников и турнирную сцену за пределами местных залов: участникам уже не обязательно сидеть рядом, чтобы бой оставался отзывчивым.