Sidebar

NEWBSPGUY

Статус
Закрита.

karaul0v

Active member
06.05.10
350
Может кто вкурсе почему std::format не работает на linux ?

Пишет или <format> файл не найден, если ставить выше версию языка и новый clang, то пишет std::format не найден в std::.

Где-то прочитал что это быстрее чем стандартные sprintf и т.п, решил что не помешает апгрейд, но в конце концов пришлось fmtlib ставить т.к только в MSVC нормально std::format работает :)
 
Останнє редагування модератором:

Qwertyus

Well-known member
13.08.09
1 474
65
48
  • Xash медаль
@karaul0v FGD с поддержкой моделей имеют строки типа:
Код:
@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney : "Barney"
[
    sequence(Choices) : "Animation sequence (editor)" : 0 =
    [
        0 : "idle1"
        1 : "idle2"
        2 : "idle3"
        3 : "idle4"
        4 : "walk"
        5 : "run"
        6 : "shootgun"
        7 : "shootgun2"
        8 : "draw"
        9 : "disarm"
        10 : "reload"
        11 : "turnleft"
        12 : "turnright"
        13 : "laflinch"
        14 : "raflinch"
        15 : "llflinch"
        16 : "rlflinch"
        17 : "smlflinch"
        18 : "cower_stand"
        19 : "locked_door"
        20 : "fall_loop"
        21 : "barn_wave"
        22 : "beat_grunt"
        23 : "beat_gruntidle"
        24 : "flashlight"
        25 : "diesimple"
        26 : "dieviolent"
        27 : "diegutshot"
        28 : "dieforward"
        29 : "diebackward"
        30 : "diecrump"
        31 : "barnaclehit"
        32 : "barnaclepull"
        33 : "barnaclecrunch"
        34 : "barnaclechew"
        35 : "lying_on_back"
        36 : "lying_on_side"
        37 : "lying_on_stomach"
        38 : "stuffed_in_vent"
        39 : "standing_idle"
        40 : "cprbarney"
        41 : "cprbarneyrevive"
        42 : "barney_dragvent"
        43 : "dying_barney"
        44 : "dying_barneyidle"
        45 : "dying_friend"
        46 : "dying_friendidle"
        47 : "c1a3_bidle"
        48 : "c1a3_ventb"
        49 : "c1a3_emergeidle"
        50 : "c1a3_emerge"
        51 : "haulbarney"
        52 : "intropush"
        53 : "fence"
        54 : "sit1"
        55 : "almostidle"
        56 : "almost"
        57 : "laseridle"
        58 : "laser_top"
        59 : "laser_bottom"
        60 : "barneyfallidle"
        61 : "barneyfall"
        62 : "c3a2_draw"
        63 : "unlatch"
        64 : "retina"
        65 : "relaxstand"
        66 : "assassinated"
        67 : "trackswitch"
        68 : "pepsiswing"
        69 : "pepsipush"
        70 : "buttonpush"
    ]
]
Т. е. можно задать дефолтную анимацию, которую как раз следует использовать при отображении модели. Ну и было бы неплохо, чтобы выбор другой анимации из списка (сам список поддерживается) позволял менять её в программе.

А так у меня модельки рисуются, но множество всяких стрёмных ошибок. Допустим, субмодели не отрисовываются. Те же головы у учёных. Или если просто моделька была большая по полигонам и пришлось её порезать на части, то тоже рисуется только первая часть модели. Кроме того, у меня какие-то странные глюки с отрисовкой, когда вместо одной модели рисуется две, а иногда - три. Допустим, вместе с буллсквидом прямо под ним рисуется хедкраб. Или три модели сразу рисуется в одной точке. Зато в другом месте модели не видно вообще. Как будто идёт какой-то сбой, и модели вместо тех мест, где они должны быть, "дорисовываются" в других энтитях на карте. Причём, если моделька пропадает со своего места, то порой даже не рисуется фрейм на этом месте. Т. е. вообще не видно, что энтить там есть.
Post automatically merged:

Ещё теперь обязательно нужна опция по включению/отключению рендера моделей. И можно сделать для снижения нагрузки рендер статичной анимации, просто первый кадр без движения.
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Где-то прочитал что это быстрее
Одна бабка сказала!

