HLFX.Ru Forum
Показать все 12 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Декали дублируются или перемещаются при каждом save-restore (https://hlfx.ru/forum/showthread.php?threadid=5780)


Отправлено FreeSlave 15-01-2022 в 12:21:

Декали дублируются или перемещаются при каждом save-restore

Заметил на карте такую проблему - декали, оставленные на полу, в одном месте дублируются, а в другом перемещаются при каждом save-restore. Может, как-то связано с текстурными координатами? Я в тех местах вроде пользовался фишкой джека для бесшовного текстурирования.
На тестовой карте пока не удалось повторить. Кто-нибудь встречался с подобным?

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 15-01-2022 в 12:41:

Сейв-рестор или чейнджлевел?

Добавлено 15-01-2022 в 15:41:

Теоретически такое возможно, поэтому в движке есть специальная проверка:

C++ Source Code:
1
void R_DecalSurface( msurface_t *surf, decalinfo_t *decalinfo )
2
{
3
  // get the texture associated with this surface
4
  mtexinfo_t	*tex = surf->texinfo;
5
  decal_t		*decal = surf->pdecals;
6
  vec4_t		textureU, textureV;
7
  float		s, t, w, h;
8
 
9
  // we in restore mode
10
  if( cls.state == ca_connected || cls.state == ca_validate )
11
  {
12
    // NOTE: we may have the decal on this surface that come from another level.
13
    // check duplicate with same position and texture
14
    while( decal != NULL )
15
    {
16
      if( VectorCompare( decal->position, decalinfo->m_Position ) && decal->texture == decalinfo->m_iTexture )
17
        return; // decal already exists, don't place it again
18
      decal = decal->pnext;
19
    }
20
  }

Если декаль с той же текстурой и той же позицией уже есть в списке, то дубликат игнорируется. Но если она всё же заспавнилась, то заметить её будет не так-то просто.

__________________
My Projects: download page

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

Цитата:

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


Отправлено FreeSlave 15-01-2022 в 12:46:

Цитата:
Дядя Миша писал:
Сейв-рестор или чейнджлевел?


И при save-restore и при переходе на следующую карту и возвращении назад.

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


Позиция заметно меняется.



__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 15-01-2022 в 13:20:

Дубликат может сдвинуться максимум на 0.125 юнита и в ксаше при включённых расширенных координатах на 1 юнит.
Это что-то совсем другое.

__________________
My Projects: download page

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

Цитата:

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


Отправлено ncuxonaT 15-01-2022 в 14:19:

При повторных сейв-ресторах декаль продолжит движение?


Отправлено FreeSlave 15-01-2022 в 15:00:

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

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 15-01-2022 в 15:34:

FreeSlave может быть всё же чуточку больше инфы дашь?
Какой движок, что делал, когда заметил.

__________________
My Projects: download page

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

Цитата:

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


Отправлено FreeSlave 15-01-2022 в 18:18:

Цитата:
Дядя Миша писал:
Какой движок, что делал, когда заметил.


Тестил на голдсорсе. Заметил на своей карте недавно. Но скорее всего баг уже давно присутствует. Проявляется и в обычной HL.
Карта-пример, где баг воспроизводится, в аттаче

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 15-01-2022 в 19:38:

Под ксашем есть?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 15-01-2022 в 19:57:

У меня в голде на стим-версии баг есть. Сохранился-загрузился - декаль сдублировалась. Я еще раз сохранился-загрузился - уже 3 декали

В ксаше (FWGS) бага нет.

__________________
Мой мод на Xash


Отправлено FreeSlave 15-01-2022 в 20:17:

Дядя Миша, под xash3d-FWGS не воспроизводится. В оригинальном не пробовал.

Если в хаммере резетнуть текстуру пола и перекомпилить, то баг не проявляется и в голде.

__________________
I'm on github
I'm on opendesktop.org


Отправлено Дядя Миша 16-01-2022 в 07:56:

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

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 05:31.
Показать все 12 сообщений этой темы на одной странице

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