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

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=5485)


Отправлено илья2 12-04-2020 в 07:40:

Question вопрос про предиктинг оружия ?

можно спросить а зачем нужен предиктинг оружия. И нужно ли его отключить ?

__________________
илья


Отправлено SNMetamorph 12-04-2020 в 10:07:

Цитата:
илья2 писал:
можно спросить а зачем нужен предиктинг оружия. И нужно ли его отключить ?


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

Отключать - сомневаюсь. В синглплеере он не помешает, а стрельба в мультиплеере совсем паршивая станет.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено илья2 12-04-2020 в 11:29:

а мне все равно главное чтобы у меня пушки в синглеплеере хорошо стреляли
а и спасибо за ответ

Добавлено 12-04-2020 в 14:03:

все равно мне кажется лучше его убрать поэкспериментировать думаю можно над ним

Добавлено 12-04-2020 в 14:29:

а можно ещё вопрос а что эта за консольная команда cl_lw 0 и 1 это тоже что то связано с предиктингами ?

__________________
илья


Отправлено Ku2zoff 12-04-2020 в 11:50:

cl_lw - cl local weapons. Как раз таки включает и выключает локальные (клиентские) пушки. Правда, не совсем корректно. У Дяди Миши есть тутор Xash Weapon System. Там он сначала заводит динамический корректно отключаемый предиктинг. А потом и вовсе от него избавляется.

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

Единственная явная проблема в сингле из-за предиктинга - неработающая после смены уровня перезарядка. Лечится вызовом TabulateAmmo после рестора игрока. Есть такой пуллреквест на гитхабе в репе валвэ. Вторая проблема - более долгие загрузки уровней, но разница в 2-3 секунды некритична. Вот третья проблема достаточно нехорошая, и связана она с вьюмоделями пушек.
На клиент нужно передавать информацию о бодигруппах и скинах, чтобы читать её в файле hl_weapons.cpp, и учитывать. Ещё, на сервере, пушки работают как минимум из двух мест: PlayerPrethink и PlayerPostthink. А где-то между ними по времени происходит вызов кадра игровой физики. Если, например, попытаться сделать анимацию Holster, не отключив локальные (клиентские анимации), можно получить моргание вьюмодели. Потому что на сервере есть чёткое разграничение вызовов для m_pActiveItem, m_pNextItem, m_pLastItem. А вот на клиенте вся бражка вызывается из HUD_WeaponsPostThink, то есть в конце кадра. Получается, нельзя чётко разделить предыдущую и следующую пушку, не переписав всю клиентскую часть предиктинга. Отсюда получаются моргающие анимации.
Потому что отправлена была на клиент анимация, например, №3, что у текущей пушки Holster. Она проигралась. Пушка сменилась на следующую, и тут же проиграла свою анимацию №3. А у этой пушки это может быть Shoot. И только после этого, новая пушка проиграет Draw. Я забарывал эту пакость через вставку return в блоке с условием if ( cmd->weaponselect && ( player.pev->deadflag != ( DEAD_DISCARDBODY + 1 ) ) ). Но, как по мне, это не очень хорошее решение. Лучше завести по аналогии с сервером HUD_WeaponsPreThink, и вызывать откуда-то из HUD_Frame. Может быть, когда нибудь заморочусь этим.
А тебе советую просто вырезать предиктинг по тутору Дяди Миши, если хочешь.


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

Цитата:
Ku2zoff писал:
Получается, нельзя чётко разделить предыдущую и следующую пушку, не переписав всю клиентскую часть предиктинга. Отсюда получаются моргающие анимации.

Сегодня шышки особенно забористые!

Моргает эта зараза из-за того, что у пушек первая анимация обычно idle.
Сперва приходит команда для CL_LoadModel. Ставится пушка и сразу начинает играть анимацию idle. На следующем кадре приходит команда Deploy и пушка начинает подыматься. Выглядит как моргание. Иногда обе команды проходят на одном кадре, иногда нет.

__________________
My Projects: download page

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

Цитата:

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


Отправлено илья2 12-04-2020 в 12:10:

Я забарывал не понятное слово может забрасывал

А тебе советую просто вырезать предиктинг по тутору Дяди Миши, если хочешь. Как раз этим я и хочу заняться

и кстати ещё один факт если поставить cl_lw 0 то точность у глока почему то выше чем у cl_lw 1 это баг такой если баг то это круто

Добавлено 12-04-2020 в 15:10:

Моргает эта зараза из-за того, что у пушек первая анимация обычно idle.
Сперва приходит команда для CL_LoadModel. Ставится пушка и сразу начинает играть анимацию idle. На следующем кадре приходит команда Deploy и пушка начинает подыматься. Выглядит как моргание. Иногда обе команды проходят на одном кадре, иногда нет.

ЭТО НЕ ОСОБО СТРАШНЫЙ БАГ

__________________
илья


Отправлено Ku2zoff 12-04-2020 в 12:11:

Цитата:
Дядя Миша писал:
Иногда обе команды проходят на одном кадре, иногда нет.

Ну вот отсюда и оно. А ты про шишки Если бы они всегда проходили на одном кадре, то "моргания" бы не было. А то, что появление моргания зависит от того, что не совпадают номера анимаций, я предположил, сравнив некоторые модели. И моргания нет в тех случаях, когда Holster предыдущей пушки имеет тот же номер, что и Draw предыдущей.


Отправлено илья2 12-04-2020 в 12:31:

а баг про точность вас не смущает при cl_lw ?
лично меня да

Добавлено 12-04-2020 в 15:31:

точность реально изменяется при cl_lw 1 и 0 можете даже проверить на
cs 1.6 ну если кому интересно и не знает об этом

__________________
илья


Отправлено KiQ 12-04-2020 в 14:42:

Скорее всего просто декали ставятся в соответствии с серверной трассой, ох давно я в SDK не лазал

__________________
-Brain is dead-


Отправлено Ku2zoff 12-04-2020 в 15:06:

Цитата:
илья2 писал:
точность реально изменяется при cl_lw 1 и 0 можете даже проверить на
cs 1.6 ну если кому интересно и не знает об этом

Несовпадение клиентской и серверной трассы, как пишет KiQ. По факту, трасса всегда серверная, т.к. попадания считаются именно на сервере. Клиентская часть - всего лишь зеркало для предиктинга. FireBulletsPlayer и EV_HLDM_FireBullets синхронизируются через параметр m_pPlayer->pev->random_seed. Или как-то так, дословно не помню. Особенно заметно на примере шотгана в халфе: если и на сервере и на клиенте сделать одинаковый разброс, но без синхронизации, то серверные и клиентские декали совпадать не будут. Наверное, в кс 1.6 допущён такой ляп.

Добавлено 12-04-2020 в 22:06:

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


Отправлено илья2 14-04-2020 в 13:13:

Так что никакого бага точности нет. Просто визуальная, косметическая часть отличается от физической, реальной.

понятно забаговались спец эффекты

__________________
илья


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

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