Основные части игры.
Хотя видео игры - это просто приложения, они сложны и состоят из нескольких частей. Некоторые из них включают в себя:
- Графика
- Звук
- Ввод
- Физика
- Логика игры
Из-за сложности каждой из этих частей большинство игр используют внешние функции для работы этих частей. Эти внешние функции объединяются в то, что называется библиотекой. Библиотеки затем используются другими программами для уменьшения объема написанного кода. Например, для рисования изображений и фигур на экране большинство игр используют библиотеку DirectX или OpenGL.
Для некоторых типов взломов важно определить используемые библиотеки. Wallhack - это тип взлома, который позволяет хакеру видеть других игроков через сплошные стены. Одним из способов программирования wallhack является изменение графической библиотеки, используемой в игре. И OpenGL, и DirectX уязвимы для такого типа взлома, но каждая из них требует своего подхода.
Для большинства хаков мы будем изменять логику игры. Это раздел инструкций, отвечающий за то, как работает игра. Например, логика игры будет управлять тем, как высоко прыгает персонаж или сколько денег получает игрок. Изменив этот код, мы потенциально можем прыгнуть так высоко, насколько захотим, или получить бесконечное количество денег.
Структура
Логика игры состоит из инструкций, как и любой компьютерный код. Из-за сложности игр они часто пишутся на языке высокого уровня и компилируются. Понимание общей структуры исходного кода часто требуется для более сложных взломов.
Большинство игр имеют две основные функции:
- Setup
- Main Loop
Функция Setup выполняется при первом запуске игры. Она отвечает за загрузку изображений, звуков и других больших файлов с жесткого диска и размещение их в оперативной памяти. Основной цикл - это особый тип функции, которая работает вечно, пока игрок не выйдет. Он отвечает за обработку ввода, воспроизведение звуков и обновление экрана, среди прочего. Пример игрового цикла может выглядеть следующим образом:
Каждая из этих функций, в свою очередь, вызывает другие функции. Например, функция handle_input может выглядеть следующим образом:
Каждая игра запрограммирована по-разному. Некоторые игры могут отдавать приоритет обновлению графики перед обработкой входных данных. Однако все игры имеют какой-то основной цикл.
Продолжение следует...