Sidebar

Paranoia 2 Savior map compile tools (beta version)

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Paranoia 2 Savior map compile tools (beta version)

Ну чтоже. Вы все этого так долго ждали, и вот наконец первая публичная бета. А те кто не ждал, но всё равно заинтерисовался, может почитать вот эту тему. Сперва немного идеологии, которой я руководствовался при разработке своих компиляторов, ну и ответов на вопрос, чем же меня не устроили VHLT.
Если бы у меня был так или иначе мод под халфу или просто карты под CS 1.6, то меня бы устроил и VHLT. Даже если бы у меня был просто собственный движок и мне бы хотелось прикрутить к нему кое-какие модные фишки, то я бы немного модифицировал VHLT (что я собственно и сделал). Всё дело в том, что компиляторы полны ошибок, т.к. зачастую их писали люди, слабо разбирающися в компиляторах. Китаец сделал много хорошего (ну и спорные вещи тоже), профиксил множество ошибок, однако в его коде невозможно ориентироваться из-за громадного числа переключающих макросов, в которые он обворачивал все устраняемые ошибки и фичи. Плюс еще неравномерное форматирование, оставшееся от ZHLT, где-то табы, где-то пробелы. В этой каше очень тяжело понять где тот код, который сейчас используется, а где тот, который выключен. Ну и со временем накопилась критическая масса лично моих замечаний к VHLT, каких-то ошибок или багов, которые следовало бы исправить, но залезать туда и разбираться в этом нагромождении не было никакого желания. Постепенно пришло понимание что компиляторы всё же придется писать самостоятельно. Не с нуля разумеется, на это нет времени, но и смысла в этом нет тоже. Так или иначе используя весь опыт накопленный в этой области, тестируя и сравнивая различные решения, исправляя то, что так никто и не исправил. Ну а затем, когда база была готова уже начались оригинальные вещи - например повертексное освещение моделей :) Но более подробно в описании возможностей.

Технические особенности, основные отличия и преимущества новых компиляторов:

Несмотря на тот факт, что компиляторы делались целенаправленно для Paranoia 2:Savior, в процессе разработки я попытался учесть множество пожеланий и охватить соседние области маппинга, например для первого квейка, ксаш-мода, ну и просто голдсорса.

1. Карты собираются в особом расширенном формате, который тем не менее, если включать особые фичи и не выходить за лимиты прекрасно воспринимается голдсорсом (на самом деле я давно уже не проверял, ну на то это и бета, чтобы мы всё вместе проверили). Некоторые вещи будут работать только на Xash3D, еще некоторые - только на XashXT и P2:Savior, а совсем уж некоторые предназначены специально для паранои. Однако фичей много и я думаю каждый найдет для себя кое-что интересное.

2. Поддержка компиляции уровней от первого квейка. Это заявление не вполне корректно, поскольку компилятор не собирает карты в формат BSP 29, но учитывая что почти все форки квейка преспокойно умеют грузить BSP30, не думаю что это большая проблема. К тому же, как вы понимаете есть и мои собственные римейки квейка и враппер для него же. Поддержка заключается в корректной обработке освещения по квейковски с чётко заданным радиусом, за пределы которого свет не выходит. Так же на некоторых картах квейка присутствуют специфичные ошибки, от которых тот же VHLT впадает в ступор. Это я тоже учёл. Тестирование проводилось на картах от Arcane Dimensions. Так же присутствует поддержка теней от алиас-моделей. В кваке где любят ставить якобы статуи монстров, которые потом внезапно оживают, я полагаю это будет весьма полезная штука. Когда я открою исходники в с лёгкостью сможете полностью адаптировать их непосредственно для кваки, если у кого-то возникнет такая необходимость.

3. Набор некоторых специфичных настроек-расширений, которые будут работать только в Xash3D (ну или где-то еще, если их туда внедрят). Например отвязка разрешения люкселей от скейла текстур и привязка их к мировым юнитам. Это даёт более равномерную сетку и убирает швы. Однако на сложной геометрии типа скал их не рекомендуется использовать. Фича включается прописыванием следующего параметра в worldspawn:

