Создание мультиплеерных карт в w40kME

Warhammer 40 000 - Dawn Of War

Александр Дредноутов (с)

Хотел снять видео, но тут много тонкостей, которые сложно будет показать в видео. Да и само видео может получиться очень длинным. Надеюсь всё разложить по полочкам тут.
Создадим карту для мультиплеера (и именно для него, т.к. под компанию потом будет другой учебник). Для этого нам нужен клиент Вархаммера, пригодный для установки редактора карт, сам редактор карт w40kME и МНОГО терпения. Для того чтобы обзавестись редактором, идём сюда: http://vk.com/topic-19587543_25555818

После того, как мы прочитали материал по ссылки, и скачали ModTools нужной версии, в составе которого редактор W40kME, можно его установить и запустить.
1) Планирование

Любая стройка начинается с планирования. Можем сначала набросать план карты мечты на бумажке или в Paint, а потом уже приступить к её реализации. Если мы заранее спланируем, где что будет находиться, количество игроков, проходов, ресурсов, оборону, отмерим и уравняем расстояния, будет проще строить её в редакторе. И получить в итоге хорошо сбалансированную, геймплейно интересную карту, а не просто поле, на котором натыканы объекты.
Тактически, карта может быть коридорная, где бои разворачиваются в проходах и кишках, или открытая, где игрок сам выберет направление атаки. Можно использовать разные комбинации плато, кишок и коридоров. Определённости тут нет. Опросы показали – кому что нравится.

2) Биомы (природа)

Определиться с биомом для карты можно пощёлкав текстуры, и посмотрев что можно из этого сделать. Лучше начать воссоздавать одну из увиденных на картах от Relic. Биомы у нас могут быть: Зима, Хаос, Джунгли, Пустыня, Красная планета, Пещера некронов, Парадайз, Зараженная земля, Имперский город, и другие. Можно смешать два (например город в джунглях или зимний лес). Опросы показали, что большинство игроков любят руины городов(60%). Если мы определились с тематикой, например, Пустыня, то мы будем декорировать карту только элементами встречающимися в пустыне.

Декорирование складывается из следующих составляющих:

Геометрия местности - это все неровности. Т.е. горы, ущелья, плато, ямы, ухабы, и.т.д. Тут всё довольно произвольно, у любой из этих тематик может быть разная геометрия, т.е. горы могут присутствовать на тематиках Зимняя и Хаос. Очевидно, что просто плоская карта с парой бугров не будет интересной.

Наполнение - это модели объектов, которые мы будем ставить. Здания, деревья, камни и.т.д.

Погодные условия - это у нас скайбокс(небо), положение яркость и цвет солнца, плотность тумана, тени. Для каждого биома они свои.

Не биомы одинаковы по трудоёмкости постройки. Трудоёмкость постройки складывается из сложности геометрии поверхности, количества объектов(моделей), и их симметрии относительно друг друга. Так, например, биом хаос и пустыня имеют не много моделей, полную асимметрию, и почти полностью состоит из гор и скал, которые быстро устанавливаются специальным инструментом. Биом города – напротив, имеет большое кол-во моделей построек, светофоры, лэп, трубы, декали дорог, и всякие прочие признаки обитаемости человеком. Их дого располагать, и они все как правило симметричны относительно друг друга. Поэтому на постройку биома города уйдёт гораздо больше времени, чем на пустыню или джунгли.

3) Настройки холста (игрового поля)

После того как запустили редактор, жмём File => new, увидим маленькое окошко:

Size: 256x256 - Размер холста
Sell Size: 2m - не трогаем
Mod: Dawn Of War - Dark Crusade - мод\dlc, под который будем делать карту

Размер холста - размер нашей карты. Согласно плану, выбираем размер под количество игроков. Лучше брать 256х256 или 256х512 для 2-4-6 игроков, и 512х512 или 512х1024 на 4-6-8 игроков, ну и 1024х1024 это очень большой не стандартный холст на 8 игроков. На его редактирование и декорирование уйдёт куча времени. По статистике опросов, народ любит масштабные зарубы на картах от 6-и игроков.

мод\dlc - все моды на вархаммер которые мы установили есть возможность выбрать в редакторе. Это значит что при создании карты, мы можем использовать все объекты, которые есть в этом моде\DLC. Но мы обязаны будем сохранить карту в папку с этим модом\DLC, т.к. при использовании её в другом моде\DLC, объекты и текстуры не загрузятся, т.к. их там нет. Т.е. допустим вместо здания мы получим розовый кубик "Bad model". Чтобы этого избежать, лучше делать карту под стандартные DLC от Relic, т.е., например, под Dawn Of War - Dark Crusade. Есть такая особенность карт, что с поздней версии на раннюю они идут, но загружаются не все объекты. Например, мы создали карту под Dawn Of War - Dark Crusade, а потом перекинули её в Dawn Of War - Winter Assault. Карта работает, но на месте некоторых объектов и декалей будут розовые кубики, т.к. в WA нет некоторых объектов, которые мы использовали строя в DK. Карта будет играбельна, но впечатление от розовых кубов и декалей со знаком вопроса подпортится.
Именно поэтому я использую старую версию Вархаммера. В ней не очень большой набор объектов и текстур, зато карты, сделанные на ней, идут на все версии.

После того как мы определились c размером холста, тематикой и количеством игроков, жмём ОК. Перед нами открылось пространство с жёлтым (по умолчанию) туманом, и плоскостью залитым базовой текстурой.

4) Инфо

Заходим в Scenario => Scenario properties... Там:

Map name: - имя карты

Map type: Skirmish\Multiplayer Map – тип карты

Map desc: - описание

*Имя карты следует писать латиницей, и через пробел указывать количество игроков в скобках, например Danger desert (4)

*Тип карты мы не трогаем, т.к. делаем её под мультиплеер. Этот режим стоит по умолчанию.

*Описание - тут можно написать что угодно. Некоторые указывают имя автора (By: Frost), некоторые пишут километровое описание.

Эти параметры можно будет изменить в любой момент. Нам они нужны просто как отправная точка. Жмём ОК.

5) Типы зон

Чтобы рассмотреть холст целиком жмём CTRL+F и CTRL+K это отключит туман и скайбокс. Включаются они тем же сочетанием. Колёсиком можно отдалить\приблизить камеру. Движение мышью с зажатой кнопкой Alt повернёт камеру в разных плоскостях для удобства осмотра. Жмём Backspace чтобы вернуть камеру в исходный вид.

Далее, кликнем Overlay => Terrain Type... Холст окрасится сеточкой. В центре сетка будет красная, а по краям белая.

*Красная сетка - это Play area (игровая область), где будут проходить весь замес, и за которую юнит выйти не может.

*Белая сетка - это Non Play area (не игровая область). Здесь невозможно размещать gameplay объекты (т.е. стартовые позиции, юниты, стр. точки.), но можно размещать world объекты (камни, деревья, кусты). Эта область нужна чтобы при повороте камеры игрок не видел пустоту, и не было ощущения, что карта тут обрывается. Обычно эта область декорируется под горы, чтобы перекрыть игроку обзор, и создать впечатление, что за горами что-то есть. Отключим Overlay также как и включили.

На будущее: Когда я говорю "выбираем такой-то инструмент" находим нужный, путём наведения и задерживания указателя на каждом из них! Когда я говорю "справа" я имею ввиду панель управления инструментом, справа от окна в котором 3D вид карты.

6) Грунтовка

Выбираем инструмент Detail Map Editor. Справа в списке выбираем текстуру, пробуем на холсте. После того как нашли подходящую под биом текстуру, выбираем её, и елозим по всему холсту, пока холст не окрасится в неё полностью. Потом жмём Backspace, и смотрим, не сильно ли повторение рисунка бросается в глаза. Если сильно, то идём в Scenario => Terrain Properties, там находим пункт Terrain. Там ползунок сдвигаем на 1 пункт влево, и жмём Apply. Текстура должна увеличиться, и повтор рисунка должен уменьшиться. Регулируем пока не получим нужный результат. Можно сделать комбинацию из нескольких грунтовочных текстур. Т.к. плавный переход между ними сделать нельзя, шов потом будем скрывать декалями.

7) Геймплейные объекты

Ставим на карту стартовые позиции и стратегические точки. Выбираем инструмент Object placement . Справа в проводнике открываем environment\gameplay. Там, из нескольких объектов нам нужны будут:

starting_position - стартовая позиция, на которой появляется база игрока (далее мной будет называться sp)

relic_struct - реликтовая точка (далее rs)

strategic_point_flag - стратегическая точка (spf)

strategic_objective_struct - победная точка для режима take and hold (sos)

slag_deposit - точка на которой строится термо-генератор (sd)

Теперь включим Overlay и примерно прикинем, где будут размещаться базы игроков (согласно плану). Ткнём в эти места sp, и вокруг каждой sp ткнём по 3 spf. В центр карты ткнём 1 или 3 sos. На боковых сторонах карты ткнём rs. Ближе к центру ткнём sd.
8) Разметка
Теперь включим Overlay => Grid 32m.

На холст легла разметка в виде сетки. Выровняем объекты на базе так, чтобы каждому игроку пришлось бежать одинаковое расстояние от базы до spf возле базы. Когда будем ровнять, стоит поставить их на расстояние 1-1,5 клетки, чтобы точки не мешали строить здания. У орков и ig, например, много построек, и им нужно больше места. Таким же образом вымеряем, чтобы sos был равноудалён от каждого игрока. Это мы делаем для того, чтобы никакой игрок не имел преимущества на старте. Если карта не симметрична, расстояния до объектов меряются также, клетками, но по криволинейной траектории. Отключаем сетку Overlay => Toggle overlay...

9) Геометрия

Выбираем инструмент Heightmap editor . Справа у него 4 режима работы:

Additive - выпуклый участок

Subtractive - впалый участок

Set Value - выровнять под указанный уровень

Smoothing - сглаживание

