HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Кажется, я починил DispatchAnimEvents (https://hlfx.ru/forum/showthread.php?threadid=5590)
Отправлено Aynekko 30-03-2021 в 18:56:
Контроллеры кажись пришли в норму. С маззлфлешами все еще беда есть, да. На барника посмотрел, выстрелы местами кажутся резкими что ли, наверное это имеется в виду.
__________________
Мой мод на Xash
Отправлено Sigurth 31-03-2021 в 03:02:
Мне лично эти немного резкие движения совсем не мешают, маззлфлеши, которые и раньше глючные были, я тоже не замечал, пока вы не сказали) В клиентском коде моделей я совсем не шарю, поэтому передам эстафету кому-нибудь другому. Могу лишь сказать, как поступил бы я. Отлавливал бы клиентские ивенты на сервере (где они теперь отлавливаются хорошо) и отправлял бы какую-нибудь мессагу, которая и рисовала бы маззлфлеш на клиенте. Могу ради эксперимента так сегодня сделать
__________________
Никогда не поздно сделать мод под хл1
Отправлено Ku2zoff 31-03-2021 в 06:18:
Цитата:
Sigurth писал:
Мне лично эти немного резкие движения совсем не мешают
m_fSequenceFinished иногда выставляется в TRUE раньше конца анимации, скорее всего. Дёрганье выглядит некрасиво.
Цитата:
Sigurth писал:
Отлавливал бы клиентские ивенты на сервере (где они теперь отлавливаются хорошо) и отправлял бы какую-нибудь мессагу, которая и рисовала бы маззлфлеш на клиенте.
Костыль. Лучше вынести из движка в клиентку содержимое IEngineStudio.StudioClientEvents, и заменить вызов этой функции на свою, которая будет корректно работать.
Добавлено 31-03-2021 в 11:02:
Цитата:
Sigurth писал:
В клиентском коде моделей я совсем не шарю, поэтому передам эстафету кому-нибудь другому.
Когда выложишь код серверной части, я посмотрю, что ты там изменил, и попробую покумекать. Не трогай клиентскую часть, допиливай то, чем занимаешься. Результат хороший - монстры уже не протупливают на сменах активностей.
Добавлено 31-03-2021 в 11:11:
Насчёт маззлфлешей. Не видно только спрайта. Длайт рисуется при каждом вызове. Или это pev->effects =| EF_MUZZLEFLASH, что создаёт елайт. Надо проверить. Клиентских эвентов немного: 5001, 5011, 5021, 5031 для маззлфлешей, 5002 для искр и 5004 для звуков. Проще всего декомпильнуть модель, поменять проблемный эвент на другие, и проверить, в отлове эвентов дело, или в чём-то другом.
Добавлено 31-03-2021 в 12:56:
Сделал StudioClientEvents в дллке. Действительно, проблема только со спрайтами маззлфлешей. Клиентские елайты создаются. Причём, маззлфлеши проскакивают и на дллках со стандартным кодом отлова эвентов, как серверных, так и клиентских. Кажется, эта проблема наблюдается ещё и у Aynekko в ксашмоде. Значит, дело во времени жизни маззлфлешей: они появляются в самом конце кадра и не успевают толком отрисоваться, т.к. в начале следующего исчезают. Ничего не нужно тащить в клиент, достаточно просто заменить gEngfuncs.pEfxAPI->R_MuzzleFlash на gEngfuncs.pEfxAPI->R_TempSprite с увеличенным временем жизни до 0.05, например.
Отправлено Aynekko 31-03-2021 в 06:31:
Цитата:
Ku2zoff писал:
Кажется, эта проблема наблюдается ещё и у Aynekko в ксашмоде
Там решил тем, что я в движке у маззлфлеша поставил die=0.05, а было 0.01. Не знаю, есть ли в коде халфы возможность отредактировать эти функции. В параное 2 стоит 0.015 к примеру.
Только спрайт все еще не крепится к аттачменту, а просто спавнится там, где был аттачмент, поэтому отстает, и при увеличенном времени это заметно. По-хорошему всю систему маззлфлешей вообще надо как-то переделать...но это уже другая история. 
__________________
Мой мод на Xash
Отправлено Ku2zoff 31-03-2021 в 06:45:
Цитата:
Aynekko писал:
По-хорошему всю систему маззлфлешей вообще надо как-то переделать...но это уже другая история.
Дело вообще в темпэнтитях, а не только в маззлфлешах. Я подменил вызов вспышки вызовом искр. Проскакивать стало реже. А вот когда подменил вызовом короткого звука, услышал, что иногда тишина, а иногда эхо, звук двоит или троит. Короче, придётся крутить интервалы отлова эвентов и на клиенте тоже.
Отправлено Sigurth 31-03-2021 в 08:16:
Цитата:
Ku2zoff писал:
Лучше вынести из движка в клиентку содержимое IEngineStudio.StudioClientEvents, и заменить вызов этой функции на свою, которая будет корректно работать.
Дело в том, что выносить нужно не только это. Я редактировал не одну функцию на сервере, чтобы все работало, как работает сейчас, очень долго боролся с правильным местом для m_fSequenceFinished, из-за чего у меня и не работали контроллеры. Попробовал свой костыль с мессагами. Ни один маззлфлеш не проскакивает, все отображаются, правда не знаю как правильно считывать аттачмент, либо рисуются в оригине модели, либо вообще где-то над дулом. Я так и быть, трогать клиентскую часть не буду, чтобы не наплодить багов. Сегодня- завтра ждите исходники серверной длл и мини-тутор с пояснениями, если еще баги не найдутся на сервере
Добавлено 31-03-2021 в 15:16:
Цитата:
Ku2zoff писал:
Действительно, проблема только со спрайтами маззлфлешей. Клиентские елайты создаются
Нет, со спрайтами все ОК, а елайты создаются из-за pev->effects |= EF_MUZZLEFLASH; Проблема в клиентском отлове ивентов__________________
Никогда не поздно сделать мод под хл1
Отправлено Дядя Миша 31-03-2021 в 08:58:
Цитата:
Sigurth писал:
очень долго боролся с правильным местом для m_fSequenceFinished
Его установку в TRUE надо вообще выбросить из DispatchAnimEvents.
Добавлено 31-03-2021 в 11:58:
Цитата:
Sigurth писал:
Проблема в клиентском отлове ивентов
на клиенте нет проблемы отлова событий__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 31-03-2021 в 09:05:
Цитата:
Sigurth писал:
Дело в том, что выносить нужно не только это.
Там, в общем-то, почти всё вынесено. Нету только StudioClientEvents.
Цитата:
Sigurth писал:
боролся с правильным местом для m_fSequenceFinished
Это чисто серверная вещь для индикации, кончилась анимация, или нет. Ну я гадать не буду, сначала надо увидеть изменения на сервере, которые ты внёс.
Цитата:
Sigurth писал:
елайты создаются из-за pev->effects |= EF_MUZZLEFLASH
Буду проверить. Подозреваю, что так и есть, но лишний раз убедиться не помешает.
Цитата:
Дядя Миша писал:
на клиенте нет проблемы отлова событий
Если так, значит ноги у проблемы растут всё-таки с сервера. В любом случае, надо навтыкать алертов в StudioClientEvents и смотреть консоль.
Отправлено Дядя Миша 31-03-2021 в 09:30:
Возьмите циклер, поставьте его на карту и контролируйте проигрывание чисто клиентских событий. Будет вам такой юнит-тест.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Sigurth 31-03-2021 в 10:52:
Цитата:
Дядя Миша писал:
Его установку в TRUE надо вообще выбросить из DispatchAnimEvents
Уже сделано, он у меня устанавливается только в StudioFrameAdvance. Но я там вообще порядок вызова этих функций поменял немного, короче все увидите чуть позже.
Цитата:
Дядя Миша писал:
на клиенте нет проблемы отлова событий
Значит проблема не в отлове, а в том, что на клиенте сам кадр в ивентом просто проскакивает каким-то образом. Может, съедается интерполяцией (не кидайте тапками, если сморозил бред). Не знаю, я с клиентской частью моделей плохо дружу, просто предполагаю. Просто если сделать костыль с отловом клиентских ивентов на сервере и посыланием их мессагами в клиент, то все маззлфлеши рисуются без исключений, и рисуются в нужное время, и я бы так и оставил такой способ у себя, если бы смог правильно рассчитать позицию аттачмента.__________________
Никогда не поздно сделать мод под хл1
Отправлено Дядя Миша 31-03-2021 в 14:54:
Секвенция меняется раньше, чем клиент её ловит.
Я ж говорю - на циклере проконтролируйте.
Добавлено 31-03-2021 в 17:54:
Вынес тутор в самостоятельную тему сюда:
https://hlfx.ru/forum/showthread.php?s=&threadid=5642
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 31-03-2021 в 16:18:
А проверьте ещё gruntbattledemo 
Отправлено Ku2zoff 31-03-2021 в 16:34:
Цитата:
Sigurth писал:
Значит проблема не в отлове, а в том, что на клиенте сам кадр в ивентом просто проскакивает каким-то образом.
Проигрывается только один раз. Допустим, грант стреляет из дробовика 8 раз. При первом выстреле эвент играется, при последующих нет, если серия не будет прервана другой анимацией - пинком или перезарядкой. Перестают ловиться нулевой и первый кадры на клиентской стороне. Если отредактировать модель - всё становится хорошо.
Добавлено 31-03-2021 в 23:34:
Хотя, может проиграться и два раза. В первые пару секунд после загрузки сейва, когда игра немножко "лагает". Наверное, чем выше фпс у анимации, тем больше будет пропущено кадров в её начале.
Отправлено Дядя Миша 31-03-2021 в 16:56:
Цитата:
Crystallize писал:
А проверьте ещё gruntbattledemo
да, тоже хороший тест.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Aynekko 31-03-2021 в 18:07:
Раз тут про ИИ идет разговор тоже, сейчас обнаружил у солдат одну штуку, которая сильно уберет у них тупняк. В Task_t tlGruntRangeAttack1B[] нужно закомментить
C++ Source Code:
{ TASK_PLAY_SEQUENCE_FACE_ENEMY,(float)ACT_IDLE_ANGRY }, |
и таким образом они больше не стоят 2 секунды глядя на игрока, как баран на новые ворота, а начинают стрелять прям тут же. Если игрок за углом, то солдат начинает стрелять, только лишь показавшись из-за угла. Вот думаю пока, чтобы такое подсунуть туда вместо этого акта, чтобы ожидание было пол-секунды, а не две-три.
В атаке 1А стоит ACT_CROUCH - солдат сначала приседает. Ну тут ладно.
C++ Source Code:
{ TASK_WAIT, (float)0.1 }, |
хорошо срабатывает, почти то, что надо. Можно попробовать задрать фпс анимации combatidle еще. Пока она не проиграется, солдат стрелять не будет.__________________
Мой мод на Xash