Гайд CS:GO Engine Prediction System

Модератор раздела «Создание читов CS2»
Модератор
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
365
Поинты[?]
151K
В этой теме вы узнаете:
- Что такое прогноз локального клиента.
- Для чего нужно это прогнозирование.
- Почему читам приходится вручную делать прогнозирование.
- И многое другое о его движке.

Что такое Engine Prediction / Для чего он используется
#1
При передаче информации между сервером и клиентом могут возникнуть проблемы. Для того, чтобы избежать несоответствия данных на сервере и клиенте, используется Engine prediction. Эта технология позволяет игровому движку предсказывать действия игрока и соответствующие последствия перед получением данных от сервера. Это позволяет клиенту игры воспроизводить действия игрока до того, как будут получены данные от сервера. Это позволяет игрокам играть без задержек и проблем в игре. В заключение, движок Engine prediction очень важен для игр вроде CS:GO, поскольку она помогает избежать несоответствий данных на сервере и клиенте.

Почему читам приходится вручную делать прогнозирование #2
Возможно вы уже знакомы с функцией CHLClient::Createmove в движке CS:GO — это функция, которая вызывается для обновления и создания движений игрока в игре. Она отвечает за все решения, которые принимает игрок во время игры, включая движение, прыжки, прицеливание и другие действия. Функция выполняется после того, как мир обновляется и игрок должен принять решение о том, как он хочет поступить. CHLClient::Createmove анализирует все возможные действия и возвращает решение игрока.
Так вот, Engine Prediction помогает определить будущее положение игрока заранее, чтобы игрок мог производить действия до того, как игровой движок обработает их. Это позволяет игре быть более плавной и быстрой. Все читы перехватывают функцию CHLClient::Createmove для создания различных манипуляций включая движение, прыжки, прицеливание и другие действия. Но вы(локальный игрок) отстаете на 1 тик в этой функции — это означает, что cmd отстает на 1 тик, поэтому, если вы(локальный игрок) движетесь очень быстро, угол, который генерирует ваш аимбот, будет неправильным, так как к тому времени, когда произойдет 1 тик, вы будете в другом месте в мировом пространстве, поэтому вы промахнетесь.
Видео пример:

Разбор функции
Пожалуйста, авторизуйтесь для просмотра ссылки.
#3

Пожалуйста, авторизуйтесь для просмотра ссылки.
используется для вычисления и применения логики, необходимой для обработки команд, переданных по сети. Каждая команда проходит через предсказание движка для вычисления ожидаемых результатов. Это делает работу движка более эффективной и позволяет игрокам использовать меньшее количество ресурсов при выполнении команд. Функция CPrediction::RunCommand также используется для предоставления игрокам преимущества при игре. Например, предсказание движка может использоваться для предвидения и предсказания действий противника и производить соответствующие изменения в поведении игрока. Это позволяет игрокам быть более продвинутыми в игре и получать больше преимуществ при игре. В общем, CPrediction::RunCommand является важной функцией движка игры CS:GO, которая отвечает за предсказание и обработку команд, переданных по сети. Она позволяет движку делать более эффективные и быстрые вычисления.
Ниже я объясню значимость каждой вызываемой функции.

Установка времени (
Пожалуйста, авторизуйтесь для просмотра ссылки.
)
#3.1
Пожалуйста, авторизуйтесь для просмотра ссылки.
устанавливаются для того, чтобы игра могла правильно обрабатывать движения игрока и предугадывать его действия.
Curtime устанавливает текущее время игры для обработки данных движения игрока.
Frametime устанавливает время между кадрами для прорисовки движений игрока. Это позволяет более гладким и плавным образом отображать движения игрока в игре.
1673007263476.png

Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.2
Пожалуйста, авторизуйтесь для просмотра ссылки.
используется для выбора оружия игроками. Это позволяет игрокам быстро и легко переключаться между оружиями. Кроме того, данная функция позволяет игрокам быстро и эффективно сменить оружие, чтобы быстрее адаптироваться к текущей игровой ситуации.
1673006706050.png

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


Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.4
Пожалуйста, авторизуйтесь для просмотра ссылки.
используется для обновления состояния кнопки после выполнения команды. Она просматривает предоставленную команду и обновляет состояние кнопки для связанного с ней действия. Например, если пользователь нажимает клавишу для прыжка, то функция UpdateButtonState будет обновлять состояние кнопки для прыжка, и игрок будет иметь возможность прыгать.
1673009394650.png
 
