Здравствуйте. Вы находитесь на сайте Unreal Level. Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War. Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология.
Basic Scripting Tutorial for UT3
автор: FACH | 29 Ноября 2009 | Просмотров: 14763
Автор: Vermillion
Изначально писать туториал по теме скриптинга я не планировал. Но сам столкнулся с целым рядом проблем в этой области - и понял, что человеку работаюему в Ut3Ed хотя бы базовые знания в скриптинге необходимы. Основой послужили два туториала ( YouTube - UT3 - Create New Script и вот этот) переведённых мной на язык Пушкина и Толстого, улучшенные и дополненные собственными наблюдениями и информацией с форумов. В статье очень подробно, с картинками (!), разбираются базовые понятия. Если Вы хоть что-то понимаете в Unreal Script - вряд ли Вы найдёте тут полезную информацию. Однако для большинства (как и для меня самого) скриптинг это Terra Incognito - на них этот материал и рассчитан в первую очередь.

Что такое компиляция/декомпиляция


Компиляция — преобразование программой-компилятором (в прежних версиях она называлась ucc; сейчас это Unreal Editor с параметром make) исходного текста программы, написанного на языке высокого уровня в машинный язык, в язык, близкий к машинному, или в объектный модуль.
Говоря русским языком - программа преобразует наш текстовый файл (он будет иметь вид *.uc) в некий модуль (файл типа *.u), который сможет понять игра.

Декомпиляция - обратный процесс (т.е. перевод *.u файлов в редактируемые *.uc).
Для начала научимся декомпилировать (экспортировать) скрипты - это несложно - открываем редактор, Actor Browser - жмём File/Export All Script.

alt
 


После чего машина задумается и через 3-5 минут выдаст Вам скрипты всех загруженных на тот момент классов (обратите внимание - чтобы экспортировались скрипты нестандартной модели - нам надо сначала её и её скрипты загрузить в редакторе; ну или прописать в ini-шке чтобы они загружались с редактором). В UTGame появилась папка ExportedScript - там лежат экспортированные скрипты также рассортированные по папкам. Декомплияция пригодиться Вам в дальнейшем. Эта опция нужна для извлечения уже скомпилированных (разработчиками, другими пользователями) скриптов, просмотра их содержимого, с дальнейшей их доработкой, использования интересующего Вас кода с последующей компиляцией.

Создание простейшего скрипта 

1) В DocumentsMy GamesUnreal Tournament 3UTGame создайте папку Src, в ней папку TestPackage, в ней папку classes, и в папке classes создайте простой текстовый файл (*.txt). Общий путь выглядит так DocumentsMy GamesUnreal Tournament 3UTGameSrcTestPackageclassesНовый Текстовый Документ.txt

Теперь поясню - в папке Src будут находиться файлы подготовленные к компиляции, разложенные по папкам, название которых будет определять имя файла. То есть пакэдж (файл) содержащий наш готовый скрипт после компиляции будет называться TestPackage.u. Редактор предназначен для компиляции разных типов ресурсов, но в нашем случае мы компилируем скрипт - поэтому подпапка у нас называется classes. 

2) Переименуйте файл Новый Текстовый Документ.txt в TestActor.uc. Подтвердите смену расширения файла.

3) Откройте файл любым текстовым редактором (лучше простым - Блокнотом; или ещё лучше специально заточенным под программирование - типа Notepad++).
Напишите с первой строки:

class TestActor extends Actor;

В переводе на человеческий язык эта команда значит вот что - класс TestActor (созданный нами субкласс; совпадает с именем файла) расширяет(дополняет) группу Actor. ";"- значит окончание скрипта.

alt
 


Сохраните этот файл. По идее сохранять надо в кодировке Юникод, но я не обратил на это внимание и сохранил как было по умолчанию (ANSI). В дальнейшем проблем не было - скрипт скомпилировался. Так произошло потому, что у АNSI и Юникода коды латинских букв и простых символов совпадают (для русских уже различаются). Ну а поскольку все команды на латинском тут то...

