ZHLT – это аббревиатура от Zoner's Halflife Tools – утилиты для компиляции карт для Halflife. По своей сути являются модифицированной версией стандартных утилит компиляции, идущих в комплекте с Worldcraft. Изменения от оригинала включают более высокое качество освещения в готовых картах, более быстрое определение видимых участков на карте, более подробное сообщение об ошибках, а также сетевая программа для анализа видимых участков на карте. Есть, также, множество других нововведений, о которых можно посмотреть в файле ZonersHalflifeTools.html (англ., идет в комплекте с компиляторами).
Как использовать эти утилиты
Утилиты представляют собой 4 программы, управляемые через параметры в командной строке, предназначенные для конвертации исходников карты (.map) в готовый файл карты (.bsp), используемый игрой.
HLCSG: создает общую геометрию на карте.
HLBSP: создает дерево BSP карты и готовый запускаемый .bsp файл.
HLVIS: анализирует видимые участки на карте для увеличения скорости отрисовки кадра.
HLRAD: добавляет в готовый файл информацию об освещении на карте.
Запускать компиляторы надо строго в таком порядке.
Всего утилит четыре, и каждая из них может вызвать ошибку компиляции, существует система, позволяющая пропустить выполнение последующих утилит в случае возникновения ошибки на любом этапе. Каждый интсрумент в обязательном порядке записывает отчет (лог) об исполнении, сохраняя всю информацию, отображаемую в окне программы. Файл отчета имеет то же имя, что и файл с картой, только с расширением .log. Например, при компиляции карты BoogaWooga12.map создается файл отчета BoogaWooga12.log. в случае возникновения ошибки компиляции необходимо проверить данный файл, так как в нем указывается сама ошибка, причина ее возникновения и способы ее устранения.
Параметры ZHLT-компиляторов
Общие параметры для всех утилит:
-texdata # - Максимальный размер памяти для текстур. По умолчанию предел - 4Мб. Не рекомендуется превышать этот размер больше 2Мб.
-chart - Отображение BSP-статистики перед записью данных в BSP-файл. Лучше применять к HLRAD и HLVIS.
-low | -high - Установка низкого или высокого приоритета выполнения компиляции. Установка низкого приоритета позволяет паралельно выполнять другие процессы без снижения производительности.
-nolog - Не создавать файлы отчета и сообщений об ошибках (.log и .err).
-threads # - Установка количества дочерних процессов. Важна для не-Windows систем.
-estimate - Отображение вместо стандартного индикатора хода компиляции: расчетного времени компиляции, сколько выполнено и сколько еще осталось обработать.
-verbose - Выдавать второстепенные сообщения.
-noinfo - Не выдавать в сообщениях информацию о настройках утилит.
-dev # - Уровень отображения внутренних отладочных сообщений. От 0 до 6. (0 - не отображать).
HLCSG
-nowadtextures Включить все используемые текстуры внутрь BSP-файла.
-wadinclude <файл> Включить из указанного wad-файла используемые текстуры внутрь BSP-файла. Перед именем файла можно задавать путь. Для включения нескольких wad-файлов укажите несколько параметров wadinclude.
-noclip Не создавать ограничительные оболочки. С этим параметром карта создается без 3-х ограничительных оболочек, остается только видимая. Это полезно для ускорения компиляции на стадии разработки.
-onlyents Обновить энтити в BSP-файле из MAP-файла. Чаще всего можно только редактировать энтити. При добавлении/удалении может произойти деорганизация остальных энтитей, особенно триггеров.
-noskyclip Отключение автоматического ограничения SKY-брашами (небом). С эти параметром ускоряются HLVIS и HLRAD.
-tiny # Установка площади, меньше которой удаляются браши. По умолчанию установлено 0.5 юнита. Опасно таким способом удалять лишние браши - BSP-дерево карты может повредиться.
-brushunion # Установка границы в процентах для выдачи сообщения при пересечении брашей. Имеет смысл ставить 95% и больше при начальной отладке. Замедляет HLCSG дополнительными вычислениями для выдачи сообщений. По умолчанию выключена.
-hullfile <файл> Загрузка из файла параметров ограничительной оболочки. Файл состоит из 3-х строк, которые обозначают в пространстве вершины "коробки". Каждая строка содержит 3 числа - X Y Z координаты соответственно.
HLBSP
-leakonly Запуск BSP для поиска "дыр" (LEAKs). При нахождении дыр создается PTS-файл с информацией для их поиска.
-subdivide # Установка уровня делителя поверхности в юнитах. По умолчанию стоит максималное значение - 240. Чем меньше это значение, тем больше r_speeds.
-maxnodesize # Установка максимального размера портала. Установка меньшего размера разбивает пространство карты на большее количество блоков, что приводит к увеличению r_speeds, но это может помочь HLVIS быстрее и/или точнее расчитать визуальные участки, что снизит r_speeds.
-notjunc Не разбивать браши на более мелкие в местах T-соединений. Данный параметр не используют при нормальной компиляции.
-noclip Не обрабатывать ограничивающие оболочки и не писать их в BSP-файл. Если этот параметр применяется, то он должен быть указан и в HLCSG.
-nofill Не заполнять пространство снаружи оболочки (игнорирует утечки LEAK). Лучше при этом не запускать HLRAD. Не применяется при нормальной компиляции.
HLVIS
-fast Быстрая визуализация. Не используется для нормальной компиляции. Лучше использовать для быстрой компиляции без HLRAD.
-full Полная визуализация. Используется при конечной компиляции. Увеличивает время компиляции за счет более детального анализа.
HLRAD
-sparse Включить алгоритм low memory vismatrix (визуальная матрица с ограниченной памятью). HLRAD разбивает пространство карты на блоки (патчи). Из этих блоков создается матрица для вычисления освещения. Вы можете увидеть среди сообщений такое: visibility matrix: ... megs. За счет применения этого алгоритма происходит сжатие матрицы, и уменьшается расход памяти при работе HLRAD.
-nomatrix Не использовать визуальную матрицу.
-extra Включить наилучшее вычисление света.
-bounce # Установка уровня световых отражений. Увеличение этого параметра улучшает тени и темные участки. Почти не влияет на скорость компиляции.
-ambient r g b Установить уровень окружающего света. Осветляет черные поверхности. Значения красного, зеленого, синего от 0.0 до 1.0.
-maxlight # Установить максимальный уровень освещенности. Ограничивает яркость на очень освещенных участках карты.
-circus Включить режим "цирка" для выявления неосвещенных участков. Все черные точки (отраженный свет не учитывается) случайным образом заменяются на яркие, любого цвета.
-nopaque Убрать блокирование света от энтитей с параметром zhlt_lightflags 2. Ускоряет компиляцию, только для теста.
-smooth # Установить предел для сглаживания света (в градусах). По умолчанию HLRAD использует отдельное для каждой поверхности освещение (Phong shading). С этим параметром применяется сглаживание освещения (Phong smoothing) на поверхностях, если угол между поверхностями меньше чем указанный.
-chop # Установить размер блока освещения (патча) для нормальных текстур. Увеличение размера патчей ведет к ускорению вычислений HLRAD, но ухудшению качества освещения.
-texchop # Установить размер блока освещения (патча) для светящихся текстур. Лучше чтоб значение этого параметра равнялось половине от значения параметра chop.
-notexscale # Не изменять размеры патчей при изменении размеров текстур. Если на карте размер текстур увеличен, то количество патчей не увеличивается.
-coring # Установить минимальный порог освещенности для поверхностей.
-dlight # Установить максимальный порог для прямого света. Этот параметр похож на maxlight, но он нормализует свет вместо простого "отброса" излишней яркости.
-dscale # Установить умножение прямого света. Установка значения 1 дает реалистичные тени. Значение 0 дает полное отключение прямого света (так можно проверять отраженный свет). Значения 3-4 создают сильный контраст между тенями и освещенными участками, что полезно на картах типа пустыни или арктики.
-nolerp Отключить смешивание отраженного света для близлежащих патчей. Используется ближайшее значение.
-fade # Установить уровень затемнения для источников света. Чем больше значение, тем меньше распространяется свет. Этот параметр добавляет искуственное значение к нормальному способу вычисления прямого света. Отдельные объекты могут иметь собственные значения.
-falloff # Установить способ расчета затемнения прямого света. 1 - 1:растояние, 2 - 1:растояние2.
-scale # Установить глобальное умножение света. Чем больше, тем светлее. Производится в конце расчета освещения, так что можно регулировать уровень яркости на карте.
-gamma # Установить уровень гамма-корекции. Производится в конце вычислений прямого и отраженного света.
-sky # Установить влияние окружающего солнечного света на затененные поверхности.
-lights <файл> Указать RAD-файл кроме стандартных lights.rad и имя-карты.rad.
-noskyfix Отключить глобальное использование light_environment (глобальный уровень света от неба). По умолчанию учитывался только один light_environment. С применением этого параметра каждый light_environment работает отдельно.
-incremental Использовать или создавать файл со специальной информацией о свете. Полезно для отладки света и машин с ограниченной памятью.
Использование файла с данными о свете:
1- Запустить HLRAD с параметром incremental, при этом создается большой файл (десятки мегабайт).
2- Можно изменить объекты света - яркость, напраление, положение, цвета и т.д.
3- Запустить HLCSG с параметром onlyents для обновления световых объектов.
4- Запустить HLRAD с параметром incremental. Если в первый раз были установлены extra, chop, texchop, notexscale, их нужно так же указать. Другие параметры можно изменять.
-dump Сохранить данные о патчах для отладки.
Изменение этитей
_fade # Установить затемнение, чем больше, тем темнее. Применяется к энтитям light, light_environment, light_spot. Влияет только на прямой свет. По умолчанию значение равно 1.0. При приближении к 0.0 свет будет распространяться дальше, а при превышении 1.0 свет будет уменьшаться.
_falloff # Установить способ расчета затемнения прямого света. 1 - 1:растояние, 2 - 1:растояние2. Применяется к энтитям light, light_environment, light_spot
zhlt_lightflags Установить опциональные флаги освещения. Применяется к любым брашевым энтитям.
Значения:
0 - по умолчанию.
1 - EmbeddedFix. Не использовать сложную корекцию освещения. Используется для исправления неправильно освещенных энтитей.
2 - Opaque. Отбрасывать тени.
3 - Комбинация флагов 1 и 2.
4 - ConcaveFix. Используется только с Opaque для исправления освещения внутренней стороны искривленных этитей func_walls (например, арки).
6 - Комбинация флагов 2 и 4.
light_origin Установка выборочного расположения света. Применяется к любым брашевым энтитям. Чаще всего используется энтити info_target и в параметре браш-объектов - light_origin, указывается имя объекта info_target. Тогда, объект будет отбрасывать две тени (если для него не установлен флаг Opaque) - там, где он находится, и там, где расположет указанный объект info_target.
Проставлять параметры надо так: Пример компиляции map1.map
HLCSG.exe map1.map -estimate -wadautodetect -nowadtextures
HLBSP.exe map1.map -leakonly
HLVIS.exe map1.map -estimate -full
HLRAD.exe map1. -estimate -extra
Компиляционные ошибки:
MAX_MAP-ошибки
MAX_MAP_HULLS
Карты в Halflife, как и Quake1, имеют 4 замкнутые области (hulls), используемые движком игры: 1 область - видимая (для обрисовки видимых участков карты), и 3 области - ограничительные (для ограничения движения игроков на карте).
Максимальное кол-во: 4
Как можно добиться такой ошибки ума не приложу.
MAX_MAP_ENTITIES Максимальное количество энтитей на карте было превышено.
Допустимое количество точечных (MAX_MAP_ENTITIES) или энтитей-брашей (MAX_ENGINE_ENTITIES) на карте - 1024.
Соответственно в сумме и тех и тех можно наделать - 2048.
MAX_MAP_PLANES Допустимое число плоскостей на карте было превышено.
Максимальное число плоскостей: 32767
MAX_MAP_CLIPNODES Превышено число брашей, которые препятствуют перемещению игрока по карте.
Максимальное число: 32767
Энтити браши на этот лимит ни как не влияют (func_wall, например).
MAX_MAP_LEAFS
Вероятно: При компиляции карта разбивается на плоскости, доступные игроку.
Максимально: 8192
При ошибке, попробуйте упростить вашу карту, уменьшить ее в размере или обратить мелкие предметы в func_wall.
MAX_MAP_TEXTURES Максимальное число различных текстур на карте было превышено.
Максимум используемых текстур на карте не должно превышать лимита в 512
MAX_MAP_MIPTEX Размер памяти, отведенный под текстуры (Mb) был превышен.
Зависит от компиляторов, которыми вы пользуетесь.
Стандартные-HL-компиляторы: 2Мб
Zhlt v. < 1.2: 4Мб
Zhlt v. >= 1.2: Мб (Смотрите файл ZHLTReference)
HLCSG
**Executing...
**Command: Copy File
**Parameters:
"D:\mapname.map"
"D:\.....\mapname.map"
The command failed.
Windows reported the error:
"File not found"
или:
Error: Error opening
c:\.........\mapname.map
No such file or directory
1. В некоторых случаях для компиляции нужен файл mapname.map. WC по умолчанию сохраняет вашу карту только в формат mapname.rmf. Что бы сохранить в формат *.map следуйте этому пути: "File --> Export to MAP".
2. Во втором случае, возможно, ваш *.map файл и директория с вашими компиляторами различны.
Token too large on line n
Вы используете слишком много *.WAD файлов на вашей карте
Имена ваших ВАД файлов сохраняются в отдельную строку в *.map файл. И если у вас слишком много вадов, то превышается лимит символов на одну строку в вашем *.map файле. Я предполагаю, что максимальное значение символов: 256.
Удалите из списка те ВАД файлы, которые вы не используете.
Если у вас, например одна текстура из одного вада, другая из другого, третья из третьего, то предлагаю с помощью специальной проги (Wally) создать свой вад со своими текстурами.
Далее, такие вады, как:
cached.wad
pldecals.wad
spraypaint.wad
gfx.wad
fonts.wad
можно убрать из списка. Они вам не понадобятся.
Entity 10, Brush 0, Side 5:
has a coplanar plane at
(-753, -9, 251), texture CA1X_CON1
BEntity 10, Brush 0, Side 6:
has a coplanar plane at
(-753, -32, 251), texture CA1X_CON1B
Эта ошибка говорит вам о том, что один браш содержит две плоскости на одной стороне.
Например:
После использования инструмента “vertex tool”, получилось так, что одна сторона квадрата содержит 2! Плоскости. Такое недопустимо!
Что бы избавиться от одной из двух плоскостей, вам естественно придется избавиться от одной из трех белых точек (Белые точки – крайние точки плоскости, желтые – середина плоскости). Воспользуемся инструментом “vertex tool” и перетащим белую точку, находящуюся в центре, в лево или в право, так чтобы совпадала с другой точкой. Появится окно с вопросом "Merge vertices?". Нажмите «да».
Entity #, Brush #: plane with no normal
Эта ошибка происходит в том случае, если при использовании «vertex tool» на вопрос "Merge vertices?" вы отвечали «нет». В этом случае происходит образование нулевой области, так как точки не слились в одну. Удалите такой браш и создайте его снова.
Эта ошибка может появиться и при использовании инструмента “carve”.
Entity#, Brush#: Outside World At (x,y,z)
Карты в HL не должны превышать определенного размера.
Максимальный размер карты это куб со стороной 8192 юнита. В WC это сетка и ее координаты по оси x, y и z. То есть вы создаете свои карты в координатной плоскости с крайними координатами -4096 до +4096.
Эта ошибка обозначает то, что какой либо браш находится за границами допустимой координатной плоскости.
Кстати. Что бы быстро найти нужный браш по номеру, нажмите ctrl-shift-G, и введите там номер браша или энтити который вам сообщает компилятор.
Entity#, Brush#: mixed face contents Texture ROCK_X1 and SKY
Один и тот же браш покрашен текстурами разных свойств.
В ХЛ Все стороны браша должны быть покрашены текстурами, имеющие одинаковые свойства. Например, если вы красите сторону браша текстурой воды, а остальные стороны обычными текстурами – произойдет вот такая ошибка. Вот текстуры, которые должны покрывать весь браш:
sky
Все виды жидкостей (water, slime, lava)
origin
clip
Нельзя допускать, что бы обычная текстура и выше приведенные текстуры находились на одном браше!
Fatal: Entity #, Brush #: ORIGIN brushes not allowed in entity
Энтити # покрашен в текстуру origin, но такая текстура этому объекту не нужна.
Найдите этот энтити и просто удалите или до\перекрасте, так что бы он не содержал текстуры origin.
Fatal: Entity #, Brush #: ORIGIN brushes not allowed in world
На вашей карте находится origin браш (так называется браш, покрашенный в текстуру origin естественно), не связанный с какой либо энтити (объектом).
Найдите такой браш, удалите его или свяжите его с энтити.
Такая ошибка возникает при попытке создать дверь. Дверь и origin браш должны быть сгруппированы.
********** ERROR **********
Found an entity with ONLY an origin brush near (x,y,z)!
Эта ошибка похожа на две предыдущие.
Исправляется аналогично.
Parsing Brush
Эта ошибка возникает по различным причинам:
Браш выкрашен простой текстурой и прозрачной (имя такой текстуры начинается на { и чаще всего синего цвета) текстурой одновременно.
WC 3.3 идет с пакетом очень старых компиляторов. Пользуйтесь Зонерами.
Missing "[" in texturedef
Эта ошибка возникает по различным причинам:
1. Эта ошибка происходит из-за новой версии WC 3.3. Если вы сохраняете *.map файл в WC 3.3, а редактируете, изменяете и компилите (и кому такое в голову придет? J) в WC 2.x, то появляется такая ошибка. Нормальным людям она не грозит. И все же, как избавиться от этой ошибки? Откройте *.map файл в notepad и удалите строку «mapversion 220»
2. Одна или более текстур содержат в имени знаки, не принадлежащие английскому языку. Например: u, a, o и так далее. Просто переименуйте эти текстуры.
HLBSP
ERRORLOG D:\compiling\mapname.err detected, hlbsp processing halted>> If you have fixed the problem, you can delete the file and rerun hlbsp
Исправьте все ошибки, отмеченные в файле mapname.err (mapname естественно имя вашей карты). Потом просто удалите этот файл.
********** ERROR **********
Can`t open c:\......\mapname.p0
HLbsp не может открыть или найти файл mapname.p0, который создается Hlcsg. Надо отметить, что HLcsg компилит карту перед HLbsp, так, что ищи проблему там, почему не создался данный файл.
LEAK LEAK LEAK
(Обычные компиляторы)
Warning: === LEAK in hull 0 === Entity capture_point @ (x, y,z)
(Если вы используете zhlt)
По этой ошибке можно писать целые статьи. Попробую в вкратце описать эту ошибку. Лик (Leak (англ.) – утечка, проще - дырка) происходит оттого, что ваша карта не герметична. То есть щели в то «никуда», которое вы можете наблюдать в WC. Стыкуйте браши более внимательно. Если вы так и не нашли Лик, то можно прибегнуть к более сложному способу. При такой ошибке HLbsp создает отдельный файл под названием mapname.pts. Поместите его в папку с картами (чаще всего cstrike\maps) ну и вашу карту то же естественно. К ярлыку контры допишите -particles 10000 (или 50000, если не хватит линии) и загрузите вашу карту. В консоли пишите pointfile. Вы увидите пунктирную линию. Найдите ее начало и следуйте по ней пока линия не выйдет за границу карты. Это и значит, что в этом месте - Дырка.
Утечка, так же может произойти если какая либо энтити находится не в зоне карты, то есть за ее границами. К энтити относятся так же и func_walls. Естественно они не должны быть крайними на карте, то есть выходить в «пустоту». Будьте внимательней!
И для чайников: фраза Entity capture_point @ (x, y,z) не означает координаты Лика. Это координаты Энтити, которая среагировала на этот лик.
Warning:
MakeNodePortal: new portal was clipped away from node @(x,y,z)-(x,y,z)
HLBSP не смог создать некоторую часть пространства. Это вызвано или сложностью стыковок брашей (например: пересекаются) или большим углом наклона между двумя брашами. В результате игрок будет задевать за что-то невидимое.
Если ваша карта компилится и r_speeds в норме, то можете пренебрегать этим предупреждением.
В противном случае найдите браши по данным координатам и упростите или удалите их.
HLVIS
********** ERROR **********
Error opening c:\.........\mapname.bsp No such file or directory
Эта ошибка возникает в том случае если произошла другая ошибка при компиляции HLBSP и HLCSG. Так что смотри логии компиляции.
Warning: No .prt File Found, No VISing Performed
bzw.
---- vis ----
1 thread(s)
LoadPortals: couldn`t read c:\....\....\mapname.prt
No vising performed.
Этот файл нужен визу для вычислений видимости на карте. Как и в прошлой ошибке произошла ошибка в HLBSP и HLCSG. Да спасут нас логи!
Max_Leaf_Faces
Слишком много видимых частей брашей. Если ваша карта содержит множество мелких деталей, советую обратить эти детали в func_wall, так как энтити в ХЛ обрабатываются в реальном времени.
Error: Vismap expansion overflow
Аналогичная предыдущему примеру ошибка.
Texture axis perpendicular to face
Какая либо текстура сильно растянута. То есть имеет большой масштаб. Минимальный и максимальный масштаб текстуры: -999 и +999 соответственно.
Дополнительные причины:
1. Браш вращался, без включенного "Texture Lock".
2. Из-за неправильного обращения с такими инструментами как: vertex tool и carving tool. Иногда - Clipping tool.
HLRAD
********** ERROR **********
Error opening c:\..........\mapname.bsp
No such file or directory
Эта ошибка возникает в том случае если произошла другая ошибка при компиляции HLBSP и HLCSG. Так что смотри логи компиляции.
Warning: Too Many Direct Light Styles on a Face
Это значит, что более 3 источников света освещают одну плоскость.
Все источники света, имеющие разные свойства (цвет, мерцание, яркость, переключение, даже имя и так далее), будут обозначены как совершенно разные источники света. Но если, например, цвет одного совпадает с цветом другого, то эти источники будут считаться одинаковыми. Что бы избежать такой ошибки, вы или удаляйте некоторые источники света или подгоняйте их свойства, так что бы они значились как один свет.
Максимальное кол-во различных по свойствам источников света - 3.
Warning: SwapTransfers: Unmatched
Эта ошибка вызвана проблемой в коде HLRAD. Так же она может следовать после предупреждения Leaf_Portal_Saw_Into_Leaf
entity at (x,y,z) has bad `_light` value
Эта ошибка вызвана из-за бага в WC 2.1.
Что бы исправить эту ошибку просто откройте свойства энтити и щелкните на параметре "brightness". Можете даже не менять цветовой гаммы. Вы должны провернуть такую операцию для КАЖДОГО лайт энтити.
[Reading texlights from `E:\Programme\Worldcraft\lights.rad`]
[1 texlights parsed from `E:\Programme\Worldcraft\lights.rad`] 10921 faces Create Patches : 51269 base patches 0 opaque faces 454072 square feet [65386408.00 square inches]
Error: No Lights!
Description: lighting of map halted (I assume you do not want a pitch black map!) Howto Fix: Put some lights in the map
Судя по последним строкам ошибки (этот эррор характерен только для компиляторов Зонера) на карте не найдено ни одного источника света. Ваша карта будет черной или наоборот - светлой!
MAKE SCALES takes a very long time, the computer seems to be stuck
Причина: недостаток оперативной памяти. Факт, что MAKE SCALES требует немало оперативки. При заполнении всей памяти MAKE SCALES обращается к жесткому диску (своп). Для этого освободите как минимум 800 Мб на вашем Харде. Если MAKE SCALES обращается к диску, то время компиляции может увеличиться в 100 (сто!) раз относительно RAM’а!!!
Некоторое взято из инета!!!
Ну вот и все наверное, что можно сказать про компиляторы и компиляцию Enjoy )