HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Уроки VolatileRadiant (https://hlfx.ru/forum/forumdisplay.php?forumid=28)
-- Урок 9. Компиляция уровня (https://hlfx.ru/forum/showthread.php?threadid=2564)
Отправлено XaeroX 26-01-2011 в 09:18:
Урок 9. Компиляция уровня
Урок 9. Компиляция уровня
Внимание: если вы установили игру и редактор ранее 26.01.20111, не забудьте обновить и то, и другое! Подробнее см. тему Option Implicit: First Demo.
Пришло время подробнее остановиться на различных способах и режимах компиляции уровня Volatile3D II. Компилятор уровней представляет собой одну программу (vmap), выполняющую три функции – построение BSP-геометрии, оптимизация видимости и расчёт освещения. В зависимости от того, какие из этих функций будут активизированы и с какими параметрами, редактор предлагает 14 режимов компиляции, доступных в меню Bsp. Рассмотрим их:
- Normal compile – этот режим для небольших уровней вы будете использовать чаще всего. Выполняется расчёт BSP-геометрии и полная оптимизация видимости на уровне. Расчёт освещения проводится только для динамического рендера, так что в режиме статического освещения уровень будет освещен ярко и равномерно. Поэтому никогда не выкладывайте скомпилированный таким образом уровень публично!
- Normal compile (nocurves) – полностью аналогичен вышеописанному режиму, но полностью исключает с уровня кривые поверхности. Может быть полезен, если вы хотите оценить, насколько кривые поверхности влияют на производительность.
- Normal compile (nolight) – выполняется расчёт BSP-геометрии и полная оптимизация видимости на уровне. Освещение не рассчитывается.
- Normal compile (nodetail) – полностью аналогичен режиму «Normal compile», но исключает с уровня detail-браши. Мы поговорим о них в следующих уроках, но вкратце – это браши, которые используются для детализации – не «разрезают» браши, которых касаются, и не участвуют в расчете видимости (vis).
- Fast compile (nolight) – режим быстрой компиляции. Компилятор видимости производит только быстрые расчеты, из-за чего оптимизация будет лишь частичной. Освещение считаться не будет.
- Fast compile – аналогичен вышеописанному режиму, но при этом будет частично рассчитываться освещение. Освещение будет только динамическим, при этом не будет построены сетки статического освещения динамических объектов и мониторинга уровня освещенности игрока и врагов.
- Full compile – полная компиляция уровня, этим всё сказано. В принципе, карты, собранные в этом режиме, годятся для дистрибуции.
- Full compile (fastvis) – полная компиляция BSP-геометрии и освещения, но при этом частичная оптимизация видимости. Может быть полезна, если уровень представляет собой большое открытое пространство, где точный расчет vis не особо нужен и может быть очень длительным.
- Full extra compile – полная компиляция уровня с улучшением качества лайтмапов. Для финальной компиляции рекомендуется использовать именно его.
- Full extra compile (extraWide) – аналогично вышеописанному режиму, с допольнительным антиалиасингом лайтмапов. Этот режим может выдавать артефакты на сложных брашевых конструкциях и ландшафтах, так что, используя его, обязательно протестируйте карту в режиме статического рендера.
- Only build BSP – как следует из названия режима, строится только BSP-геометрия. Никакой оптимизации и расчета освещения не проводится.
- Only update actors – выполняется только обновление параметров акторов. Полезно использовать, если вы не хотите перекомпилировать большой уровень. Но учтите – изменение параметров таких объектов, как источники света, в любом случае потребует повторного расчета освещения.
- Only update dynamic lighting – перерасчет динамического освещения, при этом статическое аннулируется.
- Only update total lighting – полный перерасчет освещения уровня.

Вы можете добавить свои режимы компиляции прямо в меню. Для этого нужно отредактировать файл default.qe4 в папке с редактором. Обратите внимание, что пункты перечислены в обратном порядке – нижние раньше, верхние позже. Строки, обозначающие пункты меню Bsp, начинаются с приставки «bsp». Рассмотрим одну строку:
code:
"bspNormal compile" "! __QERPATH\vmap $ && ! __QERPATH\vmap -vis -low $ && ! __QERPATH\vmap -light -low -nostatic $"
Здесь:
- Normal compile – название режима (обратите внимание на отсутствие пробела между названием и приставкой bsp).
- ! – указание на выполнение команды.
- __QERPATH\vmap – путь к компилятору vmap (обычно он находится в папке редактора, т.е. __QERPATH).
- $ - имя компилируемого уровня, подставляется редактором автоматически.
- && - указание, что за этой командой надо выполнить другие, в единой связке.
Остальное – это параметры компилятора. Не забывайте заключать название пункта меню и текст команды в кавычки.
Компиляция через редактор полезна тем, что в случае появления на уровне ошибки «LEAK» (т.е. дырки, связывающей наружное пространство с внутренним, либо положение центра какого-либо актора за пределами уровня) игра не запустится и будет автоматически загружен pointfile для ее поиска. Но иногда предпочтительнее использовать командные файлы для компиляции. Команды компилятора делятся на две категории – ключ режима и параметры режима. Ключа всего три:
- info – вывод информации о перечисленных vm-файлах.
- vis – расчет видимости vm-файла.
- light – расчет освещения vm-файла.
Если ключ не указан, выполняется расчет BSP-геометрии на основе map-файла, т.е. первичное построение vm-файла.
Параметров режимов довольно много. Некоторые из них являются общими для всех (кроме info, он стоит особняком и не является режимом компиляции), другие относятся только к определенным режимам. Рассмотрим общие параметры:
- threads – выбор количество потоков, которые будут использовать многопоточные компиляторы (vis, light). По умолчанию выбирается число процессоров в системе. Если у вас не по-настоящему многоядерный процессор, а скажем, процессор с HT, использование одного потока может оказаться быстрее, в этом случае укажите компиляторам параметр -threads 1.
- v – вывод большого количества отладочной информации. Вряд ли этот режим вам понадобится.
- nosettings – не выводить таблицу информации о настройках при старте компиляции.
- nolog – не вести лог (очень не рекомендуется использовать этот режим – многие ошибки компиляции можно диагностировать только по логу).
- chart – выводить информацию о vm-файле по окончании компиляции.
- estimate – производить приблизительный подсчет времени, оставшегося до конца компиляции. Однако сам по себе этот режим замедляет компиляцию.
- low – использовать низкий приоритет задачи для компилятора.
- high – использовать высокий приоритет задачи для компилятора (не рекомендуется).
- no3dnow – не использовать оптимизации 3DNow, даже если процессор их поддерживает.
- nosse – не использовать оптимизации SSE, даже если процессор их поддерживает.
- nosse2 – не использовать оптимизации SSE2, даже если процессор их поддерживает.
Переходим к параметрам построения BSP (запуск vmap без параметров):
- nowater – игнорировать воду.
- nodetail – игнорировать detail-браши (см. выше).
- onlyents – только обновить акторы в процессе компиляции.
- nofog – игнорировать объемный туман.
- nosubdivide – не разбивать поверхности, как того требуют шейдерные скрипты.
- leaktest – провести только тест на наличие дырок. В случае обнаружения дырок компиляция будет прервана и vm-файл создан не будет.
- nocurves – игнорировать кривые поверхности.
- nooverlays – игнорировать оверлеи.
- notjunc – не исправлять t-связки путем добавления дополнительных вершин. Эта опция предназначена исключительно для отладки и в финальных компиляциях использоваться не должна, т.к. легко приведет к появлению щелей между полигонами.
- samplesize – разрешение лайтмапы (размер текселя в юнитах). Чем меньше, тем качественнее лайтмапы, но тем больше памяти они занимают. Этот же параметр надо указывать в режиме light.
- cubemapsize – размер Cubemap-текстур по умолчанию.
Основные параметры режима vis таковы:
- fast – быстрая оптимизация.
- full – дополнительная оптимизация (не всегда приводит к ожидаемым результатам, поэтому по умолчанию не используется).
- mergeVis – оптимизирует количество порталов путем их слияния по возможности.
- nopassage – использовать только portals (отладочная опция).
- onlypassage – использовать только passages (отладочная опция).
- nosort – не сортировать порталы (отладочная опция).
- saveprt – не удалять prt-файл, созданный предыдущим режимом компиляции.
- nopas – не рассчитывать PAS – potentially audible set (отладочная опция).
И, наконец, параметры компилятора освещения (light):
- nostatic – не рассчитывать статическое освещение.
- border – создать бордюры вокруг лайтмапов – позволяет оценить их расположение и размер (отладочная опция).
- lightmapnormals – цвет лайтмапы представляет собой упакованное направление нормали в этом текселе (отладочная опция).
- nogrid – не рассчитывать сетку статического освещения для динамических объектов.
- noillum – не рассчитывать сетку уровня освещенности.
- novertex – не рассчитывать вершинное освещение.
- extra – улучшенное качество лайтмапов.
- extrawide – дополнительный антиалиасинг улучшенных лайтмапов.
- patchshadows – рассчитывать тени от кривых поверхностей (обязательно устанавливайте этот параметр для финальной компиляции).
- notrace – не рассчитывать тени.
- overbright – величина множителя для цвета лайтмапов. Они формируются таким образом, что настоящий уровень освещенности получается только после умножения на этот множитель в движке, что расширяет возможный цветовой диапазон. По умолчанию используется значение 2, возможные значения: 1, 2, 4. Учтите, что некоторые старые видеокарты не могут использовать значение 4, и лайтмапы на картах, созданных с овербрайтом 4, на таких видеркартах будут в два раза темнее.
- gridsize – размер ячейки сетки статического освещения. Задается как «-gridsize X Y Z», где X, Y и Z – это линейные размеры ячейки в юнитах. По умолчанию размер ячейки равен (16, 16, 32). Обычно имеет смысл указывать большее значение для размера по Z, если уровень в основном горизонтальный. Вам понадобится увеличивать это значение, если вы получаете ошибку «Exceeded MAX_MAP_LIGHTGRID».
- ambient – уровень фонового освещения уровня. Задается как «-ambient R G B», где R, G и B – это значения красной, зеленой и синей компоненты освещения в диапазоне от 0 до 255. По умолчанию фоновое освещение равно (32, 32, 32).
- samplesize – разрешение лайтмапы (размер текселя в юнитах). Чем меньше, тем качественнее лайтмапы, но тем больше памяти они занимают. Этот же параметр надо указывать в режиме расчета BSP.
- gridopt – оптимизация сетки статического освещения. Для финальных компиляций рекомендуется указывать этот параметр.
Большинство параметров вам не понадобится, но иметь представление о них всё же следует. В дальнейшем мы рассмотрим ошибки компиляции и способы их исправления.__________________
Отправлено PunkPaToB 16-02-2011 в 08:19:
Xaerox
Прошу поделись рабочим батником фулл компила.
Ну неработает у меня батник(
Отправлено XaeroX 16-02-2011 в 08:44:
У тебя и мой не заработает - так что какой смысл?
__________________
Отправлено PunkPaToB 16-02-2011 в 08:45:
Ну скорее всего у меня неправильный.
Отправлено XaeroX 16-02-2011 в 08:48:
Вот и выкладывай его в соотв. теме и спрашивай, что в нём не так. А зафлуживать темы с уроками - нехорошо.
__________________
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024