И можно сделать для снижения нагрузки рендер статичной анимации, просто первый кадр без движения.
Только это ничего не оптимизирует :) В халфовском рендере кости считаются каждый кадр вне зависимости от того, менялась анимация или нет. И я сомневаюсь что автор уже это исправил, если у него до сих пор по три головы рисуются, тогда как где-то - вообще ни одной.
 

karaul0v

Active member
06.05.10
350
Одна бабка сказала!
Ну если нужен источник, то в репозитории fmtlib прочитал что якобы во много раз быстрее)))
Post automatically merged:

Только это ничего не оптимизирует :) В халфовском рендере кости считаются каждый кадр вне зависимости от того, менялась анимация или нет. И я сомневаюсь что автор уже это исправил, если у него до сих пор по три головы рисуются, тогда как где-то - вообще ни одной.
Как бы если не обновлять модель, то процессора куда меньше используется.

Статическая в 2 раза больше ФПС, но это просто за счёт процессора. Сам рендер модели садит ФПС неплохо.

Я установил временно лимит 30 кадров установил, по этому больше 30 раз в секунду модель не обновляется.

Завтра вечером буду дальше обновлять)
 

Qwertyus

Well-known member
13.08.09
1 474
65
48
  • Xash медаль
@Дядя Миша Ну, не всё сразу. То, что голову не видно, не значит, что её нет! :geek: Это просто чеширские учёные :cat:
 

karaul0v

Active member
06.05.10
350
Да все есть, просто я не разобрался, есть SetBodygroup, два значения, это body и subbody ? или что-то другое)))

головы будут все на месте просто надо разобраться немного))) завтра вечером начну доделывать все, уже опции в настройки добавил, skin и sequence тоже, но пока что не загружал. И надо понять что с body делать)
Post automatically merged:

Может кто разбирается в Opengl или вообще в 3д кодинге) Как можно узнать находится ли объект за пределами экрана? Что бы не тратить процессорное время на обновление и рисование моделей за пределами экрана
 
Останнє редагування модератором:
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
то в репозитории fmtlib прочитал
Сам себя не похвалишь :)
Как бы если не обновлять модель, то процессора куда меньше используется.
Куллинг нужен. Если модель не видно, то вообще её не рисуем.
Как можно узнать находится ли объект за пределами экрана?
В старых играх, в халфе в частности есть вся информация о том, виден ли объект или же нет. Используй её.
 

JPEG

Well-known member
02.10.13
1 059
32
80
48
vk.com
Я вообще бы мечтал увидеть полноценный редактор карт на основе BSPGuy. Пока что это единственная программа, в которой я бы смог что-то делать с брашами, не матерясь на их создателей за их допотопные представления о том, как должен быть устроен пользовательский интерфейс и функционал. Потому что ты хочешь ножницы, чтобы сделать гирлянду из бумаги, а тебе дают молоток и говорят - вот, наши деды именно этим чудеса свои делали, и именно так по их заветам все вы должны работать. Потому что, мол все мастера уже привыкли, значит, и ты привыкнешь, если захочешь. Но вот пока за всё время так и не захотелось. Потому что пытаешься сделать хоть что-то, и понимаешь, что всё же пока лучше остаться среди поклонников чужого творчества с таким инструментарием.
в принципе это справедливо для вообще всего софта. Нет никаких стандартов, полная околесица. В каждой программе свои горячие клавиши для абсолютно тех же действий, чего только стоит отмена/вернуть, которые далеко не везде ctrl+z ctrl+y, и тоже самое даже с самым базовым ctrl+c. Банально, в 3д-софте везде абсолютно по-разному перемещается камера, хотя казалось бы, это так просто) Я вообще удивляюсь, как мы пришли к единому usb-выходу в телефонах. Хорошо, когда тебе 15 лет и у тебя куча свободного времени)
 

karaul0v

Active member
06.05.10
350
Я добавил открытие поиска на CTRL + F, окно перехода к координатам/модели/сущности/фейсу на CTRL+G, и уже жалуются что на F был хоткей разделения фейса на две части, а на G граб ентити(перетаскивание).

