Инструкция по использованию редактора/Полет по маршруту
Миссия будет имитировать разведывательный полет американского истребителя над немецкой территорией. Игроку надо будет пролететь по нескольким ключевым точкам.
Содержание
- 1 Создание миссии
- 1.1 Создание самолета игрока
- 1.2 Расстановка точек маршрута следования
- 1.3 Выдача задания на пролет по маршруту
- 1.4 Задание начальной точки маршрута
- 1.5 Отслеживание достижения начальной точки маршрута
- 1.6 Указание на последующие точки маршрута
- 1.7 Выполнение задания пролета по маршруту
- 1.8 Завершение миссии
- 2 Расстановка зенитных орудий
- 3 Расстановка танков
- 4 Назначение пути движения для танков
- 5 Включение движения танков
- 6 Расстановка вражеских истребителей
- 7 Усыпление вражеских истребителей
- 8 Пробуждение вражеских истребителей
- 9 Атака вражескими истребителями самолета игрока
Создание миссии
Запустите редактор и, с помощью пункта меню «Project->OpenProject» откройте карту «Bulge». Перейдите в закладку «Mission Editor» основной панели инструментов редактора. Найдите кнопку «Create New Mission» и нажатием на нее создайте новую миссию.
Для того, чтобы открыт окно свойств миссии нажмите кнопку «Properties and Trigger/Missiob Obj. info». В появившемся окне распахните раздел «Mission Settings», найдите и распахните в нем раздел «stars», отвечающий за дату и время проведения миссии. Выставьте дату миссии в 1 января 1945 года, 10 часов утра. Для этого вы должны изменить значения полей «year», выставив в нем 1945; «month», выставив в нем «1» - первый месяц; «day», выставив в нем «1» - первое число; и «time», выставив нем «10», что соответствует 10 утра. Сверните раздел «stars».
Найдите и распахните раздел «mission» , в поле «name» введите имя миссии на английском языке. Выставьте «level» в «bulge», чтобы при старте миссии игра грузила именно эту локацию. Тип миссии «type» выставьте в «singleMission», так как мы делаем одиночную миссии. Поле «restoreType» надо выставить в «attempts», если вы хотите, чтобы у игрока было несколько попыток пройти миссию, и «tactical control», если вы планируете дать игроку в подчинение несколько самолетов: тогда в этом случае, после гибели самолета игрока он переместится в следующий, еще не погибший самолет из своей эскадрильи. Игровую кампанию «campaign» необходимо выставить в «western», что позволит миссии появиться в разделе «Западной военной кампании». В поле «environment» выберите какой тип неба будет в миссии (выберите тип неба соответствующий часу миссии, который вы выставили выше). В поле «weather» выставьте тот тип погоды, который вам больше понравится.
Создание самолета игрока
С помощью кнопки «Create unit», расположенной на закладке «Mission Editor» основной панели инструментов редактора, предварительно убедившись, что в поле справа от этой кнопки выбран тип «armada», создайте самолет игрока и поместите его над одной из больших дорог карты.
Откройте окно свойств объекта, нажав на кнопку «Show/hide object props panel» и в появившемся окне измените поле «Name:» на «player». Поднимите самолет на 800 метров, изменив параметр «Position», состоящий из трех пунктов: «позиция игрока по оси X», «позиция игрока по оси Y» (высота), «позиция игрока по оси Z». В поле «Class» выберите тип самолета, на котором будет лететь игрок: «p-39q_5», а в качестве вооружения, выберите в поле «Weapon» значение «p_39q_5_default».
Распахните раздел «Properties» в этом же окне и найдите поле «army». Выставьте значение индекса армии в «1». Ниже в поле «count» поставьте значение «2», что приведет к тому, что при запуске миссии у игрока окажется напарник, под управлением АИ. Тут-же нажмите на кнопку «+ numInWing» и введите значение «2», что позволит сгруппировать эскадрилью игрока по 2 самолета. Теперь опять откройте окно свойств миссии с помощью кнопки «Properties and Trigger/Missiob Obj. info», найдите раздел «player_teamA», распахните его и нажмите на кнопку рядом с полем «wing». В появившемся окне выберите самолет игрока. Вы только что дали игре знать какой именно из самолетов считать самолетом игрока.
Сохраните миссию с помощью кнопки «Save mission» и запустите ее с помощью кнопки «Run mission», для того, чтобы убедиться что вы все сделали правильно.
Расстановка точек маршрута следования
Найдите крупную дорогу неподалеку от самолета игрока. С помощью кнопки «Create point zone», расположенной на закладке «Mission Editor» основной панели инструментов редактора, создайте над дорогой зону в виде точки. Выделите ее и измените имя на «waypoint01» так-же, как вы изменяли имя у самолета игрока. Создайте еще 8 таких зон с именами: «waypoint02»-«waypoint09», расположив их вдоль дороги на расстоянии нескольких километров друг от друга. Расположите зоны так, чтобы они находились в 200-300 метрах над дорогой и только самую последнюю зону поднимите на полтора-два километра.
Выдача задания на пролет по маршруту
Задание всей миссии у нас будет одно: «пролететь по маршруту». Для того, чтобы его добавить необходимо создать текстовый документ, названный так-же, как назван файл, в который вы сохранили миссию, но с расширением «.csv». Откройте этот файл с помощью блокнота и сохраните его в кодировке «UTF-8». Теперь добавьте в этот файл строку: «"follow_to_waypoints";"Follow to checkpoints";"Проследйте по маршруту"» и сохраните его еще один раз. Строка, которую вы добавили состоит из трех частей, заключенных в кавычки и разделенных между собой точкой с запятой. Первая часть «follow_to_waypoints"» - уникальный идентификатор задания. В пределах одного файла не должно быть второго идентификатора с таким-же именем. Вторая часть «"Follow to checkpoints"» - текст задания на английском языке. Третья часть «"Проследйте по маршруту"» - текст задания на русском языке.
Теперь вернитесь в редактор игры, с помощью кнопки «Properties and Trigger/Missiob Obj. info» откройте окно свойств миссии, найдите раздел «Triggers / Mission Ob. Navigation». Внизу этого раздела вы увидите ряд кнопок. Нажмите на «Mission Obj» и в появившемся окне выберите «abstractionMissionObjective». Вы создадите новую цель миссии. Выделите только что созданную цель миссии и в окне справа измените ее имя на имя идентификатора из текстового файла без кавычек: «follow_to_waypoints».
Сохраните миссию и запустите ее. Убедитесь, что при старте миссии вы получаете задание миссии.
Задание начальной точки маршрута
Для того, чтобы показать игроку куда лететь надо как-то обозначать ту точку маршрута, которой ему необходимо достичь. Для этого в разделе «Triggers / Mission Ob. Navigation» нажмите кнопку «Trigger» для создания триггера. Именно в триггерах будет задаваться вся логика миссии. Выберите только что созданный триггер и в окне справа измените его «Name:» на «mission_start». Под именем триггера вы можете увидеть поле «Enabled» со включенной галочкой. Это означает что триггер будет активен сразу после начала миссии.
Ниже в этом же окне вы можете увидеть поле «Elements», в котором есть три пустых дерева: «Events», отвечающее за то когда триггер пытается исполниться; «Conditions», отвечающее за то, какие существуют условия проверки выполнения триггера; и «Actions», отвечающее за то, что именно происходит в триггере.
Сейчас в дереве «Events» находится событие «periodicEvent». Выделите его и нажмите кнопку «Delete», расположенную снизу поля «Elements», для того, чтобы удалить. Теперь нажмите кнопку «Event», чтобы добавить новое событие. В появившемся окне доступных событий выберите «initMission». Теперь данный триггер попробует выполниться сразу после старта миссии. Никаких условий для проверки выполнения триггера нам не надо, поэтому просто добавим новую команду, нажав на кнопку «Action». В появившемся окне выберите «missionMarkAsWaypoint», и настройте ему параметры:
- в поле «target» выберите первую точку маршрута, через которую надо пролететь игроку «waypoint01»
- включите галочку напротив поля «visible», что отобразит точку в пространстве игры и на карте
- включите галочку напротив поля «primary», что дополнительно пометит игроку точку, как основную точку маршрута
Сохраните миссию, запустите ее и проверьте, что все работает как надо.
Отслеживание достижения начальной точки маршрута
Теперь необходимо отследить факт достижения игроком первой точки маршрута, для того, чтобы спрятать первую точку, пометить вторую точку в качестве основной и показать третью точку. Для этого создадим новый триггер и назовем его «to_waypoint02». Оставим ему включенной галочку «Enabled», чтобы проверка началась сразу же после старта миссии. В списке «Events» оставим событие «periodicEvent», так как нам подходит проверка на запуск триггера раз в секунду, что даст нам проверку на достижение точки маршрута раз в секунду. В отличие от предыдущего триггера нам будет необходимо добавить условие выполнения, чтобы триггер сработал только если игрок приблизится к точке маршрута. Для этого нажмите кнопку «Condition» и в появившемся окне выберите «playerDistanceBetween», заполнив поля:
- в поле «target» укажите ту точку, приближение к которой необходимо определить. Это будет «waypoint01»
- в поле «value» укажите дистанцию, на которую необходимо приблизиться к точке, например «750» метров
- в поле «math» оставьте «2d», чтобы роль того по какой оси происходит проверка не играла никакой разницы
- остальные поля оставьте такими, какие они есть, подробнее они будут рассмотрены в других примерах
Теперь, когда мы задали условие выполнения миссии давайте создадим набор команд, который должен будет выполниться. Первой командой будет выключение отображения той точки маршрута, к которой приблизился игрок. Для того, чтобы добавить эту команду нажмите кнопку «Action» и в появившемся списке выберите «missionMarkAsWaypoint» с параметрами:
- в поле «target» выберите точку маршрута к которой приблизился игрок: «waypoint01»
- выключите галочку напротив поля «visible», что отобразит точку в пространстве игры и на карте
Теперь давайте покажем игроку следующую точку маршрута. Для этого добавим команду «missionMarkAsWaypoint», и настройте ему параметры:
- в поле «target» выберите первую точку маршрута, через которую надо пролететь игроку «waypoint01»
- включите галочку напротив поля «visible», что отобразит точку в пространстве игры и на карте
- включите галочку напротив поля «primary», что дополнительно пометит игроку точку, как основную точку маршрута
Сохраните миссию, запустите ее и проверьте, что все работает как надо.
Указание на последующие точки маршрута
Создайте дополнительные триггера с именами «to_waypoint03»-«to_waypoint09» по аналогии с предыдущим, но у всех у них снимите галочку поля «Enabled», находящегося сразу под именем триггера. Это не позволит триггерам начать работу сразу после старта миссии. Триггер, ведущий к последней точке маршрута назовите «to_the_end».
Теперь давайте последовательно включать триггера, по мере продвижения по маршруту. Для этого в триггер «to_waypoint02» добавьте новую команду: «triggerEnable», которой в качестве «target» укажите следующий по списку триггер: «to_waypoint03». Таким образом обработка триггеров будет происходить последовательно. Отключать те триггера, которые уже отработали в данном примере нет необходимости, потому что они работают у нас строго один за другим, а выполнив все команды, которые содержатся внутри, самостоятельно выключаются.
Добавьте команду «triggerEnable» с правильными «target» во все оставшиеся триггера кроме последнего, названного «to_the_end».
Сохраните миссию и запустите ее, чтобы проверить, что все работает правильно.
Выполнение задания пролета по маршруту
Теперь давайте перейдем в финальный триггер «to_the_end» и добавим в него команду, которая пометит задание выполненным. Для этого из списка команд выберите «moSetObjectiveStatus», указав ему в качестве «target» задание с идентификатором «follow_to_waypoints», и выставив ему «status» равный «2», что соответствует выполненному заданию.
Завершение миссии
В триггер «to_the_end» добавьте команду «wait», изменив значение «time» на «3» секунды. Это делается для того, чтобы между появлением сообщения о выполнении задания и последующем сообщении окончания миссии прошло некоторое время и сообщения не наползали друг на друга.
Теперь добавим команду «missionCompleted».
Сохраните миссию и запустите ее, чтобы убедиться, что все сделано правильно.
Расстановка зенитных орудий
Теперь давайте немного оживим миссию и добавим в нее сложности. Для этого расставим вдоль пути следования игрока несколько зенитных орудий.
Нажмите на кнопку «Create unit», расположенную на закладке «Mission Editor» основной панели инструментов, предварительно убедившись, что в поле справа выбрано «air_defence». Поставьте шесть орудий вдоль пути следования игрока. Измените имена зенитных оружия на что-то, что позволит сразу понять что это за орудия и на чьей они стороне. Например можно назвать их «germ_air_def01»-«germ_air_def06». Для каждого орудия необходимо заполнить поле «class», выбрав из списка «germ_20mm_flak38», и выставив им поле «army» в «2» (для игрока и его союзников это поле должно быть равным «1»).
Сохранитесь, запустите миссию, и убедитесь что вражеские зенитные орудия стреляют, когда вы пролетаете мимо.
Расстановка танков
Так как игрок летит достаточно низко, и может хорошо видеть наземные объекты, давайте на прямом участке дороге, между точками «waypoint03» и «waypoint04» выставим немецкие танки и пустим их ехать по дороге.
Для этого с помощью кнопки «Create unit», предварительно убедившись, что в поле справа выставлено «tracked_vehicles» поставьте танк на дорогу. Измените имя танку на «germ_tanks01», в поле «Class» выставьте «germ_tiger1», «army» в «2» а количество «count» равным 10.
Назначение пути движения для танков
Для того, чтобы задать траекторию движения танкам необходимо указать ключевые точки. Для этого нажмите на кнопку «Create waypoint» и укажите те места на карте, через которые вы хотите, чтобы проехали танки. После того как расстановка ключевых точек закончена выделите танк. В окне со свойствами танка найдите поле «Waypoints» в котором находится список всех узловых точек, назначенных танку. Выберите эти точки в этом окне по очереди и с помощью колесика мыши прокрутите окно свойств танка в самый низ до раздела «Waypoint Props» и измените в нем параметр «speed» на «0». Сделайте это для всех узловых точек танка. Таким образом мы запретили танку двигаться от точки до точки, чтобы они не уехали с пути игрока раньше времени.
Включение движения танков
Когда игрок долетит до «waypoint03», он сможет увидеть на земле танки. Давайте заставим их двигаться в этот момент, чтобы у игрока создалась иллюзия танков на марше. Для этого перейдем в триггер «to_waypoint04» и добавим туда новую команду «unitSetProperties», заполнив ее поля следующим образом:
- поле «object» выберите «germ_tanks01»
- нажмите кнопку «+ speed», расположенную ниже, и в появившемся поле введите скорость «20»
Теперь танки начнут двигаться по своему маршруту, когда игрок достигнет точки маршрута с именем «waypoint03».
Расстановка вражеских истребителей
Давайте еще более усложним жизнь игроку и в середине маршрута добавим ему встречу с реактивными немецкими истребителями «Me-262». Для этого воспользуемся кнопкой «Create unit», убедившись, что в поле справа выбрано «armada» и разместим самолет противника рядом с одной из точек маршрута на высоту около 2 километров. Изменим имя на «germ_fighters», в качестве самолета выберем «me-262a-a1», выставим ему оружие по умолчанию, поле «army» выставим в «2», количество самолетов «count» выставим в «2», и поле «numInWing» так же выставим в «2».
Усыпление вражеских истребителей
Так как по замыслу истребители противника нападут на игрока только на середине маршрута, необходимо временно их усыпить. Для этого в триггере «smission_start», который выполняется сразу при запуске миссии, необходимо добавить команду: «unitPutToSleep», в качестве «target» указав «germ_fighters».
Пробуждение вражеских истребителей
Когда игрок достигает середины своего маршрута, точки, рядом с которой мы поставили немецкие истребители, нам необходимо разбудить их. Для этого переходим в триггер «to_waypoint06» и добавляем в него команду «unitWakeUp», в качестве «target» указав «enemy_fighters».
Атака вражескими истребителями самолета игрока
Вражеские истребители пробудились, теперь надо заставить их атаковать игрока. Для этого в триггер «to_waypoint06» добавим новую команду «unitAttacktarget», выставив ей следующие параметры:
- в поле «object» выбираем немецкие истребители «germ_fighters»
- в поле «target» выбираем игрока «player»
- находим поле «fireRandom», добавляем его и включаем галочку, чтобы истребители противника выбирали себе цели случайным образом из всей эскадрильи игрока, а не атаковали одну и ту же цель
- находим поле «playerAttracted», добавляем его и включаем галочку, тут же указав в поле «playerAttractedCount» значение «1», чтобы хотя бы один истребитель противника все время атаковал непосредственно игрока и не отвлекался на остальные цели.
Сохраняем миссию и запускаем ее для финального теста.