HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Страницы (240): « Первая ... « 117 118 119 120 [121] 122 123 124 125 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34510
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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

Выглядит как будто куллинг инвертирован.

__________________

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

Старое сообщение 29-10-2020 15:55
-
 Дядя Миша
racing for fish

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

Рейтинг



На кордоне - десять тысяч кусочков моделей. Я в этой карте собрал около трёх тысяч.

Вот еще какая мысль мне в голову пришла, кстати Ксер и тебе тоже советую поэкспериментировать. BSP при построении, проверяет размер ноды на максимально допустимый. И если он превышает 1024 юнита, то делает дополнительный разруб. Но как она его делает?! Просто берёт плоскость с этим отступом в 1024 юнита. А что если эту часть дерева строить по классическому AABB-разбиению? Тогда у нас уровень до определённых размеров будет делиться точно поровну. В моём понимании это хорошо способствует пространственной балансировке дерева и выравнивает время доступа к нему.

C++ Source Code:
1
int SelectPartition( tree_t *tree, node_t *node, bface_t *list )
2
{
3
  if( tree->blocksize > 0 )
4
  {
5
    dvec3	halfSize = dvec3( node->bounds[1] - node->bounds[0] ) * 0.5;
6
    dvec3	normal;
7
    double	dist;
8
#if 0
9
    if( halfSize.x > tree->blocksize || halfSize.y > tree->blocksize || halfSize.z > tree->blocksize )
10
    {
11
      int	axis;
12
 
13
      if( halfSize.x >= halfSize.y && halfSize.x >= halfSize.z )
14
        axis = PLANE_X;
15
      else if( halfSize.y >= halfSize.x && halfSize.y >= halfSize.z )
16
        axis = PLANE_Y;
17
      else axis	= PLANE_Z;
18
 
19
      normal = dvec3( 0.0 );
20
      normal[axis] = 1.0;
21
      dist = ( node->bounds[1][axis] + node->bounds[0][axis] ) * 0.5;
22
 
23
      return FindHashPlane( dplane( normal, dist ));
24
    }
25
#else
26
    // if it is crossing a 1k block boundary, force a split
27
      for( int i = 0; i < tree->blockdimensions; i++ )
28
      {
29
        if( halfSize[i] > tree->blocksize )
30
          dist = tree->blocksize * ( floor( ( node->bounds[0][i] + halfSize[i] ) / tree->blocksize ) + 1.0 );
31
        else dist = tree->blocksize * ( floor( node->bounds[0][i] / tree->blocksize ) + 1.0 );
32
 
33
      if( dist > ( node->bounds[0][i] + 1.0 ) && dist < ( node->bounds[1][i] - 1.0 ))
34
      {
35
        normal = dvec3( 0.0 );
36
        normal[i] = 1.0;
37
        return FindHashPlane( dplane( normal, dist ));
38
      }
39
    }
40
#endif
41
  }
42
 
43
  if( tree->optimized )
44
    return SelectPartitionVL( node, list );
45
  return SelectPartitionQ3( node, list );
46
}

У меня сейчас просто сурфейсы линейно тестируются на попадание во фрустум, но я верну дерево и сравню оба варианта на производительность.

Добавлено 31-10-2020 в 11:53:

Кстати в том же XRay есть "разбиение" пространства на отдельные куски. Разбиение фейковое, поскольку террайн и так уже тесселирован, оно просто группирует куски по пространственным квадратам, не делаю никаких дополнительных разрезов. Именно поэтому на скриншотах вы видите дыры с неровными краями.

Добавлено 31-10-2020 в 11:55:

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

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 31-10-2020 08:55
-
KorteZZ
Lambda

Дата регистрации: Oct 2009
Проживает: Mongolia
Сообщений: 377
Возраст: 36

Рейтинг



А что насчет лимитов всяких? Не получится ли так, что если чел захочет сделать опенворлд, он уткнется тупо в лимиты чего-нибудь и у него получится в лучшем случае просто пустой мир?

__________________

Killing Floor: Horzine Outbreak

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

Старое сообщение 03-11-2020 07:48
- За что?
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1006
Возраст: 31

Рейтинг



У меня такой же вопрос. В ксаше я обратил внимание, что если поставить 30 солдат модельками как env_static, фпс не проседает, а если 30 реальных - то сильно падает. Это из-за их кода или бсп-дерева? Не совсем понимаю, как это работает.

__________________
Мой мод на Xash

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

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

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

Рейтинг



KorteZZ лимитов в новом ксаше особо нету. Лимиты только в аппаратном обеспечении.

Цитата:
Aynekko писал:
Это из-за их кода или бсп-дерева?

поиск по большому дереву, да. Писал об этом.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 03-11-2020 10:41
-
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



Дядя Миша
Есть планы по выносу AI в отдельный поток?

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

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

Старое сообщение 03-11-2020 10:53
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Есть планы по оптимизации, а не по выносу.

Добавлено 03-11-2020 в 16:04:

Мне сейчас надо определиться с типом коллизии, вот оно что.
Представлять каждый треугольник в виде плоскости со скосами, довольно эффективно в плане скорости работы, но занимает чудовищно много места.
На какой-нибудь ЧАЭС легко может быть 10-15 миллионов плоскостей.
А ведь она по современным меркам довольно таки лоу-поли.

Впрочем там вылезает еще одна проблемка. У видеокарт оказывается, существует лимит на максимальный размер VBO - обычно миллион вертексов.
Самое поганое, что и на индексы точно такой же лимит - 1 миллион.
Это немного нелогично, к тому же превышение лимита далеко не всегда приводит к каким-то последствиям, на моих карточках.
Так что придётся еще и геометрию разбивать на небольшие батчи.
Наверное сделаю куски по 65 киловертексов с локальными оффсетами, чёб индексы хранить в 16-битном диапазоне.

Но повторюсь, главная задача, это определиться с коллизией. Коллизия будет по треугольникам, но надо решить с какими фигурами. Можно сделать просто triangle vs bbox. Можно как в третьем дууме - набирать произвольные простенькие фигуры из конечного числа вертексов - обычно 32-64. В том же физиксе лимит на активное тело - 256 вертексов, но как правило это даже избыточно.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 03-11-2020 13:04
-
kotar.sys
Новичок

Дата регистрации: Oct 2020
Проживает: На дне морском
Сообщений: 14
Возраст: 34

Рейтинг



А в сталкере разве нет упрощенной модели геометрии для коллизии? Может строить/подгружать из 3д пакета её в компиляторе моделей, как это делает сорс?

__________________
Ржака

Отредактировано kotar.sys 05-11-2020 в 06:50

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

Старое сообщение 05-11-2020 06:48
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
kotar.sys писал:
А в сталкере разве нет упрощенной модели геометрии для коллизии?

Есть, да. Но там как. Вот допустим ёлки стоят на поляне. Понятное, дело, ёлка одна, просто рисуется много раз. А вот в коллизии, все эти ёлки продублированы, ну и не только они, конечно.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-11-2020 12:04
-
kotar.sys
Новичок

Дата регистрации: Oct 2020
Проживает: На дне морском
Сообщений: 14
Возраст: 34

Рейтинг



Так почему бы не использовать сталкеровские методы обработки коллизии для сталкеровских моделей? Они тоже медленные?

__________________
Ржака

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

Старое сообщение 05-11-2020 12:16
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Да нет никаких "сталкеровских" методов.

Загрузил недостающие части ландшафта. Обратите внимание на поликаунт.



На машинках почему-то текстуры съехали, на всех. Но я пока не разбирался.

Ну вот, прекрасная сцена для тестирования и оптимизации отрисовки и коллизии. Ну и для оптимального хранения данных тоже. Разумеется, я потом буду тестировать и другие сцены, вероятно и из эксодуса, надо получить вменяемую производительность.
Но тут конечно без вариантов - точного ответа нет. Только тестировать и сравнивать. Лоды проверю, размеры батчей, оптимальные размеры VBO, помощь дерева в отрисовке, и так далее.
Это вот как раз такой тип сцены, что нихрена не спрячешь и не укроешь, всё как на ладони.

Добавлено 05-11-2020 в 18:35:

По сути с этой сценой даже мой компилятор не справляется - ему не хватает памяти, выручает только ключ /3Gb в boot.ini
Предвидя советы "ну почему бы не сделать как в сталкере", напоминаю, что новый движок должен уметь как активно использовать полностью брашевые карты, так и полностью полигональные. Т.е. задачка несколько сложнее, чем представляется на первый взгляд.
Нет, не в оптимизации, конечно дело. А в выборе наилучших методов.
А чтобы что-то выбрать, надо многое протестить. Это время.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-11-2020 15:35
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



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

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

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

Старое сообщение 05-11-2020 16:29
- За что?
Cybermax
Житель форума

Дата регистрации: May 2006
Проживает: &#12644;
Сообщений: 5126

Рейтинг



Мне уже больше нравится то что на скриншутах, чем в оригинале. Интересно что будет с эксодусом, учитывая что не играл в Метро.

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

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

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

Рейтинг



Цитата:
Ku2zoff писал:
Вот пейсатели форков X-Ray кипятком обоссутся, если у тебя получится показать Кордон со всеми деталями на полной динамике с фпс выше, чем выдают их форки на твоей видекарте

X-Ray очень хорошо оптимизирован. Но можно еще лучше, т.к. он точился под преведущее поколение карточек.

Цитата:
Cybermax писал:
Мне уже больше нравится то что на скриншутах, чем в оригинале

без лайтмап-то?

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 05-11-2020 20:50
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Почему коллизия по треугольникам? Ты хочешь строить какую-то единую структуру для всей карты со всеми елками?

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

Старое сообщение 06-11-2020 01:04
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 01:46. Новая тема    Ответить
Страницы (240): « Первая ... « 117 118 119 120 [121] 122 123 124 125 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть I
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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