Карты

Материал из DeusExMachina
Перейти к: навигация, поиск
WIP

В разработке.

Список статей о создании карт и работе с редактором M3D Editor в разных играх серии.

Часто встречающиеся вопросы.


1) Грузовик тащит по карте.

При редактировании вы сдвинули границу карты, это происходит практически всегда(При нажатии одновременно кнопок S и ЛКМ). Для того что бы это поправить необходимо открыть файл карты (например r1m1.ssl) текстовым редактором и вернуть значения (MINSAFEX, MINSAFEY, MAXSAFEX, MAXSAFEY) по умолчанию.

Значения для Ex Machina

Значения для Ex Machina Меридиан 113


2) Как работает Colormap?

Очень просто! Никак. Этот инструмент в редакторе Ex Machina не работает впринципе, вероятно он остался от Магии войны или альфа версий Ex Machina.


0.0 Установка редактора

Версии редактора для всех игр серии можно скачать в разделе Файлы -> Пакет SDK
Большинство дальнейший инструкций подготовлены для редактора оригинальной Ex Machina, но существенная функционала редактора будет общей для всех игр серии

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

Внимание!

Файлы редактора частично перезатирают файлы игры, необходимые для её обычного запуска. После установки редактора в папку игры - эта копия запускаться не будет.

Ваш выбор:

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



1.0 Работа с редактором

1.1 Создание ландшафта

Для работы с ландшафтом необходимо включить инструмент под названием Terrain via brush. Откроется диалоговое окно с параметрами редактирования ландшафта. Под курсором появится кисть выделенная синим кругом, размер кисти можно регулировать зажав клавишу B и движением мыши, влево - уменьшить кисть, вправо - увеличить кисть.

Terrain via brush.png

Иконка TerrainViaBrush



Окно имеет следующие параметры:

Radius - радиус кисти.

Strength - сила воздействия кисти, влево опускает ландшафт, вправо поднимает. Если этот параметр установлен в 0, то ландшафт будет сглаживаться.

Smooth strength - сила сглаживания ландшафта.

Mountain Falloff - ширина пика горы (используется если зажать клавишу I)

Mountain falloff strength - сглаживание пика горы


Если нажать кнопку Noisy то вместо сглаживания ландшафта будет создаваться "шум".

Есть 2 инструмента по работе с ландшафтом которые нельзя включить на прямую из окна редактирования ландшафта кистью.
- При зажатой кнопке P и ЛКМ вести мышью вверх или вниз. В этом случае создается плато на определенной мышью высоте.
- При зажатой кнопке P и ПКМ водить мышью. Выравнивает ландшафт под высоту плато.
- При зажатой кнопке I и ЛКМ ведем мышью вверх. Создаем гору с пиком в той точке куда ткнули курсором.

TerrainWin.png

Окно редактирования ландшафта кистью.

Видео версия

1.2 Раскраска ландшафта

Внимание!

Работа этого инструмента сопровождается наличием определенного количества багов. Но как правило пользоваться им реально!

Информация

При разработке игры Targem games использовали сторонние инструменты для текстурирования ландшафта. Данное руководство отображает один из самых простых способов с использованием SDK.


1.2.1 Введение

Общий вид TileSetBar:

Общий вид TileSetBar


Для того что бы раскрасить ландшафт необходимо заранее подготовить текстуру для раскраски (в дистрибутиве игры их нет). Текстуру можно подготовить в любом графическом редакторе на ваш вкус. Редактор загружает текстуры в форматах TGA, BMP, DDS.

Внимание!

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

1.2.2 Работа с Tile map

Данный инструмент предназначен для раскрашивания ландшафта диффузной текстурой и наложением на нее текстуры детализации.

Для запуска инструмента необходимо кликнуть по значку Tile map. Откроется окно TileSetBar В левой части которого будет список всех текстур детализации. Справа различные настройки для рисования диффузной текстурой или текстурой детализации.

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

TilemapICO.png

Иконка Tile map

