HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Архив проектов > Уроки VolatileRadiant > Урок 9. Компиляция уровня
Раскрываем тайны меню Bsp и параметров компилятора
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34516
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Урок 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 – оптимизация сетки статического освещения. Для финальных компиляций рекомендуется указывать этот параметр.


Большинство параметров вам не понадобится, но иметь представление о них всё же следует. В дальнейшем мы рассмотрим ошибки компиляции и способы их исправления.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 70643

Старое сообщение 26-01-2011 09:18
-
PunkPaToB
Теперь я с провами!!!

Дата регистрации: Dec 2010
Проживает: (void)
Сообщений: 792
Возраст: 29

Рейтинг



Xaerox
Прошу поделись рабочим батником фулл компила.
Ну неработает у меня батник(

Сообщить модератору | | IP: Записан
Сообщение: 72061

Старое сообщение 16-02-2011 08:19
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34516
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


У тебя и мой не заработает - так что какой смысл?

__________________

Сообщить модератору | | IP: Записан
Сообщение: 72065

Старое сообщение 16-02-2011 08:44
-
PunkPaToB
Теперь я с провами!!!

Дата регистрации: Dec 2010
Проживает: (void)
Сообщений: 792
Возраст: 29

Рейтинг



Ну скорее всего у меня неправильный.

Сообщить модератору | | IP: Записан
Сообщение: 72067

Старое сообщение 16-02-2011 08:45
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34516
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Вот и выкладывай его в соотв. теме и спрашивай, что в нём не так. А зафлуживать темы с уроками - нехорошо.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 72068

Старое сообщение 16-02-2011 08:48
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 14:18. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Архив проектов > Уроки VolatileRadiant > Урок 9. Компиляция уровня
Раскрываем тайны меню Bsp и параметров компилятора
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024