4) Теперь идите в папку DocumentsMy GamesUnreal Tournament 3UTGameConfig и открывайте файл UEditor.ini. Нажмите Ctrl+F и наберите в поиске [ModPackages].
В этой секции нижней строчкой допишите ModPackages=TestPackage. Итоговый результат будет быглядеть примерно так

...

[ModPackages]
ModPackagesInPath=..UTGameSrc
ModOutputDir=..UTGameUnpublishedCookedPCScript
ModPackages=TestPackage

...


Сохраните файл.
Не делайте синтаксических ошибок - я написал ModPackage=TestPackage (без "S" в слове PackageS) и потом удивлялся почему компилятор не работает.
Обратите внимание имя которое мы тут пишем (TestPackage) соответствует имени папки в DocumentsMy GamesUnreal Tournament 3UTGameSrc, и соответственно имени нашего будущего пакэджа.

5) Теперь перейдём к компиляции - компилировать можно аж тремя способами: 
Можно просто запустить редактор. При старте он проверит файл UEditor.ini, увидит Вашу строчку ModPackages=TestPackage, поищет что лежит в папку Src и если вы всё сделали правильно - выдаст Вам вот такое сообщение. При нажатии "Yes" - запустится процесс компиляции - для такого простого пака он займёт пару секунд.

alt
 


Можно компилировать из командной строки уже открытого редактора.

Самое удобное - создать копию ярлычка UT3 и в свойствах дописать make. Вот как это выглядит:

Basic Scripting Tutorial for UT3


При запуске этого ярлыка - автоматически откроется окно компиляции - не надо каждый раз запускать редактор. В любом случае - если Вы все сделали правильно по предыдущим пунктам то увидите надпись Success - 0 error, 0 warning. Если что-то не так - то у Вас либо не получиться скомпилировать пак - компилятор напишет что-нибудь вроде Failure - 2 error, 2 warning и причины по которым это произошло; либо получиться, но с ошибками. Подробнее о типовых ошибках в конце туториала.
6) В папке UTGameUnpublishedCookedPCScript ищите файл TestPackage.u - в принципе вот этого мы и добивались.
Ради интереса можно скопировать его в DocumentsMy GamesUnreal Tournament 3UTGamePublishedcookedpcScript, запустить редактор. Открыть Actor Classes Browser - File/Open/ и откройте TestPackage.u. Если Вы снимите флажок "Show Only Placeble Actors", то увидите наш класс. Конечно никакой функции он не несёт.

Basic Scripting Tutorial for UT3


Создание мутатора 


Теперь, попробуем создать простой мутатор. Мутатор - это тоже скрипт. Наш мутатор будет называться Super Rocket Launcher. Зверское оружие, скажу я Вам. 

Приступим:
1) В DocumentsMy GamesUnreal Tournament 3UTGame у вас должна быть папка Src из предыдущего туториала, в ней создайте папку SuperRocket, в ней папку classes, и в папке classes создайте три текстовых файла. Путь к ним получается такой C:Users1DocumentsMy GamesUnreal Tournament 3UTGameSrcSuperRocketClasses.

2) Первый текстовый файл переименуйте в UTWeap_SuperRocketLauncher.uc - он будет отвечать за наше оружие - Супер Рокет Лаунчер. Откройте файл блокнотом и с первой строки впишите (или скопируйте, но предпочтительней печатать самому - лучше усваивается информация и тренируется внимание) следующий текст:


class UTWeap_SuperRocketLauncher extends UTWeap_RocketLauncher;

DefaultProperties
{
WeaponProjectiles(0)=class'UTProj_SuperRocket'
WeaponProjectiles(1)=class'UTProj_SuperRocket'
}



Сохраните в кодировке Unicode. Закройте.
Как видно из этого скрипта - Супер Рокет Лаунчер (RL) является подклассом Рокет Лаунчера. И стреляет ракетами SuperRocket.

3) Теперь создадим эти самые убойные ракеты - ведь сам по себе RL урона не наносит - его наносят именно ракеты. Переименуйте второй текстовый файл в UTProj_SuperRocket.uc, откройте и впишите:


class UTProj_SuperRocket extends UTProj_Rocket;

DefaultProperties
{
Damage = 500
DamageRadius = 1000
}



Как можно заметить новые ракеты наносят максимальный урон 500 (то есть при прямом попадании убьют даже полностью "отожранного" (со всевозможными щитами и HP) игрока; исходное значение 100), и бьют по огромной площади радиусом 1000 unreal units (220 исходно). Сохраните файл.

4) Переименуйте третий текстовый файл в RocketMutator.uc - нужно решить проблему откуда игрок возьмёт такое мощное оружие. Открывайте и пишите с первой строки:


class RocketMutator extends UTMutator;

function InitMutator(string Options, out string ErrorMessage)
{
if (UTGame(WorldInfo.Game) !=None)
{
UTGame(WorldInfo.Game).DefaultInventory[0]=class'UTWeap_SuperRocketLauncher';
}

Super.InitMutator(Options, ErrorMessage);
}

function bool CheckReplacement(Actor Other)
{
if(Other.IsA('UTWeap_RocketLauncher')&&!Other.IsA( 'UTWeap_SuperRocketLauncher'))
{
ReplaceWith(Other,"UTWeap_SuperRocketLauncher");
}

return true;
}

DefaultProperties
{
}



Смысл этого скрипта в том, что он заменяет стартовое оружие на Super Rocket Launcher.

5) В папке DocumentsMy GamesUnreal Tournament 3UTGameConfig и откройте файл UEditor.ini. И в секции [ModPackages] допишите ModPackages=SuperRocket. Сохраните файл.

6) Запускайте компилятор, если Вы всё сделали правильно - то на выходе получите файл SuperRocket.u (располагается в папке DocumentsMy GamesUnreal Tournament 3UTGameUnpublishedCookedPCScript) и файл UTSuperRocket.ini (лежит в DocumentsMy GamesUnreal Tournament 3UTGameConfig). 
Обратите внимание что в этот раз мы скомпилировали три uc файла в один u.

Basic Scripting Tutorial for UT3


7) Файл UTSuperRocket.ini - это файл конфигурации. В принципе он не имеет критичного значения - даже если его удалить - мутатор будет работать. Этот файл имеет следующее содержание:

[RocketMutator UTUIDataProvider_Mutator]
ClassName=SuperRocket.RocketMutator
FriendlyName=RocketMutator
Description=Super RL
GroupNames=
UIConfigScene=
bStandaloneOnly=False
BitValue=0
bRemoveOn360=False
bRemoveOnPC=False
bRemoveOnPS3=False

[UTWeap_SuperRocketLauncher UTUIDataProvider_Weapon]
ClassName=SuperRocket.UTWeap_SuperRocketLauncher
AmmoClassPath=
Flags=
FriendlyName=UTWeap_SuperRocketLauncher
Description=
MeshReference=
bRemoveOn360=False
bRemoveOnPC=False
bRemoveOnPS3=False


Здесь можно подредактировать имя мутатора в игровом меню (FriendlyName=) и его описание (Description=). Настройка bStandaloneOnly отвечает за несовместимость с другими мутаторами - в данном случае он совместим. Сохраните файл.

8) Теперь т.н. publish - скопируйте файл SuperRocket.u в папку DocumentsMy GamesUnreal Tournament 3UTGamepublishedcookedpcScript; если таковой нет - создайте. Если Вы не перенесёте SuperRocket.u в папку published - мутатор будет отображаться среди доступных в меню, но в самой игре его не будет.