TileInsert.png

Выделение каталога с детализацией.

TileDiff.png

Дерево с загруженной текстурой.


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


После того как текстура загружена мы можем выбрать будем ли мы красить ландшафт или наносить текстуру детализации, хочу отметить, что для того что бы наносить текстуру детализации не обязательно загружать диффузную текстуру. Итак для того что бы красить ландшафт нужно установить флажок на параметр Draw diffuse map и выбрать в списке выше альфаканал например alpha0. Если флажок будет установлен на параметре Draw detail tiles, то будет рисоваться текстура детализации. Можно подвинуть окно в сторону и нажимая ЛКМ рисовать на карте кистью. В случае если вы рисуете текстуру детализации кисть будет квадратной, если рисуете диффузную текстуру - круглой. Размер кисти можно регулировать зажав клавишу B и двигая мышь влево - чтобы уменьшить размер кисти, вправо - увеличить размер кисти.

TileSetting.png

Настройка
для диффузной
текстуры

1.2.3 Некоторые особенности и различия EM и EM:M113


Редактируя таким образом текстуру ландшафта по умолчанию мы редактируем файл lightmap_daytime_имя_карты.dds(зависит от выбранного в WeatherEditor) В Ex machina у каждой карты есть четыре подобных текстуры:

lightmap_daytime_имя_карты.dds - день
lightmap_nighttime_имя_карты.dds - ночь
lightmap_sunrisetime_имя_карты.dds - утро
lightmap_sunsettime_имя_карты.dds - вечер

Таким образом все наши изменения сохраняться только для одного времени суток. Для того что бы изменения были отражены в других файлах есть несколько путей:
- Вручную нарисовать их выбрав в Weather Editor другое время суток.
- Скопировать файл 3 раза изменить имя и отредактировать цветовую палитру в графическом редакторе.
- Самый сложный. Экспортировать в 3D редактор карту высот, наложить текстуру, установить источник света с определенными параметрами для каждого времени суток. Экспортировать получившуюся текстуру с тенями и освещением.

В Ex Machina Меридиан 113 устройство немного поменялось, поэтому подобная процедура там не нужна.

1.2.4 Проблемы


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

Личный опыт

Это странно, но! Иногда у меня получалось рисовать до 3х текстур не перезагружая редактор.


Видео версия

1.3 Работа с водой


Предупреждение

В редакторе с панелью Water editor есть некоторые проблемы. Так же редактирование воды не очень интуитивно.

Для редактирования воды необходимо включить инструмент Wather editor. Никаких функциональных кнопок в нем нет, все действия производятся исключительно с помощью горячих клавиш. В редакторе Ex Machina панель даже не появляется, в Ex Machina Меридиан 113 панель есть, но на ней только список горячих клавиш. Сначала необходимо разместить квадрат воды. Для этого необходимо нажать ЛКМ скорее всего вода появится под ландшафтом. Для того что бы поднять ее на поверхность необходимо зажать + на NUM клавиатуре. Соответственно для того, что бы опускать уровень воды нужно зажимать NUM -. Размер кисти изменяется так же как и в других инструментах. Зажатием клавиши B и движением мыши влево или вправо. После того как вода установлена на необходимый уровень необходимо запомнить высоту. Для этого нажимаем клавишу P и ЛКМ на воде. Теперь при нажатии ЛКМ вода будет установлена на уровень из буфера.

Но! Есть способ и попроще. Сначала зажимаем space и кликаем ЛКМ на той высоте ландшафта, где хотим разместить воду. Вода сразу появится на уровне нужном вам. Если не отпускать space, то можно двигать воду мышью вверх и вниз. Потом просто дорисовываем остальные участки воды как было описано ранее.

Есть способ быстро заполнить углубление водой. Когда уровень воды записан в буфер нужно нажать shift и ЛКМ. Но такой способ может поломать уровень воды там где это не надо, поэтому пользуйтесь им осторожно и проверяйте результат в разных частях карты.