Каждый из них представляет собой круглую кисть с сердечником. Размер кисти и сердечника настраиваются двумя ползунками. Чем больше радиус внешнего круга, тем больше площадь обрабатываемой области. Чем меньше сердечник кисти, тем острее будет обработанная область, и наоборот более плоская, если сердечник большой. У каждого режима есть ползунок Strength (резкость). Чем выше резкость, тем ощутимее будут изменения на местности.

О каждом режиме по отдельности:

Additive нужен нам для создания гор и скал. Установим внешний радиус на 7, внутренний на 45, и резкость на 25. Сделаем несколько коротких мазков по холсту. Местность начала подниматься, и начало образовываться нечто вроде горы. Продолжаем мазать.

Гора у нас получилась, но она слишком большая, и загораживает обзор. Выбираем режим Subtractive. Уменьшим внешний радиус на 10 пунктов, сделаем несколько мазков по самым высоким участкам горы. Она просела, и её поверхность немного просела и заострилась. Вот и технология создания гор.

Выбираем режим Set Value. Этот режим одновременно как Additive и subtractive. Он может поднимать и опускать местность, но он делает это до определённого уровня - в этом его фишка. Установим ползунок Height на 15(он есть только у этого режима), или просто выберем в меню справа Level2(этим мы укажем, до какого уровня будут сделаны изменения). Помажем область холста круговыми движениями. Образовалось плато с заваленными краями. Теперь установим уровень на Chest High Water и сделаем горизонтальный непрерывный мазок. Мы докопались до воды, и появилась речка.

У речки очень покатые берега, да и основание горы у нас угловатое. Выбираем режим Smoothing и ставим Strenght на 97, поелозим по угловатым участкам горы. Угловатые участки сгладились, но форма горы существенно не изменилась. Теперь поставим Stenght на 100 и мазанём. Местность резко, но плавно проседает, но на ней не образуется впадина. В режиме 97 можно только сглаживать углы, а 100 делать плавные переходы и подъёмы под 20 градусов между уровнями. Сделаем речке более покатые берега. Сделаем несколько гор, скал, рек и плато (согласно плану). Создадим горы в Non Play area так, чтобы они своим основанием переходили в Play Area создавая эффект преграды.
Мы можем обработать геометрию всего холста в стороннем редакторе, если есть навык. Жмём File => Export => Export Height Map указываем путь. Карта высот сохранится в виде чёрно-белого изображения .tga с именем карты и окончанием _hm. В изображении, чем светлее участок, тем он выше на карте. Чем темнее- Ниже. Рельеф карты можно нарисовать в этом файле кистями. Можно манипулировать с большими объектами (горы\реки) или группами объектов. В конце она также импортируется File=>Import=>Import Height Map, но будет нуждаться в фиксе.

Можно пойти дальше, и сгенерировать случайный ландшафт, в программе hme. hme (height map editor) – генератор случайных карт высот. Скачать её можно тут: http://hme.sourceforge.net/ Программа проста в настройке и использовании, а поэтому нет смысла детально описывать её интерфейс. Понять, как пользоваться ей можно пропустив текст сайта через гугл-переводчик. Скажу лишь, что на выходе из hme, карта высот будет формата .bmp, и не того размера что нам нужен. В таком виде она в w40kme не импортируется. Нам нужно открыть _hm.tga, от w40kme в графическом редакторе, перенести в него карту высот от hme, подогнать по размеру, добавить видимый альфа-канал, сохранить в tga, и импортировать в w40kme. Получится неплохая заготовка для карты. Ландшафт будет выглядеть примерно так:


 

10) Подкраска

Инструментом Detail Map Editor мы накладывали базовую грунтовочную текстуру, теперь будем её подкрашивать. Так уж распорядилась природа, что на местности почва не может быть везде одного цвета. Выбираем инструмент Texture stamping . Выбираем на лотке кисть brush_soft_large (другие кисти тоже можно, но они мельче). Выбираем тёмно-серый цвет в строке color. Кликаем на поверхность горы частыми короткими кликами, или мазками, и она принимает выбранный оттенок. Теперь выбираем тёмно-зелёный цвет, и закликаем область вокруг горы до основания, и дно рек. Таким образом, можно придать оттенок базовой текстуре в нужных местах.
Мы можем делать это и не через w40kME. Можно просто сохранить карту, закрыть w40kME, и открыть файл имя карты.tga в папке mp через редактор графики. Там, кистями наделать мазков разными цветами, применить светофильтры, сохранить, и пере открыть карту через W40kME. Изменения применятся. Если файл будет отсутствовать, у почвы везде будет розовый оттенок.

11) Декали

