HLFX.Ru Forum Страницы (255): « Первая ... « 111 112 113 114 [115] 116 117 118 119 » ... Последняя »
Показать все 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)


Отправлено Дядя Миша 04-08-2020 в 17:34:

Вот что я хотел отметить. Когда только-только начинаешь программировать - никаких проверок ни на что не делаешь. Ессно оно вылетает при каждом удобном случае. Когда ты уже набрался достаточно опыта - лепишь эти чёртовы проверки везде, даже там где по смыслу они не особо нужны. И тем самым просто загоняешь проблему еще глубже. Чтобы её потом было невозможно отдебажить. По хорошему код должен работать таким образом, чтобы не допускать появления невалидных данных в принципе.
А если допустил, значит это нештатная ситуация. Поэтому если где-то вылетает - не надо там ставить проверку. Надо разобраться как там вообще появились невалидные данные. Т.е. ошибка где-то вообще в другом месте.

__________________
My Projects: download page

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

Цитата:

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


Отправлено FiEctro 04-08-2020 в 18:13:

Дядя Миша
Ты же сам понимаешь что не бывает идеальных алгоритмов. Везде приходится идти на уступки и компромисы. С теми же развертками, какой то метод работает в одних случаях лучше, а какой то в других лучше чем этот.

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


Отправлено Government-Man 04-08-2020 в 18:53:

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


А как ты проверишь, что код не допускает появления невалидных данных?


Отправлено Дядя Миша 04-08-2020 в 19:16:

Цитата:
Government-Man писал:
А как ты проверишь, что код не допускает появления невалидных данных?

в основном - прецендентным образом. 90% прецедентов находятс во время первичной имплементации, тестирования и отладки. Оставшиеся 10% можно ловить всю жизнь.

Цитата:
FiEctro писал:
Ты же сам понимаешь что не бывает идеальных алгоритмов

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

Government-Man в UE4 по прежнему | это DotProduct, а ^ CrossProduct?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Government-Man 04-08-2020 в 21:19:

Цитата:
Дядя Миша писал:
в UE4 по прежнему | это DotProduct, а ^ CrossProduct?


Да, хотя я все-равно предпочитаю использовать FVector::DotProduct() и FVector::CrossProduct() - так нагляднее, хотя и многословнее.


Отправлено Дядя Миша 04-08-2020 в 21:36:

В UE3 не было. Вообще за такое руки надо отрывать. Один из самых мерзких антипаттернов. Вообще в UE3 довольно много антипаттернов, навскидку.
Как в четвертом не знаю, сорцы не дают без регистрации.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Дядя Миша 07-08-2020 в 21:16:

Инстансинг

Ну вот и встала в полный рост проблема. Я еще, когда над параноей работал, прекрасно это понимал, собсно куча одинаковых моделей на карте - это очень плохо во всех отношения. Это не только избыточные данные на диске, но и видеопамяти. Ну хорошо, на грасстесте от силы древеьев мало, ёлочи и той штук 30 не наберётся. А если я захочу ТЛез32? Сосны, поляно, медвед. 65 тысяч килоёлок. Сколько такая карта будет весить?
Одна ёлка занимает полтора мегабайта. Значит карта из уникальных ёлок будет весить 122 гигабайта. То есть вообще не вариант. И да, 65 тысяч килоёлок, это ТЛез16 всего-то навсего. Инстансинг, напомню хранить только то, что отличается. Матрица трансформации и освещение. С динамикой вопросов нет. Как быть со статикой? С лайтмапой на самом деле очень просто - надо завести в описании модели оффсет до реального места в атласе и номер страницы. А вот повертексное так уж не запишешь.
Но я так рассуждаю - если уж на модели есть лайтмапа, то и фиг с ним, с повертексным-то. К тому же возможность встроить модель внутрь карты, никуда не исчезнет, она тоже останется.
Но сделать инстансинг - полдела. Мне еще предстоит работать промежуточный бинарный формат кэшированных моделей. Объясню почему. Генерация лайтмапы, равно как и построение конвексного хулла - весьма небыстрое дело. Есть резон построить это один раз, сохранить в кэш, а в дальнейшем просто брать при компиляции эту модельку из кэша. Ну или вообще хранить снаружи, чтобы не усложнять. Или использовать оба варианта. Возможно что промежуточный бинарный формат станет одним из основных неанимированных форматов мешей для движка. Как оптимальнее - станет понятно уже по факт имплементации.
В принципе в параное есть зачатки такого кэша, она создаёт файлы .TBN и .CLIP видели наверное.

Добавлено 08-08-2020 в 00:11:



Вообще до смешного доходит. makebsp трудился над грасс-тестом две с половиной минуты. Знаете чем он занимался? Генерил текстурные координаты персонально для каждой одинаковой ёлки. В сумме 0.3-0.5 секунд, но и ёлочи тоже порядочно ведь на карте.

dolight строил KD-tree для эффективной трассировки 22 секунды.
А собственно рассчёт освещения длился 13 секунд. Лайтмапа, к слову немаленькая, 1024х1024. Чёрные треугольники - это не артефакты, они просто развернуты в сторону от солнца. Вообщем узкое место совсем не там, где его можно было-бы ожидать.
ЗЫ. лайтмапа пропорциональная, форум не пускает.

Добавлено 08-08-2020 в 00:16:

Вообще видно наглядно, как все старые "проверенные" технологии из 90-х отваливаются, когда речь заходит о получении боле-менее достойной картинки.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Дядя Миша 08-08-2020 в 12:00:

Поскольку разработка движка ведётся примерно так же, как выполняется программный код, это меня приводит порою к очень далёкому отклонению от изначальной цели. Ну скажем, решил я разработать новый формат шрифтов. А где шрифты - там и спрайты. Значит надо переписать худ и меню, чтобы оно использовало новые картинки. Вот и разработка рендерера (эксперименты с динамическим освещением). вполне логично пришла к тому, что неплохо бы иметь референс в качестве лайтмапы, а где лайтмаппер, там и новый формат уровней, а в новом формате уровней неплохо бы предусмотреть возможность embedded-моделей - ну это, чтобы не дублировать их, а хранить одну копию только. Но поскольку для этих моделей неплохо бы предусмотреть какой-то промежуточный кэш, потому что вычисление координат лайтмапы, сглаживание нормалей, рассчёт конвекс-меша, всё это, очевидно занимает какое-то время, лучше сделать кэш. Но какой смысл лепить для кэша какие-то искуственные форматы? Лучше уж сразу его сделать чем-то типа студиомодели, чтобы его можно было использовать и так и эдак. Но всё равно, поскольку этот формат встраивается в карту, логично обеспечить сходность структур, чтобы всё совпадало. И тут я прихожу к мысли, что разделение на уровни и модели - излишне. У них весьма много общего - коллизия, BSP-дерево, сурфейсы, вертексы (у вертексов хранится либо повертексное освещение, либо номера костей), сурфейсы. Ну вообщем отличия только в том, что у BSP есть виздата с порталами, а у моделек - кости. Вполне логично объединить всё это в общий формат с чанками. Получим доброкачественный комбинаторный взрыв, возможности которого по настоящему смогут раскрыть только будущие пользователи движка.
Опять же не придется городить разные просмотровщики для моделей и уровней. Но есть и еще один важный момент - у моделей, как известно есть анимации, а у брашей их нет. Но и тут всё довольно удачно складывается - дело в том, что хранить анимации в модели неудобно и сейчас так уже практически никто не делает. Вместо этого используется банк анимаций. Наделал человек персонажей, к примеру. Они все разные, но у них один и тот же скелет. Какой смысл вкомпиливать эти анимации в каждую модель заново, дублируя? Никакого. Банк анимаций будет строится автоматически, при компиляции каждой новой модельки, если конечно они в нее добавлены. Доступные анимации будут находиться тоже автоматически, по сравнению скелетов. У скелета должны совпасть кол-во костей, имена костей и их иерархия. Ну можно еще конечно позицию-вращение проверять, но это пусть Nemyax скажет, важно это или нет.

Добавлено 08-08-2020 в 15:00:

Мне тут кстати забавная мысль пришла в голову. Для таких объединённых форматов можно будет использовать именованные аттачменты на уровнях, в качестве каких-то точек-локаций, которые не будут жрать эдикты. Ведь очень же часто возникает ситуация, когда надо указать точку, под которую отводится целая энтить. Ну там спавн телепорта или инфо_плеер_старт.
А тут аттачменты. Можно будет сделать сквозной поиск через энтити и такие вот точки в особых случаях. Патч-корнеры всякие так можно хранить.
Или спавнеры тех же эмбеддед моделей, если мы не хотим, чтобы они занимали эдикт. Опять таки энтити в движке доступны весьма условно, а вот такие точки - всегда.

__________________
My Projects: download page

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

Цитата:

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


Отправлено nemyax 08-08-2020 в 17:12:

Цитата:
Дядя Миша писал:
Ну можно еще конечно позицию-вращение проверять, но это пусть Nemyax скажет, важно это или нет.

Важно для чего? Если взять скелеты одинаковой топологии с разными трансформами костей, то анимация для первого конечно развалится на втором. Но это всё равно не повод искусственно запрещать такие переносы.


Отправлено thambs 08-08-2020 в 17:26:

Дядя Миша
Интересно, несколько таких 'моделей' можно будет собрать в единый префаб/сущность/контейнер?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 08-08-2020 в 20:12:

Цитата:
thambs писал:
Интересно, несколько таких 'моделей' можно будет собрать в единый префаб/сущность/контейнер?

Так в том-то и соль! Эта схема идеально ложится на все мои задумки.
Можно такую модель использовать как карту. Можно в карту вкомпилить модели. Единственное условие - они все должны быть статические. Ну оно и понятно - встроенным моделям анимация ни к чему всё же. Нет, ну что-то такое процедурное типа ветра конечно можно будет сделать, но и только.
Через какие-то функции. Впрочем оно везде так, кроме разве что кризиса, где эти йолки реально можно было рубить.

__________________
My Projects: download page

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

Цитата:

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


Отправлено FiEctro 09-08-2020 в 14:08:

Ничего не понял, но напомнило мне то что я описывал тут

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


Отправлено Дядя Миша 10-08-2020 в 13:00:

Слева p2st честный радиосити. Справа - фейковые баксплэши. Яркость немного не совпадает, да, потом подкручу.


Ну это так, навскидку.

__________________
My Projects: download page

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

Цитата:

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


Отправлено thambs 10-08-2020 в 13:06:

Цитата:
фейковые баксплэши

Что это?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено FiEctro 10-08-2020 в 13:08:

Пол и стены пересвечены, а потолок чёрный.

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


Временная зона GMT. Текущее время 02:41. Страницы (255): « Первая ... « 111 112 113 114 [115] 116 117 118 119 » ... Последняя »
Показать все 3825 сообщений этой темы на одной странице

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