Модератор раздела «Создание читов CS2»
Модератор
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
365
Поинты[?]
151K
Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.5
Пожалуйста, авторизуйтесь для просмотра ссылки.
используется для проверки, находится ли игрок на движущейся поверхности. Эта проверка важна для того, чтобы предотвратить игрока от аффекта выпадения при перемещении на движущиеся поверхности для корректного отображения поведения игрока при перемещении на движущейся поверхности.


Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.6
Функция
Пожалуйста, авторизуйтесь для просмотра ссылки.
принимает во внимание последние изменения в позиции игрока и применяет их к игровому движку. Она обрабатывает данные игрока, анализирует изменения и состояние игрока, а также вычисляет необходимые действия игрока в процессе игры.



Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.7
Пожалуйста, авторизуйтесь для просмотра ссылки.
проверяет и обрабатывает все направленные игроком команды, а также отвечает за логику и поведение игрока. Эта функция отвечает за плавное передвижение игрока, а также за отслеживание его действий. Кроме того,
Пожалуйста, авторизуйтесь для просмотра ссылки.
отвечает за обработку других команд, отправленных игроком, таких как прицеливание, перезарядка и т.д.
 
Модератор раздела «Создание читов CS2»
Модератор
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
365
Поинты[?]
151K
Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.8
Пожалуйста, авторизуйтесь для просмотра ссылки.
вызывается после выполнения команды CPlayerMove. Она отвечает за обработку систем логики игрока, таких как анимация, физические свойства и поведение игрока. Функция RunPostThink принимает параметры для обновления игрового мира. Эти параметры берутся из текущего положения игрока в мире. Функция обрабатывает данные, используя другие функции движка. Далее, функция
Пожалуйста, авторизуйтесь для просмотра ссылки.
обновляет анимацию игрока, создает и изменяет физические свойства игрока, обрабатывает логику поведение игрока. После обработки всего этого, функция
Пожалуйста, авторизуйтесь для просмотра ссылки.
вызывает функцию для обновления окружающей среды. Это состояние поддерживается до тех пор, пока игрок находится в игре.
P.s на клиенте и сервере разные реализации кода.


Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.9
Пожалуйста, авторизуйтесь для просмотра ссылки.
вызывается в CPlayerMove::RunCommand для инициализации всех параметров движения игрока для данного кадра. Функция
Пожалуйста, авторизуйтесь для просмотра ссылки.
выполняет действия, такие как просчет начальной/конечной позиции, просчет перемещения игрока, обновление состояния игрока и проверку движения игрока на наличие коллизий.
 
Модератор раздела «Создание читов CS2»
Модератор
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
365
Поинты[?]
151K
Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.10
Пожалуйста, авторизуйтесь для просмотра ссылки.
обрабатывает и исполняет команды, которые пользователь передает игре. Функция
Пожалуйста, авторизуйтесь для просмотра ссылки.
несет ответственность за обработку ходьбы и движения игрока в игре. Она занимается изменением состояния игрока, а также скорости движения игрока, а также перемещения игрока по карте.


Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.11
Пожалуйста, авторизуйтесь для просмотра ссылки.
гарантирует завершение движения игрока. Она используется для обновления позиции игрока и проверки на наличие коллизий и других препятствий на пути. Функция обновляет позицию игрока и проверяет, не попадает ли он в какую-либо препятствия на пути. Также функция проверяет, не превысил ли игрок максимально допустимую скорость. Если игрок превысил скорость, он будет остановлен до тех пор, пока не будет найдена подходящая скорость. Эта функция также проверяет, установлен ли правильный путь движения игрока.


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

SetPredictionPlayer предсказывает движения игрока в движке игры. Функция предсказывает движение игрока по последнему полученному входному движению игрока, а затем использует это предсказание для прогнозирования движения игрока до следующего полученного входного движения. Это помогает корректировать движение игрока в случаях, когда входное движение приходит слишком поздно для правильного отображения движения игрока.
 
Модератор раздела «Создание читов CS2»
Модератор
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
365
Поинты[?]
151K
Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.13
Пожалуйста, авторизуйтесь для просмотра ссылки.
выполняет все воздействия, которые игрок ощущает в игре. Функция проходит через каждое воздействие, полученное игроком, и применяет его к игроку. Например, если игрок попадает под воздействие силы или взрыва, его персонаж будет отталкиваться или получать урон. Функция также обрабатывает все воздействия, которые должны быть применены к игроку, включая изменения положения и поворота, сопротивления и перемещения и т. д.


