Профиль состава сборки движка
Отключение функций, ограничения C#-анализа и подтверждённые дефекты загрузки профиля.
Профиль состава сборки движка
Профиль описывает классы и возможности для отключения при сборке. Он не меняет установленный Runtime, не уменьшает готовый EXE и не применяется автоматически при обычном экспорте проекта. Для уменьшения бинарника нужен отдельный экспортный шаблон, собранный с этим профилем.
Подготовить профиль
- Откройте Project → Tools → Engine Compilation Configuration Editor…. Подписи зависят от языка интерфейса; это редактор конфигурации сборки.
- Сохраните отдельный файл через Save As, например
profiles/game.build. Добавьте его в контроль версий; не начинайте с перезаписи рабочего профиля. - Уберите только возможности, отсутствие которых можете проверить. Сначала получите минимальное изменение относительно обычного шаблона, затем сокращайте состав дальше.
- Перед Detect from Project сохраните копию: повторное определение пересоздаёт список отключённых классов и сбрасывает параметры перед новым анализом. Это не объединение с ручными исключениями.
Чему нельзя доверять при автоопределении
Текущий редактор прямо предупреждает: определение используемых классов в C#-скриптах не поддерживается, такие файлы пропускаются. Не применяйте результат как готовый безопасный профиль C#-игры.
Анализ файлов проекта также не доказывает охват классов, выбираемых по строке во время выполнения, ресурсов из внешнего пакета или необязательных игровых режимов. Составьте список таких потребностей отдельно. В поле Forced Classes on Detect можно перечислить точные имена классов через запятую; например, Entity3D. Это дополнение к анализу, а не замена проверки модулей и зависимостей.
Наличие класса в C# SDK не доказывает, что он останется в урезанном нативном шаблоне. Проверяйте сохранение, загрузку, игровые пути и ресурсы именно с будущим комплектом шаблона и managed-сборок.
Формат файла
Для проекта без XR минимальный пример отключает XR и модуль OpenXR:
{
"type": "build_profile",
"disabled_classes": [],
"disabled_build_options": {
"disable_xr": true,
"module_openxr_enabled": false
}
}disabled_classes содержит имена нативных классов, а не файлов уровней или C#-классов игры. Значения disabled_build_options имеют смысл конкретного параметра SCons: disable_xr: true отключает функцию, а module_openxr_enabled: false отключает модуль. Название словаря не означает, что все значения должны быть true. Редактор сохраняет отклонения от своих значений по умолчанию; это не полный перечень эффективных параметров сборки.
Известный дефект повторной загрузки
В установленном редакторе подтверждено: загрузчик профиля отмечает известную опцию отключённой по наличию её ключа, игнорируя значение. Поэтому файл может измениться после открытия и сохранения:
| До загрузки | После сохранения редактором |
|---|---|
disable_3d: false | disable_3d: true |
module_text_server_fb_enabled: true | Явное включение теряется: ключ пропадает из результата. |
Не используйте повторное сохранение как безусловно безопасное преобразование профиля. Сверяйте diff с исходным файлом и отдельно проверяйте включённые опции. Успешное открытие без ошибки не означает сохранение смысла значений. Дефект в этом проходе не исправлялся.
SConstruct читает значения словаря и присваивает их параметрам сборки; это другой путь, чем загрузчик окна редактора. Проверенный вручную файл нужно сохранять без последующей незаметной перезаписи. Это не подтверждение успешной сборки: в обзоре сборки также отмечено текущее ограничение helper-функций SCons.
Применить и проверить результат
После подготовки согласованной сборочной среды передайте путь к файлу в параметре build_profile для нужного template_debug или template_release. Команды выполняются из Source; путь должен разрешаться в реальный файл. Сам файл не устанавливает шаблон в пресет экспорта и не собирает .NET-комплект.
Сравнивайте размер с исходным шаблоном при одинаковых platform, arch, target, модулях и остальных параметрах. Затем проверьте экспорт, запуск всех игровых режимов, динамическую загрузку ресурсов и сохранений. Небольшой EXE, который не загружает нужный уровень, не является успешным результатом. Дополнительные параметры — в оптимизации размера.
В отдельном headless-редакторе выполнены загрузка и сохранение точного JSON-примера, списка классов и принудительного текста, а также воспроизведение двух дефектов значений. Использовались нативные сигналы файловых диалогов, без ручных кликов и оценки вёрстки. Автоопределение, компиляция шаблонов, уменьшение размера и экспорт этим прогоном не проверены. Исходники движка, Runtime и SDK не менялись.