Ну естественно F и G пришлось переназначить что бы не путались ) уже недовольные появились)
Post automatically merged:

В старых играх, в халфе в частности есть вся информация о том, виден ли объект или же нет. Используй её.
Ну я же не в халфе, а в bspguy) Но возможно загуглю найду как это можно сделать, вроде как направление взгляда есть, fov можно будет настроить, и координаты моделей есть, осталось только bbox получить и проверить видно ли.
Post automatically merged:

Куллинг нужен. Если модель не видно, то вообще её не рисуем
Ну это проще сказать чем сделать, причем сделать это очень сложно, т.к надо проверять видна ли модель целиком через любую другую модель на пути,
По правде говоря я уже делал это через opengl функции, там есть такая проверка, и это даже серьезно увеличило ФПС, но только если камера не подвижна, как только происходит изменение, требуется перепроверить на видимость все объекты заново.

Получилось не очень например так:
Было 900FPS при движении или без
Стало 300FPS при движении, без движения камеры 1200 ФПС.

То есть так себе выгода ))) после этого вырезал этот код как бессмысленный) У меня например ФПС в bspguy ограничивается процессором, одно ядро из восьми загружает почти полностью, а видеокарта загрузка только 30% от силы.

Причем всякие обновления моделей и т.д происходят постоянно, в независимости виден объект или нет.

Хочу сделать хотя бы проверку на fov, тогда можно будет не обновлять и не пытаться рисовать те объекты которые за пределами экрана
Post automatically merged:

Интересно, а можно ли рендер многопоточным сделать, или это так не работает? Всмысле могу ли я рисовать из нескольких потоков, или это недопустимо в Opengl?
Post automatically merged:

Сам себя не похвалишь

Вот тут конкретные тесты, на сколько быстрее?)))
(все тесты обязательно в RELEASE билдах проводить)
 
Останнє редагування модератором:

crystallize

Well-known member
06.06.14
1 715
46
48
Ну я же не в халфе, а в bspguy
В карте уже содержится информация о том что откуда видно а откуда нет. Т.е. какие листья из каких листьев видны а из каких нет. Это та информация которую hlvis.exe записывает в карту. Она побитовая. Там перемещаешься операторами << и >>. Неужели ты даже не читал статьи ДМ об устройстве Квейк-движков? Они тут же выложены.
 

karaul0v

Active member
06.05.10
350
В карте уже содержится информация о том что откуда видно а откуда нет. Т.е. какие листья из каких листьев видны а из каких нет. Это та информация которую hlvis.exe записывает в карту. Она побитовая. Там перемещаешься операторами << и >>. Неужели ты даже не читал статьи ДМ об устройстве Квейк-движков? Они тут же выложены.
Смысл в том, что это никак не помогает, и как бы учитывая что обычный opengl валлхак работает в хл1кс16, то эта информация игрой тоже никак не используется если рендер стен и других частей карты, которых к слову по идее не должно быть видно, доходит до рендера....

Плюс ко всему в bspguy рисуется целиком модель, будь то worldspawn или какая-то другая, тут нет такого понятия модель видима или не видима через другую, рисуются сначала частично прозрачные, а во второй этап непрозрачные. А как проверять каждую модель на видимость сквозь все остальные, я в душе понятия не имею.

Я понимаю если бы отдельно рисовался каждый фейс, то имело бы смысл проверять видимость и не рисовать если он не видим, но как я выше написал bspguy и half life это не одно и тоже, нужно учитывать что это абсолютно разные вещи.
Post automatically merged:

Кстати, на счёт VIS. Как проверить работоспособность VIS данных? есть подозрения что оригинальная версия в каждой из карт ломало их после оптимизации, и всё ещё имеются подозрения что я это не доконца исправил в newbspguy, но как проверить эти данные?)
 
Останнє редагування модератором:

Aynekko

Маппер
Команда форуму
Супер Модератор
07.06.10
4 562
32
  • Золотая медаль 153
  • Золотая медаль RC
  • Бронзовая медаль 216
В каждой программе свои горячие клавиши для абсолютно тех же действий, чего только стоит отмена/вернуть, которые далеко не везде ctrl+z ctrl+y, и тоже самое даже с самым базовым ctrl+c.
Чем думают разработчики такого софта, я наверное никогда не пойму.
 

