Вопрос Ресольвер, что это и как его писать?

Начинающий
Статус
Оффлайн
Регистрация
9 Ноя 2020
Сообщения
153
Реакции[?]
7
Поинты[?]
0
Попрошу скинуть всю информацию об написании ресольвера, это очень мне поможет.
 
шатап книга
Забаненный
Статус
Оффлайн
Регистрация
7 Мар 2020
Сообщения
485
Реакции[?]
119
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1639574382350.png
гуглить не учили?
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
всю информацию
Всю это ты губу закатай, но что-то сказать могу.
В ксго есть юзеркоманды, каждая такая описывает какие кнопки пользователь нажимает сейчас, клиент шлет каждый тик команду серверу.
Сервер берет эти команды и симулирует с их помощью движение игрока, т.е. если в один тик нажата кнопка влево то сервер будет двигать персонажа чучуть влево.
Затем каждый тик сервер раздает всем клиентам пакет с состоянием сущностей, туда входят и сетевые переменные которые описывают где игрок находится и куда смотрит.
Суть в том, что клиент может не послать команду, а чокнуть ее (отложить), эта возможность в редких случаях используется самой игрой, когда откладывание снимается все отложенные команды придут на сервер в одном тике и он их исполнит так же в один тик.
Изначально те кто баловались с откладыванием команд заметили что голова по какой то причине может показываться не там где она на самом деле есть.
Они стали ковырять и обнаружили, что если чокнуть одну команду, а затем послать ее вместе со второй нечокнутой, то персонаж будет смотреть в одну сторону на сервере, а у клиентов будет смотреть в другую сторону, т.к. персонаж чучуть наклонен это важно т.к. можно прятать голову за стеной например.
Это называется фальшивые углы, они работали какое то время назад, причина была в коде симуляции на сервере, в функии прокручивания анимации была проверка чтобы это не происходило чаще чем в тик, поэтому когда 2 команды приходили в один тик, то сервер выполнял только первую из них и брал углы для себя из нее, а клиентам раздавал углы из последней команды.
Таким образом можно было абсолютно рассинхронизировать углы и обманывать других игроков, затем валв убрали эту проверку и казалось бы все должно быть +- нормально.
Но как говорится хуй там плавал, сервер стал выполнять обе команды, а клиентам все равно выдавал результаты последней.
Уже этот эксплоит называется десинком, из-за определенного кода анимации, разница углов между двумя фреймами анимации не может быть больше 120 градусов, поэтому теперь эксплоит сократился и когда клиенты получают неправильные углы от сервера они все равно не могут различаться больше чем на 120 градусов.
Теперь к резолверу, он нужен чтобы ты мог вычислять настоящие углы как их видит сервер и попадать по игрокам. потому что именно сервер проверяет попадания.
Сервер пересылает тебе углы и положение игроков, но не пересылает свое состояние анимации (оно отдельное у клиента и сервера), поэтому узнать что он там думает нельзя напрямую.
Но можно воспользоваться косвенными признаками, один из таких слои анимации, они передаются и изучив код анимации можно сопоставить какие углы сервер считает настоящими.
Советую поизучать слитый код игры, но там действительно можно заебаться.
 
Последнее редактирование:
Сверху Снизу