Cities: Skylines

Cities: Skylines

191 ratings
Создание модов к игре
By Valex
Правильное создание собственных моделей в 3ds MAX и их экспортирование в игру
5
2
   
Award
Favorite
Favorited
Unfavorite
Парочка вступительных слов
Как известно, Skylines не балует игроков разнообразием и качеством архитектуры. Если вас (так же, как и меня) расстраивает сей факт, и вы хотите привнести в игру нечто своё, данное руководство может подсказать вам, как сделать это правильно.
Покопавшись несколько дней в 3ds MAX и почитав разрозненные туториалы на просторах инета, я выработал собственный путь добавления моделей в игру, который ни в коем случае не претендует на звание "единственно верного". Для меня главным было то, что он РАБОТАЕТ. Итак, погнали...
Выдержки из спецификации
Прежде чем приступить к созданию своего творения в 3ds MAX, предлагаю ознакомиться с некоторыми требованиями, которые предъявляют разработчики игры к пользовательским моделям.
1. Одна системная единица используемого ПО должна быть равна 1 метру (мы настроим 3ds MAX соответствующим образом в следующем разделе).
2. Одна клетка игрового поля равна 8 метрам, из чего следует, что если вы создаёте, к примеру, жилое здание, - его площадь не должна превышать 32х32 метра (4х4 клетки). Для зданий городских служб допускается большая площадь - до 16х8 клеток (128х64 м).
3. Разработчики требуют, чтобы модель представляла собой один объект без какой-либо иерархии, и содержала всего лишь один материал.
4. Размер модели не должен превышать 65 000 вершин (vertex в 3ds MAX).
5. Размер карты текстур не должен превышать 2048x2048 пикселей, но для базовых зданий лучше всего использовать разрешение 1024х1024 (или меньше).
6. Материал модели в игре распознаёт 6 видов карт текстур (одинакового разрешения и формата *jpg), каждая из которых должна иметь такое же название, как и сам файл *FBX вашей модели. но с припиской нижнего подчёркивания и определённой буквы:
"_d" - основная карта текстур (3хканальное изображение со схемой RGB);
"_a" - карта прозрачности (1канальная маска);
"_c" - карта вариативности цвета (1канальная маска);
"_i" - карта самосвечения (1канальная маска);
"_n" - карта нормалей (3хканальное изображение со схемой RGB);
"_s" - карта отражений (1канальная маска).

Разумеется, создавать все 6 вариантов карт текстур для каждого объекта необязательно. Можно обойтись даже одной основной картой. Лично я использую помимо неё, карту самосвечения (позволяет создавать свет в окошках в ночное время) и карту отражений (для создания реалистичных стёкол). Такие карты представляют собой одноканальный вариант основной карты, в котором чем светлее область, тем, соответственно, выше значение параметра. Исключение составляет лишь карта самосвечения, для которой числовые значения таковы:
0 - нет свечения;
120 - полное свечение;
128-255 - случайные значения для свечения окон;
192 - нейтральное значение свечения.
Подготовка модели в 3ds MAX
Перед тем, как приступить к рисованию своего объекта в 3ds MAX, выставляем настройки метрики. Для этого идём в меню "Customize" - "Units Setup..." и выставляем в 2х окошках следующие параметры:

Затем можно настроить вид сетки для удобства использования программы. Кликаем правой кнопкой мыши по кнопке "Snaps Toggle" верхнего меню и переходим во вкладку "Home Grid", где лично я выставляю вот такие числа:
Тем самым мы задали шаг сетки в 1 м. Обратите внимание, что в поле "Perspective View Grid Extent" удобнее всего выставлять именно то количество метров, которое соответствует размеру будущего участка в игре (например, для игрового участка размером 4х4 клетки логично выставить значение 16, для участка 3х3 - 12 и т.д.). Это даст вам возможность более наглядно представить масштаб будущего строения.

Для контроля за количеством вершин (помним о лимите в 65 000) идём в меню "Views" - "Viewport Configuration" - вкладка "Statistics", где выставляем галочку напротив "Vertex Count", - теперь это значение выведено в левый верхний угол окна рендера.

После того, как вы создали желаемый объект (и наложили на него текстуры с использованием модификатора Unwrap UVW), он, скорее всего, будет представлять собой набор из множества различных полигонов и фигур. Чтобы объединить всё это месиво в 1 объект (напомню, игра "видит" лишь 1 объект и 1 материал), выделяем все компоненты в списке слева, вызываем контекстное меню на объекте и выбираем "Convert to Editable Poly":