zhlt_worldluxels 0/1/2

Один и два это разные модели лайтмапной матрицы, второй вариант - всегда положительная. Так же следует учитывать что на соотношении люксель к юниту общий объем лайтмапы может уменьшиться, но соответственно немного упадёт и качество. Зато классические динамические лайты из стандартного рендерера перестанут сжиматься на текстурах с разным скейлом.
Из остальных настроек, доступных только в моих компиляторах:
zhlt_nocsg 0/1
Полурабочее решение есть и в UMHLT, но там оно способно лишь глобально выключить CSG для всего мира или энтити. А здесь вы можете задать это для группы мировых брашей, поместив её(группу) в func_group.
Так же разумеется, присутствует поддержка кастомного субдивайда, параметр
zhlt_maxextent 16/64/128
вы можете задавать и другие значения, но обычно в этом нет смысла. Поддержка кастомного разрешения текстур тоже никуда не делась, напоминаю, это
zhlt_texturestep 32/16/8/4/2
Точно так же вы можете задавать и другие числа, но кратные предпочтительнее.
Из недокументированных возможностей
zhlt_forcelightmap 0/1
Мои компиляторы по дефолту не рассчитывают лайтмапы для водных поверхностей, т.к. она всё равно не используется нигде, кроме второй паранои. А эта настройка позволяет рассчитать принудительно.
Из параметров освещения, так или иначе завязанных на освещение модели добавились:
zhlt_modelshadow 0/1
это замена ключу zhlt_studioshadow поскольку мой компилятор умеет освещать и алиас-модели тоже. Здесь есть некоторое неудобство конечно, но я думаю мы еще придём к общему варианту. Напоминаю ключ нужен чтобы включить тень от статичной модели, например в голдсорсе, для CS 1.6. В данной версии компилятора учтено противоречие, что тень отбрасываемая от модели одновременно же мешает её осветить методами голдсорса (взять освещение под ногами). Так что эта фича теперь вполне юзабельна. И тень есть и освещение в порядке. Ну а для тех, у кого в распоряжении имеется энтитя env_static настроек поболе:
Во первых напомню спаунфлаги для самого env_static:
spawnflags 4 - запрет на отброс тени
spawnflags 8 - запрет на обсчёт повертексного освещения (ксаш-мод, параноя 2)
zhlt_selfshadow 0/1 - включает самозатенение моделей при повертексном освещении. Поскольку вертексное освещение низкочастное, это далеко не всегда выглядит красиво и поэтому выключено по дефолту. Но вы конечно можете прописать намертво в FGD.
zhlt_halflambert 0/1 - некоторые товарищи, ну как наш Креозот например, ставт на карту два полигона с листвой, называют это ky4ka_derevo.mdl и ждут когда оно нормально осветится. Проблема в том, что по блин-фонгу это никогда не осветится нормально. Впрочем даже высокополигональные деревья с листвой из masked-текстуры предпочтительнее освещать при помощи этой опции - будет красивее.

Еще из приятных плюшек для пользователей ксаш-мода: компилятор автоматически даёт оригин-брашы всем энтитям, для которых он умел найти родителя (заполненное поле parent). Это чтобы вручную этим не заниматься. Так же реализовано то, что меня и самого бесило и других тоже. Компилятору теперь абсолютно насрать на те абсолютные пути, прописанные в поле "wad". Точнее говоря, сперва он разумеется ищет их по этому пути. Но если не находит - просматривает окружение мода, базовую, игровую и фаллбэк-папку мода. Информацию о об этих папках он берёт из gameinfo.txt и liblist.gam, если используется для халфы. Обращаю ваше внимание - компилятор не заставляет вас компилить карты непременно в папке mymod\maps, но тогда не будет и теней от моделей и вады он найти тоже не сможет. Да и рефлективность от текстур не будет работать. Вообщем это в ваших же интересах.

