Как читать чужой игровой код. Часть 2: моды и моддинг
В первой части мы говорили о том, как читать исходный код игр: где искать, как открывать, на что смотреть. Во второй части — разберём, как это знание применяется при разработке модов.
Наш проводник снова Андрей Штанов — исследователь факультета компьютерных наук Вышки, участник проектной группы «Программная инженерия компьютерных игр»
Пример — Skyrim:
Простые моды используют ESP-файлы и не требуют знания кода. Но моды на новые боевые системы, магию или интерфейс пишутся на Papyrus — встроенном скриптовом языке Skyrim — и часто требуют знания, как работает Creation Engine.Чтобы, например, добавить новую механику стелса, нужно разбираться в скриптах, нативных функциях и иногда использовать инструменты вроде дизассемблера или SKSE, если вы хотите вмешиваться в более низкоуровневую логику движка.
Моддинг DOOM через GZDoom
GZDoom — современный порт DOOM, который позволяет писать моды на языке ZScript.
Но чтобы понять, какие функции доступны, в каком порядке вызываются, как влияет один объект на другой — ты читаешь его ZScript API и/или C++ исходники движка.
Кейс №1: Unciv — ремейк Civilization V
- Игра написана на Kotlin с использованием LibGDX и имеет открытую структуру.
- Основной код находится в директории core/src/com/unciv/.
Что ты можешь сделать:
- Добавить новый тип местности с особыми свойствами.
- Расширить алгоритмы дипломатии между цивилизациями.
Полезные файлы:
- Ruleset.kt — определяет игровые правила и параметры.
- DiplomacyManager.kt — управляет дипломатическими отношениями.
- BattleLogic.kt — содержит боевую логику.
- CityConstructions.kt — отвечает за строительство в городах.
Кейс №2: Source SDK 2013 и Team Fortress 2
- После обновления в 2024 году исходный код TF2 стал доступен в составе Source SDK 2013.
- Код разделён на клиентскую и серверную части, с общими компонентами в src/game/shared/.
Что ты можешь сделать:
- Изменить поведение существующего оружия или добавить новое.
- Модифицировать правила игры или поведение игроков.
Полезные файлы:
- tf_gamerules.cpp — содержит правила игры для TF2.
- tf_weaponbase.cpp — базовый класс для оружия.
- tf_player.cpp — управляет логикой игрока.
Кейс №3: Quake II — моддинг классики
Исходный код Quake II был опубликован id Software ещё в 2001 году. Сейчас он активно используется как база для кастомных сборок, улучшений и портов на новые платформы.
Пример модификации:
- В game/g_main.c можно изменять игровую логику: от поведения врагов до условий победы.
- В game/p_weapon.c описано оружие и его взаимодействие с миром.
Зачем смотреть:
- Чтобы изучить, как работал один из первых шутеров с 3D-движком.
- Чтобы попробовать реализовать свои режимы игры (Capture the Flag, кооператив и т.д.).
Как получить пользу от чтения кода при моддинге
Моды дают всё сразу:
- Контекст: вы работаете с настоящим кодом из живой игры;
- Немедленный фидбэк: вы можете запустить игру и сразу увидеть результат;
- Комьюнити: многие проекты открыты для контрибьютов и поддержки модов.
К тому же, это мост между хобби и профессией. Многие известные разработчики начинали именно с модов: создатели Counter-Strike, Dota, Garry's Mod и многих других.