|
| |||
|
| |||
| |
Здравствуйте. Вы находитесь на сайте 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. ![]() После чего машина задумается и через 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. ";"- значит окончание скрипта. ![]() Сохраните этот файл. По идее сохранять надо в кодировке Юникод, но я не обратил на это внимание и сохранил как было по умолчанию (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" - запустится процесс компиляции - для такого простого пака он займёт пару секунд. ![]() Можно компилировать из командной строки уже открытого редактора. Самое удобное - создать копию ярлычка UT3 и в свойствах дописать make. Вот как это выглядит: При запуске этого ярлыка - автоматически откроется окно компиляции - не надо каждый раз запускать редактор. В любом случае - если Вы все сделали правильно по предыдущим пунктам то увидите надпись 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", то увидите наш класс. Конечно никакой функции он не несёт. Создание мутатора Теперь, попробуем создать простой мутатор. Мутатор - это тоже скрипт. Наш мутатор будет называться 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. 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) Испытывайте написанный своими руками мутатор в игре ))) Итак, что мы получили на выходе? Игрок появляется с RL в руках, стреляющим очень мощными ракетами с большим радиусом поражения. Визуально мутатор ничего не изменяет - то есть взрывов на пол-карты как от редимера не будет. Но даже если ракета попадёт достаточно далеко от врага - его заденет невидимой взрывной волной и порвёт на куски. Тактика игры меняется радикально - достаточно хотя бы выстрелить в сторону врага и можно быть уверенным, что фраг (а зачастую и дабл/мульти-килл и т.д) обеспечен. Счёт растёт как на дрожжах; как и суициды. Однако, надо помнить, что у ботов такие же пушки - правда пользуются они ими не особо умело. Обратите внимание что в данном мутаторе присутствует немало "ляпов" (на самом деле так и задумано - т.к. этот мутатор чисто очень простой, чисто для обучения - при желании, их все можно устранить) - ракеты пущенные альтернативным режимом или кинутые как гранаты - наносят прежний ущерб (т.к. они являются другим классом); то же самое с рокет лаунчерами у Титанов - они остаются прежними (и это другой класс) - становиться Титаном теперь не выгодно; если в игре подхватить обычный RL - то у вас окажется и он и SuperRocketLauncher... Ну да бог с геймплейной составляющий - всё таки не для этого мутатор делали. Распространённые Ошибки При запуске редактора не появляется заветная табличка предлагающая скомпилировать изменённые скрипты, а при запуске непосредственно ярлыком выдает: С 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: Не Указано |
#2 написал: Vermillion 19 Декабря 2009 18:14 | ICQ: 392202766 |
#3 написал: bobr 9 Января 2010 17:39 | ICQ: Не Указано |
#4 написал: PROOF 9 Января 2010 17:53 | ICQ: 6668742 |
#5 написал: Brain 20 Апреля 2010 08:41 | ICQ: Не Указано |
#6 написал: FACH 20 Апреля 2010 12:51 | ICQ: 562039160 |
#7 написал: Brain 20 Апреля 2010 15:19 | ICQ: Не Указано |
#8 написал: Brain 21 Апреля 2010 18:19 | ICQ: Не Указано |
#9 написал: FACH 21 Апреля 2010 19:21 | ICQ: 562039160 |
#10 написал: Strelok616 31 Мая 2011 10:23 | ICQ: Не Указано |
#11 написал: FACH 31 Мая 2011 11:01 | ICQ: 562039160 |
#12 написал: Strelok616 31 Мая 2011 12:41 | ICQ: Не Указано |
#13 написал: FACH 31 Мая 2011 17:26 | ICQ: 562039160 |
#14 написал: Strelok616 31 Мая 2011 19:12 | ICQ: Не Указано |
#15 написал: FACH 31 Мая 2011 19:28 | ICQ: 562039160 |
#16 написал: Fitil_san 26 Марта 2012 22:22 | ICQ: 412082434 |
#17 написал: FACH 27 Марта 2012 08:20 | ICQ: 562039160 |
Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...
|
|
|
При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна! © 2008—2012, UNREAL-LEVEL.RU. Все права защищены. |