Новые параметры командной строки для компиляторов:
CSG
-epsilon <value> используется только в паре с аналогичным параметром у BSP. Значения надо ставить меньше дефолтного. Это для экстремальных случаев, когда геометрия на вашей карте даёт не то лики (хотя вы точно уверены что дырок нет), не то кромсает полигоны и они исчезают. Использовать ОЧЕНЬ ОСТОРОЖНО. Будьте уверены, что это может принести массу проблем, если применять ко всем картам подряд.
BSP
-merge 0/1/2
После того как все фейсы лежащие на одной плоскости уже принадлежат одной ноде, компилятор попытается объединить эти фейсы в один. Не всегда у него это хорошо получается, камрад Ксерокс в своих незвершённых компиляторах реализовал более продвинутый алгоритм, который я и задействовал в своих. По дефолту стоит merge 1 (оригинальный халфовский код). Режим Ксерокса включается при -merge 2, но поскольку это толком не тестировалось, то и вынесено в опцию. Возможно где-то оно сделает только хуже. Проверяйте :)
VIS
Это не новый параметр, просто хочу обратить внимание. Единственный параметр, который нужен вам у виза, это -fast. Без него будет фуллвиз, но достаточно быстрый + еще некоторые оптимизации, которых нет у китайца.
RAD
-nomodelshadow альтернатива -nostudioshadow для UMHLT.
-balance как я уже и говорил, халфовские компиляторы умножают прямой свет на два, а потом плюсуют индирект. Китаец уверен, что прямой и непрямой свет надо сложить вместе, а уже потом умножить на два. Так или иначе по дефолту освещение считается в халфовском стиле, а этот параметр позволяет задать стиль VHLT (и для вертексного тоже). А параметр -dscale теперь регулирует либо прямой свет (без ключа -balance), либо суммарную яркость (с ключом -balance). В принципе этого достаточно.

Писать еще можно долго, но я полагаю, вы устанете это читать, да и в прямом общении всегда можно раскрыть больше аспектов. А нормальную документацию к релизной версии я оформлю в CHM, ведь это же всего лишь бета и мы собрались её тестировать, правильно? Поэтому пару слов про тестирование и наконец-то ссылка на сами компиляторы. Чтобы избежать захламления этой темы несуществующими ошибками, вы сперва должны убедиться, что проблема не в карте, а именно в моих компиляторах. Для этого вы можете использовать как референсные компиляторы от меня в соседней теме, так и оригинал от китайца, если не доверяете UMHLT. И ваш багрепорт должен соответственно включать в себя описание того, как выглядит баг, на каких компиляторах он лезет, а где его нет. Я не исключаю и обратной ситуации, когда мои тулзы компилируют то, что не может собрать VHLT, например. Замеряйте время работы, сравнивайте расход лимитов, делитесь впечатлениями, задавайте вопросы. Это общая тема для тестирования.


Первый апдейт. Чтобы можно было сравнивать до багфиксов и после старые версии пока не удаляю. Что изменилось:
1. поддержка wadautodetect. Это что-то такое для GoldSource, ксашу это не нужно. Я не проверял, но думаю будет работать.
2. Некоторые исправления с генерацией планесов (самое стрёмное место во всех компиляторах). Ошибки проявляются либо как исчезнувшие на ровном месте полигоны (при чём карта собирается без дырки), либо наоборот карта, которая совершенно точно без дырок, вдруг начинает ликовать. Проверяйте, сравнивайте.
3. Исправлена трасса в раде (где-то могли генериться лишние тени).
4. Отключил домножение лайтмапы на тень, чтобы размытие было посильнее как вы любите. Хотя это спорное дело, возможно потом вынесу в настройку.

Второй апдейт
1. исправлены баги с трассой
2. исправлен баг с большой брашевой энтитей®
 

Attachments

