Sidebar

Paranoia 2 Savior map compile tools (beta version)

Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
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. исправлен баг с большой брашевой энтитей®
 

Вкладення

Останнє редагування:
  • Like
Reactions: FiEctro

JPEG

Well-known member
02.10.13
1 059
32
80
48
vk.com
В консоли пишут мол карта из хаммера 3.4, может лучше на 3.5 заменить?)
Цветная консолька порадовала, у меня немного тень на полках странная вышла, он не учитывает func_detail? (никакие параметры у компиляторов не ставил)

Post automatically merged:

последний скрин vhlt
 

Вкладення

Останнє редагування:

johndoe

Супер Модератор
Команда форуму
Супер Модератор
11.03.08
2 590
28
48
>>Когда я открою исходники в с лёгкостью
заменить на
Когда я открою исходники вы с лёгкостью
этот пост можно удалить
С релизом :drink:
 
Останнє редагування:

Raid

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

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

Код:
p2csg comptest2
p2bsp comptest2
p2vis comptest2 
p2rad comptest2 -chop 160 -bounce 8 -extra
Общее время: 1 минута, 50 секунд.

Оффтоп

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

Код:
hlcsg31_x64 comptest2 
hlbsp31_x64 comptest2
hlvis31_x64 comptest2 -full
hlrad31_x64 comptest2 -chop 160 -bounce 8 -gamma 0.3 -extra
Общее время: 15 минут, 38 секунд.

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

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

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

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

Вкладення

Останнє редагування:

ThomasCooper

New member
27.10.17
22
28
Останнє редагування:

crystallize

Well-known member
06.06.14
1 715
46
48
Raid сказав(ла):
О разнице качества лайтмап можно судить по скринам в аттаче. Первые девять - это p2tools, вторые девять - UMHLT x64.
Ты случайно не перепутал порядок картинок?
 
Останнє редагування:
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Там баг весьма серъезный, связанный с кастом теней от всяких функ_валл. Вечером апдейт будет.
 

Ku2zoff

Member
12.08.10
322
34
21
18
Ну кароч вот, предварительные результаты: карта-заготовка, 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 нету? Мне пришлось копировать все подключенные к редактору вады в папку мода.
И хуллы остались стандартными, хотя хуллфайл на месте и ошибок нет. Удручает.
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Почему -wadautodetect нету?
А что оно должно делать-то?

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

Post automatically merged:

ЗЫ. Вот как раз то о чём я говорил - скорость работы виза вполне может зависеть от того, как отработал BSP и\или CSG, т.е. вместо p2csg ставишь hlcsg30 и компилируешь такой связкой. Всё равно минуту? Заменяешь p2bsp на hlbsp30. Если снова минуту - ну значит проблема уже в самом визе.
 
Останнє редагування:

Ku2zoff

Member
12.08.10
322
34
21
18
2 Дядя Миша:
-wadautodetect выкидывает из списка зависимостей карты все вады, из которых не использовано ни одной текстуры на данной карте. То есть в редакторе подключены 20 вадов, а на карте используются текстуры только из пяти. Вот только эти пять и требует в итоге готовая карта.
Ну а хуллфайл, у тебя, видимо, грузится по абсолютному пути, хотя хз. ZHLT и VHLT его нормально грузят, лежит он в папке с компиляторами. И формат имеет старый вальвовский, а не стрёмный ZHLTшный:
Код:
( 0 0 0 ) ( 0 0 0 )
( -8 -8 -18 ) ( 8 8 18 )
( -8 -8 -5 ) ( 8 8 5 )
( -8 -8 -9 ) ( 8 8 9 )
Карту конечно дам, попозже, надеюсь это поможет ускорить виз.
Немного погодя отпишусь по лимитам, т.к. пока статистику не сравнивал. Мапаю под ГС.
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
выкидывает из списка зависимостей карты все вады, из которых не использовано ни одной текстуры на данной карте
А. Да ксашу как-то побоку эти зависимости. Ну это легко добавить.

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

Ku2zoff

Member
12.08.10
322
34
21
18
2 Дядя Миша:
тогда вот тебе хуллфайл целиком. Может быть с кодировкой что-то не то? Если компиляторы его грузят и обрабатывают, тогда будем искать причину проблемы с моей стороны.
 

Вкладення

  • 93 байт Перегляди: 581

Raid

VIP
VIP
11.07.06
8 319
33
  • Rocket медаль
2 crystallize:
Нет, все верно. У модифицированных китайских компиляторов свет мягче, плюс серый шум на стенах - это тени от решеток с разных углов освещения.
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 Ku2zoff: если компилятор напишет Reading hulls from заданный путь, значит он его как минимум прочитал.
 

Ku2zoff

Member
12.08.10
322
34
21
18
2 Дядя Миша:
Код:
[Reading hulls from 'D:\Steam\steamapps\common\JACK\halflife\hulls.txt']
По абсолютному пути читает. По относительному (без указания самого пути, только названия файла - нет. Видимо, ищет не в папке компиляторов, а в папке сорцев карт).

Post automatically merged:

А как вывести статистику карты, как у VHLT? Там по окончании работы hlbsp выводится вот такая табличка:
Код:
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
 
Останнє редагування:

JPEG

Well-known member
02.10.13
1 059
32
80
48
vk.com
Ku2zoff сказав(ла):
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

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

Post automatically merged:

но я клал в папку с сорцами карт
 
Останнє редагування:

crystallize

Well-known member
06.06.14
1 715
46
48
Raid сказав(ла):
2 crystallize:
Нет, все верно. У модифицированных китайских компиляторов свет мягче, плюс серый шум на стенах - это тени от решеток с разных углов освещения.
Очень странно, потому что 4 и 9 скриншоты проявляют те самые проблемы, с которыми ДМ боролся всё это время.
 
Останнє редагування:
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
А как вывести статистику карты, как у VHLT?
-dev 4 или -dev 5, не помню. Статистику выводит только BSP и RAD.

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

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
название можно прочитать далеко не из любого браузера, а там точно первая и вторая половина, по моему это намного удобней подписи.
Может можно делать img теги и подписывать? Или здесь такое не предусмотрено и аттач только аттачем?
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
P.S. UMHLT тут не ломаются
Ну а где карта, на которой мои ломаются?

Post automatically merged:

Так товарищи. Карты с описанием проблемы скидываем вот в эту тему.

Post automatically merged:

название можно прочитать далеко не из любого браузера
Ну я просто мышкой навожуи оно показывает имя картинки. А что, где-то не так?
 
Останнє редагування:

Game Server

Доноры Красавчики

Користувачі онлайн

Немає користувачів онлайн.