Следующим делом будет установка прибоя. Тут все проще.

ctrl + e + ЛКМ - установит прибой на водоем под курсором.
ctrl + d + ЛКМ - удалит прибой под курсором.
ctrl + e + ПКМ - установит прибой на участок водоема под курсором (зависит от размера кисти)
ctrl + d + ПКМ - удалит прибой на участке водоема под курсором (зависит от размера кисти)

WaterICO.png

Иконка Water editor


WaterEditor.png

Внешний вид редактора воды в Меридиан 113

Видео версия

1.4 Создание дорог и скал

Для создания дорог и скал используется RoadsEditor. Не все его параметры очевидны, поэтому опишу только то что мне понятно.

RoadsIco.png

Иконка RoadsEditor

В левой части окна список из моделей дорог и скал существующих в игре. Для того, что бы начать, необходимо выбрать одну из них.
Окно имеет следующие параметры

Segment length - расстояние между нодами(узлами).
Active model - 3д модель объекта, у некоторых она одна у некоторых несколько.
Active skin - Скин объекта, тоже может быть один, а может быть несколько.

Random road skin - Установит случайный скин объекта.
Random road models - Установит случайную модель объекта.
Put crosses - Активирует перекрестки при пересечении дорог.
Smooth roads - сглаживает повороты дорог.

Put as cliffs - Размещать как скалы (Сдвигает ноды очень близко, не понимаю зачем.)
Fade cliffs - Прятать скалы (Не понимаю что она делает.)
Cliff height distance - Должна регулировать высоту скал, но не регулирует.

Fix ls for roads - Что то делает (ноды чуть опускаются вниз)
Fix ls for cliffs - Что то делает (не вижу что)
Rebuild roads - Перестраивает дороги, после чего они частично уходят под ландшафт, предпочитаю не использовать.

Selected node model - Модель выбранной ноды (можно поменять)
Selectrd node skin - Скин выбранной ноды (можно поменять)

Пара слов о редактировании. Смена режимов работы между установкой узлов и редактированием происходит нажатием ПКМ. Если круг синий, включен режим создания, если белый, то режим редактирования(выделения). Выделив узел зажав shift, можно его двигать. Клавишей del узел удаляется.

RoadsEditor.png

Интерфейс RoadsEditor


Видео версия

1.5 Расстановка объектов

Для расстановки объектов в редакторе предусмотрен инструмент Entities toolbar.

Entities ico.png

Иконка Entities editor

1.5.1 Описание Entities toolbar


Рассмотрим его функционал подробнее:

Form terrain - подстраивает ландшафт под объект
Random scale - добавлять объект используя случайное масштабирование
Move and rotate with locations - двигать и вращать объекты вместе с их локациями
Put in chain - разместить цепь объектов
Random angle - случайный угол
Random skin - случайный скин


Дальше следует дерево объектов. Рассмотрим что оно в себя включает:

Game objects - объекты с игровой логикой (например города, разрушаемые заборы, деревья.)
Other stuff - префабы и эффекты
Animated models - статичные объекты
Sprites - спрайты (на мой взгляд не используется)
Particle systems - частицы (на мой взгляд не используется)
Рандомные группы - Группы статичных объектов для случайной расстановки.

В нижней части панели расположено окно предпросмотра.

Entities toolbar.png

Окно Entities editor


1.5.2 Работа c Entities toolbar

Теперь перейдем расстановке. Для того, что бы добавить объект на карту необходимо выбрать его в списке и кликнуть ЛКМ по тому месту куда мы хотим его разместить.
Для вращения объектов необходимо активировать кнопку Rotate на панели инструментов. Далее необходимо навести курсор на ось вращения, что бы она подсвечивалась желтым. Зажимаем ПКМ и движением мыши вращаем объект.
Для перемещения объекта по карте необходимо зажать shift и двигать мышь. Для перемещения объекта по вертикали необходимо зажать клавишу Z и двигать мышь.
При нажатии ПКМ на объекте при активированном инструменте SELECT открывается окно свойств объекта.