Last edited:
  • Like
Reactions: FiEctro

Yo Den

New member
Oct 2, 2013
901
32
23
0
В консоли пишут мол карта из хаммера 3.4, может лучше на 3.5 заменить?)
Цветная консолька порадовала, у меня немного тень на полках странная вышла, он не учитывает func_detail? (никакие параметры у компиляторов не ставил)

[ADDED=Yo Den]1513890032[/ADDED]
последний скрин vhlt
 

Attachments

Last edited:

Cybermax

Супер Модератор
Mar 11, 2008
2,736
26
36
>>Когда я открою исходники в с лёгкостью
заменить на
Когда я открою исходники вы с лёгкостью
этот пост можно удалить
С релизом :drink:
 
Last edited:

Raid

VIP
Jul 11, 2006
8,308
33
220
0
CSM-чат
Итак, провёл сравнительные тесты для Half-Life под Xash3D. Первое что бросается в глаза - скорость, превышающая версию х64-компиляторов в 15 раз. Второе - сильная разница освещения труб и лифта на скриншоте 4 первой и второй партии (по 9 штук, начинаются с жёлтых ламп). CPU: AMD FX 6100 Six Core, RAM: 8 Gb, если имеет значение.

Параметры bat для p2tools:

Code:
p2csg comptest2
p2bsp comptest2
p2vis comptest2 
p2rad comptest2 -chop 160 -bounce 8 -extra

Общее время: 1 минута, 50 секунд.

Оффтоп

Параметры bat для UMHLT x64:

Code:
hlcsg31_x64 comptest2 
hlbsp31_x64 comptest2
hlvis31_x64 comptest2 -full
hlrad31_x64 comptest2 -chop 160 -bounce 8 -gamma 0.3 -extra

Общее время: 15 минут, 38 секунд.

Оффтоп , многочисленные ворнинги опущены.

Дополнительные параметры woldspawn:

Code:
zhlt_maxextent 64 
zhlt_texturestep 8

О разнице качества лайтмап можно судить по скринам в аттаче. Первые девять - это p2tools, вторые девять - UMHLT x64. На карте в основном светотекстуры. Так же провёл сравнительный тест для Lightbaker3000. Текстуры (hrushebi_test.wad) можно взять из МИРа.

Скачать исходник и варианты освещения
 

Attachments

Last edited:

ThomasCooper

New member
Oct 27, 2017
22
28
RADу так принципиально важна точка?
rootdir D:\GAMEDEV\Xash3D\DreamDriver3000_build

Error: no vis information, direct lighting only.
rootdir D:\GAMEDEV\Xash3D\DreamDriver3000_build\.

FindFacePositions:
0%...10%...20%...
P.S. UMHLT тут не ломаются
 
Last edited:

crystallize

Active member
Jun 6, 2014
1,474
20
36
Raid said:
О разнице качества лайтмап можно судить по скринам в аттаче. Первые девять - это p2tools, вторые девять - UMHLT x64.
Ты случайно не перепутал порядок картинок?
 
Last edited:

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Там баг весьма серъезный, связанный с кастом теней от всяких функ_валл. Вечером апдейт будет.
 

Ku2zoff

New member
Aug 12, 2010
312
34
5
0
Ну кароч вот, предварительные результаты: карта-заготовка, VHLT управляются с ней за 60-70 секунд. Из параметров командной строки -wadautodetect и -hullfile hulls.txt для hlcsg, -full для hlvis, -extra для hlrad. CSG - 1 сек, BSP - 2 сек, VIS и RAD в среднем 29-35 секунд, каждый раз немного по-разному.
P2TOOLS дают такие цифры: CSG - 1 сек (без опции -wadautodetect, т.к. она ему не известна), BSP - 1 сек, VIS - 1 мин 0 сек (да, карта даёт новому визу просраться от души. И опция -full неизвестна компилятору), RAD - 15 сек.
Почему -wadautodetect нету? Мне пришлось копировать все подключенные к редактору вады в папку мода.
И хуллы остались стандартными, хотя хуллфайл на месте и ошибок нет. Удручает.
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Почему -wadautodetect нету?
А что оно должно делать-то?

