Страница 1 из 11
Форум » Мастерская » В помощь картоделу » Создание миссий для игр Red Bear TvT » Разработка простой миссии для Red Bear TvT
Разработка простой миссии для Red Bear TvT
Среда, 14.06.2017, 13:28
1
Руководитель RBC
Командир отряда
В данной теме мы рассмотрим процесс разработки миссии для игр.

Работа над миссией состоит из нескольких этапов

1. Продумывание сюжета и подбор карты, а так же места и времени, в которые миссия будет происходить.

Сюжет может быть разнообразный настолько, насколько позволит движок армы, количество необходимого контента и ваша фантазия. Например, вы можете взять за основу какие то события из военной истории, из фильма или придумать сценарий самостоятельно.

Очень важно тщательно подобрать место действия. Ландшафт должен быть разнообразным и интересным для играющих, время и погодные условия должны усиливать эффект от окружения на игроков.
Так же можно воспользоваться редактором эден и добавить в окружение дополнительные элементы. Дополнительные укрытия, здания, камни и сломанная техника добавит атмосферы, но увлекаться не стоит, так как все что вы установите на карту в конечном итоге будет влиять на производительность сервера. Уменьшение фпс и тормоза в момент боя не добавят радости игрокам. Не увлекайтесь.

2. Если вы определились с местом и сюжетом, можете приступать к созданию подразделений. Вы можете использовать уже готовые подразделения из предложенного нами в сборке контента готовых подразделений, или сделать подразделения самостоятельно, используя скрипты или непосредственно в арсенале эдена.

Последний способ рассмотрен в уроке ниже:



При выборе подразделений для сторон обязательно нужно учитывать, чтобы подразделения враждующих сторон отличались друг от друга. вы должны руководствоваться таким принципом, чтобы врага можно было отличить от союзника как минимум за 300-400 метров невооруженным оптикой глазом. В этом же смысле не нужно увлекаться созданием индивидуального внешнего вида для каждого бойца. Большое количество разнообразных комплектов униформы на одной стороне приведет к путанице и ненужным тимкиллам, что обязательно выразится в количестве замечаний к вашей миссии.


 
Пятница, 16.06.2017, 20:05
2
Руководитель RBC
Командир отряда
После того, как мы создали подразделения, можем перейти к триггерам.
За пример возьмем пожалуй самый распространенный вид миссии по захвату/обороне зоны.

В самом начале вы должны определиться, будете ли вы делать миссию по захвату одной зоны, или нескольких. В требованиях к миссиям написано, что зон для захвата может быть три, это сделано для того чтобы картоделы сильно не распыляли силы обороны и не размазывали их ведь триггеры необходимо оборонять и если разбить оборону на охрану многих зон находящихся на значительном расстоянии, то атаке не составит труда захватить зоны по одной ударив всеми силами.  Исключение может быть сделано если триггеры находятся вплотную друг к другу, например делят город на несколько частей, тогда допускается применять больше 3-х зон с триггерами захвата.



Условие для триггера по захвату зоны:

Код
west countSide thislist > 4 && east countSide < 3

Активация триггеров по захвату зоны если у вас всего один триггер захвата на миссии должен привести в победе атакующей стороны. В уроке это синие.

Код
[west, "Американцы победили!"] call wmt_fnc_endMission;

Если же вы делаете на миссии две зоны то условия триггеров захвата будут те же самые, но необходимо будет прописать активацию применимо к данной конкретной зоне:

Код
[west, "Город захвачен!", ["zone1"]] call wmt_fnc_zoneCaptured;

Данный код активации выводит сообщение что зона под названием "Город" была захвачена а так же перекрашивает цвет соответствующего маркера в цвет атакующей стороны в нашем случае стороны west (запад) цвет меняется на BLUFOR из списка цветов маркера.

Не забудьте прописать названия для маркеров и триггеров