Рассмотрим горячие клавиши:
ЛКМ - установка объекта на ландшафт
ПКМ - вращение объекта\окно свойств объекта
shift - движение объекта по ландшафту
Z - движение объекта вверх и вниз (не работает для разрушаемых объектов)
C - создает копию выделенного объекта

Видео версия

1.6 Расстановка травы

Для расстановки травы в редакторе предусмотрен инструмент Shapes editor.
Для того, что бы его открыть в верхнем меню необходима кликнуть на Layers и в выпадающем списке выбрать Shapes editor.

1.6.1 Описание Shapes editor


Рассмотрим его функционал подробнее:

Левое окно содержит список возможных ассетов.
Change colormap - не используется.
Clean objects in tile - при включеной галочке удаляет все объекты попавшие под кисть. Внимание! Все объекты. Использовать осторожно.
Put on good places - при включении галочки размещает траву только на свободном пространстве в радиусе действия кисти.
Reset Shapes - перезагружает список ассетов.


1.6.2 Работа c Shapes editor


Теперь перейдем расстановке. Для того, что бы добавить траву на карту необходимо выбрать нужный ассет в списке установить необходимые параметры справа и кликом ЛКМ по карте размещать траву. Если галочка Clean objects in tile отключена, то повторные нажатия увеличивают плотность травы. Для удаления травы используйте ассет ластик и не снимайте галочку с Clean objects in tile.

Shapes.png

Окно Shapes editor

Видео версия

2.0 Наполнение карты игровыми объектами

2.1 Создание городов

Для добавления новых городов по большей части необходимо будет использовать текстовый редактор, а не редактор карт. Можно использовать любой редактор хоть блокнот, но лучше использовать редакторы с поддержкой подсветки синтаксиса такие например как Notepad++ или VSCode

Примечание автора

Не смотря на то что я привел в пример Notepad++ и другие редакторы, сообщество по большей части перешло на VSCode. Он показался наиболее удобным и функциональным. Краткий обзор его возможностей сделал наш товарищ Seel посмотреть можно ТУТ

2.1.1 Создание прототипа города

В первую очередь необходимо открыть файл towns.xml находящийся по адресу /папка игры/data/gamedata/gameobjects. Файл содержит в себе информацию для генератора ассортимента оружий в городах, генератора аффиксов и прототипов городов. Нас в данный момент интересуют именно прототипы городов они находятся ниже, после генераторов. Для примера используем прототип Южного.
Для примера привожу код

<Prototype
			Class		= "Town"
			Name		= "TownSouth"
			ModelFile	= "minin"
			NodeScale	= "1 1 1" 

			MusicName		= "trade_town1"
			GateModelFile 	= "big_gate01"

			NumCollisionLayersBelowVehicle = "1"

			IsIntersecting		= "true"
			LookRadius		= "200"
			IntersectionRadius	= "50" 

			Vehicles 	= "Bug"

			GunGenerator		= "gunTownSouthGenerator"
			DesiredGunsInWorkshop	= "15"

			GunAffixGenerator	= "townaffixGenerator"
			GunAffixesCount		= "1"

			CabinsAndBasketsAffixGenerator	= "towntruxaffixGenerator"
			CabinsAndBasketsAffixesCount	= "3"

			WeaponPriceMultiplier = "1.2"
			WeaponPriceDispersion = "15">
			
			<Article
				Prototype				= "potato"				
				Amount	 				= "0"
				ExternalPriceCoefficient		= "1.45"
				Import   				= "TRUE"
				Export   				= "FALSE"				
				PriceDynamic 				= "1"
				MinCount				= "0"
				MaxCount				= "60"
				RegenerationPeriod			= "300"	
			/>

			<Article
				Prototype				= "firewood"				
				Amount	 				= "6"
				ExternalPriceCoefficient		= "0.9"
				PriceDynamic 				= "1"
				Import   				= "FALSE"
				Export   				= "TRUE"
				MinCount				= "0"
				MaxCount				= "14"
				RegenerationPeriod			= "300"
			/>

