X-Ray Universal Compiler
X-Ray Universal Compiler | |
Разработчик | GSC Game World |
Модифицировал | SkyLoader |
Версия | 1.6 beta от 20 июля 2024 года |
Тип | компиляторы |
Платформа | |
История версий |
X-Ray Universal Compiler[1] — это набор модифицированных (в 64-битные версии) на основе X-Ray SDK 0.4/0.5/0.7 компиляторов xrLC, xrDO и xrAI, использующихся для сборки уровней, травы и освещения детальных объектов одиночной игры и мультиплеера, а также компонентов искусственного интеллекта уровней только одиночной игры.
Ссылки на скачивание | |||
---|---|---|---|
X-Ray Universal Compiler | https://drive.google.com/file/d/1k3u_8PXyfKmsmF7sJ4mMGjswsRN4d0Rw/view?usp=sharing | ||
Visual C++ 2017 Redistributable |
Особенности
- Поддержка x64
- Поддержка основных игр серии
- Все компиляторы объединены в одно приложение
- Интерфейс полностью переписан на WinForms
- Добавлено меню компилятора, в котором можно выбрать проект уровня, выставить определенные настройки и запустить компиляцию
- Добавлена система сохранения и загрузки настроек последних проектов
- Создаваемое количество потоков теперь не фиксировано, а зависит от количества ядер процессора
- Произведен переход на библиотеку DirectXTex на замену устаревшим FreeImage и nvDXT
- Убран просчет RGB и Sun компонентов освещения и оставлен только Hemi
- Проведена работа по распоточиванию некоторых фаз компиляции и распоточиванию кода сторонних библиотек
- Интегрирован Discord Rich Presence для возможности следить за статусом компиляции на удаленном ПК
- Добавлена возможность автоматически выключить ПК после компиляции
- Реализован прогресс бар на панели задач для отображения состояния текущей фазы компиляции при свернутом приложении
- Добавлены ключи для ускоренной компиляции уровней в целях тестирования
- Добавлены экспериментальные ключи для отключения некоторых фаз компиляции и установки параметров в обход параметров СДК
- Добавлены основные изменения прошлых компиляторов
- Расширен вывод информации по некоторым ошибкам
- Исправлены некоторые вылеты оригинальных компиляторов
Интерфейс |
Внимание: в данном компиляторе по умолчанию отключено запекание статического света и статических теней солнца.
Для включения запекания этих компонентов необходимо использовать соответствующий ключ, указанный в описании.
Описание ключей компиляторов | |||
---|---|---|---|
Компилятор | Ключ | Описание | Пример |
xrLC | -geometry |
Компиляция геометрии уровня | start bin\compilers_sky_x64\xrCompiler.exe -geometry -f имя_уровня -version название_версии (shoc/cs/cop) |
xrDO | -details |
Компиляция детейлов (травы) | start bin\compilers_sky_x64\xrCompiler.exe -details -f имя_уровня -version название_версии (shoc/cs/cop) |
xrAI | -aispawn |
Компиляция АИ-сетки | start bin\compilers_sky_x64\xrCompiler.exe -aispawn -f имя_уровня -version название_версии (shoc/cs/cop) |
xrAI | -aispawn |
Сборка спавна | start bin\compilers_sky_x64\xrCompiler.exe -aispawn -s имя_уровня1,имя_уровня2,имя_уровня3 -out all |
xrLC | -noimpl |
Пропуск стадии LIGHT: Implicit (запекание освещения для террейна) | |
xrLC | -nocform |
Пропуск создания level.cform | |
xrLC | -noresize |
Отключить уменьшение размеров загружаемых текстур высокого разрешения | |
xrLC | -skipthm |
Не прерывать компиляцию при отсутствующих текстурах и файлах thm | |
xrLC | -removeinvalid |
Не прерывать компиляцию при найденных invalid faces и удалять их | |
xrLC | -skipinvalid |
Не прерывать компиляцию при найденных invalid faces и пропускать их | |
xrLC | -tex_rgba |
Не использовать сжатие для сохраняемых текстур | |
xrLC | -tex_bc7 |
Использовать BC7 сжатие для сохраняемых текстур (формат поддерживается только на DX11) | |
xrLC | -silent |
Автоматически закрыть приложение после завершения компиляции | |
xrLC | -sleep |
Выключить компьютер после завершения компиляции | |
xrLC | -nohemi |
Отключить запекание освещения. Значительно ускоряет компиляцию. Предназначен для тестирования геометрии | |
xrLC | -underground |
Компилировать уровень как подземный. Ускоряет компиляцию | |
xrLC | -static |
Запекать статическое освещение (не работает с ключом -nohemi) | |
xrLC | -cform |
Экспортировать только коллизию уровня | |
xrLC | -noise |
Отключить создание Progressive геометрии. Ускоряет компиляцию, но не создает упрощенную геометрию для уровня и Multiple Usage объектов | |
xrLC | -nosmg |
Не использовать группы сглаживания. В зависимости от конкретной геометрии помогает избежать ломаных фейсов/теней, или наоборот добавит их | |
xrLC | -notess |
Не тесселировать геометрию. В некоторых случаях может повышать fps в зависимости от конкретной локации. Проверять на практике | |
xrLC | -noweld |
Отключить сшивание маленьких треугольников. В некоторых случаях помогает избежать глюков на некоторых типах геометрии | |
xrLC | -nomerge |
Пропустить стадию Merging geometry | |
xrLC | -nostrip |
Отключить оптимизацию и стрипификацию геометрии | |
xrLC | -dx_opt |
Включить оптимизацию геометрии средствами D3DX optimizer вместо NvTriStrip | |
xrLC | -old_bcform |
Создавать build.cform в старом формате | |
xrLC | -gi |
Включить фазу Radiosity | |
xrLC | -no_mt_mu |
Не запускать расчет освещения для Multiple Usage объектов параллельно основной компиляции | |
xrLC | -high |
Более высокий приоритет для потоков | |
xrLC | -saveobj_base |
Сохранить всю геометрию уровня в модели с расширением .obj (базовая развертка) | |
xrLC | -saveobj_lmap |
Сохранить всю геометрию уровня в модели с расширением .obj (лайтмап развертка) | |
xrLC | -saveobj_cform |
Сохранить всю коллизию уровня в модель с расширением .obj | |
xrLC | -qual_draft |
Установить качество сцены в Draft (не влияет на выставленные шейдеры) | |
xrLC | -qual_high |
Установить качество сцены в High (не влияет на выставленные шейдеры) | |
xrLC | -force_default_shader |
Принудительно заменять шейдеры материалов с вершинного освещения на лайтмапное (def_vertex->default) | |
xrLC | -force_vertex_shader |
Принудительно заменять шейдеры материалов с лайтмапного освещения на вершинное (default->def_vertex) | |
xrLC | -ppm число |
Установить качество лайтмапов вместо значения в СДК | |
xrLC | -weld_dist число |
Установить Weld distance вместо значения в СДК | |
xrLC | -hemi_bias число |
Установить смещение позиции луча при запекании хеми (по умолчанию: 0.1, в оригинале: 0.001) | |
xrDO | -skipthm |
Не прерывать компиляцию при отсутствующих текстурах и файлах thm | |
xrDO | -silent |
Автоматически закрыть приложение после завершения компиляции | |
xrDO | -sleep |
Выключить компьютер после завершения компиляции | |
xrDO | -nohemi |
Отключить запекание освещения | |
xrDO | -static |
Запекать статическое освещение (не работает с ключом -nohemi) | |
xrAI | -draft |
Не просчитывать укрытия для АИ-сетки | |
xrAI | -verify |
Проверить АИ-сетку на ошибки | |
xrAI | -noverbose |
Не выводить информацию об одиночных нодах (при ключе -verify) | |
xrAI | -skipthm |
Не прерывать компиляцию при отсутствующих текстурах и файлах thm | |
xrAI | -silent |
Автоматически закрыть приложение после завершения компиляции | |
xrAI | -sleep |
Выключить компьютер после завершения компиляции | |
xrAI | -s имя_уровня1,имя_уровня2,имя_уровня3... |
Собрать спавн из перечисленных уровней (перечисление через запятую без пробела) | -s zaton,labx8,jupiter,jupiter_underground,pripyat |
xrAI | -out имя |
Выбрать имя выходного файла спавна | -out all |
xrAI | -no_separator_check |
Отключить конфликты спейс рестрикторов и АИ-сетки, а также другие ошибки | |
xrAI | -insert_graph |
Осуществлять сборку спавна со вшитыми в спавн графами для ТЧ спавна | |
xrAI | -large_aimap |
Собрать спавн для уровней с расширенной АИ-сеткой. Все уровни должны иметь такой формат сетки | |
xrLC, xrDO, xrAI | -help |
Вызов справки со списком всех ключей запуска | |
xrLC, xrDO, xrAI | -t число |
Установить количество потоков для многопоточных операций (не работает с ключом -tbb) | |
xrLC, xrDO, xrAI | -fsltx имя_файла |
Использовать свой ltx вместо fsgame.ltx | |
xrLC, xrDO, xrAI | -log_name имя_файла |
Создать файл лога с данным именем. Полезно для компиляции локаций очередью | |
xrLC, xrDO, xrAI | -discord |
Включить Discord Rich Presence с выводом имени уровня и статуса компиляции | |
xrLC, xrDO, xrAI | -discord_s |
Включить Discord Rich Presence с выводом только статуса компиляции | |
xrLC, xrDO, xrAI | -tbb |
Использовать TBB многопоточность (не рекомендуется) | |
xrLC, xrDO, xrAI | -both_texture_pathes |
Загрузка текстур и thm файлов по обоим путям ($game_textures$ и $textures$) |
Примеры команд | |||
---|---|---|---|
Описание | Пример команды | ||
Ускоренная компиляция уровня для тестирования геометрии без запеченного освещения |
| ||
Компиляция подземного уровня, полностью закрытого nosun геометрией |
| ||
Компиляция только коллизии |
| ||
Компиляция локаций очередью с последующим выключением ПК |
start /wait bin\compilers_sky_x64\xrCompiler.exe -details -f zaton -log_name zaton_detail -silent start /wait bin\compilers_sky_x64\xrCompiler.exe -aispawn -f zaton -log_name zaton_aimap -silent start /wait bin\compilers_sky_x64\xrCompiler.exe -geometry -f jupiter -log_name jupiter_geometry -silent start /wait bin\compilers_sky_x64\xrCompiler.exe -details -f jupiter -log_name jupiter_detail -silent start /wait bin\compilers_sky_x64\xrCompiler.exe -aispawn -f jupiter -log_name jupiter_aimap -silent -sleep |
Ньюансы и советы |
---|
Можно не устанавливать ключ -version. В таком случае выходной формат данных будет следующим: для уровня из ТЧ СДК – ТЧ формат, для уровня ЧН/ЗП СДК – ЗП формат. Для уровней, собранных ТЧ СДК, будет автоматически применяться ТЧ сглаживание, а значит нет необходимости использовать ключ -nosmg (за исключением модифицированных ТЧ СДК, добавляющих группы сглаживания). При активном ключе -both_texture_pathes на этапе загрузки .thm файлов сначала производится попытка открыть файл по пути $game_textures$ (gamedata\textures), при его отсутствии – по пути $textures$ (rawdata\textures). По умолчанию, для ЧН/ЗП проектов используется только путь $game_textures$, для ТЧ проектов - $textures$. Для частичного исправления часто встречающейся проблемы с появлением черных полигонов было изменено смещение позиции лучей при запекании затенений от хемисферы. В связи с этим, при моделировании геометрии зданий рекомендуется не создавать ту-сайд геометрию для стен (как, например, у кораблей на Затоне), а выдерживать определенную их толщину. Если же требуется оставить геометрию как есть, то можно вернуть смещение луча на оригинальное значение с помощью ключа -hemi_bias 0.001, но тогда количество черных треугольников будет как при использовании старых компиляторов. Увеличение значения -hemi_bias (например, на значение от 1.0 до 10.0) в определенных случаях позволяет избавиться от черных треугольников, оставшихся после запекания освещения. В продакшен версии уровня не рекомендуется использовать ключ -skipthm, поскольку из-за отсутствующих текстур и файлов thm на поверхностях может неправильно запечься свет. Не следует выставлять Weld distance в ноль. Иногда это провоцирует создание кривых фейковых теней от некоторой геометрии. Лучше поставить небольшое значение, но больше нуля. В случаях, когда на уровне нужно поправить только коллизию уровня или расставить фейки для актора, можно воспользоваться ключом -cform. Будет компилироваться только коллижн-геометрия уровня без запекания освещения, тем самым значительно уменьшится время компиляции. Для анализа того, как компилятор изменил геометрию уровня под игру, можно воспользоваться ключами -saveobj_base, -saveobj_lmap и -saveobj_cform. Геометрия будет сохранена по пути temp\geom… в файлы с расширением obj для дальнейшего просмотра их в 3д редакторе. Также ключ -saveobj_lmap может помочь в ручном редактировании лайтмап текстур, если на них были обнаружены проблемы. |
Установка
Переместите файлы из архива в:
- X-Ray_SDK_SoC\level_editor
- X-Ray_SDK_CS\editors
- X-Ray_SDK_CoP\editors