
Ну, или что такое "Лаг-шилд" (lag-shield) наглядно.
Все мы прекрасно знаем, что в игре есть такая замечательная фича как HSR (Host State Rewind - "серверная перемотка"). Эта такая приблуда, которая позволяет игрокам с большим пингом стрелять в мехов противника туда, где они видят их на экране своих мониторов, а не в пустое пространство перед ними, угадывая их реальное местоположение. Также мы прекрасно осведомлены о том, что этот самый ХСР не работает - это хорошо заметно при стрельбе при пинге 150+ по лайтам с пингом меньше 100. Лазеры не режут, СРМ-ки не дамажат. При попытке стрелять СРМками при собственном пинге 200+ можно в упор промахиваться по атласу с пингом 50... Рыбы честно признались, что не в курсе как порешать проблему с нерабочим кодом. Ответ лежит на поверхности, игроками уже несколько раз указывалось на косяк в принципе действия перемотки... Только вот рыбы не общаются с комьюнити. ВООБЩЕ. Так что надежд на фикс данной багофичи нет - сами они вряд ли смогут догадаться

Остается нести доброе-светлое-вечное в массы, просвещать новичков так сказать.
Как работает эта штука. Смотрим на картинку.
У нас есть игрок А и игрок В, которые перемещаются в пространстве-времени. Информация об их местоположении, скорости, действиях и т.п. приходит на сервер с запозданием, соответственно, для игрока А - с пингом А, и для игрока В - с пингом В.
Для простоты рассматриваемой картины принято, что пинг игрока В больше пинга игрока А, и игрок В стреляет мгновенно попадающим оружием (лазерами, к примеру).
Между двумя фиолетовыми линиями в центре показано как сервер воспринимает положение игроков с течением времени, выше показано РЕАЛЬНОЕ положение игрока А, ниже - РЕАЛЬНОЕ положение игрока В.
Так вот, эти два игрока бегают-прыгают, занимаются своими делами, и, наконец, находят друг друга (пусть это будет кольцо на Терме - самая часто выпадающая карта все-таки

Ну а теперь самое интересное. Информация от сервера идет к игроку В за время его пинга (показано синей стрелкой). За это время игрок А перемещается в РЕАЛЬНОМ пространстве до позиции, показанной фиолетовым пунктиром, но, опять же, информация о местоположении игрока А немного запаздывает, и сервер "думает", что игрок А находится на пару метров позади своего реального местоположения (фиолетовый пунктирный кружочек на линии сервера).
Информация дошла до игрока В. Все! ЗАЛП!!! Все лазеры ушли в цель!!! (напоминаю, игрок В видит картину, показанную зеленым!).
Информация о выстреле побежала обратно до сервера (вертикальная фиолетовая стрелка). За это время игрок А переместится еще дальше от первоначального местоположения (от "точки отсчета"). Теперь он находится в точке 1 ("1-point" как я ее на картинке обозвал). Выстрел игрока доходит до сервера в также в точке "1", только эта точка "1" для игрока В немножко другая

Включается рыбья приблуда ХСР, которая "перематывает назад" время на сервере, равное пингу игрока В. Что из этого выходит - показано на рисунке желтым цветом. FAIL

Из этого вытекают следующие выводы:
1) Важен не абсолютный пинг игрока, а конкретная разница между Вами и вашим виртуальным врагом. Игрок с пингом 50 мс будет лагать для игрока с пингом 100 мс ровно так же, как и последний будет лагать для игрока с пингом 150 мс.
2) Игрок А находится в абсолютном шоколаде - он видит игрока В в том месте, где его уже давно нет, и при этом игрок В получит 100% повреждений все равно.
3) Игроку В нет смысла "крутить торсом" когда он видит вспышки лазеров - он УЖЕ получил 100% повреждений. Поэтому - сначала отворачиваем фэйс, а уже потом, после выстрела противника, поворачиваемся сами и стреляем. Ну и снова отворачиваемся ДО! выстрела игрока А.
4) Игроки с равным пингом находятся в равных условиях (даже если оба играют какой-нибудь Папуа-Новой Гвинеи с пингом больше 10 секунд) - противник на сервере для них находится ровно в том месте где они его видят.
Ну а пираньям... ХСР должен работать по принципу: для каждого из 24 игроков в команде сервер должен 23 раза перематывать назад фреймы соответственно пингу каждого из оставшихся 23 игроков, играющих вместе с ним.
Многа букаф, сам ниасилил

