xrLC — различия между версиями
RedPython (обсуждение | вклад) м |
RedPython (обсуждение | вклад) м |
||
Строка 61: | Строка 61: | ||
# агент — получает и выполняет задания от координатора; | # агент — получает и выполняет задания от координатора; | ||
# приложение (xrLC_net) — добавляет задания в очередь выполнения. | # приложение (xrLC_net) — добавляет задания в очередь выполнения. | ||
− | |||
− | |||
− | |||
Соединение через интернет не рекомендуется по соображениям безопасности. | Соединение через интернет не рекомендуется по соображениям безопасности. | ||
− | |||
=== Использование === | === Использование === | ||
Строка 71: | Строка 67: | ||
# Запустите координатор и агенты. Агенты транслируются в LAN, найдут координатор, сохранят его IP в '''hxgrid.ini''' (поэтому не имеет смысла самостоятельно задавать <code>coordinator_ip</code>) и будут периодически отсылать ему отчет о своем состоянии. | # Запустите координатор и агенты. Агенты транслируются в LAN, найдут координатор, сохранят его IP в '''hxgrid.ini''' (поэтому не имеет смысла самостоятельно задавать <code>coordinator_ip</code>) и будут периодически отсылать ему отчет о своем состоянии. | ||
# Запустите компилятор уровней с ключом ''-net''. При инициализации библиотеки hxGrid xrLC найдет координатора, запросит IP-адреса доступных агентов и соединится с ними.<br /> | # Запустите компилятор уровней с ключом ''-net''. При инициализации библиотеки hxGrid xrLC найдет координатора, запросит IP-адреса доступных агентов и соединится с ними.<br /> | ||
− | Получив задание, координатор и агенты сменят статус на ''Working for […]'' | + | Получив задание, координатор и агенты сменят статус на ''Working for […]''<br /> |
''После появления исправленных x64 компиляторов эта технология стала неактуальной.'' | ''После появления исправленных x64 компиляторов эта технология стала неактуальной.'' | ||
− | |||
== Ссылки == | == Ссылки == | ||
Библиотека [http://www.deep-shadows.com/hax/hxgrid.htm hxGrid] Романа Лута, использованная GSC для сетевой компиляции. | Библиотека [http://www.deep-shadows.com/hax/hxgrid.htm hxGrid] Романа Лута, использованная GSC для сетевой компиляции. | ||
− | |||
== Благодарности == | == Благодарности == |
Версия 00:44, 25 февраля 2021
xrLC — компилятор геометрии и освещения игрового уровня. Запускается из консоли.
Содержание
Параметры командной строки
Команда:
xrLC <общие_опции> -f <имя_уровня> <дополнительные_опции>
Обязательный параметр
- -f <имя_уровня>
Компилировать уровень вgamedata\levels\<имя_уровня>\
Общие опции
- -gi
Просчёт глобального освещения по алгоритму Radiosity (недоработан). - -nosun
Отключить солнечное освещение. Опция предназначена для компиляции подземных локаций. - -nosmg
Не использовать группы сглаживания (для компиляторов ЧН и ЗП). - -noise
Не создавать геометрию progressive-типа (с лодами). Без такого ключа вдали от игрока геометрия подменяется на упрощенный вариант, отрисовывается меньше вершин. Теоретически это должно давать некоторый прирост FPS. Используйте, если компилятор валится без внятного лога на обработке progressive mesh'ей.
Дополнительные опции
- -? или -h
Вывести краткую справку по основным командам. - -o
Модифицировать опции построения уровня (только в компиляторах ТЧ). - -silent
Завершать работу без вывода сообщения об успешном окончании компиляции. Используется для пакетного рендеринга уровней. Полезен в любом случае, т.к. позволяет автоматически освободить системные ресурсы. - -keep_temp_files
Сохранять build_cform_source.smf и cform_source.smf в папке с уровнем. Скорее всего, эти файлы просто для визуального анализа коллижн-геометрии в QVis. На минимальных настройках компиляции ключ не работает. - -net
Сетевая компиляция. Используются координатор и агенты (только для сетевого компилятора ЗП). См. ниже
Пример:
xrLC -nosun -f level_name -net
Опции улучшенных компиляторов
- -show_log
Автоматически открывать лог-файл при ошибке компиляции. - -skipinvalid
Игнорировать invalid faces (некорректные полигоны). При их обнаружении компилятор не будет валиться с ошибкой. - -lmap_quality
Качество лайтмапов, аналогично параметру Pixel per meter в LE. Если ключ не указан, используется значение из билда локации. - -norgb
Не просчитывать "основной" лайтмап (lmap#1_1), который используется только на статичном освещении. Однако сам файл лайтмапа создается и ссылка на него прописывается в level. Т.е. скомпилированный уровень можно запустить и на оригинальном движке ТЧ. Время компиляции с ключом меньше, чем без него. Кому не нужна статика — это ваш выбор, как и ключ -nosun. - -nosun
Аналогичен -norgb, только отключает расчет лайтмапов от солнца. Таковые нужны только на статике, либо на динамике при игре с опцией r2_sun_static
Описание ключей norgb и nosun справедливо и для xrDO_Light, с той лишь разницей, что xrDO_Light не делает текстуру лайтмапа, а запекает все просчитанные коэффициенты освещения в level.details
- -lmap_rgba
Сохраняет лайтмапы без потерь качества. - -thread <N>
Задаёт N потоков при просчёте лайтмапа террейна. Чем больше создаётся потоков — тем больше требуется памяти. Теоретически может дать прирост скорости на машине с огромным объёмом ОЗУ. Использовать с осторожностью! - -use_tbb
Использовать Intel TBB для распараллеливания стадии просчёта лайтмапа террейна и Build UV mapping. Нагрузка распределяется автоматически, и в большинстве случаев предпочтительнее использовать этот режим, нежели вручную задавать число потоков ключом -thread - -skip_aht_tess
Отключить Adaptive HT Tesselating (на этой стадии слишком большие или непропорционально длинные полигоны разбиваются на более мелкие). Большие полигоны сохраняются в файл build_<username>_tesselate.err, его можно загрузить и посмотреть в ЛЕ. - -cform_only
С этим ключом xrLC формирует level.cform, build.cform и завершается.
Полезно знать
Перед "чистовой" компиляцией уровня можно перезагрузить компьютер во избежание зависания процесса (актуально для оригинальных компиляторов и СДК) xrLC работает быстрее при закрытом LevelEditor'е (актуально для оригинальных компиляторов и СДК) Иногда при наличии в папке с xrLC.exe для ЗП файла ccc__temp__vertices расчётное время компиляции завышается в разы. Имеет смысл удалять этот файл при запуске компилятора: del bin\compiliers\ccc__temp__vertices
:: так же можно удалить на всякий случай папку с временными файлами
echo Y|rmdir /s \temp
Если компьютер уходит в спящий режим при работающем xrLC, а менять параметры отключения жёстких дисков не хочется, то запустите фоном какой-либо нетяжёлый процесс (например, торрент-клиент). xrLC для ТЧ не учитывает сглаживание, заданное моделям в 3д-редакторе. Используется значение Normal Smooth Angle из настроек сцены LE. В xrLC для ЧН и ЗП этот режим включается ключом -nosmg |
Сетевая компиляция (устарело)
При наличии двух и более производительных машин, объединённых в локальную сеть, имело смысл использовать версию xrLC с поддержкой распределённых вычислений (существует только x86 версия для ЗП). В этом случае используются три компонента:
- координатор — контролирует и распределяет доступные ресурсы;
- агент — получает и выполняет задания от координатора;
- приложение (xrLC_net) — добавляет задания в очередь выполнения.
Соединение через интернет не рекомендуется по соображениям безопасности.
Использование
- Скопируйте файлы агента на все машины, координатор и xrLC — на ту, где будет работать компилятор. При необходимости сконфигурируйте hxgrid.ini.
- Запустите координатор и агенты. Агенты транслируются в LAN, найдут координатор, сохранят его IP в hxgrid.ini (поэтому не имеет смысла самостоятельно задавать
coordinator_ip
) и будут периодически отсылать ему отчет о своем состоянии. - Запустите компилятор уровней с ключом -net. При инициализации библиотеки hxGrid xrLC найдет координатора, запросит IP-адреса доступных агентов и соединится с ними.
Получив задание, координатор и агенты сменят статус на Working for […]
После появления исправленных x64 компиляторов эта технология стала неактуальной.
Ссылки
Библиотека hxGrid Романа Лута, использованная GSC для сетевой компиляции.
Благодарности
Спасибо K.D. за пояснения по некоторым ключам.