Наложим декали поверх грунтовочной текстуры. Выбираем инструмент Decal Placement , и в проводнике справа выбираем декаль. Декаль – такой бесшовный декоративный рисунок, который эмитирует какую-то поверхность, и накладывается поверх грунтовки плавно переходя в неё. Возьмём, например, jungle\stone_cliff_00, и делаем левый клик на гору. На гору нанёсся рисунок в виде скалы. Поставим галочку specyfy size, ползунком увеличим размер до 150% и снова кликнем. Декаль стала больше. Выделим и далим что мы накликали, уменьшим размер до 100, и поставим галочку use random rotation. Обкликаем гору так, чтобы декали аккуратно покрыли её не нахлёстываясь друг на друга. Не нужно класть несколько декалей друг на друга! Уже наложенные декали можно двигать (ЛКМ), вертеть (ЛКМ+Shift), и изменять размер (ПКМ+shift+Мышь вверх\вниз). Поправим декали, чтобы они лежали красиво. Найдём декали травы в проводнике, и положим их под гору. Проделаем всё это со всей местностью.

 

12) Объекты

Разместим объекты наполнения(модели). Выбираем инструмент Object Placement через который мы устанавливали старты и стратегические точки. Я не упомянул об этом тогда, т.к. мы идём последовательно, от фазы к фазе, чтобы не получилась мешанина. Справа в проводнике выбираем любые объекты (кроме вкладки gameplay) и размещаем на холсте. Пошарим по вкладкам и найдём деревья и травку (вкладка jungle). Наклацаем их вокруг горы. Установим пару зданий (вкладка urban). Есть готовые здания, а есть собирающиеся из панелей (urban\barracks). После установки объекты можно двигать (ЛКМ), вертеть (shift + ЛКМ), и поднимать на уровень над землёй (shift+пкм+мышь вверх\вниз). Чтобы объект остался висеть или утопились в землю на половину, нужно справа, в разделе height выбрать adjustable и нажать snap. Если выбрать rellative to terrain, все объекты которые были выделены окажутся на уровне земли.
Можно работать с группами объектов импортируя и экспортируя их. Например, выделим несколько объектов рамкой, нажмём File=>Export=>Export selected entities, и введём имя. Объекты сохранились в файл. Теперь передвинем камеру на другой участок карты. Нажмём File=>Import=>Import selected entities. В том месте, куда смотрела камера, появились те самые объекты. Можно экспортировать объекты с другой карты. Можно создать свою базу объектов, например группы деревьев и\или зданий, и когда нужно импортировать их, чтобы не клацать деревья по многу раз, если мы делаем лес.

Отдельно про объекты ambient_fx: Это эффекты, т.е. свечения, огонь, метеориты. Они сильно ложат fps. Начинающие маперы любят прямо ОБТЫКАТЬ всю карту ими в 3 слоя. Им КАЖЕТСЯ, что это очень круто и креативно, что естественно НЕ ТАК. 5-10 эффектов на всю карту будет достаточно, и размещать их нужно как можно дальше друг от друга. С трупами в all\carnage всё точно также. Соблюдайте меру.

13) Установка юнитов и объектов из компании на карту

Статистика показала, что почти все маперы, пытается убрать базу, установить на карту войска, чтобы устроить батл “стенка на стенку”. В итоге получает вялую мешанину с тупящим или бездействующим ai, не соответствующими условиями победы. Это потому, что интеллект(ai) и условия победы(win condition) стандартного MP режима не заточены под установку войск на карту.
Если не поставить стартовую позицию, карта не будет видна в списке карт, а если поставить, то у противников будут базы. Войска, которые выдаются противнику, далеко не всегда соответствуют ai расы, которой он стартовал (если не выбрана в меню). Если ai соответствует, он будет пытаться играть в этот “режим” как в обычную схватку с условием победы “уничтожение HQ”. Интеллект будет пытаться строить здания, захватывать точки (если они есть). Лимит на кол-во отрядов тоже никто не отменял, и войска нельзя будет пополнять, пока численность не упадёт ниже лимита. А это значит, что на старте ai не сможет построить разведчиков, для захвата точек, и будет просто стоять. Будут закрыты все способности и оружие юнитов, т.к. для них нужны исследования и здания той расы, которой они принадлежат. При таких условиях человек ВСЕЕГДА будет побеждать. Напомню, что главная задача при постройке карты – создать равные условия для человека и ai. Вывод: на обычных условиях МР бой стенка на стенку реализовать нельзя, и не стоит тратить время. Для этого нужно писать специальный мод, в котором снимать лимиты, редактировать условия победы и ai. То же самое касается и выдачи юнитов на старте. Это должно делаться scar-скриптом через маркер, и никак иначе.

Много раз в группу обращались люди, у которых карта вылетает по неизвестной причине, без лога об ошибке. При детальном изучении выяснялось, что причиной падения являлись некоторые объекты из компании, которые нельзя устанавливать на карту в МР. Причина, по которой из-за них вылетает карта, пока не понятна. А в остальном, объекты из компании использовать можно. Как понять какие объекты можно использовать, а какие нет? Берём объект, устанавливаем в неигровую область карты (non play area). Если объект не ставится, или съезжает в play area, то лучше его не устанавливать вообще.

Если мы уже наставить объектов, и карта вылетает, то идём на панели в Scenario => Entity List… и в открывшейся панельке удаляем всё не соответствующее. Начать стоит с тех объектов, которые мы видели в компании, или вообще раньше не видели ни на одной карте. В частности, с гражданских.

