HLFX.Ru Forum Страницы (255): [1] 2 3 4 5 » ... Последняя »
Показать все 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)


Отправлено Дядя Миша 03-07-2019 в 11:44:

XashNT: блог разработчика

Разработка движка так или иначе носит характер ключевых звеньев, цепляющихся одно за другое. Одна из фундаментальнейших вещей это организация уровня. Всё остальное так или иначе строится вокруг нее. И от этого естественно вплотную зависит конечный результат. Посмотрим. У меня уже был неудачный опыт в 2015-м году, но ведь на тот момент я во всём этом разбирался гораздо хуже. Это вторая итерация, задача имеет следующий вид:
1. построить формат уровня, отвечающий современным требованиям. То есть как минимум он должен спокойно переваривать детализацию уровня Metro Exodus, ну или что-то в этом духе. Но при этом уметь компилировать и старые-добрые карты, типа ad_sepulcher. Вообщем необходимо достигнуть баланса между брашами и моделями, чтобы каждый для себя мог выбрать оптимальный способ построения левелов. Кому-то нравится делать уровни моделями? Пожалуйста, из брашей будут использоваться только триггеры и водичка. Ну и скайбокс конечно. Нравится кубать брашами - аналогично нет проблем. То есть вот такое на первый взгляд противоречивое требование. Это задел на потенциальное расширение аудитории движка в будущем.
2. Компиляция должна проходить быстро. Чтобы как минимум избежать справедливых упрёков в том, что иные движки вообще начисто её лишены. Сами понимаете если у нас будут уровни, где 5-6 миллионов полигонов в кадре, тут уже старые методы не конают. И уж конечно ни в коем случае не ждать пока лайтмаппер неделю освещает уровни как в Сталкере, я почему-то подозреваю, что в Метро от лайтмап отказались именно из-за калечной запекалки. Никому не охота ждать неделю, например. И кстати это одна из причин, по которой сталкера так долго делали. Ну не единственная конечно. Но компиляция здорово крадёт время у разработчиков.
Ну для начала я полагаю достаточно, поскольку это довольно сложные требования. Посмотрим что из этого получится, в этой теме я буду писать о проделанной работе, а вы будете говорить "автор молодец за нее".

__________________
My Projects: download page

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

Цитата:

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


Отправлено Дядя Миша 04-07-2019 в 13:30:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 04-07-2019 в 14:31:

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

Движок будет на Java, как Майнкрафт?


Отправлено XaeroX 04-07-2019 в 16:23:

Crystallize
Ты действительно этого хочешь?

__________________

xaerox on Vivino


Отправлено FiEctro 04-07-2019 в 16:31:

Ну вот, а говорите я ваши движки обсираю. Сразу видно прогресс, а то так бы до пенсии на кубсп и сидели.

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


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

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


Могу немного подкинуть идей. В том же унити есть такая фигня как сцена, это просто описание где и какие игровые объекты находятся в 3д пространстве, и с каким настройками. Их можно загружать/выгружать как тебе удобно.

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


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

Цитата:
FiEctro писал:
а не пересобирать карту каждый раз чтобы передвинуть какой нибудь патч трек.

но для этого и не надо пересобирать карту...

Цитата:
FiEctro писал:
это просто описание где и какие игровые объекты находятся в 3д пространстве, и с каким настройками

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено XaeroX 04-07-2019 в 18:21:

Цитата:
FiEctro писал:
Сразу видно прогресс, а то так бы до пенсии на кубсп и сидели

Ты сильно не переживай, в Волатиле такого "прогресса" не будет. Убивать Юнити и уеч придётся кому-то другому.
Цитата:
Дядя Миша писал:
но для этого и не надо пересобирать карту...

Только не рассказывай ему про -onlyents.

__________________

xaerox on Vivino


Отправлено FiEctro 05-07-2019 в 05:50:

Цитата:
XaeroX писал:
Только не рассказывай ему про -onlyents.


Как бы это тоже компилятор делает

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


Отправлено nemyax 05-07-2019 в 21:28:

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

Какая же?


Отправлено FiEctro 06-07-2019 в 07:54:

nemyax
Наши цели ясны, задачи определены, за работу, товарищи!

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


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

В какой-то мере вышеозвученная идея реализована в том же даркплейсе, но поскольку он на чистом Си, там конечно нет никаких виртуальных методов, там указатели на функции. Идея в том, чтобы не просто сделать такие загрузчики, а чтобы разместить в наследуемых классах абсолютно все методы взаимодействия с загруженными ресурсами, выведя за скобки лишь описания текстур и материалов. То есть вот у нас стандартные методы, LoadModel, DrawModel, CollideModel и через них осуществляется взаимодействие. А внутри может быть как BSP, там и студиомоделька. Што немаловажно, подобный подход, позволит, например иметь в качестве мира эту студиомодель. Или загружать одновременно следующий уровень, не выгружая преведущего, а в момент чейджлевела, просто поменять местами указатели. Ну и разумеется зоопарк форматов. Но повторюсь, зоопарк мне больше нужен для изолированного тестирования новых фичей, чтобы не вносить изменения в уже отлаженную ветку одного формата, а сделать рядом аналогичный и спокойно сравнивать регрессии. Есть у подхода и два минуса, точнее даже не совсем минусы, а потенциальные UB. Во первых как это подружить с кэшированной информацией для каждого эдикта, во вторых - отрисовка полупрозрачных объектов, которая как известно требует сортировки. Впрочем эти две проблемы остаются в любом случае, независимо от архитектуры.

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 20-07-2019 в 09:35:

На данный момент я так понимаю, XashNT еще только в стадии проектирования?


Отправлено Дядя Миша 20-07-2019 в 09:43:

На данный момент XashNT под угрозой срыва. Буквально час назад выяснилось, что на умирающем винте всё-таки повредились бэкапы и часть текущих исходников. Бэкапы повреждены с начала февраля, а в исходниках client.h и cl_frame.cpp. Не знаю удастся ли это восстановить. Все три резервные копии повреждены, архивы не восстанавливаются.

Добавлено 20-07-2019 в 12:43:

Но покрайней мере остальные части движка компилируются, только ядро не собирается.

__________________
My Projects: download page

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

Цитата:

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


Отправлено nemyax 20-07-2019 в 11:42:

Дядя Миша
Понятно, что поздняк и советы постороннего, но попробовал бы бакапиться на bitbucket-е. Там есть приватные репозитории забесплатно. Я пользуюсь, нравится.


Отправлено Дядя Миша 20-07-2019 в 13:32:

проблема в том, что бэкапов минимум шесть источников и абсолютно повезде битые архивы. И как битые - наглухо. Они солидные и без информации для восстановления, когда-то очень давно, в 2007-м году, я поленился прописать этот ключик. Я пытаюсь спасти эти архивы с абсолютно любого диска и абсолютно везде они битые. Одному богу известно когда это вообще началось, ведь диск умирает достаточно давно. Но есть и хорошая новость - client.h и cl_frame.cpp всё таки удалось спасти в целости со старого диска с рабочего компьютера с отформатированного раздела. Таким образом я восстановил работоспособность актуальной копии исходников. А плохая новость заключается в том, что потеряны абсолютно все бэкапы новый ветки, начиная с февраля этого года.

Добавлено 20-07-2019 в 16:32:

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

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 22:59. Страницы (255): [1] 2 3 4 5 » ... Последняя »
Показать все 3825 сообщений этой темы на одной странице

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