И хуллы остались стандартными, хотя хуллфайл на месте и ошибок нет
Хмм, ну по дефолту не какой хулл и не грузится. Надо явно задавать -hullfile путь
Так было в вальвовских компиляторах. А впрочем вижу, VHLT пытается загрузить хулл по имени карты, да?
Ну скинь карту, посмотрим что там с визом.

[ADDED=Дядя Миша]1513952899[/ADDED]
ЗЫ. Вот как раз то о чём я говорил - скорость работы виза вполне может зависеть от того, как отработал BSP и\или CSG, т.е. вместо p2csg ставишь hlcsg30 и компилируешь такой связкой. Всё равно минуту? Заменяешь p2bsp на hlbsp30. Если снова минуту - ну значит проблема уже в самом визе.
 
Last edited:

Ku2zoff

New member
Aug 12, 2010
312
34
5
0
2 Дядя Миша:
-wadautodetect выкидывает из списка зависимостей карты все вады, из которых не использовано ни одной текстуры на данной карте. То есть в редакторе подключены 20 вадов, а на карте используются текстуры только из пяти. Вот только эти пять и требует в итоге готовая карта.
Ну а хуллфайл, у тебя, видимо, грузится по абсолютному пути, хотя хз. ZHLT и VHLT его нормально грузят, лежит он в папке с компиляторами. И формат имеет старый вальвовский, а не стрёмный ZHLTшный:
Code:
( 0 0 0 ) ( 0 0 0 )
( -8 -8 -18 ) ( 8 8 18 )
( -8 -8 -5 ) ( 8 8 5 )
( -8 -8 -9 ) ( 8 8 9 )
Карту конечно дам, попозже, надеюсь это поможет ускорить виз.
Немного погодя отпишусь по лимитам, т.к. пока статистику не сравнивал. Мапаю под ГС.
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
выкидывает из списка зависимостей карты все вады, из которых не использовано ни одной текстуры на данной карте
А. Да ксашу как-то побоку эти зависимости. Ну это легко добавить.

Ну а хуллфайл, у тебя, видимо, грузится по абсолютному пути
Я хулл файл не трогал, он так и остался вальвовский.
 

Ku2zoff

New member
Aug 12, 2010
312
34
5
0
2 Дядя Миша:
тогда вот тебе хуллфайл целиком. Может быть с кодировкой что-то не то? Если компиляторы его грузят и обрабатывают, тогда будем искать причину проблемы с моей стороны.
 

Attachments

Raid

VIP
Jul 11, 2006
8,308
33
220
0
CSM-чат
2 crystallize:
Нет, все верно. У модифицированных китайских компиляторов свет мягче, плюс серый шум на стенах - это тени от решеток с разных углов освещения.
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
2 Ku2zoff: если компилятор напишет Reading hulls from заданный путь, значит он его как минимум прочитал.
 

Ku2zoff

New member
Aug 12, 2010
312
34
5
0
2 Дядя Миша:
Code:
[Reading hulls from 'D:\Steam\steamapps\common\JACK\halflife\hulls.txt']
По абсолютному пути читает. По относительному (без указания самого пути, только названия файла - нет. Видимо, ищет не в папке компиляторов, а в папке сорцев карт).

