![]() |
Показать все 178 сообщений этой темы на одной странице |
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=4629)
Гейтсеквенции монстров
Я вплотную занялся передвижением и стрельбой монстров одновременно. Очень уж впечатлили алиен гранты из свенкоопа, стреляющие на бегу. На данный момент ещё толком ничего не готово, но я научил барника ходить независимо от анимации. То есть, если мы возьмём, и обрежем все кадры, кроме нулевого в анимациях run и walk, то наш ходячий монстр (алиен грант, хьюман грант, барник, хаундай и т.д.) не будет двигаться. Если убрать motion extraction из анимации, то скорее всего тоже, я не проверял. Так уж устроен халфовский ИИ, даже движение завязано на анимациях. Что получилось: барник двигается, не передвигаясь в самой анимации, как раньше. Так двигаются летающие монстры, например алиен контроллер. Приятно удивило прокладывание маршрута в этом случае. Барник намного лучше ориентируется на карте без нодов, может "обходить" небольшие углы, когда видит игрока. До навигации, как в свенкоопе ещё далеко. Там вообще наверное ноды не нужны. Барник догоняет игрока, спрятавшегося чёрти где.
Зачем нужно менять код передвижения? Потому, что по стандарту он завязан на фреймрейте и кадрах анимации. А так как анимация не будет совпадать с анимацией ног (гейтсеквенцией), то и движения не будет. Я решил пойти для начала именно таким путём. Потом можно будет написать "честный" механизм, основанный на гейтсеквенции и гейтфрейме.
__________________
Поэкспериментировав ещё, я понял, что придётся переписывать код движения (функцию Move). У ходячих монстров из неё вызывается MoveExecute( pTargetEnt, vecDir, flInterval ), где flInterval = StudioFrameAdvance(). StudioFrameAdvance завязан на sequence. Если sequence будет, к примеру, анимацией стрельбы, то получим совершенно неподходящий результат. Как будет двигаться монстр в таком случае, даже не представляю. У летающих MoveExecute вызывается так: MoveExecute( pTargetEnt, vecDir, flMoveDist / m_flGroundSpeed ), где flMoveDist - расстояние, которое нужно преодолеть, а m_flGroundSpeed - скорость, с которой это нужно сделать. Можно заюзать этот механизм, но тогда двигаться монстр будет рывками, скорость не будет соответствовать скорости анимации ног. Как вариант, думаю вставить вместо m_flGroundSpeed m_flGaitMovement. Должно заработать, если юзать модуль m_flGaitMovement, чтобы значения всегда были положительными.
Добавлено 09-07-2015 в 01:35:
Научил гейтсеквенцию монстра анимироваться. Почему-то нет интерполяции. Всё как-то дёрганно.
Правильное дело делаешь, странно что вальвы скорость движения сделали зависящей от анимации, а не как у игрока. Кстати убрав это то по идее легче сделать стрейфищся монстров, типа скаржей в Анриле, еще бы класно барников всяких по лестницах научить лазить, и перепрыгивать препятствия. Я помню играл в один мод на анрил торнамент, там были дружественные солдаты, боты которые бегают за игроком, они могли за игроком на трубу или через небольшой обрыв к примеру перепрыгнуть, но тупые до ужаса, если они сами свалились то залезть сами уже не смогут, кстати этот мод, Project Xenome, использует много текстур и звуков с халвы, даже некоторые боты используют скины солдат из Оппозинг Форса, и еще какой-то игры, выглядит прикольно, этот мод есть в полной версии, где много карт, даже карта с дамбой есть, но ее сложней найти, и более новой переделаной который First Day.
Прогресс идёт. Сделал интерполяцию для гейтсеквенции монстра. Всё оказалось очень просто. Для игрока в движении используется такой код:
m_pPlayerInfo->gaitframe += (m_flGaitMovement / pseqdesc->linearmovement[0]) * pseqdesc->numframes; |
m_pPlayerInfo->gaitframe += pseqdesc->fps * dt; |
m_flGaitframeMonster += pseqdesc->fps * dt; |
1 | Task_t tlAGruntSuppressHornet[] = |
2 | { |
3 | [u]{ TASK_STOP_MOVING, (float)0 },[/u] |
4 | { TASK_RANGE_ATTACK1, (float)0 }, |
5 | }; |
6 |
7 | Task_t tlAGruntRangeAttack1[] = |
8 | { |
9 | [u]{ TASK_STOP_MOVING, (float)0 },[/u] |
10 | { TASK_FACE_ENEMY, (float)0 }, |
11 | { TASK_RANGE_ATTACK1, (float)0 }, |
12 | }; |
Ku2zoff реквестирую
__________________
-Brain is dead-
Вот ещё с барником видео.
Код весь написан на скорую руку, поэтому с анимированием гейтсеквенций проблемы. Ну и с движением барника тоже, он не останавливается, когда подбегает к игроку вплотную. Это всё фигня. Для чего я вообще захотел сделать такую фичу монстрам? Чтобы они могли пятиться назад, когда противник подходит близко. Но это уже в тутор не войдёт. Как и стрейфящиеся хьюман гранты. Только в сорцах мода, когда будет готово.
Очень классно. Давно запланировал делать гейтсеквенции монстрам в волатиле, и было интересно посмотреть, что это реально реализуемо. Но, конечно, я буду и стрейфы делать, и всякое - словом, ИИ должен дотянуть до уровня Унреала. А в свенкооп я не играл, знаю только, что авторам выдали сорцы хаммера и они вовсю ваяют на его базе убивца джекхаммера.
__________________
__________________
-Brain is dead-
>А вот теперь задумайся на секундочку, а какая альтернатива?
живой игрок с дефибриллятором.
__________________
http://www.moddb.com/mods/monorail-quest
MakeIdealYaw ( m_Route[ m_iRouteIndex ].vecLocation ); |
ChangeYaw ( pev->yaw_speed ); |
__________________
__________________
Кто-то пантер упомянул?
__________________
Base Defense on Steam, ModDB
PLut
Какие-то у тебя маленькие пантеры. Вот в азурщипе и в ретриблююшене были пантеры! Всем пантерам пантеры.
__________________
XaeroX Я ресайзил их не один раз и решил, что это самый лучший размер.
__________________
Base Defense on Steam, ModDB
Анимации конечно жесть у них. Понятно, почему вырезали.
__________________
PLut я в бдеф не играл, поэтому не ругай за вопрос У тебя там монстры обычные, и не умеют стрелять на бегу? Если нет, то не хотел бы сделать, чтобы стреляли? Ну, например, можно на более высоком уровне сложности это сделать. Или с нарастанием волн.
Ku2zoff Обычные, не умеют. Хотел бы, я только за, когда дело касается улучшения поведения монстров.
__________________
Base Defense on Steam, ModDB
PLut вот давай, когда у меня появятся более-менее приличные результаты, дам тебе код, ты встроишь в бдеф и потестируешь. Самый лучший вариант для тестирования будет, имхо. Если ты не против. У меня просто нет возможности тестить всех монстров. Начну с алиен грантов, т.к. с ними проще, не надо почти ничего менять.
Ku2zoff Буду рад
__________________
Base Defense on Steam, ModDB
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
~ X ~
__________________
__________________
ㅤ
Cybermax
__________________
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
__________________
__________________
__________________
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
__________________
XaeroX вот и дружи после этого с людьми. :-/ А ДМ точно в одной стране с нами живёт?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
~ X ~
__________________
~ X ~
таки разобрался с поездами? а если ченджлевел без транзишона и pvsом игрока определяется? надо тогда как ни будь будет попробовать ещё раз hc2 или etc, например, кооппройти.
__________________
http://www.moddb.com/mods/monorail-quest
__________________
ㅤ
Cybermax Интересное предположение, кстати, в бдефе мп5 и м4 обе с подствольниками. По-крайней мере пока что.
__________________
Base Defense on Steam, ModDB
PLut ну то что м203 на мр5 смотрится ка на корове седло, это и ежу ясно, а на м16 органично, на м4 лично мне не так нравится но возможно. Также можно разделить глок, беретту с глушителем(я об этом уже писал тебе), дигл и кольт присобачить. Кстати, сейчас собираю модели оружия которое есть только в ОП4 с руками барни, хев. Ищу м40а1 барни, пулимет, дисплейсер. У кого есть поделитесь. Потом сделаю пак, выложу.
Добавлено 11-07-2015 в 03:36:
Можно mac10 и uzi добавить. Модели можно взять из Cold_Ice
__________________
ㅤ
Колд айс )))))) Сколько лет я о нём не слышал! А ведь в своё время (99ый год) в клубах мы в него рубились, хоть и не понимали, что там происходит
Эхем. Что-то вы зафлудили опять про пушки...
По теме: модели все тоже новые клепать? Частично оставить старых монстров можно будет? pev->weaponmodel тоже, может, задействовать? (чтоб не клепать десяток bodygroup для оружий)
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
__________________
ㅤ
Убрал, наверное авансом, с расчётом на исправление в будущем, но он может и вернуть
Жду ответа про pev->weaponmodel...
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
__________________
ㅤ
Chyvachok не перенимай эту привычку читать и отвечать на сообщения других людей игнорируя куски текста несущие смысловую нагрузку. Я выше писал практически то же самое. Видимо ты просто не обратил внимания, но раз наше мнение совпало видимо имеет логику под собою
__________________
ㅤ
Научил барника пятиться, когда враг подходит к нему слишком близко. Пока что работает не идеально, но нравится. Живучесть у него весьма возросла. Видео пока не будет, и тутора тоже. Ещё многое нужно протестировать и отшлифовать напильником. Бдеф как база для тестирования отпал, он и так хардкорный, подвижные монстры там без надобности. Потестирую пока своими силами. А там будет видно.
Ku2zoff
Ты потом хотя бы не тутор, а общие соображения напиши, пожалуйста. Ключевые моменты, так сказать. А код мы сами напишем.
__________________
XaeroX а какие соображения? Я и сейчас напишу.
1. Нужно отвязать движение от секвенции, то есть исключить использование StduioFrameAdvance в функции CBaseMonster::Move, где оно юзается по дефолту. Делается это очень легко: нужно всего лишь задать монстру значение m_flGroundSpeed. Для бега выше, для ходьбы ниже. Как и у игрока в юнит/сек. Лучше всего это сделать в функции MonsterThink, оверрайдить её для конкретного монстра.
2. Нужно назначать гейтсеквенции для активностей движения. Оверрайдим SetActivity для конкретного монстра. Если NewActivity = m_movementActivity, то эту активность делаем гейтсеквенцией. Если нет, то простой секвенцией.
3. Самая сложная часть. Нужно отредактировать существующие таски, или написать новые. К примеру, я убрал TASK_STOP_MOVING из Task_t tlAGruntRangeAttack1[], тем самым отучив его останавливаться, когда он стреляет. Ну потом конечно написал отдельный таск для стрельбы в движении. И сделал переключение между ними в функции выбора скедъюлей Schedule_t* CAGrunt :: GetScheduleOfType ( int Type ) в зависимости от расстояния до противника. Тут всё ограничивается лишь полётом фантазии.
Таски и скедъюлы можно по-разному комбинировать, получая интересные результаты. А если вчитаться в их код, то вообще о-го-го, чего там есть К примеру, стрейф в халфе вполне себе реализован. Только ни один бегающий монстр его не юзает. Вроде бы только алиен_контролееры умеют.
4. Расчёт гейтсеквенции монстрам на клиенте. Аналогично игроку, с той лишь разницей, что скорость фиксированная, и нам не нужна никакая m_flGaitMovement. Только m_flGaitFrame нужно рассчитывать. Здесь я напоролся на то, что для КАЖДОГО отдельного монстра нужно считать свой гейтфрейм (для игрока юзается индивидуальная структура m_pPlayerInfo, поэтому там проблем нету). Сначала я ради эксперимента сделал так: float m_flGaitframeMonster[1024]; ну понятно, максимум 1024 монстра, в качестве идентификатора - индекс энтити. Говнокод кароч. Потом заюзал пустой энтварс под гейтфрейм, и всё стало нормально.
5. Передача гейтсеквенции по сети. В маленькое изменение в client.cpp и новая строчка в delta.lst.
6. Серверные хитбоксы. Рассчёт m_flGaitFrame для гейтсеквенции на сервере, как в кс. Пока не делал, т.к. серверный кадр не синхронен с клиентским.
Пункты 2 и 3 ещё требуют доработки, чтобы не было дёрганий на ровном месте и искр над башкой. Пункт 6, я хз, нужен ли он вообще в халфе. Разве что при стрельбе из арбалета по монстру, который медленно идёт, и ноги у него медленно анимируются.
__________________
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
__________________
__________________
XaeroX а как? Я пока не думал над этим.
Ku2zoff
Плавнее стало переключение между, например, ходьбой и прыжком, ходьбой и idle. Монстрам это тоже должно помочь. Хотя смотря что вы понимаете под "дёрганно".
__________________
XaeroX Рывками, покадрово будто.
__________________
Base Defense on Steam, ModDB
Смотри, значит, как gaitframe считается.
__________________
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
Ku2zoff в любом случае буду рад видеть результаты твоей работы! Главное чтоб подводные ка..мни не выплыли за ночь до (или после) релиза.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
модели менять тоже придется для этооо?
Добавлено 22-07-2015 в 00:59:
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
Конечно завидуют.
мне лично было бы интересно посмотреть на способ реализации покупки через вгуи.
Ну так же да. Вот зареверсили серверку, но чтоб добавить хоть новое оружие, хоть партикли, нужно не только клиентку дописывать, ее еще инадо делать соответствующей серверу - это и ловить все исходящие эвенты, мессаги, событияи т.п. ну то есть долгий труд подгонки....
Добавлено 22-07-2015 в 13:51:
Ну даже вот пример . Скомпилил сервер и заменил оригинальный им. Пропала куча фишек. Тот же вгуи... значит, и зареверсили не до конца. Или клиентка более новая оригинальная была, что непонимала всех команд с сервера...
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
XaeroX *sarcasm self-test complete (portal 2)
Ghoul [BB] какие в кант-тре партиклы? Что там вообще интересного? По смутным воспоминаниям 10-летней давности, там всё стандартнохалвовское. С выгуями надо покряхтеть, но ничего сверханального там нет. Я бы и тридэмодели туда накрутил, но это долго и сложно. Кстати, в XDM выгуи кодить попроще, чем в ХЛ.
Если там и есть партиклы, то в новом СДК выложили код _интерфейса_ к particleman.dll - на, бери. Только не хочу: RS всё равно уже переросла всё что там было.
Добавлено 22-07-2015 в 15:05:
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
~ X ~
Это не сарказм был, а огульное обсирание людей, которых ты даже не знаешь. И которые на своём "говнокоде" сделали денег больше, чем ты за всю жизнь. Какой процент этих денег дошёл до них - это другой вопрос.
Добавлено 22-07-2015 в 18:10:
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Разобрался с блендингом на клиенте. Точнее понял этот механизм. Особых сложностей не должно возникнуть. Теперь буду пытаться привязать скорость передвижения на сервере к гейтсеквенции. Это уже сложнее.
Добавлено 15-09-2015 в 23:21:
Вот видео, где блендядтся секвенция и гейтсеквенция. Наподобие того, как в сорсовском моделвьювере.
Ku2zoff Бег барника очень доставил Рад видеть, что работаешь дальше.
__________________
Base Defense on Steam, ModDB
Какой ч0ткий барник!
TODO: запилить кооп "игроки против злых барников"
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
зомби-барни
или как будто он в штаны насрал и ему это идти мешает. Ну, чтоб тёплые кахи об попец не так тёрлись, он ноги раздвинул
Но дело годное. Наблюдаем за процессом.
Я потом в ХДМ часть опфоровых монстров впилю и будет вообще потеха, когда эта гадость на бегу будет стрелять. Сложность точно возрострёт.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
UPD: научился считать скорость передвижения из гейтсеквенции на сервере:
1 | void CBarney::MonsterThink(void) |
2 | { |
3 | void *pmodel = GET_MODEL_PTR(ENT(pev)); |
4 | studiohdr_t *pstudiohdr = (studiohdr_t *)pmodel; |
5 |
6 | if (pstudiohdr) |
7 | { |
8 | static float flSpeed; |
9 |
10 | if (pev->gaitsequence >= pstudiohdr->numseq) |
11 | flSpeed = 0.0f; |
12 | else |
13 | { |
14 | mstudioseqdesc_t *pseqdesc = (mstudioseqdesc_t *)((byte *)pstudiohdr + pstudiohdr->seqindex) + pev->gaitsequence; |
15 |
16 | if (pseqdesc->numframes > 1) |
17 | { |
18 | flSpeed = sqrt(pseqdesc->linearmovement[0] * pseqdesc->linearmovement[0] + pseqdesc->linearmovement[1] * pseqdesc->linearmovement[1] + pseqdesc->linearmovement[2] * pseqdesc->linearmovement[2]); |
19 | flSpeed = flSpeed * pseqdesc->fps / (pseqdesc->numframes - 1); |
20 | } |
21 | else |
22 | flSpeed = 0.0f; |
23 | } |
24 |
25 | m_flGroundSpeed = flSpeed; |
26 | } |
27 | else |
28 | m_flGroundSpeed = 0.0f; |
29 |
30 | CBaseMonster::MonsterThink(); |
31 | } |
Забивать в зад кол .... ну каждый в меру своей испорченности видит этот мир.
Но все равно с говном связано
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB]
Да что у тебя всё к говну сводится постоянно?
>Что там вообще интересного?
monster_hostage
__________________
http://www.moddb.com/mods/monorail-quest
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
UPD: с переключением анимаций на сервере вроде разобрался. Барник всё делает как надо. Нет залипаний секвенции или гейтсеквенции, или отсутствия переключения активностей. Даже пофиксил грязным хаком страшное раскачивание верхней половины модели, когда нижняя играет ту же анимацию, а кадры не совпадают. Ждите, немного потестирую и покажу видео.
З.Ы. А в свенкоопе барник не умеет на бегу стрелять
Добавлено 16-09-2015 в 22:51:
Добавлено 16-09-2015 в 22:56:
Что скажете? По-моему уже вполне годно. Надо только подкрутить константы расстояния, и поправить скедьюлы атаки. Ну ещё от хака на клиенте избавиться, и серверный гейт заанимировать, чтобы хитбоксы совпадали. Я это на потом отложу, а пока запилю хьюман_грантов, стреляющих на бегу. Заодно научу их ходить за игроком, как в опфоре. Давно хочу это грамотно сделать, а не так коряво, как в 2008 году накодил.
Очень класно, супер, надо его еще назад пятиться научиться, кстати прикольно вышло что он подходит к врагу, насчет врагов, конечно оно врядли к стрельбе на бегу относиться, было бы прикольно чтобы обстреляные враги уходили от обстрела и прятались где-то, если они не могут до игрока достать.
Ku2zoff Стрельба на бегу, конечно - это слишком, но когда барни идет и расстреливает зомби, то выглядит это эпично, в лучших традициях боевиков. Плюсую ораторов выше, хотелось бы увидеть как барник/грант отходят от милишных монстров.
...ну и, быть может, стрейфы?
__________________
Base Defense on Steam, ModDB
Ku2zoff Ну, не всё же сразу. Твоя работа - уже огромный прогресс!
__________________
Base Defense on Steam, ModDB
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB] смотри, во-первых, в самом коде монстра константы в функции CheckRangeAttack1. Во вторых, если есть, гляди кейс SCHED_RANGE_ATTACK1 в функции GetScheduleOfType. И в третьих, смотри код самих скедьюлов, которые называются slGruntRangeAttack1A, slGruntRangeAttack1B (у хьюгранта такие, у твоего снайпера могут быть другие). В коде скедьюла, во втором блоке, то есть в самом скедьюле (первый блок это таск - описание последовательности действий, а второй это скедьюл - описание условий, которые могут прервать выполнение таска). Смотри флаг bits_COND_ENEMY_TOOFAR. Если этот флаг есть в скедьюле, то скедьюл будет фейлиться, если игрок от монстра находится на расстоянии, большем, чем m_flDistTooFar. m_flDistTooFar по-умолчанию равен 1024 юнита, это значение задаётся в функции CBaseMonster::MonsterInit(). Но, думаю, его можно оверрайдить в спауне монстра, просто указав нужное значение после вызова MonsterInit().
Добавлено 17-09-2015 в 12:25:
Граждане, помогите мне вот с какой бедой: придумайте мне условие переключения секвенций. С гейтсеквенциями очень просто:
if ((iSequence != pev->gaitsequence) && (iSequence == LookupActivity(m_movementActivity))) |
pev->gaitsequence = iSequence; |
1 | if (pplayer->weaponmodel) |
2 | { |
3 | cl_entity_t saveent = *m_pCurrentEntity; |
4 |
5 | model_t *pweaponmodel = IEngineStudio.GetModelByIndex( pplayer->weaponmodel ); |
6 |
7 | m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata (pweaponmodel); |
8 | IEngineStudio.StudioSetHeader( m_pStudioHeader ); |
9 |
10 | StudioMergeBones( pweaponmodel); |
11 |
12 | IEngineStudio.StudioSetupLighting (&lighting); |
13 |
14 | StudioRenderModel( ); |
15 |
16 | StudioCalcAttachments( ); |
17 |
18 | *m_pCurrentEntity = saveent; |
19 | } |
1 | if (!m_pCurrentEntity->player && m_pCurrentEntity->curstate.weaponmodel) |
2 | { |
3 | cl_entity_t saveent = *m_pCurrentEntity; |
4 |
5 | model_t *pweaponmodel = IEngineStudio.GetModelByIndex(m_pCurrentEntity->curstate.weaponmodel); |
6 |
7 | m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata(pweaponmodel); |
8 | IEngineStudio.StudioSetHeader(m_pStudioHeader); |
9 |
10 | StudioMergeBones(pweaponmodel); |
11 |
12 | IEngineStudio.StudioSetupLighting(&lighting); |
13 |
14 | StudioRenderModel(); |
15 |
16 | StudioCalcAttachments(); |
17 |
18 | *m_pCurrentEntity = saveent; |
19 | } |
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Слои - это хорошо. Главное чтобы система не стала как в новом обновлении КСГО.
Странно. Вроде бы, каэску не лошки делали и она специально для сети заточена. а тут ты такие разоблачения пишешь...
Добавлено 17-09-2015 в 20:09:
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB]
1 | else if (FStrEq(pcmd, "client_buy_open")) |
2 | { |
3 | if (player->m_iMenu == Menu_OFF) |
4 | player->m_iMenu = Menu_ClientBuy; |
5 |
6 | if (player->m_signals.GetState() & SIGNAL_BUY) |
7 | { |
8 | } |
9 | else |
10 | { |
11 | MESSAGE_BEGIN(MSG_ONE, gmsgBuyClose, NULL, player->pev); |
12 | MESSAGE_END(); |
13 | } |
14 |
15 | return; |
16 | } |
17 | else if (FStrEq(pcmd, "client_buy_close")) |
18 | { |
19 | if (player->m_iMenu == Menu_ClientBuy) |
20 | player->m_iMenu = Menu_OFF; |
21 |
22 | return; |
23 | } |
24 | else if (FStrEq(pcmd, "menuselect")) |
25 | { |
26 | int slot = atoi(CMD_ARGV(1)); |
27 |
28 | if (player->m_iJoiningState == JOINED || (player->m_iMenu != TEAM_SPECTATOR && player->m_iMenu != TEAM_TERRORIST)) |
29 | { |
30 | if (slot == 10) |
31 | player->m_iMenu = Menu_OFF; |
32 | } |
33 |
34 | switch (player->m_iMenu) |
35 | { |
36 | case Menu_ChooseTeam: |
37 | { |
38 | if (!player->m_bVGUIMenus) |
39 | { |
40 | if (!HandleMenu_ChooseTeam(player, slot)) |
41 | { |
42 | if (player->m_iJoiningState == JOINED) |
43 | ShowVGUIMenu(player, MENU_TEAM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_5 | MENU_KEY_0, "#IG_Team_Select"); |
44 | else |
45 | ShowVGUIMenu(player, MENU_TEAM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_5, "#Team_Select"); |
46 |
47 | player->m_iMenu = Menu_ChooseTeam; |
48 | } |
49 | } |
50 |
51 | break; |
52 | } |
1 | else if (FStrEq(pcmd, "buyequip")) |
2 | { |
3 | if (!(player->m_signals.GetState() & SIGNAL_BUY)) |
4 | return; |
5 |
6 | if (g_pGameRules->m_bMapHasBombTarget == true) |
7 | { |
8 | if (player->m_iTeam == TEAM_CT) |
9 | ShowVGUIMenu(player, MENU_BUY_ITEM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_7 | MENU_KEY_8 | MENU_KEY_0, "#DCT_BuyItem"); |
10 | else |
11 | ShowVGUIMenu(player, MENU_BUY_ITEM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_0, "#DT_BuyItem"); |
12 | } |
13 | else |
14 | { |
15 | if (player->m_iTeam == TEAM_CT) |
16 | ShowVGUIMenu(player, MENU_BUY_ITEM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_8 | MENU_KEY_0, "#CT_BuyItem"); |
17 | else |
18 | ShowVGUIMenu(player, MENU_BUY_ITEM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_0, "#T_BuyItem"); |
19 | } |
20 |
21 | player->m_iMenu = Menu_BuyItem; |
22 | return; |
23 | } |
24 | else if (FStrEq(pcmd, "buy")) |
25 | { |
26 | if (!(player->m_signals.GetState() & SIGNAL_BUY)) |
27 | return; |
28 |
29 | ShowVGUIMenu(player, MENU_BUY, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_7 | MENU_KEY_8 | MENU_KEY_0, "#Buy"); |
30 | player->m_iMenu = Menu_Buy; |
31 | return; |
32 | } |
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
1 | if (player->m_signals.GetState() & SIGNAL_BUY) |
2 | { |
3 | } |
4 | else |
5 | { |
6 | MESSAGE_BEGIN(MSG_ONE, gmsgBuyClose, NULL, player->pev); |
7 | MESSAGE_END(); |
8 | } |
1 | Vector vecSrc, vecDest; |
2 | vecDest = (pev->origin - pOther->pev->origin); |
3 | vecDest.z = pev->origin.z - pev->origin.z; |
4 | vecDest = vecDest.Normalize() * 50; |
5 | pev->velocity = pev->velocity + vecDest; |
6 | vecSrc = pev->origin; |
Ku2zoff Учитывая, что в кс есть не только VGUI меню, но и текстовое, то можно запросто предположить, что биты кнопок и ссылка на тайтлс - это для работы именно текстовых меню.
__________________
Base Defense on Steam, ModDB
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ghoul [BB] Как бы функция в каждой каэсочке, в тч 1.6, есть "Old style menus", что врубает текстовые меню.
__________________
Base Defense on Steam, ModDB
А, вот оно для чего...
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Ku2zoff Я пользовался и, честно говоря, в игре как каэс я бы предпочел именно текстовые меню. Для быстрых сообщений и голосований в бдефе так же у меня текстовые меню. Они отлично подходят, когда нужно быстро среагировать. Это старый подход, не спорю, но главное, что он отлично работает.
В ксго сделали отвратное меню покупки, где пытаешься быстро сориентироваться, а в итоге только путаешься.
И вот скажи, часто ты любовался в магазине кс на картинки оружия и их характеристики, которые к игре не имеют ни малейшего отношения?
__________________
Base Defense on Steam, ModDB
PLut солидарен с тобой в том, что текстовых меню вполне достаточно. Но я бы завёл квар, который бы переключал стандартные ВГУИ-менюшки в минималистический режим. То есть панели невидимые, картинок нет, циферок нет, меню поменьше, чем полноформатное, но не такое маленькое, как обычное текстовое. Ну и мышка не перехватывается ВГУИ-вьюпортом, только клавиши. Так было бы очень удобно. Новички могли бы рассматривать картинки в меню и читать описания, а профи не мучались бы от мелькания панелей перед глазами. И да, минималистичное ВГУИ можно раскрашивать, добавлять туда маленькие иконки, звуки и проч.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
А вы видели описание в OI:FD?
Там оно имеет реальное отношение к игре - т.к. характеристики в игре учитывались. Ну и плюс небольшая справка для интересующихся.
Ku2zoff Это уже смотря как кто видит проблему и её решение.
Ghoul [BB] В хлве и пушки разнообразные были, а не один огнестрел.
XaeroX Вот, когда характеристики имеют отношение к игре и дают полезную информацию игроку, то это совершенно другое дело. В каэс такого нет.
__________________
Base Defense on Steam, ModDB
Так. Товарищи. Есть вопросы к вам. Хочу услышать ваше видение. Как себя должны вести монстры в бою? Вопрос такой возник потому, что мало научить их просто стрелять не останавливаясь. Нужно ещё написать новые таски для AI, чтобы движение в бою использовалось с максимальной эффективностью. Что от вас требуется:
1. Пишем имя монстра, например, monster_human_grunt.
2. Пишем, нужно ли ему двигаться и одновременно выполнять какие-то действия (которые уже есть в оригинальной халфе), завязанные на анимациях, что на данный момент в халфе невозможно. (Если сюда пишете нет, то пункт 3 пропускаете, можно сразу перейти к п.4. Если да, то, соответственно катаете п.3).
3. Действия расписываем (а, б, в и т.д.), описываем ситуации применения.
4. Предлагаем какие-нибудь комбинации/последовательности действий, которых нету в оригинальной халфе. Можно предложить новые способы передвижения - перекат/стрейф/прыжок (при условии, что в стандартной модели есть нужные анимации. Для стрейфов, наверное не нужно, т.к. в обозримом будущем я попытаюсь прикрутить бонеконтроллеры).
5. Ещё какие-нибудь ваши соображения/мечты. В пределах разумного.
Если мнение по монстру уже кем-то оставлено, то в пункте 2 вы можете написать нет (если по вашему мнению монстра надо оставить таким, какой он есть, или наоборот - да). В пункте 3 пишете только отличия, используя буквенную нумерацию предыдущего оратора. То же самое с п.4. В п.3. и п.4. можете написать "не нужно", если мнение, оставленное до вас, вам кажется неуместным. Желательно аргументировать. Пункт 5 пишите как хотите.
К чему всё это? Я совсем не уверен, что мне хватит фантазии использовать все возможности модифицированного AI. Надеюсь на мапперов, которым чего-то не хватает в халфе. Ну и чуть меньше на игроков. Давайте пожалуйста не будем флудить или даже по теме писать, но не в формате, что я предложил, пока не наберётся хотя бы 10 мнений. Мне просто лень выглядывать нужные посты среди других Я знаю, что эта тема относительно популярна, и надеюсь, что трёх-четырёх дней хватит.
Дуйте сюда. Вопросы есть.
XaeroX ну ок
Вот когда барни начал убегать от зомбака - круто.
А вот лунная походка требует исправления, тем не менее...
Barney Jackson approves!
__________________
Base Defense on Steam, ModDB
Что получается: монстра вполне реально заставить двигаться задом наперёд, чтобы он, отступая от врага, смотрел на врага. Но всё дело портит меркзая функция CBaseMonster::ChangeYaw, которая много где вызывается, и поворачивает монстра в направлении движения. На данный момент я использую хак, при котором вместо направления движения указывается направление на врага. Но хак невероятно грязный, прям до ужаса:
if (m_pSchedule && !_stricmp(m_pSchedule->pName, "Retreat") && m_hEnemy) |
{ |
pev->angles.y = (m_hEnemy->pev->origin - pev->origin).y; |
} |
Что, никто в монстрах не шарит что ли? Это несерьёзно, товарищи.
Работа не стоит на месте. Подглядел методом псевдонаучного тыка, где в свенкоопе клиентский код студиомодельрендерера хранит gaitframe монстра: в m_pCurrentEntity->curstate.iuser1. Я-то думал, что в fuser1. Там как раз в delta.lst новые строчки в EntityEncode есть:
//Sniper |
DEFINE_DELTA( fuser1, DT_FLOAT, 8, 1.0 ), |
DEFINE_DELTA( fuser2, DT_FLOAT, 8, 1.0 ), |
DEFINE_DELTA( iuser1, DT_INTEGER, 8, 1.0 ), |
DEFINE_DELTA( gaitsequence, DT_INTEGER, 8, 1.0 ) //Monsters can have gaitsequences now. |
StudioCalcRotations( pos2, q2, pseqdesc, panim, m_pCurrentEntity->curstate.iuser1 ); |
Ku2zoff Ну анимация у агрантов - это одно, я вот именно про интерполяцию говорил. Так что вот запилишь, должно круто получиться
Похвально, что не бросаешь!
__________________
Base Defense on Steam, ModDB
Замутил интерполяцию. Вроде работает. Но говнокод ещё тот С другой стороны, я не представляю, где хранить время переключения и гейтсеквенцию с предыдущего энтити стейта, а так же гейтфрейм (одинаковый для обоих стейтов). Хранить негде, кроме как в энтварсах. Волшебная структурка под названием latchedvars_t не включает в себя каких-то дополнительных полей, да и трогать её я бы не стал. Вдруг интерполяция между обычными секвенциями изломается?
Чуть позже выложу вам два видео, с интерполяцией и без. Чтобы было видно разницу.
Добавлено 25-09-2015 в 21:42:
Добавлено 25-09-2015 в 21:46:
А вот то же самое, только в одном видео:
Добавлено 25-09-2015 в 21:50:
Ну што?
Добавлено 25-09-2015 в 22:12:
Вот минимод. Та самая демка, с которой писал видео, внутри.
http://rghost.ru/6qY6N4W9p
Можете поиграться с кваром studio_lerp_gait, и поглядеть разницу сами. Гейтсеквенции сделаны только для барника. Скедъюлы не написаны, поэтому поведение у него абсолютно обычное, только нижняя половина анимируется гейтсеквенцией.
Добавлено 25-09-2015 в 22:18:
PLut, если у тебя остался код алиен_грантов, который я тебе когда-то давал (я не помню уже, но вроде давал что-то), то можно попробовать влепить интерполяцию на клиент. Посмотришь, как оно будет. Заодно со скоростью передвижения в том старом коде ещё разберёмся.
Добавлено 25-09-2015 в 22:26:
З.Ы. Демка должна работать на вон-халфе, т.к. собрана из подправленных под 2013 студию сорцев, которые XaeroX выкладывал для 2005 студии.
Очень классно, с барником который назад пятиться выходит даже лучше чем в свинке.
Ku2zoff Я напишу, как время будет, сейчас выдался очень трудный месяц.
__________________
Base Defense on Steam, ModDB
Не у тебя одного, браток!
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Обновка для минимода. Маленький фикс на клиенте и стрельба на бегу для алиен_грантов. Смотрим, отчитываемся о багах.
http://rghost.ru/7rPngXgHp
Чуть позже сделаю зомбей и буллсквидов. Солдатня и барник пока не в приоритете, т.к. не исправил ещё функцию ChangeYaw.
С этими дллками можно пройти оригинальную халфу, или моды, не имеющие собственного кода. Пока не стоит этим заниматься. Когда большинство монстров будут уметь что-то делать в движении, тогда и можно будет.
Ku2zoff
А ты как сохраняешь предыдущие кватернионы и позиции? Как обычный sequence? Просто если ты делаешь так, то порой будет фигня выходить. Например, вот монстр бежит такой и резко ̶п̶р̶и̶у̶н̶ы̶в̶а̶е̶т̶ прыгает, допустим. Тут анимации смешиваются, ты сохраняешь предыдущие кадры и анимацию. Потом он еще, не доканчивая прыжок, делает шпагат. И если у нас предыдущая интерполяция между ходьбой и прыжком не завершилась, выходит не плавный переход от прыжка+бега к шпагату. Вот я подумал сохранять все позиции в массив координат и кватернионов. Тогда не придется сохранять предыдущую анимацию и кадр.
ILZM естественно, я слизал механизм с обычных секвенций. Каждая следующая гейтсеквенция интерполируется с предыдущей. Вполне могут быть довольно резкие переходы, но в последовательности ходьба/бег/стояние этого не заметно. Всякие специальные анимации, используемые в скриптах, не имеют активностей, в гейтсеквенцию не засовываются, и интерполируются как обычно.
Ku2zoff довольно неплохо. Ждём туториал
Да, очень круто.
Superuser8 ещё сыро. Но монстров с ближним боем уже вполне можно кодить. У меня есть идея. Я допилю существующий код, чтобы он был постабильнее и покрасивее, и напишу вам тутор по зонбе. А вы экспериментируйте, может поправите те баги, с которыми я никак не могу справиться. Пока вы будете ковырять код тутора, я доделаю пятящегося барника и попытаюсь сделать как следует хьюман_ и алиен_грантов. Ну и буллсквида ещё.
Если ни у кого нет желания этим заниматься, то я не буду писать тутор, и надеюсь, что успею доделать всё сам к релизу XDM 3.0.3.8. Помощь определённо нужна, есть нехороший затык на сервере с условием переключения на новые sequence/gaitsequence.
Ku2zoff Выглядит потрясающе, только вот рендж в проверке атаки увеличить чуток и будет конфетка!
__________________
Base Defense on Steam, ModDB
PLut range у зомби по-умолчанию 64 юнита. Трейслайн делается на 70 юнитов. Я сделал проверку на >= 48 юнитов - зомби бьёт на ходу. То есть от 64 до 48. Тут дело наверное не в этом.
UPD: кажется исправил условие переключения на новые sequence/gaitsequence. Надо тестить. Щас дам обновку для минимода. Из действующих на ходу монстров - агрант, барник и зонбе. Агрант бежит к врагу и стреляет, зонбе идёт и машет руками, а барник пятится от врагов, если те подходят слишком близко. Если барника зажимают в угол, он пытается убежать от врагов, но это не всегда выходит. Тут дело не только в самом SCHED_TAKE_COVER_FROM_ENEMY, но ещё и в нодах.
http://rghost.ru/8kzP8Rh5p
Добавлено 29-09-2015 в 18:48:
Ну что, запилить вам тутор по зонбе? Или будете готовенькое ждать? А может кто-нибудь придумает как избавиться от "лунной походки" у барника? Я уже придумал. Но только на бумаге. Теперь надо код написать
Ku2zoff
Меняешь framerate на -1, разве не так?
Ku2zoff
Ах да. Я эту проблему для игрока решил запихав скорость игрока в vuser, и в delta передавал с сервера на клиент. Не знаю, ест ли много траффика, но зато эту скорость можно для боба и вообще для разных целей использовать. Мб тебе для каждого монстра открыть поле какое-нибудь в delta? Хотя тебе же нужна синхронизация для хитбоксов.
Мб тогда будешь передавать frame, sequence и gaitframe, gaitsequence? Таким образом тебе не нужно будет считать анимацию на клиенте и хитбоксы будут сихронизированы. Хотя инфу о переходах не передашь через сеть.
Тогда возникает новый вопрос. Вот у тебя с двух сторон одинаковый код просчета анимаций, но они точно идут в такт? Т. е. не надо там никаких предсказываний? Вдруг на клиенте анимация идет с мелким запозданием.
ILZM Зачем скорость игрока на клиент передавать, если она там уже есть?
__________________
Base Defense on Steam, ModDB
PLut
Где? Честно искал, но не нашел. А может быть и нашел, но не сработало Эт я про XashXT
ILZM В view.cpp. В бдефе так боб работает, сохраняй speed куда угодно (если надо) и пользуйся.
vec3_t velocity = pparams->simvel; |
float speed = velocity.Length2D(); |
__________________
Base Defense on Steam, ModDB
Ku2zoff Ну если зажать вперед и стрейф, то тоже увеличится, да и скорость игрока увеличивается по сути при поворотах мыши, а то зачем башкой вертеть при распрыгах? Вон взять кридз плагины на коэс и поглядеть изменение скорости игрока при стрейфах и направлении вперед/назад, а так же при повороте мышью.
__________________
Base Defense on Steam, ModDB
PLut эта скорость только для локального игрока. А мы говорили о студиомодельрендерере и о той скорости, которая передаётся через дельту в секции player_encode. Ну то есть она там как раз не передаётся
Ku2zoff А вот это факт, да. Чтобы получить скорость других игроков нужно её передавать. Просто там про боб словечко было, а для боба локальной скорости достаточно. Я долго парился чтобы правильно игрокам партиклевые эффекты в бдефе рисовать, некоторые эффекты вызываются эвентом и я думал как можно получить велосити серверной энтити на клиенте, думал, что оно передаётся в эвенте само, оказалось, что нет, попробовал запихнуть вместо углов, получилась каша из углов и велосити. Пришлось юзать 2 флоата в эвенте, для партиклей у меня они не нужны всё-равно.
__________________
Base Defense on Steam, ModDB
PLut а можно было просто добавить поля
DEFINE_DELTA( velocity[0], DT_SIGNED | DT_FLOAT, 16, 8.0 ), |
DEFINE_DELTA( velocity[1], DT_SIGNED | DT_FLOAT, 16, 8.0 ), |
DEFINE_DELTA( velocity[2], DT_SIGNED | DT_FLOAT, 16, 8.0 ), |
Ku2zoff Мне на пару секунд это и нужно
__________________
Base Defense on Steam, ModDB
Ku2zoff вполне грамотный подход.
PLut а почему Length2D()? У тебя в моде лестниц и падений не бывает?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
~ X ~ а зачем считать bob на лестницах? Когда я сделал собственный bob с раскачиванием пушки по двум осям, я отключил раскачивание по одной из осей, когда игрок плавает, прыгает или летит. Так красивее смотрится. Если уделять внимание таким мелочам, как раскачивание камеры и вьюмодели оружия, можно добавить неплохую динамику игре. Единственное, что я не сделал, не завёл квары для отключения. Бывает, что не всем нравится качание. Но мне нравится, я в первом анриле и УТ1 всегда на максимум ставлю.
Добавлено 02-10-2015 в 14:37:
~ X ~ Держи ответ от самих вальве.
// bob is proportional to simulated velocity in the xy plane |
// (don't count Z, or jumping messes it up) |
VectorCopy( pparams->simvel, vel ); |
vel[2] = 0; |
__________________
Base Defense on Steam, ModDB
PLut я не вальве спрашивал, а тебя. У вальве боб. А скорость на клиенте считается просто Length(). К тому же твой камент про simvel, а двумя постами выше уже сказали, что это вообще другая вещь.
Ku2zoff я не про боб а про линейную скорость игрока вообще.
Ku2zoff DELTA_UNSETBYINDEX
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
~ X ~ Не к чему больше придраться что ли? Как бы, тот код из боба и взят.
__________________
Base Defense on Steam, ModDB
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
PLut про боб говорили только ты и ILZM. А все остальные - про общий механизм получения скорости на клиентской стороне. Мне 10 раз положить на код вальве, меня интересует вопрос, почему целесообразно (если) получать линейную скорость лишь в горизонтальной плоскости?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
~ X ~ Лол. Ты сам уже сказал, что про боб говорил я и ILZM, вот ему я про боб и отвечал, остальным, в том числе и тебе, я ничего не говорил. А твой z очень редко нужен, т.к. он меняется НАМНОГО реже x/y, но, конечно, если у тебя в моде главная фича - прыжок, то высчитывай скорость с учетом z, дело твоё.
__________________
Base Defense on Steam, ModDB
Новости: столкнулся с неприятной проблемой. А именно с кривым анимированием солдафонов. Когда у них активен гейт, анимации стрельбы как-то коряво блендятся, как будто не блендятся вообще. То есть визуально они стреляют вниз, наклонившись в пол, будто анимация не блендится и используется только первый бленд. В чём может быть проблема?
Вечером попробую копнуть функцию CHGrunt::SetActivity, возможно это из-за неё, т.к. там очень мудрёный выбор анимаций и активностей. Думаю, нужно будет написать соответствующую ей функцию SetGait.
Добавлено 04-05-2016 в 11:08:
З.Ы. у барника со стрельбой всё норм, и блендится норм.
Ku2zoff ты не знаешь в чем отличие ботов от NPC? Насколько сложно по-твоему запилить ходьбу по всем направлениям с неизменяемым углом типа что-то стрейфа, но во все стороны? У меня есть код смешивания ходьбы во все стороны, которое без всех этих долбанных контроллеров. Хотелось бы добавить такую возможность и npc. Вот, например, HL2 комбайны могут стрелять при беге по диагонали.
ILZM тут короче есть два варианта. Либо использовать стандартный механизм движения, тогда придётся делать анимации для диагональных стрейфов (с соответствующим motion extraction и параметрами секвенции в qc файле). Либо поворачивать монстра по диагонали в коде, т.к. двигаться они могут только по направлению анимации (зависит опять же от motion extraction).
Самый лучший вариант - сделать им бонеконтроллеры как игрокам. Ну и всё прочее в довесок.
Добавлено 04-05-2016 в 16:18:
Может, у них и модели надо чинить?
Кстати, надо мне проверить, не сломались ли блендинги после того как я уничтожил SQB...
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
XaeroX можно не исползовать 90% функций с углами из движка. Только я пока не запилил своего аналога DT_ANGLE для сраной дельты, которая портит углы морды игрока на клиенте.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Не, не надо. Нужно добиваться максимально универсальных методов.
А уж что там за модели в свен гоопе - я вообще не знаю.
Добавлено 05-05-2016 в 23:18:
fiEctro: из neko mario.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: half-life@conference.jabber.ru
Временная зона GMT. Текущее время 16:48. | Показать все 178 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024