Канал в IRC
RusNet: #cmt
ZHLT 3.4 vs Custom build 1.7
В этой статье я попытаюсь разобраться, какие всё-таки компиляторы лучше: ZHLT 3.4 или ZHLT 2.5.3 Custom build 1.7 Я не претендую на стопроцентную объективность, каждый волен делать выбор сам. Но некоторые соображения я всё-таки выскажу. Я несколько отступлю от заголовка статьи и добавлю в сравнение ещё и ZHLT 2.5.3 Стандартные компиляторы от Valve я рассматривать не буду, т.к. об их недостатках сказано уже достаточно и вообще это совсем другой уровень.

Поставка


Начну я конечно-же с "комплектации" скачанных архивов. Начну с самого первого, т.е. с ZHLT 2.5.3 Открываю архив и вижу:
1. компиляторы csg, bsp, vis и rad
2. компилятор netvis для vis-компиляции по сети
3. утилиту ripent для редактирования entity-информации в готовом BSP
4. два wad-файла zeditor.wad и zhlt.wad
6. пять файлов справки в формате HTML
7. карту-пример clipnode.map
Кроме того, в архиве лежит несколько perl-скриптов, одна DLL и файл default.hull, назначение которых мне неизвестно.
Дальше смотрим ZHLT 2.5.3 Custom build 1.7:
1. компиляторы csg, bsp, vis и rad
2. wad-файл zhlt.wad
3. три файла справки в формате HTML и Readme.txt
4. файл wad.cfg
Следует заметить, что ZHLT 2.5.3 Custom build 1.7 не являются самостоятельными компиляторами, а предпологается их использование с ZHLT 2.5.3, заменив соответствующие файлы. По-этому, меньшую комплектацию ZHLT 2.5.3 Custom build 1.7 недостатком считать нельзя, хоть и приходится качать два архива.
И наконец ZHLT 3.4:
1. компиляторы csg, bsp, vis и rad
2. компилятор netvis для vis-компиляции по сети
3. утилиты ripent для редактирования entity-информации в готовом BSP и count_ents
4. wad-файл zhlt.wad (который включает в себя текстуры из zeditor.wad)
6. файлы wad.cfg и lights.rad
ZHLT 3.4, в отличие от Custom build, предназначены для самостоятельного использования. По-этому отсутствие netvis.exe можно было б отнести к недостаткам, но т.к. он используется редко, этим можно пренебчечь. Куда неприятнее оказалось отсутствие офлайн-справки, которая ограничена лишь замечаниями о релизе What's new?
Среди приятных нововведений следует отметить появление текстуры BEVEL, действие которой аналогично NULL, но в отличие от неё, BEVEL не создаёт клипнодов.

Начинаем тестирование


Тестирование я проводил по простому принципу. Брал один и тот-же map-файл и компилировал разными компиляторами, а потом смотрел результат. Карту я брал my_angel_dust, т.к. она и компилируется не сильно долго и на ней присутствуют все детали (вроде вшитых текстур, null-фейсов и hint-брашей). Компиляция проводилась на системе Athlon 64 3500+, 512Mb DDR667 RAM, GeForce 7300GT, Windows XP Professional SP2. map-файлы были сгенерированы Worldcraft 3.3, VHE 3.4 и VHE 3.5, но т.к. разницы замечено не было, то использовался только один из них. Содержание bat-файла было следующим:

d:
hlcsg -estimate -wadinclude my_dust my_angel_dust
hlbsp -estimate my_angel_dust
hlvis -full -estimate my_angel_dust
hlrad -dscale 1 -extra -chart -estimate my_angel_dust

Время компиляции.
По результатам этого простого теста, наилучшие результаты времени показали ZHLT 2.5.3 Custom build 1.7 с общим временем компиляции 174.57 сек. Дальше следуют ZHLT 2.5.3 с результатом 183.77 сек, а вот новые ZHLT 3.4 меня несколько разочаровали - 209.69. вы скажите: "Подумаешь - 35 секунд разницы!", но если написать время компиляции каждого компилятора в отдельности, то результаты действительно разочаровуют.
Тип компиляции ZHLT 2.5.3Custom build 1.7ZHLT 3.4
CSG 5.773.312.83
BSP3.833.342.56
VIS74.0659.2588.08
RAD100.11108.67116.22
Общее время183.77174.57209.69

