Asset Types (Типы ресурсов)

Тема в разделе "Asset Management (Управление ресурсами)", создана пользователем Дима Гончар, 7 ноя 2020.

Статус темы:
Закрыта.
  1. Дима Гончар

    Дима Гончар Главный администратор Команда форума

  2. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    В RGL вы можете легко переопределить существующие ресурсы или создать новые в редакторе для вашего мода. Механизм переопределения работает путем замены существующих ресурсов на те, которые вы указали в каталоге ресурсов вашего модуля. Модуль сопоставляет ваши пользовательские ресурсы с теми, которые ранее были зарегистрированы другими модулями по их именам. Это происходит по порядку загрузки модулей.

    Если Модуль A и Модуль B загружаются в дополнении к модулю Native, соответственно, список конечных ресурсов и их источников, будет следующим:

    [​IMG]

    В настоящее время модифицируемые типы ресурсов это:
    • Материал
    • Меш
    • Текстура
    • Физическая форма
    Иерархия папок
    Система ресурсов обрабатывает некоторые папки в каталоге модуля специально в соответствии с их именами. Вот список этих папок и их значений:
    • Assets: Включает редактируемые файлы *.tpac, в которых хранятся метаданные каждого ресурса.
    • AssetSources: включает исходные файлы импортированных ресурсов (.psd, .fbx).
    • AssetPackages: включает файлы *.tpac только для чтения. Он генерируется, когда модуль упаковывается для клиентских сборок.
    • EmAssetPackages: включает файлы *.tpac только для чтения. Он генерируется, когда модуль упаковывается для сборки редактора.
    • DsAssetPackages: включает файлы *.tpac только для чтения. Генерируется, когда модуль упаковывается для сборки сервера.
    • RuntimeDataCache: включает автоматически сгенерированные данные, необходимые движку для каждого ресурса. Может быть удален, но при запуске может потребоваться время для создания с нуля.
    Разрешения на модифицирование
    Система ресурсов ищет разные папки в зависимости от версии исполняемого файла игры (game’s running executable). В зависимости от наличия этих папок система решает, можно ли изменить модуль или его можно использовать только в режиме чтения. Если вы хотите поделиться своим модулем, вы можете упаковать свои ресурсы и поделиться упакованными папками, не распространяя тысячи файлов и их источников. У вас есть три варианта упаковки ваших ресурсов:
    • Клиент: другие могут активировать ваш модуль для игры. Вы должны распространять папку AssetPackages.
    • Редактор: другие могут использовать ваш модуль в редакторе, но не могут его изменять. Используется, если вы хотите, чтобы другие извлекали модули из вашего модуля. Вы должны распространить папку EmAssetPackages.
    • Сервер: используется для сборки сервера. Все данные, не относящиеся к серверу, удаляются. Вы должны распространить папку DsAssetPackages.
    Если вы хотите, чтобы другие люди смогли использовать ваш модуль, как и вы, с возможностью его изменения, вам нужно поделиться папками Assets, AssetSources и, возможно, RuntimeDataCache .

    Переопределение материалов
    Переопределение материалов может быть выполнено путем создания нового материала с тем же именем, что и материал, который вы хотите переопределить. Перейдите в каталог ресурсов вашего модуля и щелкните правой кнопкой мыши на empty place (пустое место) на панели браузера. Создайте новый материал и назовите его так же, как материал, который вы хотите переопределить.

    [​IMG]
    Материал существующего меша, замещенный Модулем А

    На этом этапе все ссылки на материалы в системе будут перенаправлены на ваш пользовательский материал.


    Переопределение мешей
    Модели можно импортировать из файлов нескольких форматов (например, Trf, Fbx). Ресурсы, импортированные из одного файла, группируются по их именам в соответствии с правилами именования ресурсов (asset naming convetions). Представьте себе файл fbx следующим образом:
    • Model.fbx
      • wall(Меш)
      • wall.lod1(Меш)
      • wall.lod3(Меш)
      • bo_wall(Физическая форма)
    Согласно условностям об именах ресурсов, первые три ресурса будут сгруппированы в один меш, в котором три субмеша имеют разные LOD`ы. В конце будут импортированы два ресурса из Model.fbx: wall (Меш) и bo_wall (Физическая форма).

    Следуя этим правилам, вы можете экспортировать новый файл геометрии (например, fbx), который содержит группу мешей, имена которых начинаются на wall. В этом случае новый меш стены будет создан из этих субмешей, а существующий меш будет полностью заменен тем, который вы предоставили. Имя файла геометрии не учитывается. Стоит отметить, что переопределение меша происходит на уровне меша. Невозможно переопределить одиночный субмеш через переопределение модуля.

    [​IMG]
    Существующий кубический меш с именем testbox переопределен Модулем А с помощью чайника.


    Переопределение текстур
    Переопределение текстур очень похоже на материалы. Вам необходимо импортировать новую текстуру с тем же именем, что и текстура, которую вы хотите переопределить. Вы также можете переименовать любую уже импортированную текстуру во что-то, что соответствует имени текстуры, которую нужно переопределить.

    [​IMG]
    Существующая текстура альбедо с именем roman_ground_d переопределена Модулем А с белой текстурой




    Переопределение физических форм
    Для переопределения физических фигур необходимо импортировать физическую форму с тем же именем ресурса, который вы хотите заменить. Установите флажок Asset naming conventions (Правила наименования ресурсов), чтобы увидеть возможность импорта физических фигур.

    [​IMG]
    Существующая форма тора заменена Модулем A с помощью специальной формы аквилы
     
    Последнее редактирование: 7 ноя 2020
    Doder нравится это.
  3. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    АНИМАЦИИ

    Пока разработчики ничего не написали
     
    Doder нравится это.
  4. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    Тела определяют физические границы объектов. Их можно назначить объектам в сценах или префабах. Пользователи могут редактировать Body Flags (флажки тел), чтобы изменить их поведение.

    Флажки тел
    • Двусторонний (Two Sided): заставляет физический движок использовать обе стороны многоугольников для этого тела.
    • Ограничитель ИИ (AI Limiter): используется для пометки тел, которые будут использоваться только против ИИ, за исключением игрока.
    • Разрушаемая дверь (Destructible Door): используется автоматическим генератором навигационного меша, чтобы не помещать навигационный мештпод разрушаемые двери.
    • Отключение (Disabled): отключает физику для этого префаба или экземпляра объекта.
    • Барьер (Barrier): обеспечивает беспрепятственный выход агентов изнутри тела.
    • Исключить привязку пути (Exclude Path Snap): точки пути не привязываются к этим телам.
    • Не сталкиваться с камерой (Don’t Collide With Camera): камера игрока не сталкивается с этими телами.
    • Динамический (Dynamic): физический движок имитирует движение этого объекта.
    • Подвижный (Moveable): этот флажок указывает, что это тело и его объект-владелец могут перемещаться.
    • Лестница (Ladder): следует отдавать мешам лестниц, чтобы они функционировали должным образом.
    • Имеет ступеньки (Has Steps): следует отдавать телам лестниц со ступеньками, чтобы агент мог правильно по ним подняться. (Тело лестниц должно быть отделено от других частей объекта).
    Физика агентов требуется для работы гладких и низкополигональных физических объектов. Объекты снарядов требуют большей точности, чтобы лучше моделировать застрявшие снаряды. Приведенные ниже флаги можно использовать для двух разных тел для каждого объекта. Если ни один из флагов не выставлен, на тела реагируют и снаряды, и агенты.
    • Agent Only: только агенты реагируют на эти тела.
    • Missile Only: только ракеты реагируют на эти тела.
    Окклюдеры
    Окклюдеры - это тела, которые размещаются на поверхностях меша, чтобы сообщить системе рендеринга не отображать содержимое с другой стороны этой поверхности. Они не участвуют в физическом моделировании. Большие города и деревни в основном выигрывают от аккуратно размещенных окклюдеров. Пользователь может размещать окклюдеры прямо на сцене или прикреплять их к объектам и префабам.

    Имена импортированных тел окклюдеров должны начинаться с «occ_».
     
    Doder нравится это.
  5. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    В RGL объекты - это контейнеры для всех мешей, частиц, компонентов скрипта, окклюдеров и физических объектов. Они также могут содержать другие объекты в качестве дочерних. У них есть собственная трансформация, определяющая их положение, масштаб и вращение.

    Префабы
    Префабы - это объекты шаблона, которые не разрывают соединение с префабом даже после того, как он сохранен в сцене. Сложные объекты могут быть построены один раз и сохранены как префаб для использования в любое время и в любой сцене. Более поздние обновления префаба также повлияют на уже сделанные сцены. В Bannerlord почти все объекты миссий (mission objects) и реквизиты сцены (scene props) являются префабами.

    Правила подключения
    После того, как префаб помещен в сцену, все значения в префабе (цвета меша, преобразования дочерних предметов, значения скрипта) связаны с исходным префабом и будут обновляться после каждого изменения исходника. Любое изменение сцены для этих значений разорвет связь. Помните, что любая операция «Добавление» (Addition) к префабу в сцене разорвет всё соединение префаба. Примеры: добавление нового меша, системы частиц, источника света, дочернего объекта или компонента скрипта.
     
    Doder нравится это.
  6. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    Материалы определяют характеристики рендеринга мешей. Они содержат информацию о шейдере и текстуре, а также флажки рендеринга (определяемые шейдером и глобальные). Меш может состоять из одного материала. Начальное значение материала меша будет назначено через имя данного материала в сторонних приложениях для редактирования меша. Материалы можно создавать и редактировать с помощью Material Browser (браузера материалов), к которому можно получить доступ через Resource Browser (Браузер ресурсов). Материал также можно редактировать во время выполнения (runtime) с помощью скриптов и поведений (behaviours). Более подробную информацию о редактировании материалов и материалах по умолчанию движка можно найти в Редакторе материалов.
     
    Последнее редактирование: 7 ноя 2020
    Doder нравится это.
  7. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    Меши содержат позиции и атрибуты полигонов, которые будут использоваться на этапе рендеринга. Каждый меш имеет один материал, который определяет его поведение при отрисовке (rendering behaviour). Они сгруппированы внутри MetaMesh по их уровню LOD. Кроме того, на одном уровне LOD может быть несколько мешей с разными материалами. Более подробную информацию об импорте мешей в движок можно найти в Редакторе материалов.

    Система LOD
    Современные движки используют системы LOD (уровни детализации), чтобы гарантировать, что близкие к экрану модели используют большее количество ресурсов графического процессора, чем дальние. Это достигается за счет уменьшения качества меша в зависимости от расстояния до камеры. Эта система гарантирует, что соотношение многоугольников к пикселям на экране максимально одинаково. Расстояния LOD по умолчанию следующие: 15, 22,5, 30, 50, 70, 130, 210 метров. Эти расстояния предназначены для наилучшего качества графики, и их можно уменьшить с помощью параметров «Environment Quality» (качество окружающей среды) и «Character Quality» (качество персонажа).
     
    Последнее редактирование: 7 ноя 2020
    Doder нравится это.
  8. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    Чтобы различать и систематизировать ресурсы, а также упростить процесс создания ресурсов, необходимо учитывать некоторые предопределенные правила.

    Меши
    Все меши, импортированные из одного файла геометрии (например, fbx), сгруппированы по своим именам. Чтобы добавить LOD меша, просто добавьте ”.lod<n>“ к имени вашего меша. Здесь n - число LOD'а.
    Рассмотрим файл fbx, как показано ниже:

    asset.fbx:
    • wall_damaged
    • wall_damaged_v2
    • wall_damaged_v2.lod1
    • wall_damaged.lod1
    • wall_damaged.lod2
    Из файла asset.fbx будут импортированы два меша: wall_damaged, wall_damaged_v2. Эти меши будут иметь два и один ЛОДа соответственно. Если ваше программное обеспечение для моделирования не поддерживает точки в именах (например, Maya), вы также можете использовать «_» вместо «.» для указания ЛОДов (например, wall_damaged_v2_lod1).
    В меше не может быть более одного материала, поэтому на этапе импорта фазовые меши (phase meshes) будут разделены на субмеши в соответствии с использованием материалов для полигонов. К именам этих автоматически сгенерированных мешей будут добавлены порядковые номера. Рассмотрим меш wall_damaged из трех разных материалов. Имя импортированного меша будет wall_damaged, и он будет иметь три субмеша с именами wall_damaged.1, wall_damaged.2, wall_damaged.3.

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


    Физические формы
    Вы можете экспортировать физические формы, как обычные меши. Единственная разница между мешем и физической формой состоит в том, что имена физических фигур начинаются с префикса «bo_». Вы также можете экспортировать аналитические капсулы и сферы.

    Капсулы
    Если имя узла начинается с bo_capsule, он будет импортирован как форма аналитической капсулы. Размеры этой капсулы определяются по следующим правилам:
    • Локальные оси XY приняты за радиальную плоскость капсулы.
    • Локальная ось Z принимается за направление капсулы (высота).
    • Масштаб объекта по осям XY должен быть равен.
    Используются только ориентация и протяженность узлов капсулы. Любой прикрепленный к ним контент (например, меш) игнорируется.

    Сферы
    Если имя узла начинается с bo_sphere, он будет импортирован как форма аналитической сферы. Размеры этой сферы определяются размерами узла. Центр узла также будет центром формы сферы. Используются только ориентация и размеры узлов сферы. Любой прикрепленный к ним контент (например, меш) игнорируется.

    Составные формы
    Вы можете комбинировать разные типы фигур для создания более сложных фигур. Чтобы экспортировать составную форму, вы должны создать узел, имя которого начинается с bo_composite. К этому узлу можно добавлять дочерние узлы с разными типами форм.
    • bo_composite_building1
      • bo_capsule1
      • bo_capsule2
      • bo_sphere
      • bo_building_walls
    Эта форма будет импортирована как один ресурс с именем bo_composite_building1.

    Текстуры
    Вы можете дать базовые подсказки для своей текстуры, следуя этим правилам:
    • Текстуры альбедо оканчиваются на _d
    • Текстуры нормалей оканчиваются на _n
    • Зеркальные текстуры оканчиваются на _s
    • Текстуры карты высот оканчиваются на _h
    Несмотря на то, что эти правила не являются обязательными, они помогут движку определить наилучшие правила компиляции во время первого импорта и помогут некоторым функциям редактора работать (например, автозаполнение нормального слота текстуры материала). Если ваши текстуры не соответствуют им, вы можете изменить настройки импорта позже.

    Скелеты
    Большинство внутренних ресурсов организовано таким образом, что скелеты, меши и анимации, использующие эти скелеты, хранятся в отдельных файлах. Поэтому мы следуем правилам наименования, чтобы правильно устанавливать перекрестные ссылки между этими файлами. Если вы также планируете импортировать скелеты, меши и анимацию из разных файлов:
    • Иерархия костей скелетов должна соответствовать.
    • Каждый костный узел должен иметь свое имя, оканчивающееся жестко запрограммированным номером кости (например, _0, _1), чтобы номера костей скелетов, происходящих из разных файлов, совпадали, независимо от процесса экспорта вашего ПО для моделирования или инструмента экспорта. Существуют следующие правила, которым должно соответствовать каждое имя кости:
      • Добавленные индексы костей должны начинаться с нуля.
      • Добавленные индексы костей не должны быть больше или равны количеству костей.
      • Две кости не могут иметь одинаковый костный индекс.
    Примечание:
    Если вы хотите экспортировать только ресурсы, связанные со скелетом (например, меш со скелетом или анимацию), но не сам скелет - что имеет место, если у вас есть файл, из которого вы импортировали скелет, и вы регулярно импортируете новые меши для этого скелета из разных файлов - вы следует добавить _notused к имени скелета, чтобы движок автоматически игнорировал его и импортировал только другие ресурсы.


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

    Примечание:
    Некоторые программы автоматически экспортируют анимацию с заранее заданными именами (например, 3DS Max -> take_001). Это приведет к тому, что несколько скелетных анимаций будут импортированы с одним и тем же именем, если у вас есть более одного скелета, определенного в вашем файле геометрии, поскольку движок интерпретирует данные анимации, определенные для каждого скелета, как разные ресурсы. Из-за этого вы получите предупреждение о дублировании актива. Чтобы избежать этого, лучше всего экспортировать один скелет на файл геометрии. Вы также можете отключить импорт анимации в настройках импорта этого файла.
     
    Последнее редактирование: 7 ноя 2020
    Doder нравится это.
  9. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    Вы можете переопределить существующие сцены и префабы, создав новые с тем же именем.

    Примечание:
    Вы должны помнить, что переопределение префабов может нарушить существующие скрипты, если вы измените иерархию объектов. Убедитесь, что вы сохранили иерархию объектов, чтобы избежать возможных критических ошибок, если ваш объект используется существующими скриптами.


    Префабы
    Определения префабов хранятся в файлах xml, расположенных в папке Prefabs в каталоге каждого модуля.

    Сцены
    Сцены хранятся в двух отдельных папках SceneObj и SceneEditData в каталоге каждого модуля. В папке SceneObj хранятся файлы, необходимые для открытия сцены в клиентском режиме, а в SceneEditData хранятся файлы, необходимые для операций редактирования.
     
    Doder нравится это.
  10. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    В RGL «Пути» используются для определения непрерывных точек в сцене. Они имеют уникальные имена и могут использоваться игровой логикой по разным причинам. Пути определяют, как движутся осадные машины в миссиях. Кроме того, для полевых боевых миссий кандидаты на начальные точки возрождения определяются через путь. Логика появления выбирает две позиции для команд в зависимости от размера битвы. Подробную информацию о редактировании пути можно найти в разделе Редактирование пути.
     
    Doder нравится это.
  11. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    Компоненты скрипта - это исполняемые сценарии (executable scripts), которые прикрепляются к объектам и могут использоваться для реализации различных функций игрового процесса. В Bannerlord много логики игрового процесса написано через компоненты скрипта. Например стулья, брошенное оружие, осадные машины. Есть много разных обратных вызовов, которые могут быть унаследованы и заполнены этими компонентами скрипта.

    Обратные вызовы
    • Constructor: в конструкторе необходимо присвоить значения по умолчанию его общедоступным переменным (переменным, которые могут быть изменены создателем сцены). В конструкторе компонент скрипта не назначается ни объекту, ни сцене. Кроме того, вы не должны писать никакой логики, которая имеет побочный эффект, потому что, даже если он создан, компонент скрипта может быть удален после открытия сцены из-за системы уровней обновления.
    • OnPreInit: вызывается после того, как компонент скрипта назначается его объекту-владельцу в сцене. Находясь в этом обратном вызове, вы можете быть уверены, что пользовательские переменные из этого экземпляра скрипта установлены. Однако другие компоненты скрипта других объектов могут быть еще не назначены. Таким образом, в предварительной инициализации не должно быть никакого логического кода, который полагается на другие компоненты скрипта. Например, в pre-init ManagedObject регистрируется в массиве управляемых объектов в текущем экземпляре миссии.
    • OnInit: вызывается после загрузки миссии и инициализации всех скриптовых компонентов объектов. Вы можете использовать любой тип логического кода внутри этого обратного вызова. Скрипты, созданные во время выполнения, также получают этот обратный вызов.
    • OnEditorInit: версия редактора при инициализации. Вызывается при загрузке сцены из редактора. Помните, что в редакторе нет миссии или состояния игры.
    • OnTick: вызывается для каждого компонента скрипта в каждом кадре миссии из одного и того же потока (thread).
    • OnEditorTick: версия редактора функции OnTick.
    • IsOnlyVisual: если у вас есть компонент скрипта, который является только визуальным и не имеет никакого логического кода, который должен выполняться на выделенном сервере, вы должны вернуть true в этой функции. Это гарантирует, что этот тип скриптов не будет работать на выделенном сервере.
    • OnEditorVariableChanged: вызывается в редакторе всякий раз, когда пользователь изменяет общедоступную переменную в этом компоненте скрипта. Этот обратный вызов может использоваться для любого изменения состояния визуальной логики, если сценоделу нужна мгновенная обратная связь в сцене редактора.
    • OnRemoved: вызывается при удалении объекта или компонента скрипта. Если у вас есть какие-либо выделенные объекты, которые хранятся где-то еще (например, статические контейнеры), вы можете использовать этот обратный вызов, чтобы убедиться, что они не просочились.
     
    Doder нравится это.
  12. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    СКЕЛЕТЫ

    Пока разработчики ничего не написали
     
    Doder нравится это.
  13. Дима Гончар

    Дима Гончар Главный администратор Команда форума

    Текстуры можно импортировать через Asset Browser (Браузер ресурсов). Их можно назначить материалам через Редактор материалов. Слоты текстур материалов PBR можно найти в Редакторе материалов.

    Примечание:
    Максимальное значение разрешения текстур ландшафта - 2048 на 2048.
     
    Последнее редактирование: 7 ноя 2020
    Doder нравится это.
Статус темы:
Закрыта.