Пожалуйста, авторизуйтесь для просмотра ссылки.
#3.15
Функция
Пожалуйста, авторизуйтесь для просмотра ссылки.
проверяет предсказания перемещения игрока в движке игры. Она позволяет проверить, соответствует ли предсказанное движение игрока реальному движению игрока на сервере. Если есть ошибки в предсказании, то они корректируются, чтобы соответствовать реальному движению игрока. Функция проверяет предсказания и обновляет их, если требуется.
 
Легенда форума
Статус
Онлайн
Регистрация
10 Дек 2018
Сообщения
4,219
Реакции[?]
2,184
Поинты[?]
84K
Всё круто, но это, случаем, не перевод иноязычной статьи? Просто какие-то странные и довольно неясные формулировки больше половины текста составляют. Очень похоже на работу переводчика. Вот например:
CHLClient::Createmove анализирует все возможные действия и возвращает решение игрока. Это позволяет игре предлагать игрокам более реалистичные движения и действия.
Как понять "анализирует все возможные действия"? Следующее предложение так вообще никакой конкретики не вносит.

Гуд жоб энивей.
 
Модератор раздела «Создание читов CS2»
Модератор
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
365
Поинты[?]
151K
Всё круто, но это, случаем, не перевод иноязычной статьи? Просто какие-то странные и довольно неясные формулировки больше половины текста составляют. Очень похоже на работу переводчика. Вот например:
Как понять "анализирует все возможные действия"? Следующее предложение так вообще никакой конкретики не вносит.
Гуд жоб энивей.
Нет, я не переводил иноязычную статью и не пользовался гугл переводчиком. Если вы другого мнения, прошу показать мне оригинальную статью.
Под "анализирует все возможные действия" я имел ввиду этот перечень действий:1673016574806.png
 
Легенда форума
Статус
Онлайн
Регистрация
10 Дек 2018
Сообщения
4,219
Реакции[?]
2,184
Поинты[?]
84K
Нет, я не переводил иноязычной статью и не пользовался гугл переводчиком. Если вы другого мнения, прошу показать мне оригинальную статью.
Под "анализирует все возможные действия" я имел ввиду этот перечень действий:Посмотреть вложение 234311
Хорошо, а под это позволяет игре предлагать игрокам более реалистичные движения и действия что имеется в виду?)
Таких формулировок, на самом деле, очень много во всём тексте. Читать сложновато, на самом деле, подобные слова не раскрывают сути предмета, а наоборот запутывают. Могу посоветовать либо просто убрать их, либо переформулировать, добавив конкретики.
 
Модератор раздела «Создание читов CS2»
Модератор
Статус
Оффлайн
Регистрация
21 Июн 2022
Сообщения
148
Реакции[?]
365
Поинты[?]
151K
Хорошо, а под это позволяет игре предлагать игрокам более реалистичные движения и действия что имеется в виду?)
Таких формулировок, на самом деле, очень много во всём тексте. Читать сложновато, на самом деле, подобные слова не раскрывают сути предмета, а наоборот запутывают. Могу посоветовать либо просто убрать их, либо переформулировать, добавив конкретики.
Хорошо, учту, что не стоит использовать подобные формулировки.
Думаю сам понимаешь, что для написания подобных тем приходится тратить много времени и сил, но в итоге все равно будут какие-то пробелы/проблемы в тексте)
Для просмотра содержимого вам необходимо авторизоваться.
 
Начинающий
Статус
Оффлайн
Регистрация
25 Окт 2022
Сообщения
35
Реакции[?]
6
Поинты[?]
0
Ну это рай для таких как я
Как и все гайды на этих неделях это топово
Причем заметим труд человека который это писал
 
c:\windows\syswow64\ntdll.dll
Участник
Статус
Оффлайн
Регистрация
18 Окт 2022
Сообщения
554
Реакции[?]
193
Поинты[?]
119K
По поводу предикшина, тебе не нужно полностью копировать код игры и воспроизводить его. Суть в том чтобы сделать предикшн, оптимизируя, и обойдя некоторые коллы. Например с инфы из uc, тебе не нужно коллить ProcessImpacts, и postthink т.к из постсинка тебе нужен только один калл по типу updatebounds. Однако в твоей базе он сделан минималистично и походу правильно)
 
Сверху Снизу