Анализируя данные, получается, что в новых компиляторах ZHLT 3.4 сократили время CSG и BSP, в то время как время компиляции VIS и RAD несколько увеличилось. Что касается Custom build 1.7, то по сравнению с ZHLT 2.5.3 уменьшилось время всех компиляторов, кроме RAD.
Но в связи с тем, что компиляция CSG+BSP занимает от 2.57% до 5.22% общего времени, а на сложных картах расти будет время именно VIS и RAD компиляций (CSG и BSP тоже будут увеличиваться, но незначительно, если RAD увеличился в 100 раз, то CSG+BSP максимум в 10), то этим временем можно пренебречь (CSG+BSP). Для примера, доля компиляции CSG+BSP в общем времени компиляции карты de_kotelna9.map составляет чуть более 1%. Отсюда можно сделать вывод, что сложные карты будут компилироваться значительно быстрее с помощью ZHLT 2.5.3 Custom build 1.7, чем ZHLT 3.4. Но здесь есть один нюанс. Если в компиляции карты по времени преобладает vis-компиляция (как в той-же котельной), то наименьшее время компиляции будет у ZHLT 2.5.3 (см. таблицу). Но если же на карте присутствует мало некритических ошибок, исправляемых при vis-компиляции, то ZHLT 2.5.3 Custom build 1.7 однозначно лидирует.
По приблизительным расчётам, при использовании ZHLT 3.4 вместо ZHLT 2.5.3 Custom build 1.7 на каждом часе компиляции мы будем терять 8 минут 24 секунды, т.е. 14% времени.
Немного цифр. Это были данные относительно времени компиляции, теперь рассмотрим некоторые количественные характеристики компиляции. Перед вами результаты работы разных компиляторов, в таблице приведены только отличающиеся параметры:

Тип компиляцииZHLT 2.5.3Custom build 1.7ZHLT 3.4
planes755272782268
clipnodes724467406762
marksurfaces490949094909
visdata570825708257086

Из вышеперечисленных параметров заметно отличаются только planes и clipnodes. Причём, первые с огромнейшим запасом в пользу ZHLT 3.4! Отсюда можно сделать вывод, что в ZHLT 3.4 появился режим экономии planes, что не может не радовать, т.к. уменьшает вероятность появления ошибки MAX_MAP_PLANES . Что же касается клипнодов, то ZHLT 3.4, как и ZHLT 2.5.3 Custom build 1.7 имеет режим экономии клипнодов, хоть и менее эффективный. Кроме того, (в отличие от ZHLT 2.5.3) ZHLT 2.5.3 Custom build 1.7 и ZHLT 3.4 не создают клипнодов для func_illusionary. Ну и как я уже говорил, в ZHLT 3.4 появилась поддержка текстуры BEVEL, предназначенной для той-же цели, что и NULL, но в отличие от NULL вокруг текстур BEVEL клипноды не создаются, что позволяет дополнительно уменьшить их количество.

Проверка "на глаз".
Все три скомпилированные карты я поместил в cstrike/maps и поочерёдно запустил. Следует заметить, что размер готового bps-файла (с вшитыми текстурами) для ZHLT 2.5.3 составил 1264564 байт, для ZHLT 2.5.3 Custom build 1.7 - 1255052 байт, и для ZHLT 3.4 - 1155028 байт. Как видно, небольшая разница есть в пользу более новых релизов, что является ещё одним плюсом ZHLT 3.4. Визуально же разницы в игре замечено не было, r_speeds также на всех трёх картах был одинаковым (максимум 534 wpoly),
так что в этой части тестирования разницы я не обнаружил.

Несколько соображений


Вышеизложенная информация оказалась достаточно противоречивой и не даёт однозначного ответа на поставленный вопрос: что использовать? А ответ будет немного неожиданным - использовать всё. Только в различных ситуациях выбирая наиболее оптимальный вариант. Если на карте присутствуют некритические ошибки в большом количестве, т.е. время vis-компиляции может растянуться на многие часы, но при этом карта не сильно сложная (не достигает MAX_MAP_CLIPNODES или MAX_MAP_PLANES), то лучше использовать ZHLT 2.5.3. Если же есть опасность MAX_MAP_CLIPNODES то ZHLT 2.5.3 Custom build 1.7 или ZHLT 3.4 (при использовании BEVEL текстур). Если же подходит предел MAX_MAP_PLANES, то идеальным решением проблемы будет ZHLT 3.4 с его уменьшением числа planes более, чем втрое. ну а если критичным становится время rad-компиляции, то тогда ZHLT 2.5.3 Custom build 1.7 будет в самый раз. В остальных же случаях правильней, наверно, будет использовать последние ZHLT 3.4, т.к. надо переходить на всё новое. Хотя, каждый будет решать за себя сам.

Источник: MAPPING.ORG.UA ©

CMT (CS Mapping Tutorials) - © 2006-2011. Created by VM
[ Script Execution time: 0.0012 ]