14) Принадлежность
Каждый объект, который мы выставили (точка, здание, травка) должны иметь принадлежность. Принадлежность выбирается справа на панели до установки объекта, или после. Их две:

*World - объекты принадлежат миру, не выделяются, не разрушаются, с ними никак нельзя взаимодействовать.

*Player№ - объекты принадлежат игроку с конкретным номером 1-8, с ними можно взаимодействовать, как и со всеми своими юнитами\зданиями, если они это могут.

Так как мы создаём карту для МР, НИЧТО кроме стартовых позиций у нас игроку принадлежать не может (просто примем это как правило). Выделяем все объекты на холсте рамкой, и справа на панели выбираем Player: World и жмём Set. Теперь идём к стартовым позициям, которые мы поставили на базах. Выделяем первую, и ставим принадлежность Player1, идём ко второй и выставляем Player2 и.т.д. пока не пронумеруем все (не более 8). Количество игроков на карте будет определяться именно по количеству стартовых позиций имеющих принадлежность.


 

15) Проходимость

Выбираем инструмент Impass Map Editor , им можно определить области, по которым нельзя ходить. Включается красно-белая сетка. Красной краской залиты непроходимые области, а белой проходимые. У него 3 режима работы, и ползунок с размером кисти:

Generated - движок игры сам определяет можно ли ходить по этому участку

Passable - принудительно сделать участок проходимым. Мы ПОКА не будем трогать этот режим. Опытные маперы регулируют проходимость углом наклона плоскости, без всякого passable.

Impassable - принудительно указать области, по которым нельзя ходить.

По умолчанию весь холст залит Generated.

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

Ещё у нас есть ряд world-объектов: здание, деревья и травка. Все объекты кроме геймплейных и специальных устроены так, что не имеют коллизии (осязаемости), и юниты могут проходить сквозь них, т.е. бегать сквозь стены нашего здания, стволы деревьев, статую. В режиме impassable устанавливаем толщину кисти 2, и ведём по контуру основания здания так, чтобы клетки на которых стоят стены покраснели. Проделываем тоже самое со всеми объектами кроме геймплейных. Гора, залитая generated частично покраснела, но там всё-таки остались проходимые участки. Чтобы там не зависли штурмовики покроем гору impassable полностью. Если намазали лишнего, можно убрать с помощью Generated. Если мы делаем лес, то набираемся терпения, т.к. нужно тыкать impassable под каждое дерево!

 

16) Тип почвы

Последний инструмент Terrain Type Editor . У нас на карте есть разные поверхности: земля, песок, скалы, асфальт. Пехота, пробегая по любой плоскости издаёт одинаковый звук шагов по умолчанию. Снаряд попавший в асфальт и песок имеет одинаковый эффект взрыва. И ещё на картах у нас есть участки, где юнит мог бы укрыться, и получать меньше урона: воронки, стены, кусты, здания, но он не может. Этим инструментом можно это исправить.

У инструмента есть 2 режима и знакомый ползунок размера кисти:

Cover - укрытие. Юнит стоящий в этой области будет получать меньше урона (или наоборот больше, в зависимости от укрытия).

Foot fall - тип почвы. У каждого типа почвы свои эффекты шагов и взрывов.

Несколько раз переключимся между категориями Cover и Foot fall (из-за бага одна из категорий не отображается, пока несколько раз не переключиться). Остановимся на Foot fall. У неё несколько Terrain Type:

Unknown - неизвестная почва. Этим типом залит холст по умолчанию.

Dirtsand - консистенция почвопеска.

Rock - скала\асфальт.

Water - вода.

Тут всё логически понятно. Замазываем горы и асфальт Rock, дно реки Water, песок Dirtsand, и.т.д.

Переключаемся в категорию cover. Там есть:

None - нет укрытия. Обычная поверхность.

Light - лёгкое укрытие. Немного снижает получаемый урон.

Heavy - хорошее укрытие. Значительно снижает получаемый урон.

Negative - негативное укрытие. Юнит будет получать повышенный урон.

Blocking – назначение не известно. Не трогаем.

Stealth – назначение не известно. Не трогаем.

Выберем Light и помажем область в небольшом радиусе вокруг стартовых позиций. Это создаст укрытие для юнитов на базах. Помажем кусты, области вокруг камней, руины. Теперь выберем Heavy и закрасим кратеры. Кратеры и воронки по идее должны укрывать лучше, почти как окоп. Выберем Negative, и помажем брод на воде, низины и узкие проходы, где юниты не могли бы укрыться от огня.

 


 

17) Погода

Погода: Идём в scenario => Terrain Properties... Выплывает меню с настройками погоды, где всё распределено на разделы:

Раздел Lighting:

Sunlight Color - цвет солнечного света. Выбираем из цветовых пресетов, или сами генерируем на палитре. Я обычно беру белый, бледно-ораньжевый или бледно-жёлтый.

Shadow color - цвет тени от гор, и в целом оттенок ландшафта. Обычно выбирается светло-серый или тёмно-серый. И чем темнее цвет, тем темнее будет казаться на карте.

