Как читать чужой игровой код. Часть 2: моды и моддинг

В первой части мы говорили о том, как читать исходный код игр: где искать, как открывать, на что смотреть. Во второй части — разберём, как это знание применяется при разработке модов.

Наш проводник снова Андрей Штанов — исследователь факультета компьютерных наук Вышки, участник проектной группы «Программная инженерия компьютерных игр»

Как читать чужой игровой код. Часть 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, кооператив и т.д.).

Как получить пользу от чтения кода при моддинге

Как читать чужой игровой код. Часть 2: моды и моддинг

Моды дают всё сразу:

  • Контекст: вы работаете с настоящим кодом из живой игры;
  • Немедленный фидбэк: вы можете запустить игру и сразу увидеть результат;
  • Комьюнити: многие проекты открыты для контрибьютов и поддержки модов.

К тому же, это мост между хобби и профессией. Многие известные разработчики начинали именно с модов: создатели Counter-Strike, Dota, Garry's Mod и многих других.

4
1 комментарий