После чего кликаем по любому полигону и в меню справа вызываем "Attach List":

В появившемся списке выделяем все объекты и жмём "Attach":

Подтверждаем:

Теперь осталось экспортировать полученный объект в *FBX формат (в открывшемся окне экспорта можно применить настройки по умолчанию):

И последнее, перемещаем полученный файл и файл текстуры в папку: C:\Users\<Имя пользователя>\AppData\Local\Colossal Order\Cities_Skylines\Addons\Import. Обязательно даём файлу текстуры такое же название, как у файла *FBХ, и приписываем в конце "_d":

Теперь можно смело заходить в игровой редактор и смотреть, что получилось. При выборе вашей модели в редакторе выставляем ей масштаб 100, активируем "Центральную нижнюю точку вращения" и крутим объект необходимое количество раз по разным осям, пока он не встанет так как нам нужно.
Заключение
Как видите, никаких манипуляций с началом координат и вращением вашей модели (о чём я читал не в одном туториале) в 3ds MAX производить не нужно. Всё гораздо проще, чем кажется на первый взгляд))
74 Comments
Ergo | Proxy 13 Nov @ 10:08pm 
Спасибо за ответ! Все подробно описал, главная инфа про редактор) А то я голову ломал как так игра понимает какие окна в какой цвет. :highlvl: Не примеры излишни спасибо, все уже понял)
Valex  [author] 12 Nov @ 4:09pm 
@Ergo | Proxy Привет, я давно не работаю над модингом для CS, а в CS2 немного другая схема создания. Если жизнь позволит, хотел бы вернуться к созданию ассетов для второй части, когда игровой Редактор будет доделан (и тогда уже напишу новый гайд :D). Но ты всё понял правильно :) Те области на основной карте _d, которые должны менять цвет, лучше оставлять белыми, а на самой карте вариативности _с просто залить эти области белым цветом (фон - чёрный)...
Valex  [author] 12 Nov @ 4:08pm 
... Тогда при экспорте в игру в Редакторе ты сможешь сам задать несколько цветов (вручную из палитры), в которые должно перекрашиваться здание в игре (там увидишь в настройках). Если хочешь, могу скинуть примеры набора карт для модели, возможно, поможет сориентироваться :)
Ergo | Proxy 7 Nov @ 2:44am 
Valex, Привет! Классный гайд. Правильно ли я понял что тут схема как в любой другой игре. Делаем модельку, делаем ей развертку и от этой развертки вырисовываем дополнительные маски(карты)? Но не совсем понял про карты(маски) самосвечения и вариативности цвета. Как работает вариативность цвета? Это чтобы например крыши разного цвета делать? ок. но как тогда делать саму карту? значением цвета пикселя ит.д. можно поподробнее про остальные карты, охота задействовать весь арсенал движка игры.
0tumov 20 Apr @ 7:09am 
@Valex можешь рассказать как наоборот сделать? Типо из crp. Формата в другой
Valex  [author] 15 Feb, 2023 @ 4:03pm 
@rebelsleek Можете написать мне вк, здесь история не сохраняется.
https://vk.com/vladalexsh
rebelsleek 15 Feb, 2023 @ 1:09pm 
@Valex А можете рассказать как? Можно в личку. Я понимаю как происходит процесс мапинга в максе, но не очень понимаю, как привязка текстур сохраняется в игре. По тем туториалам, что видел - везде полную развёртку заливают, думал скайлайн только так понимает текстуру. Вообще был бы признателен паре советов. Хочу стоковые убогие электростанции в игре заменить на реальные прототипы.
Valex  [author] 15 Feb, 2023 @ 1:57am 
@rebelsleek Конечно, можно. Но лучше сделать не 1, а 2-3 варианта для одинаковых окон (чтобы назначить им разные значения свечения), а то одновременно будут светиться.
rebelsleek 14 Feb, 2023 @ 2:23pm 
Вопрос. Можно ли оптимизировать текстуры? В смысле в развёртке оставить 1 тип окна и назначить его на все окна объекта? А то большое здание моделирую, боюсь развертка в 2к пикселей смех один будет.
Valex  [author] 22 Dec, 2022 @ 1:41am 
@Pahan Текстуры *jpg нужно рисовать самостоятельно в любом графическом редакторе (например, Photoshop). Файл FBX сам по себе бесцветный (в Максе фигуры раскрашиваются в условные цвета для удобства моделирования) и требует наличия текстур, поэтому нужно делать на модели развёртку, на основе которой отрисовывать текстурки.