HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть II
Страницы (32): « Первая ... « 8 9 10 11 [12] 13 14 15 16 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Unit
Частый гость

Группа: Неопытный
Дата регистрации: Jun 2024
Проживает: Краснодарский край
Сообщений: 70

Рейтинг



Цитата:
FiEctro писал:
Всем кому показывал пример, говорили что это АнгелСкрипт


Если Вам показать AngelScript Вы скажите что это C++

Сообщить модератору | IP: Записан
Сообщение: 221744

Старое сообщение 22-08-2024 08:55
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33010
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Кому эта квака сегодня нужна?

Всем нужна. Не зря же ремастеры делают.

Цитата:
FiEctro писал:
Сейчас даже в мобильных играх объектов в десятки раз больше

Давай конкретику всё же. Одно дело нарисовать десять тысяч спрайтовых монстров и совсем другое - сотню аликс, в каждой по сто тысяч полигонов.

Цитата:
FiEctro писал:
Сколько объектов в Сталкере? Или например в локации уровня GTA VC ?

Так я спрашивал - мне так толком никто и не ответил. Но там естественно сделаны допущения - аномалии это один изолированный класс, айтемы - другой, монстры - третий. Если так делать, то конечно можно много чего соптимизировать.
Цитата:
FiEctro писал:
Ты автора Годота особо не цитируй

Я же написал "из забавного". Не по глазам?

Цитата:
FiEctro писал:
Да и там это больше архитектурная проблема, чем идеалогическая.

С этого момента пожалуйста поподробнее. Про Годот я знаю только то, что он вылупился из 2D движка.

Цитата:
FiEctro писал:
Мы как то ради интереса забивали мешрендер треугольниками

Не путай полигоны с сущностями. В ксаше тоже можно засадить поляну травой до горизонта и это израсходует ноль энтить.

Цитата:
FiEctro писал:
Всем кому показывал пример, говорили что это АнгелСкрипт

Ну значит то, что им показывал не несло Шото-специфичных вещей, которые невозможны больше нигде. Тот же dynamic_call или virtual_new.

Добавлено 22-08-2024 в 13:27:

Цитата:
Unit писал:
Если Вам показать AngelScript Вы скажите что это C++

Но на АнгелСкрипт нельзя впрямую портировать C++ код, а на Shot можно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 221746

Старое сообщение 22-08-2024 10:27
-
Unit
Частый гость

Группа: Неопытный
Дата регистрации: Jun 2024
Проживает: Краснодарский край
Сообщений: 70

Рейтинг



Цитата:
Дядя Миша писал:
Так я спрашивал - мне так толком никто и не ответил.

Если интересно касаемо GTA VC, там используют пулы объектов, поделены на разные типы. Рокстарвская аналогия entity'ям в то время это 450 на пул, для машин и зданий свои пулы, около 64 машин на пул и ~5000 зданий и прочей статики. Для консолей лимиты уменьшались.

Сообщить модератору | IP: Записан
Сообщение: 221747

Старое сообщение 22-08-2024 10:51
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13497
Возраст: 33

Рейтинг



Цитата:
Unit писал:
Если Вам показать AngelScript Вы скажите что это C++


Пожалуйста, давай уже без этой клоунады.

Цитата:
Дядя Миша писал:
Давай конкретику всё же. Одно дело нарисовать десять тысяч спрайтовых монстров и совсем другое - сотню аликс, в каждой по сто тысяч полигонов.


Регдоллы теже, целая куча связаных между собой костей, колайдеров и ригидбодей. Ну и много их уместится с лимитом 100 объектов?

Цитата:
Дядя Миша писал:
Так я спрашивал - мне так толком никто и не ответил. Но там естественно сделаны допущения - аномалии это один изолированный класс, айтемы - другой, монстры - третий. Если так делать, то конечно можно много чего соптимизировать.


Так может сделать тоже какую то возможность разбивать объекты по категориям/слоям?

Цитата:
Дядя Миша писал:
С этого момента пожалуйста поподробнее. Про Годот я знаю только то, что он вылупился из 2D движка.


https://www.reddit.com/r/godot/comm...cture_in_godot/

Я сам только знаю что мне говорили. Впрочем, ECS фреймворки на Годот всё же есть
https://github.com/GodotECS/godex

