Как компилировать и декомпилировать мутаторы Killing Floor
Эта инструкция описывает процесс компиляции и декомпиляции мутаторов для Killing Floor.
Браузер Actor Classes в KF Editor показывает UnrealScript-классы из загруженных пакетов.
Компиляция мутаторов
Компиляция мутаторов позволяет преобразовать исходный код UnrealScript (.uc файлы) в исполняемые файлы (.u файлы), которые могут быть использованы на сервере.
Необходимые инструменты
Для компиляции мутаторов вам понадобятся:
- UnrealScript компилятор (обычно входит в состав Unreal Engine SDK)
- Исходные файлы мутатора (
.ucфайлы) - Правильно настроенная структура папок
Процесс компиляции
- Подготовьте исходные файлы мутатора (
.ucфайлы) в правильной структуре папок - Убедитесь, что все зависимости и импорты правильно указаны
- Запустите компилятор с правильными параметрами
- Проверьте результат компиляции на наличие ошибок
Декомпиляция мутаторов
Декомпиляция мутаторов позволяет извлечь исходный код из скомпилированных файлов (.u файлы).
Необходимые инструменты
Для декомпиляции мутаторов используются специальные утилиты:
- UnrealScript декомпиляторы
- Hex-редакторы (для частичной декомпиляции)
Процесс декомпиляции
- Используйте специализированный декомпилятор для UnrealScript
- Учтите, что декомпилированный код может отличаться от оригинального
- Некоторые части кода могут быть утеряны или искажены при декомпиляции
Разбор и сборка через UCC (мануал)
По теме «[Мануал] Компилируем/Декомпилируем мутатор» (kok-s, форум killingfloor.ru, 2013). Нужен UCC.exe в папке System (входит в Killing Floor SDK). Само программирование здесь не рассматривается, только разбор и сборка пакета. Пример — мутатор ClotsDay из двух файлов ClotsDay.u и ClotsDay.ucl в папке System.
Декомпиляция классов
Создайте в System bat-файл, например «Декомпилирование мутаторов»:
UCC.exe BatchExport ClotsDay Class uc ..\ClotsDay\Classes
del steam_appid.txt
pause
Вместо ClotsDay подставьте имя нужного пакета (например, ServerPerksP). Строка del steam_appid.txt нужна, если вы собираете или разбираете на том же клиенте, на котором играете: иначе после компиляции или декомпиляции вы не сможете зайти ни на один сервер. После запуска в корне игры появится папка ClotsDay\Classes с файлами классов, которые можно править, например, в Notepad++.
Если вы разбираете код оружия или мутанта, сначала разложите нужные ресурсы по папкам (текстуры в Textures и т.д.): код ссылается на ресурсы, и без них компилятор его не декомпилирует.
Русский клиент: True/False в исходниках
На русском клиенте в декомпилированных исходниках вместо True и False могут оказаться «Истина» и «Ложь». Можно поменять в killingfloor.ini Language=rus на Language=int, но надёжнее исправить файл System\Core.rus: замените содержимое секции [General] на
[General]
Product="Unreal"
Engine="Unreal Engine"
Copyright="Copyright 2004 Epic Games, Inc."
True="True"
False="False"
None="None"
Yes="Yes"
No="No"
Подробнее про эту правку: Вернуть русский язык.
Извлечение текстур и звуков из пакета
Текстуры, вшитые в пакет мутатора:
ucc batchexport ClotsDay.u Texture dds ..\ClotsDay\Textures
Звуки в формате wav:
UCC.exe BatchExport ClotsDay Sound wav ..\ClotsDay\Sounds
Формат может отличаться, укажите нужный. Тем же способом Flame в теме «Мануал, как вытащить звуки из KF» предлагал выгружать все звуки звукового пакета .uax целиком (UCC.exe BatchExport НазваниеПакета Sound wav ..\НазваниеПакета\Sounds). Замечания из той темы:
- В пути не должно быть русских символов и пробелов: если папка игры называется
Killing Floor, переименуйте её, например, вKillingFloor. - Если на выходе файлы по 0 КБ, скорее всего, вы экспортируете SoundGroup, а не звук.
- Один звук можно вытащить и без командной строки: в SDK откройте View → Sound Browser, нажмите Open package, выберите пакет, выделите звук и выполните File → Export (имена папок в пути должны быть английскими). Импорт — обратно: Sound → Import, выберите WAV и укажите пакет и группу.
- По словам Flame, сторонние распаковщики пакетов Unreal без правки не открывают пакеты KF: у KF немного другая сигнатура, чем у стандартного Unreal, и перед открытием нужно заменить первый символ файла пакета.
- Отдельно извлечь «вложенные»
.utx/.uaxиз.uнельзя: по словам 3xzet,.utx,.uax,.u,.usxи.ukx— один и тот же формат пакета, и.uможно открыть в браузере текстур редактора, выбрав в диалоге все типы файлов.
Сборка
- Удалите из
SystemстарыеClotsDay.uиClotsDay.ucl. - В
killingfloor.iniв разделе[Editor.EditorEngine]допишитеEditPackages=ClotsDay. - Создайте в
Systembat-файл «Компилирование мутаторов»:
ucc.exe make
del steam_appid.txt
pause
Компилятор соберёт всё, что прописано в строках EditPackages=. При успехе в System снова появятся ClotsDay.u и ClotsDay.ucl; при ошибке компилятор укажет класс, строку и текст ошибки.
Порядок EditPackages
Пакет может зависеть от классов другого пакета, поэтому порядок строк важен. Для ServerPerks 7.10:
EditPackages=ServerPerks
EditPackages=ServerPerksP
EditPackages=ServerPerksMut
Если кастомное оружие привязано к ServerPerks, его EditPackages= должен стоять выше. Ошибки часто возникают из-за старого killingfloor.ini, в который при патчах не добавлены новые стандартные пакеты. Порядок стандартных пакетов на момент написания мануала:
EditPackages=Core
EditPackages=Engine
EditPackages=Fire
EditPackages=Editor
EditPackages=UnrealEd
EditPackages=IpDrv
EditPackages=UWeb
EditPackages=GamePlay
EditPackages=UnrealGame
EditPackages=XGame
EditPackages=XInterface
EditPackages=XAdmin
EditPackages=XWebAdmin
EditPackages=GUI2K4
EditPackages=xVoting
EditPackages=UTV2004c
EditPackages=UTV2004s
EditPackages=ROEffects
EditPackages=ROEngine
EditPackages=ROInterface
EditPackages=Old2k4
EditPackages=KFMod
EditPackages=KFChar
EditPackages=KFGui
EditPackages=GoodKarma
EditPackages=KFMutators
EditPackages=KFStoryGame
EditPackages=KFStoryUI
EditPackages=SideShowScript
Чтобы вшить текстуру в .u, пропишите её в коде и положите файл в папку Textures рядом с Classes (пример — ServerPerks 7.10); со звуками аналогично.
Смотрите также: Компиляция через ucc make, Декомпиляция UnrealScript.
Дополнения
Пересборка стандартных .u из исходников 1060
В теме «Исходники KF версии 1060» Dr_Killjoy выложил компилируемые исходники всех .u-файлов, которые идут с KF версии 1060. Порядок такой:
- Откройте архив и найдите в нём
.bat-файл. - В строке
Set Dir2=укажите адрес своей папки с KF (в батнике по умолчаниюSet Dir2="C:\KillingFloor"). - Запустите батник: он сохраняет стандартные
.u(Core.u, Engine.u, KFMod.u, KFChar.u, KFGui.u и остальные) в папкуBackupSystem, удаляет их изSystemи готовит всё к компиляции. - Запустите компиляцию. Если появляются запросы с требованием нажать Y или N, жмите N.
Зачем это нужно: так можно компилировать исходники «с хаком», как сделано, в частности, в мутаторе KillMessages, то есть снимать со стандартных переменных спецификаторы const и protected, убирать с функций final. В KillMessages, судя по всему, менялся и размер статического массива; Dr_Killjoy подозревал, что его можно «растянуть» до 256 элементов, но не проверял. 3xzet использовал хак коллизий, чтобы изменить высоту скина, и написал, что всё работает.
Важные замечания
- Декомпиляция может нарушать авторские права, если мутатор защищен
- Всегда используйте легальные инструменты и уважайте права авторов
- При компиляции убедитесь, что все зависимости доступны
- Тестируйте скомпилированные мутаторы перед использованием на сервере