crystallize

Well-known member
06.06.14
1 715
46
48
Кстати, на счёт VIS. Как проверить работоспособность VIS данных? есть подозрения что оригинальная версия в каждой из карт ломало их после оптимизации, и всё ещё имеются подозрения что я это не доконца исправил в newbspguy, но как проверить эти данные?)
Может просто загрузить в игре и проверить с wireframe?


Смысл в том, что это никак не помогает, и как бы учитывая что обычный opengl валлхак работает в хл1кс16, то эта информация игрой тоже никак не используется если рендер стен и других частей карты, которых к слову по идее не должно быть видно, доходит до рендера....
Смотреть воллхаком за угол-это фундаментальная проблема, которая наверное и не будет решена. Но твои проблемы же еще больше, у тебя вся карта рисуется каждый раз.

Кстати я не понимаю о какой разнице в логике отрисовки ты говоришь. Геометрия обычных стенок не хранится в карте единой моделькой, поэтому твой код не может рисовать ее как-то иначе. Эта геометрия точно так же побита по нодам, и ты в коде тоже должен их перебирать при отрисовке.
 

karaul0v

Active member
06.05.10
350
Да нет, говорю же что в bspguy моделька загружена целиком в массив lightmapverts, будь то вордспавн или любая другая сущность.

там для шейдеров, текстура, координаты текстуры, lightmap'ы с координатами, цвет дополнительный, ну сама геометрия.

А рисуется отправляя целиком весь этот массив.
Post automatically merged:

И этот буфер не обновляется каждый кадр, только когда это надо,( т.к например перезагрузка ворлдспавна может идти секунд 5-10), и обновляется только в крайних случаях(ну там когда надо обновить текстуру или ещё что-то)
Post automatically merged:

Я не шарю в шедерах этих и т.п, по этому не уверен как можно оптимизировать. Щас хотя бы проверку fov прикрутить бы что бы не обновлять модели за кадром, тогда не все так печально с фпс будет если не смотреть на всю карту целиком;)
 
Останнє редагування модератором:

crystallize

Well-known member
06.06.14
1 715
46
48
Да нет, говорю же что в bspguy моделька загружена целиком в массив lightmapverts, будь то вордспавн или любая другая сущность.
Ок это более понятно. Я так понимаю, код загрузки не твой? Она же в единый массив собирается не святым духом, там должен быть код который перебирает ноды. Вот его надо копать и обновлять этот массив при перемещении камеры, учитывая инфу о видимости.
Post automatically merged:

Шейдеры тут ни при чем кстати.
 
Останнє редагування:

karaul0v

Active member
06.05.10
350
Ок это более понятно. Я так понимаю, код загрузки не твой? Она же в единый массив собирается не святым духом, там должен быть код который перебирает ноды. Вот его надо копать и обновлять этот массив при перемещении камеры, учитывая инфу о видимости.
Да я взялся добавить как можно больше всего полезного в bspguy, сделал свой форк, код естественно не мой был, ну и вот обновление массива worldspawn модели занимает секунд пять на небольших картах, я себе не представляю как это можно сделать в реальном времени, а карта освещения в "атласы" загружается и оттуда уже координаты передаются в тот же lightmapverts

то есть я не знаю как в хл сделано, может там в хл рисуется каждый полигон отдельно, и можно учитывать видимость, а тут сделано так что все целиком рисуется.... если я правильно понял)
Post automatically merged:

Если честно то ещё не полностью вник в код bspguy:)
 
Останнє редагування модератором:
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Ну я же не в халфе, а в bspguy)
И что? Информация-то прямо в карте хранится. Используй её.
т.к надо проверять видна ли модель целиком через любую другую модель на пути,
Эта задача не имеет нормального решения в принципе. Можешь сразу забить.
У меня например ФПС в bspguy ограничивается процессором
Потому что геометрию надо загрузить в VBO, а не гонять её по шине каждый кадр, например. У тебя на эти циклы больше всего времени и уходит.
Всмысле могу ли я рисовать из нескольких потоков, или это недопустимо в Opengl?
Нет, OpenGL однопоточный, но тебе это не поможет, да вообщем-то и нахрен не нужно.
Те игрушечные по современным меркам уровни и поликаунт должны безо всяких проверок давать под 1000 фпс. Надо просто рендерер нормальный сделать, а не как в 95-м году.