Для оставшихся триггеров захвата зон активация прописывается таким же образом меняются только имена зон и названия маркеров соответствующих данным зонам.

Для победы синей стороны с несколькими триггерами захвата зон понадобится триггер с условием

Код
triggerActivated tzone1 && triggerActivated tzone2

Триггер учитывает, что оба триггера захвата зон с названиями tzone1 и tzone2 были активированы и активирует победу
синей стороны. Для этого в активации триггера прописываем:

Код
[west, "Американцы выполнили все задачи и победили!"] call wmt_fnc_endMission;

Чтобы у вас не было путаницы в голове со сторонами и цветами остановимся на этом подробнее.

В ARMA3 существует 3 стороны конфликта которым присвоены разные цвета.

Синие  это west или blufor

Красные  это east или opfor

Независимые это resistance или independent

 
Среда, 21.06.2017, 01:30
3
Руководитель RBC
Командир отряда
Третьим и заключительным этапом создания миссии будет подготовка файлов необходимых для запуска миссии.



Для работы миссии дополнительно необходимы следующие файлы:

init.sqf  - стартовый файл миссии, запускается автоматически

description.ext - файл описания миссии и её параметров

briefing.sqf - файл для отображения задач и условностей

Все эти файлы текстовые и их можно создать или отредактировать в обычном блокноте.

init.sqf

Обязательные строки которые должны присутствовать в этом файле:
Код
enableSaving [false, false];    // Первый параметр отвечает за разрешения сохранений, второй за автосохранение
disableRemoteSensors true;   // команда отвечает за включение/отключение raycasting расчетов
waituntil {!isnil "bis_fnc_init"}; //  команда ожидания инициализации функций
Дополнительные параметры которые обязательно должны быть прописаны в init на Redbear:
Код
[] call wmt_fnc_briefingmap;  // команда позволяющая использовать карту рядом стоящего бойца или внутри техники.
[] execVM "briefing.sqf"; //  команда для авто-запуска файла брифинга
Так же в init могут быть прописаны другие функции запуска файлов нужные для работы вашей миссии
запуск файлов производится командой
Код
[] execVM "название файла";
файлами для запуска могут быть файлы со скриптами создания баз Zealota - Runtime, или скрипты снаряжения юнитов.

Если файлов со скриптами много, для порядка их складывают в отдельные папки, а вместе с названием файла прописывают путь к нему.

description.ext

Обязательный блок:
Код
disableChannels[]   = {0,2,4,5,6};
enableDebugConsole   = 1;

corpseRemovalMinTime= 86400;
wreckRemovalMinTime = 86400;
Блок Header необходим для определения вашей миссии в фильтрах мультиплеера. Здесь можете тоже ничего не менять.
Код
class Header {
   gameType = Team;
   minPlayers = 1;
   maxPlayers = 200;
};

Изменяемые значения:

Код
author="ник автора миссии";          
OnLoadName = "Название миссии отображаемое при загрузке";
OnLoadMission = "Описание миссии отображаемое при загрузке";
loadScreen = "изображение или иллюстрация к миссии отображаемая при загрузке";
overviewPicture = "изображение которое будет использоваться при предварительном просмотре миссии";

Про формат изображений для миссий я уже писал ранее. Соотношение сторон картинки должно быть 2х1 я например использую картинки формата 700х350 и убежден, что больше и не нужно. Для картинки подойдут файлы с раширением paa или jpg.

Обязательно сожмите изображение настолько насколько это возможно, файлы картинок большого объема долго загружаются при закачке мисии с сервера большим количеством игроков, что задерживает игровой процесс. Желательно чтобы изображения была не больше 500кб, в идеале не более 100 кб.

Программа работы с кодом Notepad++
Программа для запаковки и распаковки PBOmanager
Инструментарий для работы с контентом ARMA 3 Mikero tools
Прикрепления: RBC_178_Moshniy.zip(133Kb)

 
Среда, 21.06.2017, 15:05
4
Руководитель RBC
Командир отряда
Брифинг