Shadow Opacity - должно влиять на прозрачность теней, но на практике изменений не замечал. Оставляю как есть.

Time of Day - может показаться, что этот ползунок регулирует время суток, но это не так. Он лишь указывает направление, с которого падает свет на поверхность, но не управляет яркостью и тенями. У него по сути 3 положения

morning - солнце светит слева, тени справа.

noon - светит вертикально сверху вниз. Объекты не отбрасывают теней.

night - солнце справа, тени слева.

Обычно ставлю ползунок между morning и noon.

Раздел Fog:

Если мы отключим Fog Ctrl+F(не выключая sky), увидим как скайбокс переходит в холст, и холст исчезает в месте стыка. Задача фога скрыть этот переход.

Параметры:

Fog Start distance: начало тумана. Минимум 0, но не более величины Fog End distance

Fog End distance: конец тумана. Минимум 10. Не более Sky Radius.

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

Fog Color: цвет тумана. Подбирается таким образом, чтобы был равен цвету нижней части скайбокса. Тогда создаётся эффект перехода неба в туман. Если цвет подобран не правильно, будет виден уродливый шов.

отключим Fog.

Раздел Sky:

Это скайбокс. Включим его, и

Render Sky: отображать или не отображать небо. Если мы не нашли в списке подходящей текстуры неба для нашей погоды, или хотим с имитировать очень густой туман, то снимаем галочку. Но объекты всё равно будут исчезать в указанном ползунком радиусе.

Sky model: Текстуры неба. Есть разные по цвету текстуры для разных биом. Выбираем под наш биом методом примерки.

Sky radius: радиус скайбокса.

Скайбокс у нас имеет форму полусферы, которая накрывает видимую часть поля боя. Этот параметр регулирует её радиус. Объекты карты и ландшафт не отображаются снаружи скайбокса. Это сделано для оптимизации. Чем больше радиус скайбокса, тем больше будет одновременно видимых объектов, а значит нагрузка на оборудование, а значит и лаги на слабых машинах. Я не рекомендую баловаться с ползунком радиуса скайбокса. Лучше оставляем как есть, или увеличиваем максимум на 15-20, если карта слабо детализирована декалями и моделями.

Раздел Terrain:

Это я уже описывал, но раз мы идём по порядку, напоминаю. Регулируем ползун так, чтобы повторение рисунка не бросалось в глаза.

Раздел Water:

Render water: если у нас на карте нет углублений до уровня воды, снимаем эту галочку.

Colour: Цвет воды - свобода творчества.

Alpha: Прозрачность воды. Свобода творчества, я обычно ставлю на середину.

Anim speed: Скорость анимации. Лучше оставить как есть. Большие значения могут дать дополнительную нагрузку на ресурсы пк.

Repeat : размер волн. Регулируем ползун так, чтобы повторение рисунка не бросалось в глаза.

Но лучше оставить как есть.

Остальное пока не трогаем.
18) Сохранение

Жмём File => Save As

Выбираем путь: клиент\мод\Data\scenarios\mp (выбираем тот мод, который выбирали в настройках холста в начале).

Вводим имя латиницей и без пробелов, где перед ним ставим префикс количества игроков. Например: 4p_danger_desert

В папке с картами появятся файлы, где:

4p_danger_desert.sgb - сама карта

4p_danger_desert.tga - оттенок базовой грунтовочной текстуры.

4p_danger_desert_icon.tga - Иконка для меню выбора карты. Если нет файла, окошко просто чёрное.

4p_danger_desert_mm.tga - рисунок мини-кары. Генерируется сам при сохранении карты.

Карта готова к первому тестированию.

Если после успешного теста мы обнаруживаем, что карты нет по адресу …\Data\Scenarios\MP, значит она находится в С:\Users\username\AppData\Local\VirtualStore\Program Files(x86)\папка с клиентом\мод\Data\Scenarios\MP. Причина такого поведения описана тут: http://otvety.google.ru/otvety/thread?tid=4741535f3da44187

19) Утилита Advanced map editor

Некоторые функции в w40kME не предусмотрены. Например, копирование целой области со всеми объектами с одной карты на другую, увеличение размера холста, его поворот, генерация мини-карты. Чтобы расширить функционал w40kME, человеком под ником Dark40k была создана утилита Advanced Map Editor (далее именуемая AME), которая делает вышеперечисленное. Но она при этом не является инструментом создания карт, а лишь для редактирования. Написана она на Java, и требует java-платформу 7ой версии или выше. Скачать её и java можно в официальной теме по ней: http://forums.relicnews.com/showthread.php?226355-DOW-Advanced-Mission-Editor-(v1-00-01-08-2014)

Там же инструкция по установке.

Закрываем карту в w40kME, открываем в AME. Жмём File => Open map, и выбираем файл. В окне 3D просмотра появляется карта.

Рассмотрим наиболее интересные для нас функции.
Увеличение холста
Идём во вкладку Map=> Resize Map. В появившемся диалоге устанавливаем новый размер, применяем.