Но к слову на ютубе находил сравнение производительности Юнити и Годота, и Юнити всё же был быстрее, несмотря на все красивые статьи о том что так красивее и оптимизированее вроде этой:
https://godotengine.org/article/why...ed-game-engine/

Думаю лучше спросить здесь кого то кто работает непосредственно с этим движком. Они больше в курсе того срача с ECS.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 22-08-2024 в 11:33

Сообщить модератору | IP: Записан
Сообщение: 221749

Старое сообщение 22-08-2024 11:28
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33010
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Unit писал:
Если интересно касаемо GTA VC, там используют пулы объектов, поделены на разные типы

Так вот мне очень не хочется специализировать объекты. Потому что сразу пойдет заточка под конкретный сценарий.

Цитата:
FiEctro писал:
Так может сделать тоже какую то возможность разбивать объекты по категориям/слоям?

Не нравится мне эта затея. Ровно по той же причине, по которой объекты в голдсорсе рендерились группами, вследствие чего их невозможно было отсортировать по дальности для полупрозрачных объектов. Здесь будет ровно такая же ситуация - когда какие-то объекты из одной группы должны будут обновляться перед объектами из другой группы, но это будет физически невозможно, т.к. порядок их обновления уже жёстко задан и изменить его нельзя никоим образом. Да и слои эти - точно такая же абстракция, которая ограничивает функционал на ровном месте.

Добавлено 22-08-2024 в 15:33:

В утешение могу вам сказать, что даже несмотря на тот факт, что у меня физика полностью реализована на Шоте, в самой высоконагруженной сцене из первого Quake (интермиссия после победы над Чтоном, когда спавнятся куски шамблеров с кровищей в большом кол-ве), на Ксаше эта сцена по фпс проседает намного меньше чем во всех известных мне форках первого Квейка. На моей GTX650 там идёт проседание порядка до 180 фпс, на ксаше - до 500. Но всё равно это ненадёжный критерий, т.к. производительность падает экспоненциально, а не линейно.
Но у меня есть ещё в запасе одна интересная идея, которая на первый взгляд не имеет минусов, сплошные плюсы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 221750

Старое сообщение 22-08-2024 12:33
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13497
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
В утешение могу вам сказать, что даже несмотря на тот факт, что у меня физика полностью реализована на Шоте, в самой высоконагруженной сцене из первого Quake (интермиссия после победы над Чтоном, когда спавнятся куски шамблеров с кровищей в большом кол-ве), на Ксаше эта сцена по фпс проседает намного меньше чем во всех известных мне форках первого Квейка. На моей GTX650 там идёт проседание порядка до 180 фпс, на ксаше - до 500. Но всё равно это ненадёжный критерий, т.к. производительность падает экспоненциально, а не линейно.


А разве в кваке были ригидбоди? Там вообще физика какая то сильно упрощенная. А рейкасты, бокс касты, сфер касты, пересечения и т.д. тоже на шоте?

Цитата:
Дядя Миша писал:
Здесь будет ровно такая же ситуация - когда какие-то объекты из одной группы должны будут обновляться перед объектами из другой группы, но это будет физически невозможно, т.к. порядок их обновления уже жёстко задан и изменить его нельзя никоим образом. Да и слои эти - точно такая же абстракция, которая ограничивает функционал на ровном месте.


Не очень понял, у тебя рендер пайплайн как устроен?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 22-08-2024 в 12:51

Сообщить модератору | IP: Записан
Сообщение: 221751

Старое сообщение 22-08-2024 12:37
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33010
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
А рейкасты, бокс касты, сфер касты, пересечения и т.д. тоже на шоте?

Сам обсчёт столкновений на С++, но перебор объектов и физика - на Шоте.
Мне всегда хотелось это реализовать на скриптовом языке, чего больше никто не делает в здравом уме. Ежели это запихать обратно в движок, то будет +1000 буст к производительности. Но так не интересно.

Цитата:
FiEctro писал:
Не очень понял, у тебя рендер пайплайн как устроен?

Два списка из прозрачных и непрозрачных материалов. Там мешы идут из всех типов энтить и не только энтить. Но при этом сортировка полупрозрачных мешей сквозная для всех примитивов. Это именно то, чего мне так не хватало в той же P2 и насколько я знаю, этого там так никто и не реализовал. Ну потому что вот такие вот на первый взгляд простейшие вещи в реализации дико сложные. Точнее сама формулировка задания простая.
Аналогично как - наложить лайтмапу на произвольную геометрию. Вроде звучит просто, а пока сделаешь, так запотеешь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 221752