Брифинг миссии вам придется править каждый раз при создании новой миссии он содержится в файле briefing.sqf

Стандартно брифинг состоит из нескольких разделов с описанием задач, условностей и дополнительной информации. Многие делают оформление по своему ниже опишу как делаю это я. От себя замечу, что информация в брифинге должна быть максимально краткой и содержательной.

Брифинг начинается со строки:
Код
waitUntil { player == player }; //при наличии игроков выполнить инструктаж

Если форма юнитов одной или обеих сторон у вас не стандартная, не соответствует ванильным или юнитам RHS
необходимо показать игрокам внешний вид сторон юнитов, чтобы избежать путаницы и тимкилов на игре.

Для того чтобы показать изображения мы создаем дополнительный пункт меню с помощью команды player createDiaryRecord, конечно же перед этим вам необходимо подготовить хорошо различимые изображения юнитов. Сделайте скриншот одного юнита или поместите на скриншот сразу нескольких если одежда юнитов одной стороны существенно отличается друг от друга. Ну или можете сделать отдельные идображения для каждого юнита.

Код
player createDiaryRecord ["diary", ["Внешний вид сторон", "

ВСРФ
<img image='наименование файла' width='324' height='523'/> // наименование файла и размеры изображения
войска США
<img image='наименование файла' width='324' height='523'/>
"]];

Обязательно соблюдайте правильную пунктуацию в коде, не пропускайте квадратные, фигурные скобки и кавычки иначе ваш код не будет выполняться.

Если все описано правильно то в стандартном брифинге ARMA3 появится дополнительный пункт ВНЕШНИЙ ВИД, при выборе которого будет открываться дополнительное окно с изображениями юнитов.

Далее идет непосредственно сам брифинг для каждой стороны отдельно.

Мы создаем код с функцией switch, которая сравнивает и выводит соответствующую стороне игрока часть кода брифинга:
Код
switch (side player) do
{
case BLUFOR: { код брифинга для синей стороны };                 // west
case OPFOR:   { код брифинга для красной стороны };              // east
case RESISTANCE: { код брифинга для зеленой стороны };     // independent
};
Оставляем только те стороны которые присутствуют на вашей миссии в 90% случаях их две. К примеру если у вас синие (west) воюют против красных (east) то соответственно часть кода для зеленой стороны (independent/resistance) будет не нужна.

Разберем код для одной из сторон:
Код
case BLUFOR: {
player createDiaryRecord ["diary", ["Вводная","описываем здесь придуманный вами сценарий"] ];
player createDiaryRecord ["diary", ["Задачи", " описываем здесь задачи которые нужно выполнить синей стороне для победы" ] ];
player createDiaryRecord ["diary", ["Условности", " описываем здесь условности которые необходимо выполнять на миссии например это могут быть условия захвата зоны или другие игровые условности" ] ];
};

Как мы видим из кода в стандартном меню брифинга появятся дополнительные пункты Вводная, Задачи и Условности при активации которых будет выводиться окно с описанием, причем для каждого игрока будет выводиться брифинг с информацией той стороны за которую он зашел.

Использование маркеров для указания зон и объектов.

Если у вас сложная задача с захватом больше одной двух зон либо зоны распределены или на вашей миссии есть задачи по уничтожению стационарных объектов то вы можете указать на них на карте, прописав в задачи функцию  
Код
<marker name='zone'>название зоны или объекта</marker>
где zone - наименование маркера.  Название зоны высветится и станет работать как гиперссылка, при активации карта будет автоматически перемещать видовое окно на то место где установлен маркер с данным наименованием.

 
Форум » Мастерская » В помощь картоделу » Создание миссий для игр Red Bear TvT » Разработка простой миссии для Red Bear TvT
Страница 1 из 11
Поиск:

ЧАТ