HLFX.Ru Forum Страницы (10): « Первая ... « 3 4 5 6 [7] 8 9 10 »
Показать все 138 сообщений этой темы на одной странице

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)


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

ncuxonaT ну вот в сорсе как раз поисправляли все анимационные баги.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Ku2zoff 14-01-2021 в 16:56:

Цитата:
Дядя Миша писал:
в сорсе как раз поисправляли все анимационные баги

Я сравнивал код, портировал в халфу. Собсно, эта тема поэтому и открыта. Трабла в том, что эвенты перестают вовремя отлавливаться, если использовать код из сорса. Маззлфлеши опаздывают, стрельба тоже. Потому что пропадает привязка к gpGlobals->time и частоте тчинка монстра. Есть у меня одна идея, но не знаю, сработает или нет. Надо заставить монстра тчинкать не 10 раз в секунду, как в оригинале, а каждый кадр. pev->nextthink = gpGlobals->time. Ну и вызывать StudioFrameAdvance и DispatchAnimEvents. А всё остальное вынести в отдельную функцию, чтобы по-старинке вызывалось каждые 0.1 секунды. Нельзя всё ускорять - RunAI ломается. Хотя в сорсе частота тчинка тоже 0.1 секунды, и ничего не тупит. Что-то я упустил. Там довольно много кода, куча экземпляров StudioFrameAdvance и DispatchAnimEvents: для CBaseAnimating, CBaseAnimationLayer, CBaseAINPC, CBasePlayerWeapon и т.д. Ч0рт ногу сломит, короче. Чем новее сорс сдк, тем больше там наплодили функций. Самая читаемая, на мой взгляд версия - 2007. В бете много недописанного, а в 2013 легко заблудиться. Собсно, не удивительно, почему движок в последних версиях весит под три сотни мегабайт: так всё усложнено и засрано там.


Отправлено Дядя Миша 14-01-2021 в 17:29:

Цитата:
Ku2zoff писал:
Маззлфлеши опаздывают, стрельба тоже

в сорсе и голдсорсе кадр начинается в разных местах.
Есть там одно различие, вот как раз ровно на один кадр. Но это надо фундаментально понимать принципы работы и смотреть в движке.

Цитата:
Ku2zoff писал:
Собсно, не удивительно, почему движок в последних версиях весит под три сотни мегабайт

экспериментов много было.

Добавлено 14-01-2021 в 20:29:

Они там даже для мира воксельную физическую сетку построили. Интересно сколькож она жрёт памяти.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Ku2zoff 14-01-2021 в 17:29:

Цитата:
Дядя Миша писал:
Есть там одно различие, вот как раз ровно на один кадр.

А подробнее можешь об этом рассказать?


Отправлено Дядя Миша 14-01-2021 в 23:21:

time += frametime;
SV_Physics();

против

SV_Physics();
time += frametime;

Думаю принцип понятен. Это в самых общих чертах, поскольку оно еще и на клиент завязано, какое время уйдет туда.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Ku2zoff 15-01-2021 в 08:40:

Так. Я всё понял. Теперь понятно, зачем вальве привязка к gpGlobals->time в голдсорсовском коде. Чтобы скомпенсировать этот сдвиг. Сначала тчинк - потом прибавление кадра. Ладно, будем подумать.


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

Цитата:
Ku2zoff писал:
Теперь понятно, зачем вальве привязка к gpGlobals->time в голдсорсовском коде. Чтобы скомпенсировать этот сдвиг.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Sigurth 29-03-2021 в 16:30:

Вот я кажется починил. Конкретно починил двойное срабатывание ивентов. Также нормально воспроизводятся ивенты на первом и последнем кадрах анимации. Потестировал уже на всех монстрах. Были кое-какие проблемы с контроллерами на уровне с Нихилантом, но остальные вели себя нормально. Остальных также пофиксил. Так как нахожусь сейчас не дома, а в командировке, то исходников мода нет, попробую на рабочем ноуте по памяти на чистом ХЛСДК воспроизвести свои действия и выложить в виде скомпиленного мода + тутор с пояснениями. Ну и отловим баги. Основывался на том, что привязка ко времени вообще не нужна. Проблема была в проклятых флоатах в pev->frame, которые даже при строгом неравенстве все равно на краях интервалов воспроизводили ивент дважды. В стандартном коде, мало того, что была эта проблема, так еще и из-за этой привязки к gpGlobals->time интервалы flStart и flEnd залезали друг на друга. На примере хуман гранта: должно быть [0,2) -> [2,4), а получалось [0.000000, 2.000000) -> [1.999996, 3.999992), из-за чего ивент на втором кадре проигрывался два раза. Поэтому они и стралеют по 4 пули, а не по 3, как должны. У меня они теперь стреляют как надо. Еще и скедьюлы подредактировал, что вообще резвые стали, затупки происходят крайне редко. Короче, сейчас в командировке делать нечего, поэтому попробую воспроизвести свой код и сразу выложу сюда мод и тутор.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Aynekko 29-03-2021 в 16:38:

Цитата:
Sigurth писал:
Вот я кажется починил. Конкретно починил двойное срабатывание ивентов.

Если ты все это сделаешь, я буду безмерно благодарен. Это будет тот самый рывок, скачок и прорыв, которого ждет вся страна!

__________________
Мой мод на Xash


Отправлено Sigurth 29-03-2021 в 19:21:

Такс, я немного увлекся и сделал все прямо сейчас. Так как уже дико хочу спать, пока что выложу скимпиленный мод без исходников, а уже завтра-послезавтра тутор + исходники, так как мысли не вяжутся в единую историю, и выйдет лажа, а не тутор. Пока что проверьте всех монстров на разных фпс, и особенно скриптовые сценки. У моем моде на домашнем компе все вроде нормально работает, этот я по памяти писал. Если найдете баг, пишите, значит ,я что-то упустил. В консоль будет писаться каждый вызов функции GetAnimationEvent при найденном ивенте. Пока редактировал только код CBaseAnimating, скедьюлы монстром не трогал, это уже либо завтра-послезавтра, либо вы сами, так как там не трудно. Просто TASK_WAIT не 2 секунды, а 0.5 например, ну и где-то их вообще надо будет удалить.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Sigurth 30-03-2021 в 04:39:

Сам нашел баг, хаундаи не могут атаковать игрока, тужатся, пытаются, но не получается у них волну выдавить. Эту проблему я уже решал, только не помню как, Пока жду еще баги, сегодня их поисправлю.

Добавлено 30-03-2021 в 11:17:

Баг с хаундаями исправлен. Если еще баги не найдутся, постараюсь сегодня вечером выложить мини-тутор + исходники + скомпилированный мод

Добавлено 30-03-2021 в 11:36:

Версия с исправлениями

Добавлено 30-03-2021 в 11:39:

Желательно потестировать и на ксаше тоже, у кого есть такая возможность

__________________
Никогда не поздно сделать мод под хл1


Отправлено Ku2zoff 30-03-2021 в 06:21:

Последняя стим-халфа, 60 фпс, вертикальная синхронизация включена. У гранта, стреляющего из дробовика, маззлфлеш появляется только при первом выстреле. Когда я пытался вспочинить, было такое же, но ещё и звук отставал. С оригинальной серверной дллкой вспышки от выстрелов появляются когда надо, лишь изредка пропускается 1 выстрел из 5.


Отправлено Sigurth 30-03-2021 в 06:27:

Ku2zoff У меня при тех же условиях на стандартной ДЛЛ проигрывается только первый маззлфлеш, остальные игнорятся. В моей ДЛЛ абсолютно точно так же - первый есть, остальных нет.

Маззлффлешы это клиентские ивенты, я их не трогал, они и не должны были менять свое поведение, кроме небольшого рассинхрона. Насколько я знаю, функция их отлова вшита в движок.

__________________
Никогда не поздно сделать мод под хл1


Отправлено Aynekko 30-03-2021 в 08:56:

С маззлфлешами у меня все окей (скачал клиент хлдм орг, там подменил хл.длл). Вроде с монстрами все нормально - в плане атак и прочего. Но контроллер сломан. Выпускает 2 шара, а потом просто летает и уже никогда не атакует.

Добавлено 30-03-2021 в 11:56:

Цитата:
Ku2zoff писал:
У гранта, стреляющего из дробовика, маззлфлеш появляется только при первом выстреле.

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

__________________
Мой мод на Xash


Отправлено Sigurth 30-03-2021 в 18:16:

Действительно, маззлфлеши в оригинале есть, хоть иногда и проскакивают, а у меня стабильно отсутствуют. Но это мне не казалось большой проблемой, я бы даже не заметил этого. А вот что делать с контроллерами я не помню. У меня они точно нормально работали, хотя у меня закрались сомнения, что нет. Нихилант тоже стал вести себя не совсем адекватно. Значит, я что-то сделал не так, потому что Нихилант у меня точно работал нормально, я перед отъездом запускал карты Зена в своем моде и убивал Нихиланта, все было ок. Сегодня-завтра еще покапаюсь, пока что нет смысла что-либо выкладывать.

Добавлено 31-03-2021 в 01:16:

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

__________________
Никогда не поздно сделать мод под хл1


Временная зона GMT. Текущее время 07:58. Страницы (10): « Первая ... « 3 4 5 6 [7] 8 9 10 »
Показать все 138 сообщений этой темы на одной странице

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