оригинальная версия в каждой из карт ломало их после оптимизации
VIS ломают все кому не лень. Компиляторы ZHLT их ломали, теперь вот bspguy.
но как проверить эти данные?)
ДА НЕ КАК!!! Это невалидизируемая информация. Только глазами смотреть если вдруг под носом полигоны начали пропадать.
Геометрия обычных стенок не хранится в карте единой моделькой
Это вообще не проблема. Проблема в том, что текстур много. Геометрия разбивается по текстурам, а не по нодам.
там должен быть код который перебирает ноды
А зачем ноды перебирать? Это параллельная сущность.

ЗЫ, Я помню когда-то очень давно (кажется в прошлую пятницу). знакомился с кодом bspguy и отметил, что его писал человек, который хотя бы четко понимал что он делал.
 

karaul0v

Active member
06.05.10
350
Автор проекта резко забил, я там PR кидал кидал, он принимал, потом однажды, когда я добавил открытие нескольких карт одновременно, и там поддержку других модов, сказал что слишком много измений было в одном из PR, тогда я свой форк создал и начал в newbspguy все что мог запихивать)

Если что оригинал чисто sveen coop поддерживает, так как там нельзя папки других модов указать, или что-то ещё. Не знаю почему.


На счёт WAD общем WAD экспорт сделаю тогда в 32 битный PNG, раз цвет прозрачности в палитре хранится, я его не смогу скорее всего сохранить куда-то ещё что бы потом обратно вставить, так что проще всего это в rgba сохранить, а при загрузке заменять цвет прозрачности на синий и ставить его в конец палитры....
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Почему обязательно в PNG? TGA и BMP точно так же поддерживают прозрачность.
Посмотрел я код этого bspguy, твой форк, точнее. Квантизатор откровенно похабный, ему реально нужен дизеринг. Функции пересечения с плоскостью взяты еще из Botman BSP Viewer, они неверные.
Ну то есть верные только в сферическом ваккууме. А так я с ними проблемы имел. Да и остальное там сомнительное. Так же вижу кашу из старых функций и fs:: Надо наверное что-то одно оставить.
Понравился камент в main.cpp
// super todo:
Не могу понять - в папке scripts лежат файлы с расширением .as т.е. AngelScript, да и по синтаксису похоже, однако самой библиотеки AngelScript я в исходниках не обнаружил.
Post automatically merged:

C++:
    if (this->frametime > (1.0f / fps))
    {
        AdvanceFrame(this->frametime);
        UpdateModelMeshList();
        this->frametime = 0.0f;
}
Не понял, а зачем вообще его обновлять? Вертексы заливаются ОДИН РАЗ при загрузке модели, нет ситуации, при которой их бы потребовалось обновлять.
Post automatically merged:

рисуются сначала частично прозрачные, а во второй этап непрозрачные
Я надеюсь это опечатка.
 
Останнє редагування:

karaul0v

Active member
06.05.10
350
Я надеюсь это опечатка.
130275

Post automatically merged:

Не понял, а зачем вообще его обновлять? Вертексы заливаются ОДИН РАЗ при загрузке модели, нет ситуации, при которой их бы потребовалось обновлять.
А как анимация будет работать если они останутся неподвижными
Post automatically merged:

ну там есть он, я же кидал скрины
Post automatically merged:

кашу из старых функций и fs::
ну как бы я все что заметил, перенес в std::filesystem :(
Post automatically merged:

Не понял, а зачем вообще его обновлять?
тут такая штука, что из TRIANGLES STRIP/FAN, конвертит в GL_TRIANGLES, что бы потом целиком рисовать модель.

А как применить анимацию к буферу из GL_TRIANGLES, хз.... Так бы конечно не пришлось обновлять :)
Post automatically merged:

Добавил поддержку skin/body/sequence для моделей.

130276

Post automatically merged:

 
Останнє редагування модератором:
Статус
Закрита.

Game Server

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

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

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