Карта “нарастится” до указанного размера. Полезно, если на карте оказалось тесновато.

Движение холста

Идём во вкладку Map => Move Map. Появляется диалог с восьмью кнопками.

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

Поворот холста

Идём во вкладку Map => Rotate Map, видим диалог:

Жмём Yes, карта развернётся на 90 градусов по часовой стрелке. Подбираем ракурс.

Поворот Entity

В w40kME entity-объекты можно вращать только в горизонтальной плоскости, а в AME есть функция вращения в любой плоскости. На панели Selection filter жмём кнопку Entities. Выбираем любые объекты. На панели управления идём в Entities => Rotate entities. В диалоге, ползунками выбираем угол поворота.

Получается:

Можно сделать из стен, например, облицовку пола. Можно перевернуть корпус подбитого танка на бок, и.т.д. Не понятно, почему разработчики изначально не встроили эту ф-ю в w40kME, и как поведут себя эти объекты, если открыть карту через него.

Перенос области

Минимизируем открытую карту (с которой копируем), нажав . Открываем вторую карту (на которую копируем), минимизируем и её. От центруем окна — вот так:

Делаем первую карту активной, и жмём Selection => Filter All. Устанавливаем курсор, поперечным протягиванием с ЛКМ, выделяем область, которую будем копировать:

Жмём Map => Copy Area. В появившемся диалоге выставляем те объекты, которые нужно скопировать, и жмём Copy:

Делаем активной вторую карту, и жмём Map => Paste Area. В появившемся диалоге выставляем фильтры вставки, и центруем положение вставки по осям Х и У кнопками. Жмём Paste.

Из следующего скрина видно, что всё уехало, с этим нужно дольше экспериментировать. Главное – функция показана.

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

21) Фикс авиации

Авиация, добавленная в SS, ведёт себя как пехота на картах, сделанных в редакторе DC. То есть облетает препятствия, которые находятся гораздо ниже неё. Почему так происходит? Вэйпоинты (waypoint) – пути по которым движется юнит, они генерируются редактором автоматически. Редактор W40kME для DC не прокладывает вэйпоинты через области, помеченные как непроходимые (impassable), т.к. авиации в DC нет. Самолёт облетает те области, которые залиты impassable не потому, что не может летать через impassable, а потому, что по нему не проложены вэйпоинты. Если проложить по impas те же вэйпоинты, что и по проходимой области, то самолёты будут летать нормально, а пехота не будет оббегать impas, а попытается пробежать сквозь него, и уткнётся. Нормально юниты ведут себя только над глубокой водой. Пехота не может перебежать, а самолёт пролетает. Значит, делая карты для SS, разработчики переписали свой редактор таким образом, что при генерации, вэйпоинты по impass-зонам прокладываются, но помечаются как глубокая вода. Вот только редактор SS они НЕ РЕЛИЗНУЛИ.

В AME есть функция загрузки на карту вэйпоинтов с другой карты. А это значит, что мы можем на копии карты превратить гору в глубокую воду, а потом загрузить вэйпоинты на карту, и юниты будут думать, что гора – это глубокая вода. Я покажу это на примере одной горы.

На всякий случай делаем резервную копию своей карты в отдельную папку (и забываем про неё).

Открываем карту в w40kME. У меня она называется ~fly.sgb Берём инструмент Impass Map Editor , и полностью заливаем нашу гору типом impassable, даже в тех местах, где область итак непроходимая:

Сохраняем карту ~fly, и сохраняем карту как копию ~fly1.sgb. Далее, я буду называть ~fly оригиналом, а ~fly1 - копией.

Открываем копию. Идём в Scenario => Terrain Properties, и снимаем галочку с Render water.
Теперь берём инструмент Heightmap Editor , настраиваем как показано:

Идём к нашей горе. Кликами превращаем гору в яму таким образом, чтобы контур импаса горы прилегал к контуру дна ямы, НО НЕ ВЫХОДИЛ ЗА НЕЁ:

Получается впадина:

 

Берём инструмент Impass Map Editor , выбираем тип passable, и заливаем ВСЮ карту белой шашечкой.

Включаем рендер воды. Попробуем установить юниты на край ямы с водой. Юнит ставится на самый край, но не на воду. Если это так – то всё правильно.

Сохраняем копию.

Открываем оригинал карты через АМЕ. Выбираем вкладку Ground => Import Path Sector


В окне выбора файла выбираем копию карты, с которой мы работали. Вэйпоинты с копии загрузятся на оригинал, но в редакторе видимых глазу изменений не будет. Сохраняем оригинал, копируем в SS, и тестируем. Пехота будет оббегать гору, а авиация перелетать. Конечно, если карта целиком состоит из коридоров, можно залипнуть над вэйпоинтами очень на долго, альтернативы пока нет. Если пере сохранить карту с импортированными вэйпоинтами через w40kME, то все изменения слетят, поэтому фикс авиации – это заключающая фаза постройки карты.


 

21) Мини-карта

