Многие, кто пытался писать свои моды или мутаторы сталкивались с тем, что UnrealEd не мог обеспечить выполнение некоторых функций при написании скриптов и, возможно, даже не подозревали, что есть другой способ компилирования исходного кода модов.
Содержание:
Сначала давайте определимся с терминологией. Пакаджем (от англ. Package) будем называть файл, содержащий объекты каких-либо типов:
- текстуры,
- звуки,
- музыка,
- скрипты и т.д.
Для Unreal Tournament они представлены U-файлами (*.u) и представляют собой скомпилированные скрипты, лежащие в файле вместе со своим текстовым представлением, а также сжатыми текстурами, звуками и другими объектами.
Скриптом будем называть исходный текст программы, которую обрабатывает движок Unreal Tournament. Они представлены UC-файлами (*.uc) и имеют текстовый формат. В UC-файлах всегда описан какой-либо класс, который составляет часть дерева классов Unreal Tournament.
Итак, всё начинается с UCC.exe – маленького файлика, лежащего в директории System.
Многие люди не интересуются содержимым директорий вообще, некоторые интересуются, но не заходят слишком далеко, некоторые даже запускали UCC.exe но были испуганы результатом его работы – работает ведь он в консольном режиме. Дело в том, что при всей своей непритязательности и неприглядности этот файл является тем самым компилятором скриптов Анриала, с помощью которого и создаются всевозможные моды и мутаторы.
Однако этим его функции не ограничиваются. Не зря программа, скрывающаяся в файле UCC.exe, называется «UnrealOS execution environment» – «Исполнительная среда операционной системы Unreal».
Для работы с этой программой лучше всего создать BAT-файл, так как надо будет часто запускать её с различными параметрами в командной строке. Следует также убрать флаг «Закрывать окно по завершении сеанса» в свойствах для этого BAT-файла. Так мы будем видеть, какие именно сообщения пишет программа.
Если сообщений много и они не помещаются на экран или вы хотите просматривать сообщения программы в другом виде, то можете после выполнения каких-либо задач в UCC.exe просматривать файл UCC.log в той же папке. Иногда это бывает необходимым. Файл UCC.log содержит более полную информацию о работе программы.
Перейдём теперь непосредственно к запуску UCC.exe. При запуске программа пишет на экране сообщение:
=======================================
ucc.exe: UnrealOS execution environment
Copyright 1999 Epic Games Inc
=======================================
Use "ucc help" for help
Это название программы и руководство по использованию. Программа говорит нам запустить её с параметром Help. Следуем этому указанию и, запустив программу с параметром Help, получаем полный список параметров для командной строки, реализующих определённые функции, а также небольшое пояснение для каждого из параметров.
Так выглядит список всех параметров UCC.exe:
ucc <command> <parameters>
Commands for "ucc":
ucc
ucc batchexport Export objects in bulk
ucc checksum Calculate package checksum for stat logging
ucc checksumpackage Display checksum for package file
ucc compress Compress an Unreal package for auto-downloading. A
file with extension .uz will be created.
ucc conform Generate conforming binary files
ucc datarip Create a package with Texture, Music and Sound data
ripped out.
ucc decompress Decompress a file compressed with ucc compress.
ucc HelloWorld Sample
ucc help <command> Get help on a command
ucc make Rebuild UnrealScript packages
ucc master Build master installer files
ucc masterserver Maintain master list of servers.
ucc mergedxt Merge DXT textures with standard textures
ucc packageflag Set package flags in package files
ucc server Network game server
ucc updateserver Service Unreal Engine auto update requests.
ucc updateumod Add, delete, replace or extract files from a umod
Я попробую описать некоторые из функций, которые позволят вам не только создавать собственные моды и мутаторы, но и анализировать чужие скрипты, а также доставать объекты ресурсов из чужих пакаджей, встраивать объекты ресурсов в свои моды и мутаторы. Большинство функций UCC.exe не нужны обычному пользователю, поэтому и мы рассмотрим только некоторые. Итак:
1. BatchExport – позволяет экспортировать различные объекты из заданного пакаджа и сохранять их в заданном формате.
Использование:
- UCC.exe BatchExport Package.ext ClassName Export_Ext Path
Параметры:
- Package.ext – Пакадж, из которого вы собираетесь экспортировать объекты (с расширением).
- ClassName – Класс объектов, которые будут экспортированы.
- Export_ext – Расширение файлов, в которые будут экспортированы объекты из пакаджа.
- Path – Путь к папке, куда будут экспортированы файлы.
Пример:
UCC.exe BatchExport UWindow.u Texture pcx C:\UCC_Learn
Из пакаджа UWindow.u в папку C:\UCC_Learn будут экспортированы все, находящиеся в этом пакадже, текстуры. Причём текстуры будут сохранены в формате PCX. Если вам нужно экспортировать звуки, то параметр ClassName нужно изменить на Sound, а параметр Export_ext – на wav: UCC.exe BatchExport Botpack.u Sound wav C:\UCC_Learn.
Таким же образом из пакаджей экспортируются скрипты. Значения параметров ClassName и Export_ext в этом случае должны быть Class и uc соответственно:
UCC.exe BatchExport botpack.u Class uc C:\UCCLearn
2. DataRip – Вырезает объекты из одного пакаджа и вставляет в другой, при этом компилируя этот второй пакадж для того, что бы все связи в объектах установились в соответствии с его именем.
Использование:
- UCC.exe DataRip SrcPackage.ext DstPackage.ext
Параметры:
- SrcPackage.ext – Исходный пакадж.
- DstPackage.ext – Новый пакадж.
Пример:
UCC.exe DataRip DE.u DE1.u
Все данные из пакаджа DE.u будут перенесены в новый пакадж DE1.u, после чего DE1.u будет перекомпилирован. Таким образом, классы, описанные и скомпилированные в DE.u, будут функционировать и в DE1.u . Например, класс DE.TeamBeacon превратится в DE1.TeamBeacon и будет корректно работать.
Использование:
- UCC.exe Help
Параметры:
- <Command> - Команда, по которой нужна справка.
Пример:
UCC.exe Help BatchExport
UCC.exe выдаст информацию о команде BatchExport, которая была рассмотрена выше. Результат будет такой:
=======================================
ucc.exe: UnrealOS execution environment
Copyright 1999 Epic Games Inc
=======================================
Использование:
- ucc batchexport package.ext classname export_ext
Параметры:
- package.ext Package whose objects you wish to export
- classname Class of object to export
- export_ext File extension to export to
- path Path to export files to, like c:\MyPath
Как видите, идёт краткое описание команды и параметров для неё. Help – достаточно полезная команда. Пользуйтесь ею, если вы не помните, как что-то сделать или возникает какая-нибудь ошибка. Возможно, вы просто забыли порядок следования параметров или их количество.
Использование:
- UCC.exe Make [-option...] [parm=value]...
Параметры:
- Я не писал про параметр [-option...], так как он устанавливает различные режимы компилирования, которые обычно не используются рядовыми пользователями. Также все параметры этой команды не являются обязательными и чаще всего она используется без них.
Пример:
UCC.exe Make
Программа проверит секцию [Editor.EditorEngine] файла UnrealTournament.ini на предмет наличия строк, начинающихся со слов EditPackages (вроде EditPackages=Core) и обозначающих пакаджи, которые должны быть скомпилированы, после чего начнёт искать папку с аналогичным именем в директории UnrealTournament (в нашем случае UnrealTournament\Core).
Если результат поиска окажется положительным, то последует следующая проверка содержимого папки пакаджа на предмет наличия в ней подпапок Classes, Textures, Sounds и т.д. Скрипты из папки Classes будут скомпилированы в новый пакадж, а объекты ресурсов из остальных папок – сжаты и добавлены туда же.
Использование:
- UCC.exe UpdateUMOD UmodFile Command [FileName]
Параметры:
- UmodFile – UMOD-файл, подлежащий изменению или просмотру.
- Command - Параметр, определяющий режим работы с UMOD-файлом.
Может принимать одно из следующих значений:
- EXTRACT – распаковать;
- ADD – добавить;
- DELETE – удалить;
- REPLACE – заменить;
- LIST – просмотреть.
- FileName – Имя файла, в который распаковывается файл из UMOD-архива, который добавляется в UMOD-архив, который удаляется из UMOD-архива или на который заменяется файл в UMOD-архиве соответственно режимам работы с архивом.
Допустим, что у нас есть файл-архив TestMod.umod, который нам требуется распаковать. Для начала нужно просмотреть содержимое архива.
Это делается с помощью строки:
UCC.exe UpdateUMOD TestMod.umod List
При этом на экран будет выведена информация о файлах, содержащихся в файле TestMod.umod. Предположим теперь, что среди запакованных файлов имеются файлы какого-либо мутатора. Например, Mutator.u и Mutator.int, которые мы хотим достать. Для этого нужно выполнить такие командные строчки:
UCC.exe UpdateUMOD TestMod.umod EXTRACT Mutator.u
UCC.exe UpdateUMOD TestMod.umod EXTRACT Mutator.int
Понятно, что UMOD-файл, с которым вы работаете, должен лежать в папке System.
Таким образом, можно устанавливать моды и мутаторы без применения программы-установщика Setup.exe в случае её некорректной работы. Часто моды и мутаторы, поставляемые в UMOD-файлах не могут установится из-за того, что версия Unreal Tournament, на которую их хотят установить, является пиратской или русифицированной. Это обусловлено тем, что пиратские версии игры не устанавливаются, а просто копируются на жёсткий диск, не создавая при этом необходимых переменных в системном реестре, отвечающих за рабочие папки Unreal Tournament. В таких случаях программа-установщик Setup.exe выдаёт ошибку.
Setup: Unknown Disposition. Такой метод установки имеет ещё один недостаток кроме длительного времени инсталляции и большого числа операций, выполняемых вручную. Это недостаток заключается в том, что для корректной работы некоторых модов на сервере, необходимо, что бы в секции [Engine.GameEngine] файла UnrealTournament.ini была прописана строчка ServerPackages=. Установочная программа делает это автоматически, а пользователю необходимо самому позаботится про это.
Таким образом, мы рассмотрели некоторые функции программы UCC.exe, которые могут пригодится пользователю для создания своих модов и мутаторов. Все команды, которые вводятся в командной строчке, могут не иметь заглавных букв. Программа UCC.exe не различает регистры при интерпретации этих команд. Я писал в словах команд заглавные буквы для более лёгкого восприятия текста читателем.
Выше мы рассмотрели метод установки модов из UMOD-файлов с помощью программы UCC.exe, которая представляет собой универсальную программу для работы с пакаджами и файлами-архивами UMOD. Как было сказано, описанный метод имеет много недостатков, но иногда является единственным возможным. Однако есть ещё один способ устанавливать моды, если Unreal Tournament не создал необходимых записей в системном реестре. Он заключается в том, что имя UMOD-файла, содержащего мод, подаётся на выполнение программе Setup.exe в командной строчке после параметра Install.
В общем виде это выглядит так: Setup.exe Install “Имя_UMOD_Файла.umod”.
Обратите внимание на то, что имя UMOD-файла пишется с расширением в двойных кавычках. Про это следует помнить, так как отсутствие кавычек или расширения может привести к неправильной трактовке вашего запроса программой Setup.exe.
Давайте рассмотрим технологию создания мутаторов на примере простого мутатора RedeemerArena. Чтение данного документа будет представлять интерес только для начинающих скриптеров или просто любопытных пользователей, которые ещё никогда не сталкивались с созданием собственных мутаторов.
Для этого желательно иметь некоторое представление о функциях UCC.exe, а также немного терпения.
1. Зайдите в папку, куда вы инсталлировали Unreal Tournament.
Например: C:\Program Files\GT Interactive\UnrealTournament.
2. Создайте папку с названием своего мода. Имя папки в будущем станет именем пакаджа. В нашем случае будет рационально назвать её RedeemerArena. Таким образом мы получили папку: C:\Program Files\GT Interactive\UnrealTournament\RedeemerArena.
Зайдите внутрь этой папки.
3. Внутри папки RedeemerArena создайте подпапку Classes. В этой папке будут лежать исходные тексты скриптов. Так как нам не требуется встраивать в наш мутатор других объектов, наподобие звука или текстур, то нам не нужно создавать дополнительно папки Sounds и Textures. То есть на этом шаге мы получаем только папку:
C:\Program Files\GT Interactive\UnrealTournament\RedeemerArena\Classes
Зайдите внутрь этой папки.
4. Создайте внутри этой папки текстовый файл и переименуйте его в RedeemerArena.uc и откройте с помощью какого-либо текстового редактора.
5. Вставьте в этот файл (RedeemerArena.uc) следующие строчки:
//======================================
// RedeemerArena.
// Author: Alexei "Sandman" Goncharov.
// Permissions: Don't forget to give me credits ;-).
//======================================
Class RedeemerArena Expands Arena;
function bool AlwaysKeep(Actor Other)
{
Local Bool bTemp;
If ( Other.IsA(WeaponName) )
{
Weapon(Other).PickupAmmoCount = 50;
Return True;
}
If ( NextMutator != None )
Return ( NextMutator.AlwaysKeep(Other) );
Return False;
}
DefaultProperties
{
WeaponName=WarheadLauncher
WeaponString="Botpack.WarheadLauncher"
DefaultWeapon=Class'Botpack.WarheadLauncher'
}
Сохраните и закройте файл.
6. Выйдите из текущей директории и зайдите в папку UnrealTournament\System.
7. Создайте в папке UnrealTournament\System текстовый файл и переименуйте его в RedeemerArena.int, после чего откройте его в каком-либо текстовом редакторе.
8. Вставьте в этот файл (RedeemerArena.int) следующие строчки:
[Public]
Object=(Name=RedeemerArena.RedeemerArena,Class=Class,MetaClass=
Engine.Mutator,Description="RedeemerArena,Only Redeemers!")
Сохраните и закройте файл.
9. Теперь найдите в папке UnrealTournament файл UnrealTournament.ini и откройте его в каком-либо текстовым редакторе.
10. Найдите в этом файле секцию [Editor.EditorEngine] и добавьте в конце после строчек:
EditPackages=Core
EditPackages=Engine
EditPackages=Editor
EditPackages=UWindow
EditPackages=Fire
EditPackages=IpDrv
EditPackages=UWeb
EditPackages=UBrowser
EditPackages=UnrealShare
EditPackages=UnrealI
EditPackages=UMenu
EditPackages=IpServer
EditPackages=Botpack
EditPackages=UTServerAdmin
EditPackages=UTMenu
EditPackages=UTBrowser
EditPackages=RedeemerArena
Сохраните и закройте файл.
11. Теперь запустите программу UCC.exe с параметром Make:
UCC.exe Make.
12. Если вы не сделали никаких ошибок, то в папке System должен появится файл RedeemerArena.u, но если он не появился, то нужно в первую очередь проверить корректность содержимого файла скриптов RedeemerArena.uc, а потом также проверить файл RedeemerArena.int.
Всё! Ваш мутатор готов! Теперь можете скопировать файлы RedeemerArena.u и RedeemerArena.int в отдельную папку и показывать друзьям. Именно эти два файла составляют ваш мутатор. Файл пакадж RedeemerArena.u – это сам скомпилированный скрипт, а RedeemerArena.int – связующий файл, который говорит игре, что название вашего мутатора нужно поместить в список выбора мутаторов.
Вот и всё. Надеюсь, вы узнали из этого гайда что-нибудь интересное для себя. Удачи Вам!
Автор: Sand