ILZM писал: Как это код одинаковый, но модель ведёт себя по-другому и поворачивается не одинаково?
Да вот так. Код выполняет одни и те же функции, но он не одинаковый. На клиенте в коде студиомодельрендерера есть доступ к разным параметрам энтити и инфе игрока, всё обновляется оперативно, каждый кадр. На сервере часть параметров из движка получить невозможно, насколько я увидел по коду из исходников КС. Например, тот же gaitmovement вычисляется непосредственно в коде игрока. Gaityaw тоже надо считать самому. Ну и ещё кое-что по мелочи. Попробую написать свои механизмы вычисления, основываясь на клиентском коде. Как только доведу до ума и протестирую, сделаю полноценный тутор с объяснениями.
Ku2zoff писал: На сервере часть параметров из движка получить невозможно, насколько я увидел по коду из исходников КС
У тебя доступ к эдикту есть. А значит и к классу доступ тоже.
Цитата:
Ku2zoff писал: Например, тот же gaitmovement вычисляется непосредственно в коде игрока. Gaityaw тоже надо считать самому
гейт не от хорошей жизни, это потому что велосити на клиент не приходит.
А на сервере считать гейт не надо.
Достаточно сделать вот так:
C++ Source Code:
est_velocity = pplayer->velocity;
m_flGaitMovement = est_velocity.Length() * dt;
вообще у меня сложилось впечатление, что вы все годами не можете сделать то, что вообщем-то требует от силы полтора часа.
Позорища
И марик этот со своей дезинформацией. Пусть сначале идой научится пользоваться.
Добавлено 02-05-2014 в 14:12:
Цитата:
Ku2zoff писал: Попробую написать свои механизмы вычисления, основываясь на клиентском коде
Ну вон в ксаше mod_studio.c - полноценная имплементация, бери да суй на сервер. Что мешает?
Заметь, 100% рабочая, иначе бы давно уже завалили багрепортами.
Дядя Миша писал: А на сервере считать гейт не надо.
лолшто? gaitsequence?
я немного потерял нить, о чём вы говорите. От уклона перешли к гайтам. Вообще, имхо, код передвижения в халве - КГ. В скайриме сделано единственно правильно (выставление ног на неровные поверхности). Но это для хохлолвы слишком круто... Хотя, я об этом ещё году в 2004ом думал...
Принцип очень простой. Находим точку и нормаль поверхности и тянем к ней ногу, т.е. конечную дочернюю кость. А она уже влияет на колено и тазобедренный сустав (в конкретном примере для ноги).
Потому-то кинематика и называется инверсной, что не родительская кость задаёт положение дочерних, а наоборот. В принципе там без разницы куда идёт импульс, но зачастую - от дочерних к родительским.
Дядя Миша писал: Ну вон в ксаше mod_studio.c - полноценная имплементация, бери да суй на сервер. Что мешает?
Всё что надо, я оттуда уже взял. Проблему я описал выше: Клиентская модель уже повернулась, а серверная ещё нет, она как бы "догоняет" рывками каждые N градусов, если игрок не движется. Может даже "перегнать", если мышью шевелить резко. Ну и гадские наклоны по оси Pitch, которые можно заблокировать в коде SV_StudioSetupBones.
А я pitch и yaw (которые вычисляются на сервере и юзаются в SV_StudioSetupBones) отправил на клиент, и там подхватил в клиентском StudioSetupBones. Вот и увидел. А про наклоны по picth - в модифицированной для 9-way блендинга функции StudioPlayerBlend эти наклоны обнуляются, моделька не наклоняется. На сервере тоже так сделал - хитбоксы почти стали совпадать, осталось несхождение из-за "догонялок".
Нет, ты ерунду увидел, на самом-то деле.
Ты же не забывай, что этот рассинхрон - нормальное явление, поскольку моделька игрока вертится сразу же на клиенте, вслед за мышкой, а потом результаты уходят на сервер, чтобы их могла использовать трасса.
Т.е. это нормальный лаг, ты его не победишь и не заборешь никоим образом.
Так и должно быть. *здесь картинка с малышевой*
Я видео если что залью потом. Это наверное не рассинхрон, а что-то другое. Рассинхрон он по времени, а тут можно хоть полдня прождать, моделька не повернётся, пока не сдвинешь игрока с места, или пока не повернёшь мышью дальше.
Разобрался, почему модель опаздывает. Запустил кс в одиночном режиме, сделал вид от 3-го лица. Там модель тоже поворачивается с опозданием. Значит, серверный код это действительно предусматривает. Надо либо заставить модель вертеться вовремя, либо завтавить модель на клиенте опаздывать.
Добавлено 03-05-2014 в 18:25:
Эх нет. Опаздывает только тогда, когда у игрока нет оружия. Стоит взять ствол, параметр sequence меняется, и всё норм.