9) Испытывайте написанный своими руками мутатор в игре )))  diablo
Итак, что мы получили на выходе? Игрок появляется с RL в руках, стреляющим очень мощными ракетами с большим радиусом поражения. Визуально мутатор ничего не изменяет - то есть взрывов на пол-карты как от редимера не будет. Но даже если ракета попадёт достаточно далеко от врага - его заденет невидимой взрывной волной и порвёт на куски. 
Тактика игры меняется радикально - достаточно хотя бы выстрелить в сторону врага и можно быть уверенным, что фраг (а зачастую и дабл/мульти-килл и т.д) обеспечен. Счёт растёт как на дрожжах; как и суициды. Однако, надо помнить, что у ботов такие же пушки - правда пользуются они ими не особо умело.
Обратите внимание что в данном мутаторе присутствует немало "ляпов" (на самом деле так и задумано - т.к. этот мутатор чисто очень простой, чисто для обучения - при желании, их все можно устранить) - ракеты пущенные альтернативным режимом или кинутые как гранаты - наносят прежний ущерб (т.к. они являются другим классом); то же самое с рокет лаунчерами у Титанов - они остаются прежними (и это другой класс) - становиться Титаном теперь не выгодно; если в игре подхватить обычный RL - то у вас окажется и он и SuperRocketLauncher... Ну да бог с геймплейной составляющий - всё таки не для этого мутатор делали.

Распространённые Ошибки 

При запуске редактора не появляется заветная табличка предлагающая скомпилировать изменённые скрипты, а при запуске непосредственно ярлыком выдает:

Basic Scripting Tutorial for UT3


С 99.9% вероятностью Вы или неправильно написали (не там/не написали вовсе) строчку ModPackages=TestPackage в UEditor.ini; либо не создали собственно скрипт в Src...classes.


Если компилятор выдаёт такую ошибку Error, Unexpected 'i' - значит сохраните .uc файл в кодировке Юникод. У меня повторюсь этой проблемы не наблюдалось - но на форумах народ об этом пишет.


Если компилятор начинает компилировать скрипт, а потом выдаёт warning'и или error'ы (при этом скрип может скомпилироваться или не скомпилироваться - в зависимости от ошибки) - внимательно читайте лог и ищите ошибки внутри .uc файла. Например если вы забудете поставить ";" в конце строки - то компилятор так и напишет.
Исправьте ошибку и запускайте компилятор снова - пока не получите строчку Success - 0 error, 0 warning .

The End
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1 написал: bobr
19 Декабря 2009 18:03 | ICQ: Не Указано |


Группа: Гости
Регистрация: Не Указано
на удк пойдет?
Публикаций: 0 | Комментариев: 0      
#2 написал: Vermillion
19 Декабря 2009 18:14 | ICQ: 392202766 |


Группа: Посетители
Регистрация: 29.11.2009
Пойдёт. Принцип то один и тот же.
Публикаций: 0 | Комментариев: 14      
#3 написал: bobr
9 Января 2010 17:39 | ICQ: Не Указано |


Группа: Гости
Регистрация: Не Указано
не подошло , путаница с дирректориями
Публикаций: 0 | Комментариев: 0      
#4 написал: PROOF
9 Января 2010 17:53 | ICQ: 6668742 |


Группа: Администраторы
Регистрация: 16.12.2009
bobr нет никакой путаницы, просто надо тутор повнимательнее читать))) в УТ3 скрипты находятся в папке Мои Документы, а в УДК в директории с установленной программой, все подкаталоги в обоих случаях называются одинаково


--------------------
Публикаций: 12 | Комментариев: 113      
#5 написал: Brain
20 Апреля 2010 08:41 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 17.02.2010
Пацаны , у мня ошыбка вот такая при компиляции
Warning, Can't find files matching C:\UDK\UDK-2010-03\Binaries\Win32\..\..\UTGame\Src\Su
perRocket\Classes\*.uc
Хотя мод создал в Development-Scr


--------------------
Публикаций: 2 | Комментариев: 13      
#6 написал: FACH
20 Апреля 2010 12:51 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
Есть такое детское правило в русском языке "жИ [жы] - шИ [шы] - пиши с И"
Эта ошибка тебе говорит, что не может найти файл(ы) по адресу С:\UDK\UDK-2010-03\Binaries\Win32\..\..\UTGame\Src\Su
perRocket\Classes\*.uc
Хрен знает, что ты там накрутил, я не вижу


