![]() |
Страницы (255): « Первая ... « 242 243 244 245 [246] 247 248 249 250 » ... Последняя » Показать все 3825 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- XashNT: блог разработчика (https://hlfx.ru/forum/showthread.php?threadid=5297)
Все, что по смыслу должно динамически обновляться - будет это делать, да.
Добавлено 10-06-2024 в 23:40:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
В детстве был благовоспитанным мальчиком, но начал играть в орлянку, связался с Ксероксом и Дядей Мишей и покатился… Характер мягкий. Не женат.
Так товарищи. Настало время открыть вам страшную правду. Я не настоящий гейм дизайнер, как некоторые думают. Настоящему гейм дизайнеру вообще всё равно какой диздок писать. Они в любуй созвон погружаются с интересом и работают над проектом. Им главное - новизна ощущений. По принципу "О! а на таких плантациях ещё не работал! Интересно!". Ну вот по этому критерию я совсем не настоящий Нет у меня желания созваниваться с каждым кабанчиком и погружаться в катарсис. В действительности существовал ряд хонк-хонков в которых мне было очень интересно ковыряться и разбираться, но достаточно ограниченный.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Очередной важный прорыв совершён сегодня. Движок, как вы знаете, наследуется от Xash3D, а тот в свою очередь - от семейства движков ID Software. В этом нет ничего плохого, на самом деле подавляющее большинство, так или иначе наследует если не кодобазу, то хотя бы идеи Кармака. И конечно наследуется не только хорошее, но и плохое.
Когда речь идёт об идеях, то что-то можно просто не брать. Когда мы имеем дело с какой-то древней кодобазой, то туда попадает разное.
В частности - биты контентсов (содержимого). Ну все наверное про них в курсе, кто имел дело с этими движками. Весь ужас в том, что этих контентсов не так уж и много - всего 32 штуки, поскольку они хранятся в 32-х разрядной целочисленной переменной, но это-то ещё ладно, обычно такого кол-ва хватает за глаза в рамках одной игры. Проблема в том, что к этим контентсам привязан весь workflow - их смотрят компиляторы, движок, при этом вы даже можете толком не знать какие биты используются тулзами и для чего. К тому же они запечены уже в готовой геометрии.
Подобные на первый взгляд простейшие вещи вычищать из среды невероятно сложно, у меня это заняло почти пять лет - начиная с 2019-го года. Правда надо признать, что я не особенно торопился на этот счёт.
Итак, как же мне удалось от них избавиться?
Для утилит введено понятие контентсов компилятора - их всего-навсего три шутки: небо, солид и ликвид. Большего компиляторам и не требуется, им вполне достаточно такого абстрактного разделения.
Движок знает ровно один контент - CONTENTS_SOLID. Я бы конечно мог избавиться и от него, но тогда бы получилось как в вашей любимой Unity - по дефолту вся геометрия не коллидит и игрок бы вываливался с уровня почём зря. Не думаю, что кому-то бы понравилась такая "гибкость".
Так что один бит захардкоден и навряд ли вызовет неудобства, а остальные 31 бит - полностью в вашем распоряжении.
Вы можете создавать разные типы воды, окон, решёток, вообщем всё что угодно для фильтрации коллизии.
Да, самое главное забыл сказать - контентсы можно переопределять не перекомпилируя уровни, модели и всё прочее. Единственное что вам понадобится пересобрать - это игровой код виртуальной машины, т.к. эти контентсы там используются в качестве маски для трассировки. Ну оно и понятно. А вот ресурсы трогать не нужно, т.к. биты контентсов существуют только в материалах и каждый раз загружаются из текстовых скриптов. В форматах моделей они не записаны.
Единственное, повторюсь нельзя переопределять CONTENTS_SOLID.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Ты наверное мои посты не читаешь.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
XashNT же уже умеет овербрайты?
Crystallize умеет всё что можно сделать в шейдерах.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ещё в самом начале разработки, в 2019-м году я принял концепцию организации рендерера, которую можно условно назвать "всё - модель".
Это значит что любой набор полигонов, объединённый по какому-то признаку наследуется от абстрактного интерфейса модели. И каждый такой набор обязан так же иметь игровой объект, к которому он привязан.
На первый взгляд концепция может показаться спорной, тем не менее она себя отлично зарекомендовала. Говорю это сейчас, когда наконец-то достигнут полный функционал рендеринга из первой халфы - модель мира, статичные движущиеся модели, модели со скелетной анимацией, модели с повертексной анимацией, декали на статичной геометрии, декали на моделях со скелетной анимацией, спрайты, лучи, партикли и трейсеры.
В этом наборе не хватает только декалей на моделях с вершинной анимацией и декалей на спрайтах, но как вы понимаете - оно не сильно нужно, я это отложил на потом. Потому что практикуемый подход позволяет их добавить в любой момент не затрагивая остальные участки кода.
Каждая модель может использовать информацию из мировой модели для эффективного отсечения видимости, подавая на вход тесселятора список из видимых поверхностей. Поверхностей в каждой модели может быть сколько угодно. У поверхности есть материал (ссылка на систему материалов), объем для отсечения по фрустуму и для поиска в трёхмерном пространстве (например пересчение с источниками света), некоторый уникальный набор данных - как правило связанный с освещением, индексы источников света, которые взаимодействуют с данной поверхностью, и ссылка на VBO, хранящий её геометрию. Ссылка на шейдер находится уже внутри материала и задаётся пользователем. Там же находятся GL-стейты и юниформы, связанные с реальными данными. Данные могут быть как встроенными (например текущее время или позиция объекта), так и определёнными пользователем. Ну да я об этом уже не раз писал.
Сам тесселятор представляет из себя очень простой механизм. Он состоит из двух списков. Первый список - это непрозрачные поверхности, второй, соответственно прозрачные. Одна и та же модель может эмитить свои поверхности в разные списки в зависимости от того, какие режимы отображения выставлены в материале пользователем. Дополнительно полупрозрачные поверхности ещё сортируются по дальности от наблюдателя. Ну а сама отрисовка - полностью абстрактный механизм, это просто цикл перебора списка поданых на растеризацию поверхностей, бинд материала (включает в себя бинд шейдера, текстурных юнитов, юниформов и выставление GL-стейтов) и вызов VBO на отрисовку.
То есть этот механизм един для абсолютно всех поверхностей и не содержит никаких условий для каких-то особых типов рендеринга.
Собственно это тот самый момент, который меня больше всего нервировал в старом ксаше - невозможность формирования абстрактного списка для отрисовки. Потому что у нас были отдельные вызовы для отрисовки партиклей, лучей, декалей, была проблема с полупрозрачными мешами внутри студиомоделей, наконец у каждого типа моделей были свои собственные, непересекающиеся наборы юниформов.
Всё это было крайне тяжело поддерживать и расширять. Теперь же это абстрактный универсальный конвейер, где любой тип модели имеет полный набор возможностей. То есть мы можем дать освещение лучам, партиклям. трейсерам, если нам вдруг по смыслу это понадобится.
Ну скажем партикли будут не искрами, а пылинками - разумеется в таком случае им понадобится нормальное освещение. Да и туман наложить неплохо бы. Теперь всё это полностью контролируется из текстовых описаний самих материалов - лезть в ядро движка нет никакой нужды.
Из недописанного в рендерере осталась только мультипроходность (зеркала, порталы, мониторы, тени) и пост-процессы. Точнее говоря, сама мультипроходность в рендерер заложена ещё на этапе его проектирования, но надо дописать сами проходы. Просто пока не возникало такой необходимости.
По здравом размышлении я принял решение не использовать отложенный рендеринг, т.к. в моём случае он не даёт никаких преимуществ. Форвард прекрасно справляется. Но это отдельная тема, о которой я расскажу в другой раз.
Добавлено 18-06-2024 в 12:36:
Ещё хотелось бы отметить, что в переносе старых эффектов немаловажную роль играет тот факт, что теперь весь этот антураж должен быть аппаратно ускорен. В смысле - записан в VBO и трансформирован на GPU. Иначе полностью теряется смысл в разработке движка на "модерновой" версии OpenGL. Модерновой версией, насколько я помню начали называть API 3.0 и выше. Когда уже официально запретили использование glBegin.
Правда стоит отметить что на данный момент XashNT всё же использует бегины - для рендеринга консоли и сетевого графика. Но вся внутриигровая ситуация и HUD - реализованы на VBO. Постепенно я полностью откажусь от вызовов glBegin и тогда можно будет переключиться на Core-context, что по идее положительно скажется на работе с видеокартами от Intel (хотя XashNT на них и сейчас довольно неплохо работает).
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Временная зона GMT. Текущее время 20:08. | Страницы (255): « Первая ... « 242 243 244 245 [246] 247 248 249 250 » ... Последняя » Показать все 3825 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024