| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Сейчас если мы покупаем игру, то почти наверняка в комплекте с ней получаем и
игровой редактор. В основном редакторы дают возможность создать свой уровень,
карту, сценарий... Более мощные могут слегка изменять программный код и
сохранять полученную информацию в виде модуля.
Я делю редактирование игр на 2 категории - непосредственное копание в файлах
(например, Worms: Armageddon, где каждая миссия была "записана" в отдельный
текстовик) и редактирование с помощью специального редактора , нередко
встроенного в оболочку игры (Age of Empires, Age of Mythology).
Большинство редакторов работает следующим образом: поставил объекты, настроил
их параметры, настроил глобальные параметры и... все. Играть на таких картах
не очень интересно. Поэтому разработчики компьютерных игр создали, так
называемые,триггеры. Триггеры - это специальный,скриптовый язык созданный для
определенных целей (в данном случае:для настройки специальных событий).Поясню
на примере Age of Empires 2. Здесь триггер - это набор условий и набор
эффектов.Как только выполнятся все условия,тут же начнут выполняться эффекты,
в том порядке,в котором они указаны.Также триггер имеет собственные настройки,
от которых зависит:включен ли триггер с самого начала,повторится ли он в игре.
Когда я впервые увидел редактор Империй, то подумал, что ничего интересного в
нем нет. Но однажды скачал из сети RPG карту. То,что я там увидел меня сильно
потрясло. Я не спал пару ночей. Там и приключения, и нежить, и покупка
недвижимости, и разговор с любым(!) персонажем, и квесты, и инвентарь(!), и
даже магия! И это,учитывая, что Эпоха это реалистичная игра - магии и fantasy
нет и в помине! Есть только хороший скриптовый язык.
Но две самых триггерно-продвинутые игры,на мой взгляд, это Герои Меча и Магии
3.5: «Во имя Богов» и WarCraft 3:The Frozen Throne. Расскажу о них подробнее.
Многие,кто играли в HoMM3.5 (Heroes of Might and Magic 3.5) уже догадываются,
что речь пойдет о скриптовом языке ERM. Игроки видели его возможности в
прилагавшихся к игре кампаниях. Язык основан на изменениях свойств объектов,
о изменении которых картостроители могли только мечтать. Стало возможно
изменение параметров монстров, артефактов, героев. Появилась возможность
создавать и убирать объекты, переносить игроков из одного места в другое! Но
многие картостроители так и не смогли разобраться в ERM. Главная причина в
сложной системе синтаксиса. Например, пусть есть конструкция:
IF (<герой_игрока> попал на клетку 10,15,1) THEN перенести <герой_игрока> на клетку 15,10,0;
В ERM придется писать следующее:
ZVSE
!?LE10/15/1;
!!HE-1:P15/10/0/1;
Попробуй, отладь такой текст! Но в сети можно встретить ярых приверженцев
такого способа записи, мол, когда нет заученных сочетаний слов, то и внимание
улучшается и вероятность ошибок,следовательно,меньше. Теперь способ помещения
скрипта на карту. Надо просто в настройках карты создать глобальное событие,
которое случится после 600 дня и в него скопировать текст из редактора.Кстати
в комплекте с игрой поставляется редактор ERM_se, в папке с таким же именем.
Данная программа облегчает работу с языком, но интерфейс слегка кривоват. В
целом очень сложный, но интересный язык.
Вторая игра,о которой я хотел бы рассказать - это WarCraft3:TFT. Многие люди,
которые играли в него знают, что в WorldEditore (редакторе для WC) есть
встроенный редактор триггеров.Конечно хороший редактор,много событий,условий,
действий. Многие считают,что на движке WarCraft’a можно сделать очень многое:
стрелялки, гонки, RPG, бродилки, квесты - это, что уже сделано игровым
сообществом. И все это только с помощью редактора триггеров и редактора
объектов. Но я расскажу не о данных редакторах, а встроенном в игру языке
программирования. Называется язык JASS, был разработан, как язык высокого
уровня, но для игры. Но этот язык очень малораспространен, во-первых, из-за
сложности,во-вторых,из-за отсутствия толкового официального редактора. Второе
особенно плохо, так как при ошибке карта просто вылетает, без вразумительных
сообщений об ошибках. А «изгонять чебурашек» из сплошного текста почти
невозможно. Хорошо, что фанаты игры (редактора?) выпустили неофициальные
JASS-редакторы. Вот пример кода:
function SimpleFunction takes unit summon, unit master returns nothing
local integer o=GetUnitCurrentOrder(summon)
local real tx=GetUnitX(master)
local real ty=GetUnitY(master)
local real angle
local real dist
set dist=SquareRoot(Pow(tx-GetUnitX(summon),2) + Pow(ty-GetUnitY(summon),2))
if (dist > UnitGuardUnitAI_maxdistance() ) and (o == 0 or o == OrderId("attack")
or o == OrderId("move") or o == OrderId("stop") or o==851971) then call
IssuePointOrder(summon, "move", tx,ty)
elseif dist >= UnitGuardUnitAI_cometomindist() and (o == 0 or o == 851971)
then set angle = GetRandomReal( GetUnitFacing(master)-80,
GetUnitFacing(master)+80) * IntegerTertiaryOp( ModuloInteger(
GetUnitPointValue(summon), 2) == 0,1,-1)
set dist = GetRandomReal(UnitGuardUnitAI_cometomindist(),
UnitGuardUnitAI_cometomaxdist() )
if not IssuePointOrder(summon, "attack", tx+dist*CosBJ(angle), ty+dist*SinBJ(angle) )
then call IssuePointOrder(summon, "move", tx+dist*CosBJ(angle), ty+dist*SinBJ(angle) )
endif
endif
set summon=null
set master=null
endfunction
Одного взгляда достаточно,чтобы расхотеть заниматься таким программированием.
А ведь данный язык еще чувствителен к регистру букв! Тем не менее, JASS был и
остается самым лучшим языком программирования. Зачем же картостроители
используют JASS? Не хватает World Editor’a? «Не хватает!» - ответят вам. JASS
позволяет более гибко редактировать объекты,вмешивается в саму механику игры,
контролируя все даже положение мыши! JASS-выбор настоящего, профессионального
картостроителя. Простым смертным лучше даже не пробовать. Только если
чуть-чуть...
На свете много разных скрипто-триггерных языков. Но чтобы разбираться в них
лучше, надо выучить хоть один «нормальный» язык программирования, например
Pascal или Basic. Знаете «нормальный» язык поймете и «игровой». Засим
откланяюсь. Отзывы шлите на [email protected].
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |