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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Странный баг в предиктинге оружия (https://hlfx.ru/forum/showthread.php?threadid=5269)


Отправлено SNMetamorph 30-05-2019 в 05:56:

Unhappy Странный баг в предиктинге оружия

В очередной раз запиливая оружия для своего мода заметил одну интересную вещь: метод Primary/SecondaryAttack() на стороне клиента вызывается огромное количество раз, причем чем больше пинг - тем больше вызовов происходит.

Добавил такой код в соответствующую функцию:

C++ Source Code:
1
void CGlock::PrimaryAttack()
2
{
3
  ...
4
#ifdef CLIENT_DLL
5
  ALERT(at_console, "glock fire %.4f\n", m_flNextPrimaryAttack);
6
#endif
7
  ...
8
}


После чего полез в консоль проверять, и получил примерно такие результаты:
C++ Source Code:
1
fakelag 0:
2
cl:  glock fire -0.0010
3
 
4
fakelag 20:
5
cl:  glock fire -0.0540
6
cl:  glock fire -0.0410
7
cl:  glock fire -0.0410
8
cl:  glock fire -0.0280
9
cl:  glock fire -0.0280
10
cl:  glock fire -0.0150
11
cl:  glock fire -0.0150
12
cl:  glock fire -0.0010
13
cl:  glock fire -0.0010
14
 
15
fakelag 80:
16
cl:  glock fire -0.1610
17
cl:  glock fire -0.1480
18
cl:  glock fire -0.1480
19
cl:  glock fire -0.1480
20
cl:  glock fire -0.1480
21
cl:  glock fire -0.1480
22
cl:  glock fire -0.1210
23
cl:  glock fire -0.1210
24
cl:  glock fire -0.0940
25
cl:  glock fire -0.0940
26
cl:  glock fire -0.0810
27
cl:  glock fire -0.0810
28
cl:  glock fire -0.0680
29
cl:  glock fire -0.0680
30
cl:  glock fire -0.0680
31
cl:  glock fire -0.0540
32
cl:  glock fire -0.0540
33
cl:  glock fire -0.0280
34
cl:  glock fire -0.0280
35
cl:  glock fire -0.0280
36
cl:  glock fire -0.0010
37
cl:  glock fire -0.0010


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

Конкретно в моём проекте это вызывает две проблемы:
1. Некорректно работает чередование ударов катаной, может два раза подряд ударить влево/вправо, но по идее оно должно всегда чередоваться.
2. Ломается последовательность ударов в рукопашном бою, из-за чего выполнение комбо не представляется возможным.

Тестировал это всё дело на последнем на данный момент стимовском билде голды (8245), а также на древнем билде 4554. В обоих билдах эта проблема проявляется совершенно одинаково.
Может кто-нибудь что-то знает об этом баге?


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

SNMetamorph по ксашу где результаты?

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 30-05-2019 в 09:04:

Цитата:
Дядя Миша писал:
по ксашу где результаты?

Скоро. Ждите.

Добавлено 30-05-2019 в 18:04:

Ну в общем. На ванильном ксаше у меня не получилось запустить мод, потому что мод, к сожалению, основан на новом HLSDK, который с репозитория Valve на гитхабе. Решил проверить в FWGS - и тут уже все интереснее:
При fakelag 50 получился такой результат. Так что в форке по крайней мере баг никуда не делся.


Отправлено SNMetamorph 02-06-2019 в 18:11:

Тут появились интересные подробности со связанной проблемой
https://github.com/ValveSoftware/halflife/issues/2467


Отправлено Дядя Миша 02-06-2019 в 19:23:

Не прошло и пяти лет, как Зоркий Глаз обнаружил что fakelag крашит обновлённую халфу. Ну ниплоха! Я об этом писал кажется еще в 2016-м.

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 04-06-2019 в 07:27:

Проверили баг вчера на выделенном сервере, проблема проявляется точно так же, как и с фейклагом. Дело явно не в нём.


Отправлено SNMetamorph 16-10-2019 в 13:07:

Цитата:
SNMetamorph писал:
причем чем больше пинг - тем больше вызовов происходит

А это вот, мне кажется, как-то связано с флагом runfuncs.
Но это не точно, не проверял.


Отправлено SNMetamorph 22-05-2022 в 15:23:

Там спустя столь много времени, все таки выяснили причину бага и сделали фикс
https://github.com/ValveSoftware/ha...mment-760270846

__________________
Мой сайт
Xash3D Modding Discord


Отправлено Дядя Миша 22-05-2022 в 18:40:

C++ Source Code:
flCreep = flTimeBetweenFires - m_flPrevPrimaryAttack; // postive or negative

Выглядит довольно крипово
К тому же мы этот баг с пушками с переменным успехом пытались починить:
1. на оригинальном HL SDK
2. в Ксаше
3. в Ксаше FWGS

Притом, что мне Альбатрос доказывал, что есть некотороые шероховатости с приёмом дельты и симуляцией предиктинга в оригинальном ксаше, но если их починить, то всё будет отлично. Но позвольте, я же прекрасно помню, как глючили клиентские пушки в оригинальном голдсорсе, когда никакого ксаша уже не было. Я даже в туторе про это дерьмо упоминал еще в 2004-м году.
Оно уже тогда всех доставало. И почему СолоКиллер говорит, что это якобы не для всех пушек помогает? База-то у них одна.

__________________
My Projects: download page

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

Цитата:

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


Отправлено FreeSlave 22-05-2022 в 20:09:

Цитата:
Дядя Миша писал:
И почему СолоКиллер говорит, что это якобы не для всех пушек помогает? База-то у них одна.

Он в следующем посте другое решение приводит же.

В hlsdk от FWGS кстати этот фикс влит

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


Отправлено Дядя Миша 23-05-2022 в 06:02:

Чёрт меня дёрнул засунуть это в гугл

C++ Source Code:
1
BOOL CanAttack ( время атаки с плавающей запятой, время с плавающей запятой, BOOL isPredicted)
2
{
3
# если определено ( CLIENT_WEAPONS )
4
  если ( ! Предсказано )
5
# еще
6
  если ( 1 )
7
# конец
8
  {
9
    возврат (атака_время <= curtime)? ИСТИНА : ЛОЖЬ ;
10
  }
11
  еще
12
  {

Хотели бы так писать код?

Добавлено 23-05-2022 в 09:02:

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 11-06-2022 в 18:16:

Ещё кое какая инфа по теме
https://github.com/ValveSoftware/ha...mment-511884518

__________________
Мой сайт
Xash3D Modding Discord


Отправлено Дядя Миша 11-06-2022 в 20:09:

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

__________________
My Projects: download page

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

Цитата:

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


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

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