Рассмотрим теги подробнее.
Начнем с блока Prototype:

Тег Возможные аргументы Описание
Class Town Класс прототипа, для городов всегда Town
Name Символы на латинице, без пробелов и спецсимволов Техническое имя города, будет отображаться в игре если не будет прописано игровое имя
ModelFile Имя модели Имя для модели города, для деревень используется модель кирпича. Имя модели можно посмотреть в файле animmodels.xml находящемся по адресу /папка игры/data/models
NodeScale 1 1 1 Размер ноды, не понятно как работает, у всех городов 1 1 1 по умолчанию
MusicName Имя музыки Имя музыки для города, можно посмотреть в файле music.xml находящемся по адресу /папка игры/data/music
GateModelFile Имя ворот города Имя ворот города существует только у городов с открывающимися воротами, у деревень отсутствует. Посмотреть имена ворот можно в файле animmodels.xml находящемся по адресу /папка игры/data/models
NumCollisionLayersBelowVehicle Целое число Не могу сказать что это значит
IsIntersecting true/false Не могу сказать что это значит
LookRadius Число У всех городов по умолчанию 200, не могу точно сказать, что оно делает, но очевидно, что это радиус обзора
IntersectionRadius Число Не могу сказать что это значит
MaxDefenders Целое число (максимальное не известно, минимальное 0) Количество возможных защитников города, при 0 их не будет совсем. Максимальное число мне не известно.
GunGenerator Имя генератора оружия Все генераторы оружия описаны выше в файле Towns.xml, все они имеют класс RepositoryObjectsGenerator
DesiredGunsInWorkshop Целое число Количество оружия сгенерированного генератором для продажи
Vehicles Прототип автомобиля Прототип автомобиля, для защитников города (Точно ли?), можно посмотреть прототипы в файле vehicles.xml по адресу /папка игры/data/gamedata/gameobjects
GunAffixGenerator Имя генератора аффиксов для оружия Можно посмотреть в этом же файле, выше у прототипов с классом AffixGenerator
GunAffixesCount Целое число Количество возможных аффиксов оружия
CabinsAndBasketsAffixGenerator Имя генератора аффиксов для кабин и кузовов Можно посмотреть в этом же файле, выше у прототипов с классом AffixGenerator
CabinsAndBasketsAffixesCount Целое число Количество возможных аффиксов кабин и кузовов
WeaponPriceMultiplier Число Мультипликатор цены оружия
WeaponPriceDispersion Число Разброс цен на оружие, точная механика работы мне не известна


Следом идет блок Article он отвечает за товары на рынке города, такие как картошка, металлолом и подобное. Этих блоков может быть несколько. Рассмотрим подробнее:

Тег Возможные аргументы Описание
Prototype potato/scrap_metal/firewood/oil/bottle/fuel/machinery/tobacco/book Имя прототипа товара, можно посмотреть в файле wares.xml по адресу /папка игры/data/gamedata/gameobjects
Amount Целое число Количество товара на складе города по умолчанию
ExternalPriceCoefficient Число Коэффициент цены при стандартном количестве товара на складе
Import TRUE/FALSE Импортируется ли товар, булевой параметр
Export TRUE/FALSE Экспортируется ли товар, булевой параметр
PriceDynamic Число Скорее всего не используется
MinCount Целое число Минимальное количество товара на складе
MaxCount Целое число Максимальное количество товара на складе
RegenerationPeriod Число Время регерации товара, если было 0 то убывает, стремится к дефолту


Для того что бы создать новый город, за основу можно взять другой, единственное что нужно поменять обязательно это тег Name, остальные параметры можете по желанию поменять в соответствии с таблицей приведенной выше.

2.1.2 Добавление нового прототипа города на карту

Для дальнейшей работы с городом, нужно открыть редактор карт и загрузить необходимую карту(Можно справится и без этого, но это будет менее удобно)