Старое сообщение 22-08-2024 12:59
-
Unit
Частый гость

Группа: Неопытный
Дата регистрации: Jun 2024
Проживает: Краснодарский край
Сообщений: 70

Рейтинг



Дядя Миша
А что используете G-Buffer или прямой рендеринг?

Сообщить модератору | IP: Записан
Сообщение: 221753

Старое сообщение 22-08-2024 13:12
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33010
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Unit писал:
А что используете G-Buffer или прямой рендеринг?

Система материалов не диктует использование какой-то одной технологии.
Можно отложку, можно директ, можно прямо на скриптах реализовать оба типа рендера и переключать их на лету. На данный момент пока что реализован однопроходный форвард.

ЗЫ. у нас тут за годы общения сформировался стиль обращения на "ты", так что не стесняйся.

Добавлено 22-08-2024 в 22:43:

За г-буффер, если интересно, могу подробнее рассказать.
Идея отложки базируется на двух очень стрёмных допущениях:

1. все динамические источники света имеют линейное затухание
2. по возможности это должны быть источники, которые не перекрывают друг друга и занимают как можно меньшую площадь на экране.

Если взять любую демку deferred мы с большой долей вероятности увидим там сотни маленьких лампочек и всё это не тормозит даже. Неплохо. Осталось только применить к реальной игровой ситуации. Мало того, что я себе слабо представляю ситуацию в которой понадобится такая куча маленьких источников, так ещё не будем забывать про тени, которые гарантированно убьют весь перф ещё до начала рендеринга основного кадра. То есть отложка это про кучу маленьких источников света без теней. У меня движок исторически близок к играм, так или иначе имеющим связь с ИД Течем. В частности той же Халфы. А в халфе у нас что? Квадратичное затухание света. Это значит любой из источников гарантированно светит через весь уровень. Если рендерить эти источники так, как предлагается в классическом пейпере - т.е. проецировать окружность лайта на плоскость экрана, у нас получается такой чудовищный овердроу, что форвард отдыхает просто.
Поэтому лайты с квадратичным затуханием придётся выбросить сразу.
Но это неспортивно. Я рассудил иначе - большинство лайтов всё равно статично и своего места не покидает. Значит мы можем прямо в компиляторе рассчитать визлайт-матрицу (название моё), пробросить биты видимости лайтов в G-буффер и для каждого экранного пикселя выполнить цикл освещения теми или иными лайтами. Сами лайты записаны во флоат-текстуру, а в G-буффере в одном из слоёв хранятся их номера.
Как я быстро убедился - даже на довольно тёмных картах из P2 Savior мне зачастую не хватало восьми лайтов на пиксель. Т.е. это два RGBA-слоя с индексами лайтов. И отсюда же вытекает ограничение на 255 источников света всего. Конечно в дальнейшем можно было бы использовать 16-битные текстуры, но мне для моих исследований хватило и восьмибитных, благо на картах паранои кол-ва лампочек на уровне редко когда превышает сотню (а вот на один сурфейс иногда может светить до десятка).
Подобный подход полностью решил проблему с овердро, фпс стал приемлимым. Второй момент, который меня интерисовал - можно ли как-нибудь обойтись без карт теней. Разумеется я мог бы их сделать тоже, но так неинтересно. К тому же в первой кваке был BSP, у которого все поверхности лежали на ноде - готовая ускоряющая структура для рейтрейсера. Я просто сдампил эти ноды и лифы в очередную флоат-текстуру и написал простенький нерекурсивный рейтрейсер. Видеокарты не поддерживают рекурсию. Впрочем у меня всё равно были некоторые проблемы с глубиной стека, но технология прекрасно заработала.
Получилась отложка с рейтрейсинговыми тенями. Результат можно посмотреть в последней версии P2 Savior, поставив консольную переменную gl_deferred в 1.
А теперь самое интересное. Пока я всем этим занимался, я фактически прокидывал номера лайтов из препасса в г-буффер. И тут я спросил себя, а какого чёрта? Зачем мне г-буффер, если я могу посчитать освещение прямо в этом препассе и тут же сохранить финальный цвет в экранный буффер. Именно этот подход я и применил в XashNT. Он всегда рендерит в один проход, но при этом может рисовать сколько угодно динамических источников света. Это не forward+, это чисто моя придумка. Впрочем я полагаю что не я один до этого додумался, просто больше мне это нигде не попадалось.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 221758

