====== Создание ассета персонажа (Citizen Asset Creation) ====== === Введение === > Этот гайд охватывает создание пользовательских персонажей для Cities: Skylines. Эти ассеты могут быть пешеходами, велосипедистами и другими типами NPC в игре. Требуются базовые знания 3D-моделирования, работы с текстурами и импортом ассетов в игру. ===== Сетка (Mesh) ===== ==== Основная сетка ==== > Используйте оптимизированную геометрию с минимальным количеством полигонов. > Убедитесь, что модель ориентирована в правильном направлении (вперёд по оси Z). Примените все трансформации перед экспортом (scale, rotation). Это 3D-модель гражданина, которая будет видна, когда камера окажется рядом с ним. > > Он создаётся с помощью программ для 3D-моделирования, таких как Blender, 3ds Max, Maya или SketchUp. > Сам файл сетки содержит вершины (их координаты, UV-развертку, нормали и цвета) и треугольники. Для гражданских лиц в файле также содержатся кости скелета, к которым привязана сетка с помощью весов костей. ==== Сложность модели ==== > Горожане в игре — небольшие объекты, поэтому детали важны лишь вблизи камеры. > Рекомендуется придерживаться разумного количества треугольников в зависимости от размера и детализации вашей модели. Для справки вы можете посмотреть примеры ванильных персонажей или ассетов других авторов. Иными словами держать основной mesh в пределах 1500–2000 треугольников. Абсолютный предел для сетки — 65 536 вершин. > > {{:game:cities:cities_skylines:moding:изображение_2025-08-19_172225609.png?nolink&600|}}Основная модель и LOD ванильного персонажа.. Вы можете использовать [[https://steamcommunity.com/sharedfiles/filedetails/?id=453956891|Mesh Info от SamsamTS]] для проверки количества треугольников в ресурсах. ==== LOD-сетка ==== > Создайте упрощённую LOD-модель с ~100–200 треугольниками. LOD автоматически подгружается на дистанции, улучшая производительность. > > LOD — это уровень детализации. Это сетка, которую видно издалека. Она должна быть как можно проще. Горожане маленькие, а LOD виден только издалека, поэтому модели с менее чем 100 треугольниками может быть достаточно. > > LOD не анимирован, поэтому вам не нужно импортировать для него скелет. ==== Скелет ==== > Вы должны подогнать свою сетку под один из доступных шаблонов каркаса, которые можно найти в этой папке: C:\Program Files (x86)\Steam\steamapps\common\Cities_Skylines\Files\Templates > Все модели должны использовать стандартный скелет Citizens. > Экспортируйте FBX с привязанной кости rig (humanoid rig из Unity подходит). > > {{:game:cities:cities_skylines:moding:изображение_2025-08-19_172435819.png?nolink&300|}}Один из шаблонов скелета. Вам нужно привязать сетку к костям скелета. В 3ds Max это делается с помощью модификатора кожи и добавления всех костей ==== UV-развёртка ==== > Должна занимать весь 1024x1024 текстурный атлас. > Избегайте наложений UV, особенно для элементов, требующих уникальных текстур. > Для основной сетки можно использовать UV-развертку за пределами области 0–1 (основной тайл), чтобы можно было многократно использовать всю текстуру на одной грани. > > {{:game:cities:cities_skylines:moding:изображение_2025-08-19_172544335.png?nolink&300|}} Пример UV-развёртки с использованием видимой горизонтальной мозаики внизу. ==== LOD ==== > Для сетки LOD UV-отображение должно находиться в пределах области 0-1 (основной плитки) UV-карты, разбиение на листы не допускается. Это связано с тем, что в игре все текстуры LOD объединены в единую текстуру, называемую атласом, поэтому при неправильном отображении uv в конечном итоге текстура какого-либо другого случайного гражданина будет помещена в ваш LOD. > > {{:game:cities:cities_skylines:moding:изображение_2025-08-19_172717870.png?nolink&300|}} UV-развертка для сетки LOD с использованием автоматического развертывания в 3ds Max. Не перекрывается и находится внутри основного фрагмента — подходит для запекания. ==== Pivot / Origin - Точка опоры / Начало координат ==== > Центр модели должен быть в ногах персонажа. > Pivot помогает правильно отображать модель в редакторе. > Точка отсчёта или начало координат — это центральная точка на поверхности. Обычно она обозначается с помощью красного/зелёного/синего маркера. ==== Трансформация ==== > В Blender / 3ds Max: обязательно примените трансформации (Ctrl+A в Blender). > Модель не должна быть масштабирована в редакторе после импорта. > Убедитесь, что вы экспортируете одну сетку и связанный с ней скелет с правильным поворотом и масштабом, иначе вы не сможете повернуть или масштабировать своего персонажа при импорте. ==== Поддерживаемые форматы ==== > Рекомендуется экспорт в `.fbx` (версия 2013 или 2014/15). > Поддержка `.obj` ограничена, скелет и анимации не сохраняются. ===== Текстуры ===== ==== Разрешение ==== > Основной набор: 1024x1024 (RGBA). > LOD-текстуры: 128x128 или 256x256 (зависит от детализации). > Все импортированные основные текстуры должны иметь одинаковое разрешение. > В 3D-графике принято использовать степени двойки, то есть такие размеры, как 512x512, 512x256, 256x256, 128x256 и т. д. Рекомендуется придерживаться этого стандарта, но самое главное — ширина и высота должны делиться на 32, иначе текстура будет повреждена при сжатии. > Убедитесь, что в настройках графики игры установлено высокое качество текстур. В противном случае импортированные текстуры будут иметь более низкое разрешение. ==== Текстуры LOD ==== > Если вы не укажете текстуры LOD, игра попытается создать их на основе UV-развертки вашей сетки LOD, что может привести к проблемам с отображением. Поэтому рекомендуется создавать собственные текстуры LOD с помощью запекания. ==== Diffuse ==== > Основной цвет и детали одежды. Белый цвет позволяет игре применить расцветку NPC. В игре он будет выглядеть очень ярким, контрастным и насыщенным, поэтому обязательно уменьшите насыщенность и ограничьте яркость самых светлых участков до средне- и светло-серого цвета с показателем RGB ниже 140. > > {{:game:cities:cities_skylines:moding:изображение_2025-08-19_172916679.png?nolink&300|}}Примеры диффузных текстур для некоторых ванильных персонажей. Если вы не импортируете карту диффузии, по умолчанию будет использоваться белый цвет. ==== Alpha (прозрачность) ==== > Используется для маски волос, очков, аксессуаров. > Черный = прозрачный, белый = непрозрачный. > > {{gallery>:game:cities:cities_skylines:moding:textures_alpha.jpg?image_*.jpg&300x300&nocrop Caption}}Пример альфа-текстуры для некоторых перил и металлических балок. Прозрачность, белый означает непрозрачный или видимый, черный означает прозрачный или невидимый. Значения серого могут влиять на то, как объект выглядит издалека или под углом. \\ Полупрозрачность не поддерживается, для этого вам нужно использовать [[ https://cslmodding.info/shader/rotors/ | шейдер rotors ]]. \\ Если вы не импортируете альфа-карту, по умолчанию она будет полностью непрозрачной или полностью видимой. > {{gallery>:game:cities:cities_skylines:moding:textures_alpha_rail.jpg?image_*.jpg&300x300&nocrop Caption}} Использование более светлых оттенков для невидимых деталей уменьшит вероятность полного исчезновения мелких деталей, таких как перила. ==== Color Map ==== > Цветовая маска влияет на смену окраски персонажа в игре. > Цветовая маска определяет, на какие части будут влиять цветовые вариации. Белый цвет означает, что влияние будет полным, а чёрный — что его не будет. > Диффузное изображение будет умножено на коэффициент изменения цвета, то есть итоговый цвет будет выглядеть темнее исходного диффузного изображения. > Если вы не импортируете цветовую карту, по умолчанию будет использоваться полноцветная карта. ==== Зеркальный слой ==== > {{gallery>:game:cities:cities_skylines:moding:textures_specular.jpg?image_*.jpg&300x300&nocrop Caption}}Пример зеркальной карты, показывающей высокие значения для Windows и очень низкие для остальных. Коэффициент отражения, значения яркости (выше 80% или 205 RGB) станут "окнами", через которые будет виден искусственный внутренний пол. \\ Зеркальный блик от солнца очень большой и яркий, поэтому вы можете захотеть использовать очень низкую (0-10%) зеркальность для поверхностей, обращенных вверх, например крыш. \\ Если вы не импортируете зеркальную карту, по умолчанию она будет без зеркальности. > {{gallery>:game:cities:cities_skylines:moding:textures_specular_transition.jpg?image_*.jpg&300x300&nocrop Caption}} Переходы между различными значениями зеркальности приводят к появлению артефактов на карте нормалей, и наоборот, даже если карта нормалей не импортирована. ==== Specular ==== > Контролирует блеск (для кожаных элементов, металла и т.д.). > Используйте серые оттенки: больше белого = сильнее отражение. ==== Normal Map ==== > Придаёт объём и глубину. > Используйте OpenGL формат, если экспортируете из Blender. > > {{gallery>:game:cities:cities_skylines:moding:textures_normal.jpg?image_*.jpg&300x300&nocrop Caption}}Пример карты нормалей, показывающей плоские окна. Также иногда называемая рельефной картой, добавляет искусственную глубину или форму, изменяя вид освещения. \\ \\ Это можно сделать на основе карты diffuse или карты высот (более яркие цвета будут лучше смотреться вытянутыми) с помощью [[ http://cpetry.github.io/NormalMap-Online/ | онлайн-генератора карт нормалей ]], плагина photoshop, такого как [[ http://www.xnormal.net/ | xNormal ]], или автономного программного обеспечения, такого как [[ https://www.crazybump.com/ | CraziBump ]]. \\ \\ Генератор карты нормалей должен быть настроен на + X + Y, что означает, что инверсии цветовых каналов не требуются. Подробнее читайте в [[ https://cslmodding.info/normal-maps/ | статье о карте нормалей ]]. \\ \\ Высокая зеркальность и карта нормалей плохо сочетаются из-за сжатия, поэтому вам может потребоваться закрасить окна и другие блестящие части сплошным цветом перед созданием карты нормалей или закрасить эти части 128,128,255 на окончательной карте нормалей. \\ > Если вы не импортируете карту нормалей, по умолчанию она будет плоской - без выпуклостей. > {{gallery>:game:cities:cities_skylines:moding:textures_normal_problem.jpg?image_*.jpg&300x300&nocrop Caption}} Проблема: карты нормалей отображаются неправильно, если используется функция поворота сетки импортера ресурсов. > {{gallery>:game:cities:cities_skylines:moding:textures_normal_problem2.jpg?image_*.jpg&300x300&nocrop Caption}} Проблема: значение карты нормалей по умолчанию равно 0,5, что невозможно при использовании 127 (слева) или 128 (справа). На изображении показана одна и та же плоская карта нормалей на гранях с разным поворотом/ переворачиванием в ультрафиолетовом свете. ==== Формат текстур ==== > PNG или TGA (без сжатия). Альфа-канал должен быть сохранён, если используется. Используйте формат без потерь, например .PNG. > > Игра поддерживает и другие форматы, но нет смысла использовать какой-то другой. Неважно, насколько сильно сжата ваша текстура, даже если она цельная или сложная, игра преобразует её в формат DXT, так что на конечный размер не повлияет ничего, кроме разрешения. > > Убедитесь, что текстура имеет разрядность 8 бит на канал, так как изображение с разрядностью 16 бит на канал невозможно импортировать. Не используйте функцию «Меньший файл (8 бит)» в окне «Экспорт в Photoshop», так как она создает изображение с индексированным цветом, а не с разрядностью 8 бит на канал. ===== Импорт ===== ==== Присвоение имен ==== > Название должно быть коротким и уникальным. Используйте латиницу, избегайте пробелов и спецсимволов. > > Сетка может иметь любое имя, но не рекомендуется использовать пробелы или символы подчеркивания, так как имя сетки lod будет выглядеть как meshname_lod. > > Текстуры должны иметь то же имя, что и сетка, но с идентификатором типа текстуры после него. В результате получатся такие имена, как meshname_d.png и meshname_lod_d.png ==== Импорт каталога со зданием ==== > > {{gallery>:game:cities:cities_skylines:moding:import.jpg?image_*.jpg&300x300&nocrop Caption}}Файлы готовые к импорту. Вам следует поместить файлы `.fbx` сетки и текстур в папку импорта, расположенную здесь: %LocalAppData%\Колоссальный заказ\ Cities_Skylines\ Дополнения \ Импорт \\ Папка AppData по умолчанию скрыта, вы можете получить к ней доступ, скопировав и вставив путь в проводник или нажав Windows + R и введя appdata. ==== Шаблон ==== > Выберите шаблон: “Citizen” или “Custom Citizen” в редакторе ассетов. > Подходит для всех городских жителей. > От выбранного вами шаблона будут зависеть некоторые характеристики вашего персонажа: > > >> >> ИИ >> пол >> возрастная фаза >> Анимация >> скорость ходьбы >> шейдер, свойства материала (варианты цвета) > > Некоторые из этих параметров можно изменить позже в самом редакторе или с помощью [[https://steamcommunity.com/sharedfiles/filedetails/?id=450877484|ModTools]] или других модов. ==== Импорт модели ==== > Перейдите в редактор → выберите шаблон → модель будет загружена автоматически. > Убедитесь, что модель корректно отрисовывается. > > Для пользователей, которые не могут поворачивать или масштабировать сетку при импорте, необходимо убедиться, что она правильно настроена в 3D-приложении или при экспорте. > > {{:game:cities:cities_skylines:moding:изображение_2025-08-19_174027880.png?nolink&300|}} Импорт сетки в Asset Importer. > > Если вы получаете сообщение об ошибке неподдерживаемого цвета, одна из ваших текстур может иметь файл размером 16 бит / канал, вам нужно изменить его на 8 бит / канал в Photoshop: Изображение> Режим> 8 бит / канал. > > Если вы получаете сообщение об ошибке неподдерживаемого цвета, одна из ваших текстур может иметь файл размером 16 бит / канал, вам нужно изменить его на 8 бит / канал в Photoshop: Изображение> Режим> 8 бит / канал. ==== Ошибки ==== > Часто возникают при некорректной UV или Pivot. > Если модель не отображается — проверьте экспорт и текстуры. ===== Расширенный редактор ===== > {{gallery>:game:cities:cities_skylines:moding:modtools.jpg?image_*.jpg&300x300&nocrop Caption}}ModTools scene explorer и консоль. Различные вещи можно изменить с помощью ModTools обозревателя сцен Ctrl + E или запуска скриптов в консоли F7, или определенных модов. ===== Редактор ассетов ===== ==== Общие свойства ==== > Установите название ассета, категорию и описание. > Проверьте анимации (ходьба, idle). ==== Расширенные параметры ==== > Можно указать, где персонаж может появляться (пешеход, велосипедист). > Включите LOD и AI-настройки, если требуется. ==== AI ==== > Назначьте тип поведения (AI): житель, турист и т.д. ==== Item Class ==== > Устанавливает принадлежность (например, гражданский, служащий). ===== Сохранение ассета ===== ==== Имя файла ==== > Название файла не влияет на отображение в игре. > Используйте уникальные префиксы (например: kazanport_citizen_01). ==== Название ассета ==== > Название будет отображаться в игре и в мастерской. > Используйте понятное и тематическое имя. ==== Изображения (preview) ==== > Сделайте скриншот через редактор (F12). > Превью будет использоваться на Steam Workshop. ==== Папка локальных ассетов ==== > Все ассеты сохраняются в `\AppData\Local\Colossal Order\Cities_Skylines\Addons\Assets`. ===== Публикация ===== > В редакторе нажмите “Опубликовать”. > Заполните все поля: название, описание, теги. > > {{gallery>:game:cities:cities_skylines:moding:share.jpg?image_*.jpg&300x300&nocrop Caption}}Кнопка Поделиться в контент-менеджере. После того, как вы сохранили актив и перезагрузили игру, вы можете опубликовать его. \\ Перейдите в content manager> assets и найдите свой ресурс, затем нажмите Поделиться. === Название и описание === > Сделайте описание понятным, с упоминанием особенностей. > Вы можете изменить их позже в мастерской Steam Workshop. ==== Steam-превью и контент ==== > Steam использует первое изображение как превью. > Все дополнительные файлы будут загружены вместе с ассетом. === Предварительный просмотр изображений и содержимого в Steam === > {{gallery>:game:cities:cities_skylines:moding:publish.jpg?image_*.jpg&300x300&nocrop Caption}}Окно публикации и папка с содержимым. На снимке в правом нижнем углу снова есть значок папки. Здесь вы можете изменить изображение предварительного просмотра Steam, которое является миниатюрой, видимой в steam. Максимальный размер изображения, которое будет видно, - 437x437 (на первой странице), но в Steam оно будет увеличено до 512x512, так что вам следует использовать именно этот размер. \\ \\ Существует также папка content, в которой находится фактический файл активов. Вы можете вставить сюда несколько файлов .crp, если хотите загрузить пакет активов. === Мастерская Steam === > Убедитесь, что ассет виден в игре и не конфликтует с другими. > На странице мастерской Steam для вашего актива вы можете: > > - добавьте его в коллекцию > - добавляйте изображения и видео > - добавление участников и ссылок > - добавьте необходимые предметы и DLC > - измените видимость на "только для друзей" или "приватную" ===== Обновление ===== > Чтобы обновить свой собственный элемент, вы должны сначала подписаться на него, тогда он появится в менеджере контента. Это не будет то же самое, что локальный ресурс, поскольку на нем будет отображаться кнопка "обновить". > > Когда вы нажимаете обновить, щелкните значок папки, и теперь вы можете изменить изображение для предварительного просмотра Steam и поместить свой новый asset в папку content. При обновлении пакета не забудьте поместить все активы в папку content. > > Вы также можете добавить больше активов, чтобы увеличить пакет. > > Убедитесь, что ваши обновленные ресурсы сохранены с точно таким же именем, как и раньше, в противном случае оно исчезнет из сохранений ваших подписчиков, поскольку для ссылки на него игра использует внутреннее название сборного объекта. В случае сетей (дорог, треков и т.д.) Сохранение может полностью прерваться. ===== Обновление ===== ==== Как обновить ==== > Измените ассет → нажмите “Обновить” в редакторе. > Старый ассет будет заменён, ссылка останется прежней. ==== Prefab Name ==== > Не меняйте Prefab Name при обновлении — это нарушит совместимость. ===== Название сборного объекта ===== > {{gallery>:game:cities:cities_skylines:moding:prefab.jpg?image_*.jpg&300x300&nocrop Caption}}Сравнение локальных (вверху) и опубликованных в мастерской (внизу) названий сборных конструкций, показанных в ModTools. Это не то, что вы можете изменить. \\ \\ Это скрытое внутреннее имя, используемое для ссылки на ваш ресурс в файлах сохранения. \\ \\ Именно по этой причине локальный актив - это не то же самое, что ресурс, опубликованный в мастерской. \\ \\ Для локальных ресурсов: filename.Имя_данных активов \\ \\ Для опубликованных ресурсов мастерской: SteamID.Имя_данных активов