Wiki
Правила валидации
Проверки валидации ассетов, выполняемые при check-in из редактора Unreal : 9 встроенных правил, уровни серьёзности error / warning / info, конфигурация JSON, экспорт / импорт / сброс, и ограничение, которое нужно знать.
Введение
Правила валидации представляют собой проверки ассетов Unreal, выполняемые в момент check-in из редактора Unreal : именование, размер текстуры, отсутствующие зависимости и т. д. Они служат для автоматического соблюдения соглашений студии до того, как контент попадёт в репозиторий (проект, версионируемый на сервере). Они настраиваются для каждого репозитория.
Где правила действительно применяются
uversion checkin) или из плагина
Rider, полностью обходит политику валидации, без ошибки и не оставляя следа.
Это не ошибка настройки с вашей стороны : это текущее поведение. Правила касаются ассетов Unreal
(.uasset, .umap), и их проверка требует открытого редактора с загруженным проектом.
Поэтому относитесь к ним как к подстраховке для художников, работающих в редакторе, а не как к
барьеру, который никто не может преодолеть.
Два практических следствия :
- Если соглашение должно быть гарантировано, а не только поощряться, предусмотрите дополнительный контроль (ревью, проверку на стороне сборки) : одни лишь правила его не обеспечивают.
- Если у кого-то правило «никогда не срабатывает», сначала проверьте, откуда он отправляет. Художник, отправляющий из настольного клиента, не увидит никакой валидации, какой бы ни была конфигурация.
Доступ и роли
Вкладка Правила доступна суперадмину и project_admin в репозиториях, которые он администрирует.
Уровни серьёзности
Уровень серьёзности определяет, что происходит в редакторе Unreal, когда включённое правило не проходит.
| Серьёзность | Эффект при check-in из редактора Unreal |
|---|---|
error | Блокирует check-in : открывается окно валидации, кнопка Proceed становится неактивной, и кликабельной остаётся только OK. Нужно исправить ассет. |
warning | Не мешает отправке, но не проходит незаметно : окно валидации всё равно открывается, перечисляет предупреждения, и пользователь должен нажать Proceed, чтобы продолжить. |
info | Чисто информационный : сам по себе не открывает окно и ничего не прерывает. |
9 встроенных правил
| Правило | По умолчанию | Что оно проверяет |
|---|---|---|
blueprint_compilation | error | Blueprint компилируются без ошибок перед check-in. |
naming_convention | warning | Префиксы именования (стиль Allar UE5) : T_ текстуры, M_ материалы, BP_ blueprints, SM_ статические меши, WBP_ виджеты и т. д. |
max_texture_size | warning | Максимальный размер текстур : по умолчанию 4096 × 4096, требуется степень 2. |
material_complexity | warning | Сложность материалов : по умолчанию не более 256 инструкций, 16 сэмплов текстур. |
import_settings | warning | Соответствующие настройки импорта (текстуры, меши). |
missing_dependency | error | Нет отсутствующих зависимостей (по умолчанию игнорирует контент движка). |
circular_dependency | error | Нет циклических зависимостей (глубина поиска 20 по умолчанию). |
unreferenced_asset | info | Отмечает ассеты без ссылок (по умолчанию исключает карты и виджеты). |
duplicate_asset | warning | Обнаруживает дублирующиеся ассеты (по умолчанию игнорирует .umap). |
Включение и настройка
1. Открыть вкладку Rules
В панели администрирования сначала выберите репозиторий в селекторе строки PROJECT, затем откройте вкладку Rules той же строки : правила касаются только одного репозитория за раз. 9 правил отображаются по одному в строке, с шевроном для разворачивания, переключателем, названием правила, его серьёзностью и описанием.
2. Включить правило
Нажмите на переключатель слева от названия. Сохранение происходит немедленно : кнопки сохранения для этого действия нет. Это шаг, о котором забывают : в новом репозитории все переключатели выключены, а выключенное правило никому ничего не говорит, какой бы ни была его серьёзность.
3. Выбрать серьёзность
Выпадающее меню справа от строки предлагает Error, Warning и Info,
с немедленным сохранением и здесь. По-настоящему блокирует check-in только error :
см. Уровни серьёзности.
4. Настроить параметры (JSON)
Нажмите на шеврон в начале строки, чтобы развернуть правило. Поле
Configuration (JSON) содержит его параметры ; измените их, затем нажмите Save Config.
Недопустимый JSON блокирует сохранение и показывает подробности ошибки под полем (Invalid JSON: ...), и
правило тогда остаётся в своём предыдущем состоянии.
Пример : снизить max_texture_size до 2048 для мобильного проекта или перевести
naming_convention в error, чтобы применять его строго.
Экспорт, импорт, сброс
Три кнопки занимают панель инструментов в правом верхнем углу вкладки Rules :
- Export : скачивает файл
rules.json, содержащий состояние всех правил (активация, серьёзность, конфигурация). - Import : перезагружает
rules.jsonи применяет каждую запись к соответствующим правилам (неизвестные ключи игнорируются). - Reset to Defaults : возвращает все правила к их значениям по умолчанию. Пользовательские конфигурации теряются (запрашивается подтверждение).
Экспорт / импорт служит для копирования политики валидации из одного репозитория в другой или для её версионирования в офлайне.
rules.json в репозитории
.uversion/rules.json применяется к политике репозитория только если автор коммита
обладает разрешением с именем manage_rules («возможность», то есть разрешение, привязанное к роли и
действующее на всём сервере). Иначе файл сохраняется, но правила не меняются. Это защита : участник с правом записи
по этому пути не может отключить валидацию, закоммитив файл.
Частые ошибки
Check-in заблокирован в редакторе Unreal
Правило с уровнем error не прошло : окно валидации перечисляет найденное, а кнопка
Proceed остаётся неактивной. Исправьте ассет или (если правило слишком строгое для вашего контекста)
понизьте его серьёзность до warning, либо отключите его.
Сброс стирает мои настройки
Reset to Defaults разрушителен для ваших пользовательских конфигураций. Сделайте Export заранее, если хотите иметь возможность вернуться назад.
Кажется, что правило ничего не делает
Три проверки, в таком порядке :
- Откуда человек отправляет? Из настольного клиента, командной строки или плагина Rider никакое правило не оценивается (см. Где правила действительно применяются).
- Включено ли правило? В новом репозитории вначале все они отключены.
- Верна ли его серьёзность? Check-in блокирует только
error;infoничего не прерывает.