Старое сообщение 22-08-2024 19:43
-
Unit
Частый гость

Группа: Неопытный
Дата регистрации: Jun 2024
Проживает: Краснодарский край
Сообщений: 70

Рейтинг



Дядя Миша интересный подход. Я пока курю в G-buffer по гайдам из GitHub (ничего раньше такого не приходилось делать) посмотрю что из этого выйдет.

Вопрос не по теме может, но мне интересно) Как удаётся совмещать основную работу/вид деятельности и работу над движком, это же уйму времени отнимает, или основная деятельность позволяет параллельно работать на движком. У меня несколько часов в день выделяется, за выходные вообще забываю на чем остановился, стараюсь отдыхать от монитора. А тут захожу, читаю, сегодня скриптовая часть готова, через день сеть допилина.

Сообщить модератору | IP: Записан
Сообщение: 221759

Старое сообщение 22-08-2024 22:11
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33010
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Unit писал:
Как удаётся совмещать основную работу/вид деятельности и работу над движком

В прошлой теме уже задавали этот вопрос. У меня сервисный центр по ремонту бытовой техники, пока работы нет - пилю движок.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 221761

Старое сообщение 23-08-2024 05:51
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13497
Возраст: 33

Рейтинг



Цитата:
Unit писал:
Вопрос не по теме может, но мне интересно) Как удаётся совмещать основную работу/вид деятельности и работу над движком, это же уйму времени отнимает, или основная деятельность позволяет параллельно работать на движком. У меня несколько часов в день выделяется, за выходные вообще забываю на чем остановился, стараюсь отдыхать от монитора. А тут захожу, читаю, сегодня скриптовая часть готова, через день сеть допилина.


Надо ещё умудриться не выгореть от этого

Цитата:
Дядя Миша писал:
написал простенький нерекурсивный рейтрейсер. Видеокарты не поддерживают рекурсию. Впрочем у меня всё равно были некоторые проблемы с глубиной стека, но технология прекрасно заработала.
Получилась отложка с рейтрейсинговыми тенями.


Патчтрейсер в ку2 довольно шустро работает, к нему бы деноизер какой нибудь и готовый RTX с красивым освещением и отражениями

https://developer.download.nvidia.c...-in-quake-2.pdf

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 23-08-2024 в 06:58

Сообщить модератору | IP: Записан
Сообщение: 221763

Старое сообщение 23-08-2024 06:40
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33010
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Unit писал:
сегодня скриптовая часть готова, через день сеть допилина.

Язык Shot я писал весь 2022-й год. Сетью уже почти месяц занимаюсь.

Добавлено 23-08-2024 в 09:46:

Про разработку Shot вот такая тема осталась: https://hlfx.ru/forum/showthread.php?s=&threadid=5815

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 221764

Старое сообщение 23-08-2024 06:46
-
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4738
Возраст: 35

Рейтинг



Цитата:
Дядя Миша писал:
Мало того, что я себе слабо представляю ситуацию в которой понадобится такая куча маленьких источников

Декоративные лампочки в коридоре на стене, на уровне потолка, пола, или посередине.

Цитата:
Дядя Миша писал:
Квадратичное затухание света. Это значит любой из источников гарантированно светит через весь уровень.

Падажжи. Квадратичное по определению затухает быстрее линейного. Быстрее затухает только какое-нибудь кубичное. Как ты делаешь вывод что квадратичное светит через весь уровень?

Цитата:
Дядя Миша писал:
Видеокарты не поддерживают рекурсию.

А почему

Сообщить модератору | IP: Записан
Сообщение: 221766

Старое сообщение 23-08-2024 06:59
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33010
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Crystallize писал:
Квадратичное по определению затухает быстрее линейного

Ну оно там не вполне квадратичное. В халфе, как мы помним был этот знаменитный множитель на 10.

C++ Source Code:
intensity = photons * photons * 10;


Цитата:
Crystallize писал:
А почему

Стек очень маленький. А может сама архитектура не рассчитана.
Но CUDA по идее должна поддерживать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | IP: Записан
Сообщение: 221767

Старое сообщение 23-08-2024 07:10
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 15:24. Новая тема    Ответить
Страницы (32): « Первая ... « 8 9 10 11 [12] 13 14 15 16 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть II
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024