HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Кажется, я починил DispatchAnimEvents
Досконально не тестировал
Страницы (10): « Первая ... « 3 4 5 6 [7] 8 9 10 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



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

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | | IP: Записан
Сообщение: 199828

Старое сообщение 14-01-2021 16:16
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



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

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

Сообщить модератору | | IP: Записан
Сообщение: 199832

Старое сообщение 14-01-2021 16:56
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 199834

Старое сообщение 14-01-2021 17:29
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



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

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

Сообщить модератору | | IP: Записан
Сообщение: 199835

Старое сообщение 14-01-2021 17:29
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



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'

Сообщить модератору | | IP: Записан
Сообщение: 199839

Старое сообщение 14-01-2021 23:21
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



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

Сообщить модератору | | IP: Записан
Сообщение: 199845

Старое сообщение 15-01-2021 08:40
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 199847

Старое сообщение 15-01-2021 09:02
-
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 95
Возраст: 27

Рейтинг



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

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

Сообщить модератору | | IP: Записан
Сообщение: 200820

Старое сообщение 29-03-2021 16:30
- За что?
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



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

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

__________________
Мой мод на Xash

Сообщить модератору | | IP: Записан
Сообщение: 200822

Старое сообщение 29-03-2021 16:38
- За что?
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 95
Возраст: 27

Рейтинг



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

Вложение: dispatchanimevents_fix.rar (441.3 кб)
Этот файл был скачан 47 раз.

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

Сообщить модератору | | IP: Записан
Сообщение: 200827

Старое сообщение 29-03-2021 19:21
- За что?
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 95
Возраст: 27

Рейтинг



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

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

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

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

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

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

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

Вложение: dispatchanimevents_fix.rar (440.2 кб)
Этот файл был скачан 43 раз.

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

Сообщить модератору | | IP: Записан
Сообщение: 200833

Старое сообщение 30-03-2021 04:39
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



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

Сообщить модератору | | IP: Записан
Сообщение: 200835

Старое сообщение 30-03-2021 06:21
- За что?
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 95
Возраст: 27

Рейтинг



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

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

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

Сообщить модератору | | IP: Записан
Сообщение: 200836

Старое сообщение 30-03-2021 06:27
- За что?
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



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

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

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

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

__________________
Мой мод на Xash

Сообщить модератору | | IP: Записан
Сообщение: 200841

Старое сообщение 30-03-2021 08:56
- За что?
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 95
Возраст: 27

Рейтинг



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

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

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

Вложение: dispatchanimevents_fix.rar (440.3 кб)
Этот файл был скачан 33 раз.

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

Сообщить модератору | | IP: Записан
Сообщение: 200852

Старое сообщение 30-03-2021 18:16
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 22:16. Новая тема    Ответить
Страницы (10): « Первая ... « 3 4 5 6 [7] 8 9 10 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Кажется, я починил DispatchAnimEvents
Досконально не тестировал
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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