- •2) Биомы (природа)
- •3) Настройки холста (игрового поля)
- •6) Грунтовка
- •7) Геймплейные объекты
- •9) Геометрия
- •1 0) Подкраска
- •11) Декали
- •12) Объекты
- •13) Установка юнитов и объектов из компании на карту
- •1 4) Принадлежность Каждый объект, который мы выставили (точка, здание, травка) должны иметь принадлежность. Принадлежность выбирается справа на панели до установки объекта, или после. Их две:
- •16) Тип почвы
- •17) Погода
- •Nsis installer
- •21) Фикс авиации
- •21) Мини-карта
Nsis installer
Ещё одна функция AME – это создания инсталлятора для карты. Когда карта сделана, её запаковывают, и заливают на какой-либо ресурс. Чтобы не возиться с WinRAR, идём в File => Generate NSIS Installer. Появляется диалог:
Жмём export, и архив готов.
20) Работа со SCAR Далее пойдёт материал для маперов со скилом уровня high. В компании карты не просто поле боя где AI воюет с игроком или с AI. Там может быть отыгран сложный сценарий (как например на картах Winter Assault). Т.е. игроку прямо во время боя даются юниты, исследования, здания, отображаются надписи \ таймеры, ставятся и завершаются задачи, звучат звуки \ музыка, завершается миссия. Поведение AI отличается от поведения в MP. AI может например, согласно сюжету, играть глухую оборону, бесконечно атаковать только одну область, или выполнять какие то другие не типичные для MP действия. За всё это отвечает скрипт, выполненный в виде большого количества функций с условиями. Если мы извлечем corsix’ом dxp2\Data\scenarios, и посмотрим в папках sp и mp, мы увидим вместе с файлами карт одноимённые файлы формата scar. Откроем scar-файл какой-нибудь карты из папки sp (например, stronghold_necron.scar) с помощью блокнота. Мы увидим там много непонятного кода. Во всём этом разбираться мы не будем. Попытаемся использовать некоторые из его возможностей, используя готовые скрипты. Звуки окружения и музыка На некоторых MP картах от разработчиков, где идёт дождь, слышан и его шум. Если мы в редакторе поставим эффект дождя и запустим карту, то дождь будет “немой”, но будет отыгрываться стандартный набор звуков окружения и музыка. Как выбрать окружение и музыку? В документах группы скачиваем файл scars.rar, извлекаем, находим внутри ambient.scar Помещаем в папку MP, переименовываем его тем же именем, что и наша карта. Открываем блокнотом, видим там код. Из всего функционала scar там прописана только функция отвечающая за музыку\окружение, а именно function Rule_SetupMusicPlaylist(). Выбираем музыку: Идём до строчки: t_music = {"music_theme_chaos_01","music_coming_of_chaos"}, тут в кавычках имена аудиофайлов для плейлиста. С помощью Corsix открываем Data\sound\music, и смотрим, какая музыка там есть. Заменяем имена в кавычках на имена файлов из папки music. Если не нужно заменять музыку, и достаточно стандартного плейлиста – удаляем эту строку, и строку ниже.
Выбираем окружение: Идём до строчки: t_ambient = {"ambient_desert","ambient_space","ambient_wind"}, в кавычках - имя звуковых файлов, которые будут звучать по порядку как окружение. Ниже даны варианты на добавку \ замену: Rain_thunder_amb – ливень с громом Snowy_wind_1 – вьюга
Snowy_wind_2– ветер с эхом
ambient_wind – ветер как на пустыре
ambient_desert – шумы с эхом как в пещере
ambient_space – слабый ветер с эхом
ambient_city – шумы с эхо, и далёкой канонадой
ambient-prototype-battle bg – активные боевые действия
Если не нужно устанавливать окружение, нужно удалить эту и следующую строчку. В идеале, лучше распаковать папку Data\sound\music, конвертнуть в mp3 с помощью Relic Audio Converter, отслушать, и выбрать нужные. От версии к версии наборы звуков могут изменяться.
Если указан не существующий аудиофайл, то скрипт его пропустит, продолжит плейлист выдав сообщение в консоли. Если в scar-файле ошибка синтаксиса (т.е. не поставлена скобка, запятая, или посторонний знак), клиент не вылетит, но это приведёт к аварийной остановке с сообщением “Ошибка выполнения”. Нужно нажать Pause Break на клавиатуре. Могут слететь условия победы. Смотрим консоль. Если вообще ничего не слышно – проверяем настройки звука.
Тоннели \ телепорты
В
се
помнят тоннели в цитадели некронов,
которые имеют вход и выход в разных
местах. Отряд входит в один конец тоннеля,
и выходит из другого через промежуток
времени, имитируя проход под землёй.
Некоторые пробовали ставить модель входа в тоннель, надеясь, что она будет работать, но нет. Это обычный декоративный world-объект, как дерево или камень. Фокус в том, что за телепортирование отвечает scar. Однажды я наткнулся на карту Castle Ruosteinen (6), и у неё был scar с таким тоннелями. Я не придал этому большого значения, но недавно меня озадачили вопросом, как это реализовать.
Допустим, что у нас есть скрипт тоннелей, взятый от Castle Ruosteinen (6), и мной чуть-чуть допиленный. Но как движок определяет, где именно точка входа\выхода? Если мы откроем карту из sp(некронскую цитадель), мы увидим на карте кучу жёлтых кружков с именем, которые находятся в центре окружностей разного диаметра. Это маркеры, а белая окружность - радиус его действия. Как написано выше, scar –скрипт - это набор функции, состоящих из набора условий. Условия привязаны к маркерам, и обращаются к ним по именам. Если в нутрии маркера происходит какое-то действие, которое нужно для выполнения условия, действие выполняется. В нашем случае, для действия(телепорта) необходимо условие наличия отряда в нутрии маркера.
Откроем
нашу карту, и установим маркеры: для
этого выберем инструмент Markers
,
справа на панельке выбираем basic_marker.
Делаем левый клик на холст. Появляется
жёлтая точка. Теперь выделяем её рамкой,
и сверху-справа на панели делаем двойной
клик по строчке Name.
В качестве имени вводим in1.
Делаем двойной клик по строчке Proximility,
и ставим 6. Маркер для входа готов. Ставим
на противоположной стороне ещё один
маркер, указываем радиус 0, и имя out1
– это выход. Т.к. в базовом варианте
скрипта от Ruosteinen
один тоннель телепортирует только в
одну сторону, нужно создать второй
тоннель, чтобы можно было возвращаться
обратно. Таким же образом создадим два
маркера in2
и out1,
ведущих в обратную сторону. Разместим
их как на картинке:
Качаем в документах группы архив scars.rar, находим внутри (в зависимости от кол-ва игроков) 2p_teleports.scar, помещаем в Data\scenarios\mp, переименовываем тем же именем, что и наша карта.
Открываем 2p_teleports.scar блокнотом, находим g_TunnelDelay1 = 10. Устанавливаем своё кол-во секунд, которое будет уходить на путешествие по тоннелю, предварительно прикинув примерное время прохода.
Важный момент: AI умышленно никогда не побежит в телепорт, т.к. не видит маркеры. Он выбирает путь для движения лишь исходя из проходимости участков ландшафта. Научить его заходить в тоннель если и можно, то тяжело. Даже Элдары не используют свои врата по назначению, хоть это и entity-объекты. Следовательно, телепортом у нас будет пользоваться только люди.
Телепорт даёт огромное преимущество, т.к. можно быстро и безопасно добраться из пункта А, в удалённый пункт Б. Это ломает баланс. Нужно продумать как установить тоннель, чтобы игрок, пользуясь им не имел значительного преимущества над AI. Нужно огородить тоннель Impassible как на рисунке, для того, чтобы исключить случайное вхождение AI в телепорт, который будет на пути его движения. Также исключить телепорт техники, или большого кол-ва отрядов одновременно. AI всё таки может попасть в телепорт, догоняя отрядами ближнего боя отряды игрока.
Можно тестировать.
Захват объектов в мире
М
еня
спросили: можно ли сделать так, чтобы
нейтральные объекты были привязаны к
точке, и когда точку захватят, они станут
принадлежать захватившему их? Я сказал
“не знаю”, т.к. ещё не видел такой
возможности в MP
картах. После проб и ошибок смог таки
написать скрипт, дающий такую возможность.
Качаем в документах группы архив scars.rar, находим внутри (в зависимости от количества игроков) 2p_owners.scar, помещаем в Data\scenarios\mp, переименовываем тем же именем, что и наша карта.
Если нам нужно, чтобы объекты нельзя было перезахватить, откроем скрипт блокнотом, доберёмся до надписи g_Once = 0, и заменим 0 на 1
Открываем карту в редакторе, устанавливаем на карту объекты, которые можно будет захватить (турель\ генератор, но не отряд юнитов!), даём принадлежность world. Теперь выделяем их рамкой, и жмём на клаве Ctrl+G. Появится маленькое окошечко, в нём введём имя “stuff1” (без кавычек, и именно так!).
Мы только что создали entity-группу объектов, имеющих общее имя. Она необходима, когда нужно через скрипт выполнить одно и то же действия с множеством объектов. Снимем выделение.
Теперь выделим стратегическую точку, которая будет регулировать принадлежность. Создадим из неё ещё одну группу, назовём “trigger1”. Получилась группа из одного объекта. Но и это тоже группа!
Можно тестировать карту.
Если мы не правильно ввели имя, или хотим сменить состав объектов в группе, удалим её(именно группу, а не объекты). Нажимаем сверху на панели редактора Groups=>Entity group list. Открывается маленькая панелька, где дан список групп, которые мы создали. Выделяем группу, жмём Delete, закрываем панель.
Замечание по балансу: этот скрипт больше всех остальных ломает баланс, его реализацию нужно очень тщательно продумывать. Генератор лучше не ставить. Ведь если его захватят некроны, для которых энергия это главный ресурс, они выпилят всех на старте. Тем более, точка на центре будет иметь для AI меньший приоритет чем точки на базе. Тем временем игрок в начале раунда захватит её, и получит источник энергии стразу. Захваченные здания сможет использовать только игрок, т.к. AI не умеет использовать здания другой расы.
Появление демона-принца по удержанию точки
На карте Artifact (6) от Clospuelung, когда игрок удерживает strategic_objective_struct на центре, и удерживает её в течении 5 минут, рядом с ней появляется демон-принц, подчинённый ему.
Качаем в документах группы архив scars.rar, находим внутри 6p_Artefact.scar, помещаем в Data\scenarios\mp, переименовываем тем же именем, что и наша карта.
У
же
известными нам способами создадим
entity-группу
из стратегической точки любого типа, и
назовём её eg_deamon_prince_trigger. Рядом с этой
точкой создадим маркер с именем
mk_deamon_prince_spawn и радиусом 0. Можно воткнуть
на точку maledictum(яйцо)
с принадлежностью World,
как на оригинальной карте.
Можно тестировать.
Будем внимательнее при вводе имён. Каждый из игроков на карте должен иметь одинаковый потенциал к захвату точки-активатора, иначе баланс ляжет. Демон использует общевойсковую тактику, атакует, группируется с остальными войсками владельца. Использует способности, только если владелец - хаос. Если точку захватит другой игрок, демон переметнётся на сторону захватившего. Чтобы хаосу иметь 2 демона, нужно сначала вызвать первого, а потом захватить точку, и получить второго. Я даю исходник скрипта от Clospuelung. В варианте для личных нужд я использую chaos_squad_deamon_prince_advanced_sp. Если с подключением скрипта что то не получается подробно описываем это в теме по картостроению, прилагаем скрин консоли и warnings.log