[ADDED=Ku2zoff]1513955429[/ADDED]
А как вывести статистику карты, как у VHLT? Там по окончании работы hlbsp выводится вот такая табличка:
Code:
Object names  Objects/Maxobjs  Memory / Maxmem  Fullness
------------  ---------------  ---------------  --------
models             25/512         1600/32768    ( 4.9%)
planes           2516/32768      50320/655360   ( 7.7%)
vertexes         4533/65535      54396/786420   ( 6.9%)
nodes            1998/32767      47952/786408   ( 6.1%)
texinfos          546/32767      21840/1310680  ( 1.7%)
faces            3301/65535      66020/1310700  ( 5.0%)
* worldfaces     1797/32768          0/0        ( 5.5%)
clipnodes        4502/32767      36016/262136   (13.7%)
leaves           1333/32760      37324/917280   ( 4.1%)
* worldleaves     683/8192           0/0        ( 8.3%)
marksurfaces     3892/65535       7784/131070   ( 5.9%)
surfedges       15568/512000     62272/2048000  ( 3.0%)
edges            7910/256000     31640/1024000  ( 3.1%)
texdata          [variable]       2920/33554432 ( 0.0%)
lightdata        [variable]          0/50331648 ( 0.0%)
visdata          [variable]          0/8388608  ( 0.0%)
entdata          [variable]      11179/2097152  ( 0.5%)
* AllocBlock        9/64             0/0        (14.1%)
41 textures referenced
=== Total BSP file data space used: 431263 bytes ===
Wad files required to run the map: "halflife.wad;liquids.wad;cs_oldmansion_btm.wad;fy_cemetery_btm.wad;"
1.99 seconds elapsed
 
Last edited:

Yo Den

New member
Oct 2, 2013
901
32
23
0
Ku2zoff said:
2 Дядя Миша:
тогда вот тебе хуллфайл целиком. Может быть с кодировкой что-то не то? Если компиляторы его грузят и обрабатывают, тогда будем искать причину проблемы с моей стороны.

У меня твой хулл прекрасно работает, писал так:
p2csg %mapname% -nowadtextures -hullfile %mapname%.hull

мой хулл в формате вхлт не поддерживал:
16 16 72
64 64 64
16 16 36

[Reading hulls from '1234.hull']
Error: parsing 1234.hull, expeciting '( x y z ) ( x y z )' using default hulls

но это понятно

[ADDED=Yo Den]1513955566[/ADDED]
но я клал в папку с сорцами карт
 
Last edited:

crystallize

Active member
Jun 6, 2014
1,474
20
36
Raid said:
2 crystallize:
Нет, все верно. У модифицированных китайских компиляторов свет мягче, плюс серый шум на стенах - это тени от решеток с разных углов освещения.
Очень странно, потому что 4 и 9 скриншоты проявляют те самые проблемы, с которыми ДМ боролся всё это время.
 
Last edited:

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
А как вывести статистику карты, как у VHLT?
-dev 4 или -dev 5, не помню. Статистику выводит только BSP и RAD.

Т.е. Дядя Миша боролся-боролся с грязью и швами, но в результате у него на 4 скриншоте черная грязь, а на 9 швы на полу
Я с трудом понимаю где чьи скриншоты. Я когда свои сравнительные выкладывал, я их хотя бы называл vl или qrad.
 
Last edited:

mittorn

New member
Apr 22, 2010
1,213
15
0
2 Дядя Миша:
название можно прочитать далеко не из любого браузера, а там точно первая и вторая половина, по моему это намного удобней подписи.
Может можно делать img теги и подписывать? Или здесь такое не предусмотрено и аттач только аттачем?
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
P.S. UMHLT тут не ломаются
Ну а где карта, на которой мои ломаются?

[ADDED=Дядя Миша]1513964715[/ADDED]
Так товарищи. Карты с описанием проблемы скидываем вот в эту тему.

[ADDED=Дядя Миша]1513964776[/ADDED]
название можно прочитать далеко не из любого браузера
Ну я просто мышкой навожуи оно показывает имя картинки. А что, где-то не так?
 
Last edited:

Game Server

CSM TV

Page QR Code

QR Code

Donate Campaign

Total amount
$0.00
Goal
$25.00

Latest profile posts

TestUser wrote on TRUP@C's profile.
Master?
TestUser wrote on TRUP@C's profile.
Hello Father

Members online

No members online now.

Discord