Когда мы тестировали карту, мы видели в качестве иконки карты в меню карт, и в качестве мини-карты в игре нечто такое или такое:

Конечно, это не похоже на мини-карту. Всё из-за того, что мини-карта и иконка карты для меню генерируется редактором при сохранении, на основе слоя который мы в процессе создания подкрашивали инструментом Detail Map Editor. Эта система генерации просто никакая. В основу иконок закладывается лишь оттенок ландшафта, а рельеф, декали, fx и модели не наносятся. Человек не сможет себя адекватно вести в бою, не зная путей прохода до объектов, и будет тыкаться в случайных направлениях. Ai для ориентации вообще не нужна мини-карта, а значит решающее преимущество всегда будет на стороне ai, пока игрок не изучит карту. Если карта большая и сложная, на это уйдёт много времени и утомит. Мы НЕ ДОЛЖНЫ этого допустить, поэтому ОБЯЗАТЕЛЬНО делаем мини-карту.

Есть 2 способа:

Авто генерация через AME

Этот способ прост и удобен. Открываем карту через AME, нажимаем File => Create MiniMap. Будет предложен путь сохранения файла … _mm.tga. Это и есть мини-карта. На её основе создаём и …_icon.tga

Рисование вручную

Этот способ немного более трудоёмок, но я должен описать и его, на случай если кто-то не работает с AME. Рисовать будем в графическом редакторе, который работает с .tga. Я использую Photoimpact XL.

1) В папке с картой у нас есть 2 файла с именем карты, и окончанием …_icon.tga и … _mm.tga Открываем их редактором.

2) Открываем нашу карту в w40kME. Отключаем Fog и Skybox, включаем Overlay. Устанавливаем камеру в центр карты, откручиваем к верху, и поворачиваем сверху вниз. Видим это:

3) Ставим в каждый угол Play area заметку, как на рисунке. Я поставил огонь.

4) Убираем Overlay и делаем скриншот кнопкой Print Screen.

5) Импортируем скрин в редактор. Замазываем стратегические точки и стартовые позиции, т.к. они будут обозначены на мини-карте цветными точками. Ретушируем, осветляем если нужно.

6) Теперь берём наш скрин карты, и инструментом “Лассо” в графическом редакторе, и ориентируясь на огонь вырезаем область Play area:

7) Сжимаем, и переносим наш вырезанный сегмент в _mm.tga. Т.к. он не симметричен, подгоняем его под габариты _mm.tga трансформированием. Если нужно - поворачиваем. Добавляем видимый альфа-канал.

Получаем:

8) Полученный фрагмент копируем в …_icon.tga. Также подгоняем под размер (он в 2 раза меньше чем у _mm.tga), и добавляем видимый альфа-канал.

9) Готово. Сохраняем всё в редакторе графики. НО НЕ СОХРАНЯЕМ КАРТУ в W40KME, т.к. мини-карта сгенерируется им заново!!! Делаем РЕЗЕРВНЫЕ КОПИИ иконки и мини-карты.

Все эти действа занимают не более 5 минут, и как правило получаются с первого раза, если мы имеем опыт в графическом редакторе, в котором работаем.

22) Загрузочный экран

Когда идёт загрузка стандартной карты, на экране появляется случайное изображение. Есть возможность сделать специальный экран загрузки для своей карты.

1) Запускаем карту, находим живописный вид, и делаем скриншот кнопкой printscreen.

2) Заходим в папку screenshots в клиенте, там находим наш скриншот, и открываем в графическом редакторе.

3) Пере сохраняем скриншот в Data\scenarios\mp\loading как .tga, и даём ему имя нашей карты. Например, 4p_forest.tga

4) По желанию можно нанести, например, название карты, имя автора, мини-карту со схематическим расположением важных объектов и стартовых точек. Карта готова!

23) Карта сделана, ну и что дальше?

Нужно протестировать, убедиться что карта работает без глюков. Желательно кинуть ссылку в группу, получить объективные отзывы и советы. Возможно внести правки, если советы покажутся полезными.

Если карта действительно удалась, то стоит залить её на какой-нибудь ресурс, чтобы она стала достоянием общественности. Я, например, заливаю на Playground: http://www.playground.ru/files/warhammer_40_000_dawn_of_war_imperial_plaza_de_6-73163/

Есть и другие ресурсы, частично или полностью посвященные Вархаммеру.

При запаковке в .rar нужно сохранять файловую структуру. В архив .rar для заливки должны входить: Папка loading с загрузочным экраном .tga, сама карта .sgb, файл с оттенками .tga, иконка _icon .tga, мини-карта _mm .tga. Можно скачать мою карту по ссылке, и посмотреть, как она запакована. Или просто использовать NSIS запаковщик в AME. ВСЁ! Успех, можно переходить к более амбициозной стройке.

 

Учебник выполнен специально для группы по модингу Warhammer 40 000 – Dawn Of War: http://vk.com/club19587543

Не подлежит распространению вне группы.

Это не законченный вариант, последняя редакция 23.02.15.

За более поздними редакциями ходим по ссылке: http://vk.com/topic-19587543_25556351