Всё гораздо проще. В клиентском коде с форума арранжевого мента сделано так: сначала берётся значение curstate.angles[PITCH] у текущей энтити, на основе его меняется curstate.blending[1], а потом curstate.angles[PITCH] делается равным нулю. На выходе имеем что моделька игрока не наклоняется вперёд/назад как в халфе (ноги игрока остаются на земле, спина перпендикулярна полу) и меняются только бленды на основе значения curstate.blending[1]. Ну я взял и сделал обнуление питча на сервере. И моделька (серверная, которую не видно) перестала наклоняться, хитбоксы почти совпадают, есть кое-какие несходжения, но по сравнению с тем, что было раньше - пустяк.
Цитата:
Дядя Миша писал: То есть обманул, получается?
Видимо да. С помощью эдикта я прекрасно получаю из КБейсПлеера yaw и pitch для смены блендов. Аргументы стоят как у Валвэ.
Добавлено 23-01-2014 в 23:55:
Цитата:
marikcool писал: Углы помоему v_angles юзаются с бейсплеера а не angles с эдикта.
Эдикт используется как указатель на игрока, чтобы получить доступ к переменным его класса, таким как питч, йау, гэйтсиквенс, гэйтфрейм. Которые в свою очередь вычисляются в коде игрока более точно, чем их можно получить от эдикта.
Снова копал эту тему. Сделал расчёты углов поворота и наклона на сервере, передал на клиент - увидел, почему не совпадают серверные и клиентские кости.
Во-первых, на сервере модель игрока по горизонтали вертится с опозданием. Если игрок стоит на месте, она может повернуться в направление взгляда только тогда, когда разница между реальным и видимым углом примерно 45 градусов, или ещё сколько то, зависит от того, как быстро вертишь мышкой.
Во-вторых, модель игрока наклоняется по вертикали, как в оригинальной халфе, хотя, если делать расчёты на клиенте, то там наклоняться не будет.
Попытался поправить - не вышло, мож я не догоняю чего. Главное - избавиться от вертикальных наклонов, из-за них все проблемы. А горизонталь хоть и опаздывает, но только когда игрок стоит. Если бежать, то вертится норм.
Может посоветуете чего путного?
Никак, нету встроенного механизма для сервера. Я это обошёл, отправив углы поворота с сервера, и используя на клиенте именно серверные, чтобы видеть, как на сервере ведёт себя модель. Всё оказалось как я и предполагал: несовпадение по горизонтали и ненужный наклон по вертикали.
Это ж только клиентские. По серверным только лучами стрелять
Интересная темка, как-то я этим тоже заморачивался. Ещё взбесило отражение оси поворота PITCH... Халва-говно, вобщем. Если что придумаете, готов проверить/дополнить, но только летом.
Да в общем-то, надо сделать так, чтобы модель игрока на сервере по горизонтали поворачивалась своевременно не только когда игрок движется, но и когда стоит (когда gaitmovement равен нулю). Ну и зафиксировать её по вертикали, чтобы не наклонялась, а только менялись бленды. Тогда будет соответствовать клиентской реализации, и хитбоксы будут на месте. Возможно, скоро решу этот вопрос.
Ku2zoff писал: Никак, нету встроенного механизма для сервера
Ну делай под ксашем, там триапи есть встроенный на сервере.
Специально для таких случаев.
Я же и уроки физики под ксашем отлаживал, визуально, так сказать.
Дядя Миша под ксашем не делаю потому, что предиктинг не работает как следует. Тестирование по мультиплееру превращается в нервотрёпку из-за дёрганья игроков при передвижении.