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