Разобрался наконец Нашёл способ отрисовать серверные хитбоксы, увидел различия, и пофиксил несоответсвия серверных и клиентских костей. Проблема была не только в серверной, но и в клиентской части. Причём те догадки, которые я строил вслепую, оказались верными и нашли подтверждение при визуализации хитбоксов.
При отрисовке серверные хитбоксы отстают от модели игрока, когда тот бежит, но думаю, это всего лишь проблема метода их отрисовки (не каждый кадр, а когда вызывается SV_StudioSetupBones).
В общем, сырой вариант выглядит правильно, даже gait-анимации ногам делаются. Осталось протестировать, а потом ждите подробный тутор.
Воистину, попытки копипасты кода без понимания принципов его работы могут растянуть решение простой задачи с пары дней на... Ну вы поняли, когда была открыта эта тема Не буду утверждать, что сейчас досконально разбираюсь в механизмах студиомодельрендерера, но от тупой копипасты в этом направлении я уже ушёл.
Ku2zoff писал: При отрисовке серверные хитбоксы отстают от модели игрока, когда тот бежит, но думаю, это всего лишь проблема метода их отрисовки
Естественно. Я не знаю, как ты рисуешь на сервере, но в мультиплеере они будут отставать, т.к. сервер тчинкает реже клиента. Можешь принудительно ограничить клиенту фпс в раёне 30, тогда думаю отставать не будет.
Добавлено 05-05-2014 в 16:59:
Цитата:
Ku2zoff писал: Воистину, попытки копипасты кода без понимания принципов его работы могут растянуть решение простой задачи с пары дней на...
Я вам это давно говорю. Исключение составляют те случаи, когда вариантов перебора всего-то 3-4 штуки.
Ну например зеркало неправильно отражает, опа сделал проверку на SURF_PLANEBACK - заработало правильно.
Торжественно заявляю, что зеркало функций StudioModelRenderer'а на сервере мною доделано и функционирует синхронно с клиентом, как и должно быть. Маленькие отставания визуализированных хитбоксов связаны скорее всего со скоростью тчинканья сервера и в сетевой игре незаметны, пульки попадают куда надо. Было несколько неприятных моментов, которые я долго не мог пофиксить, некоторые из-за моей невнимательности, некоторые из-за предоставления ложной информации от участников форума. Есть некоторая неэстетичность в реализации, как то: игрок поворачивается немного дёрганно, но это опять же результат медленного тчинканья сервера. Попытка реализации сглаженных поворотов на клиенте провалилась, т.к. идентичный по константам с сервером код(что имеем в оригинальных исходниках клиентской части с форума арранжевого мента), вертит ноги игрока вместе с торсом. При попытке сгладить повороты на сервере я получил то же, что и на клиенте - ноги поворачиваются вслед за торсом когда ещё не должны. Но это и не важно, потому что моей задачей была именно серверная сторона, а клиент уже давно сделан. Если мне не будет лениво, в ближайшее время оформлю в виде тутора с комментариями того, что я понимаю в этом коде. А пока вот вам видео для затравки:
Chyvachok писал: это что-то вроде сглаженых анимаций?
Нет. Это зеркало CStudioModelRenderer::StudioSetupBones на сервере. Специально для 9-way блендинга, как в КС, ДоД и ещё некоторых мультиплеерных модах.
Ku2zoff никогда не спрашивай, хотят ли товарищи тутор.
Ты как почтальон Печкин - у меня для вас посылка, только я вам её не отдам.
Есть чем поделиться с народом - выкладывай, нет - не спрашивай.
Ku2zoff писал:
Время, время... Но насчёт актуальности тоже хотел бы узнать. Сколько вообще народу делает моды с моделями из КС?
Я может специально ради твоего туториала пересажу модели из Cyber Arena на скелет из контры. Правда не знаю как я это сделаю но вроде гордон HD то есть для контры так что вполне возможно.
Работа ещё не совсем закончена. Сейчас работаю над синхронизацией гейт-анимаций на сервере и клиенте. Это последний затык, который остался. Для справки: в КС гейт-анимации сервера и клиента синхронны, и хитбоксы ног в движении находятся там же, где и сами ноги визуально.
В общем так, ребяты. Времени у меня свободного счас мало, кому не терпится, завтра выложу изменённые файлы для нового ХЛСДК (сервер и клиент). Утянуть в ХЛСДК 2.3 нетрудно будет. Комментов в коде немного, в основном то, что я сам для себя менял. Работает норм за исключением гейт-анимаций, они не синхронны, допилить не смог пока что. Ну и кое-какие мелочи в плане интерполяции на клиенте, тоже не допилил. Сразу предупреждаю: анимации игрока стандартные, вам надо будет вносить свои изменения в CBasePlayer::SetAnimation под конкретные модели.
З.Ы. Почему не тутор? А кому он нужен? - раз. Моего кода там почти нету - два. Смысл писать тутор, когда те, кому это надо, сами поймут, как это работает - три.
З.З.Ы. Исходники под 2013 студию, я только ей сейчас пользуюсь Поэтому файлы проектов выкладывать не буду. Сами скопируете в новый ХЛСДК и скомпилите 2010 студией.
З.З.З.Ы. Код полностью рабочий, в игре всё как надо. Вопросов "а почему не компилится?" или "а почему не работает?" быть не должно. Ну эт я шуткую, если что, я в аське.
З.З.З.З.Ы. Ни в коем случае не указывайте меня в авторах, код не мой, я только внёс несколько изменений, чтоб работало как надо мне, в моём моде.