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:
Странный баг в предиктинге оружия
В очередной раз запиливая оружия для своего мода заметил одну интересную вещь: метод Primary/SecondaryAttack() на стороне клиента вызывается огромное количество раз, причем чем больше пинг - тем больше вызовов происходит.
Добавил такой код в соответствующую функцию:
C++ Source Code:
1 | void CGlock::PrimaryAttack() |
5 | ALERT(at_console, "glock fire %.4f\n", m_flNextPrimaryAttack); |
После чего полез в консоль проверять, и получил примерно такие результаты:
C++ Source Code:
Из-за этого порой происходит так, что на стороне клиента вместо одного выстрела происходит два, так как дважды проигрывается ивент (вместо одной гильзы вылетает две, остаётся две декали на стене и т.п). Подобную проблему замечал почти во всех модах, так похоже тут корень проблемы лежит либо в движке, либо в коде предиктинга из 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) |
3 | # если определено ( CLIENT_WEAPONS ) |
9 | возврат (атака_время <= curtime)? ИСТИНА : ЛОЖЬ ; |
Хотели бы так писать код? 
Добавлено 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'