--------------------
Публикаций: 134 | Комментариев: 778      
#7 написал: Brain
20 Апреля 2010 15:19 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 17.02.2010
я уже понял свою ошибку , я написал ModPackages=SuperRocket в DefaultEditor.ini
а нужно было написать +EditPackages=SuperRocket в DefaultEngine.ini


--------------------
Публикаций: 2 | Комментариев: 13      
#8 написал: Brain
21 Апреля 2010 18:19 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 17.02.2010
PROOF , почему когда я сделал всё , сделал скипты все , прокомплирировал все (Без ошибок) запускаю и почемуто я появляюсь не с ракетницой а с стандартными оружыями :(


--------------------
Публикаций: 2 | Комментариев: 13      
#9 написал: FACH
21 Апреля 2010 19:21 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
Надо этот созданный мутатор включить при создании карты


--------------------
Публикаций: 134 | Комментариев: 778      
#10 написал: Strelok616
31 Мая 2011 10:23 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 25.05.2011
Таже ошибка, что и у Brain"Warning, Can't find files matching C:\UDK\UDK-2010-03\Binaries\Win32\..\..\UTGame\Src\Su
perRocket\Classes\*.uc"
Всё перепроюовал, и ничего не изменилось, всё та же ошибка.
Не подскажите, чего сделать можно?
Публикаций: 0 | Комментариев: 20      
#11 написал: FACH
31 Мая 2011 11:01 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
Для начала показать нам скрином, что у тебя в папке \UTGame\Src\SuperRocket\Classes\


--------------------
Публикаций: 134 | Комментариев: 778      
#12 написал: Strelok616
31 Мая 2011 12:41 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 25.05.2011
Вот:(http://s50.radikal.ru/i127/1105/05/f90e8e2d2e1a.jpg)
Публикаций: 0 | Комментариев: 20      
#13 написал: FACH
31 Мая 2011 17:26 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
Молодец, блин.
Ты не обратил внимание на путь Documents\My Games\Unreal Tournament 3\UTGame\Src\... ?
А на название урока "Basic Scripting Tutorial for UT3"?


--------------------
Публикаций: 134 | Комментариев: 778      
#14 написал: Strelok616
31 Мая 2011 19:12 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 25.05.2011
Это я пробовал через УДК, если через Unreal Fronted из папки УТ3, выдаёт то же:
Warning, Can't find files matching C:\Documents and Settings\Администратор\Мои документы\My Games\Unreal Tournament 3\Binaries\..\UTGame\Src\SuperRocket\Classes\*.uc
Публикаций: 0 | Комментариев: 20      
#15 написал: FACH
31 Мая 2011 19:28 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
ну хорошо...
Перейдем далее по строке пути. Сколько букв "s" во множественном числе слова "классы" на английском языке?

Сделал только что по уроку. ВСЕ РАБОТАЕТ


--------------------
Публикаций: 134 | Комментариев: 778      
#16 написал: Fitil_san
26 Марта 2012 22:22 | ICQ: 412082434 |


Группа: Посетители
Регистрация: 19.03.2012
А есть что-нибудь более продвинутое? Не в стиле что бы сделать "Мутатор" или создать сабкласс и что-то в этом духе как - "нажми сюда и сюда, скопируй этот код и получишь это!", а что-нибудь более серьёзное, что бы более понять как работают системы, ссылки и классы. Хотя базовые знания С++ имею, но вот в Uscript'инге не особо шарю и с поправочкой на удк если возможно. Имел дело с UniCodeX ну и конечно же ориентируюсь в коде

Ну т.е. не совсем более продвинутое, но получше познакомиться с базовыми концепциями, что-ли...


--------------------
Публикаций: 0 | Комментариев: 17      
#17 написал: FACH
27 Марта 2012 08:20 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
http://udn.epicgames.com/Three/TechnicalHome.html


--------------------
Публикаций: 134 | Комментариев: 778      
Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...






При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна!
© 2008—2012, UNREAL-LEVEL.RU. Все права защищены.