Очень интересная статья про физику в шутерах, в основном затрагивается последний Battlefield.
Интерполяция, экстраполяция, лаги, предсказания, рэгдоллы, все то, что обсуждается и на этом форуме, в довольно-таки развернутом виде.
Статья очень интересная, хоть и перевод чуть ли не машинный. Жаль, что поверхностная - так-то очень интересны методы расчета коллизий на клиенте с последующей синхронизацией на сервере.
Рагдолл так вообще очевидно, что считать надо на клиенте. По-хорошему, алгоритм физики один - конечное положение тоже должно быть одинаково, но, судя по тому, что иногда положение тела может отличатся в серверной и клиентской модели, где-то есть зависимость от реального времени, а не от игровых "тиков"
В идеале наверное надо центр рэгдолла считать на сервере, а конечности и всю его остальную физику — на клиенте, получится что трупы лежат таки у каждого по-разному, но в одинаковых местах, можно без проблем за медика шокером ударять в грудь трупа для оживления товарища.
В любом случае это лучше, чем полная рассинхронизация в Source. Порой играешь в CS:S, тебя спрашивают: "Вау! Ты видел как его труп классно упал с крыши?", ты вздыхаешь, и вытягиваешь из себя что-то типа: "Да, видел, получилось круто" .
В CS играю с ex_interp 0, по другому просто невозможно. Больше всего бесит, когда ты стреляешь в игрока, пули "как бы попадают" в игрока, даже проигрывается соответствующий звук "попадания в плоть", но попадания нет, мало того, пули буд-то исчезают, потому что за целью нету никаких следов от попадания пули в карту (декалька, искры).
Еще бывает интересный эффект от гранаты, когда на клиенте видно, как какой-нибудь игрок попадает под ее радиус и проигрывается анимация урона (грудь назад, открывается рот), но ни одной единицы здоровья у этого игрока не отнимается .
Да что тут говорить, порой декалям от пуль верить нельзя, взять тот же фастзум у AWP, клевая кстати штука, и точка на мониторе вывозит.
qpAHToMAS, возможно, в сорсе привязка к реальному времени компа или к кадрам, а не к "тикам", которых в секунде фиксированное число. Вот и получается, что компы с разной производительностью считают физику по-разному, это как старый баг фпс-зависимой физики ку3. Если привязать физику к конкретным "тикам", то на клиентах будут в одинаковое время одинаковые формулы с одинаковыми параметрами, и результат будет одинаковый.
Scrama писал: Вот и получается, что компы с разной производительностью считают физику по-разному
нет. В сорсе рагдоллы чисто клиентские.
Ну что, написать вам статью про предиктинг? Чтоб не было фейспальмовых домыслов?
Добавлено 27-12-2011 в 13:39:
Цитата:
В основном из-за того, что эта игра одну вещь делает совсем не так, как все из того, во что я играл раньше — каждая выстрелившая тут пуля имеет ускорение и вполне подвержена воздействию гравитации
Ааа, ну теперь понятно откуда наши доморощенные модеры вытащили эту идею - сделать пули прожектилями. Ну как обычно - на мерседесе автоматический люк, давай и нам на запорожце такой же сделаем. Из картоннова ящика.
А у меня рог нолл чисто серверный. Правда, так ни разу и не тестил его по сети
Добавлено 27-12-2011 в 16:41:
Цитата:
Дядя Миша писал: Ну что, написать вам статью про предиктинг? Чтоб не было фейспальмовых домыслов?
А что фейспальмового сказал Скрама? Это действительно так. На мощном компе при высоком фпс физика в том же ку3 превращается в физику непоймичего, проверь сам. Оно и в дум3 так наверняка, и в волатиле - просто там 500 фпс получить проблематично)
thambs писал: в l4d игрок с шотганом мог запросто ранить игрока, стоящего в метре за его спиной.
ну так в СА давно известен трюк с пушкой, положив которую набок можно было стрелять за угол. Время идет, вот и братья наши меньшие - американтсы освоили дробовик с радиусом поражения 360 градусов.
Скоро и нашу пушку заветную делать научатся.
Дядя Миша писал: Ну что, написать вам статью про предиктинг? Чтоб не было фейспальмовых домыслов?
Ачобынетта?
С Xash 3D я вообще ситуации не понимаю. Даже если играешь на выделенном сервере-localhost'е, то имеешь "покадровое" передвижение самого себя (от первого лица). Почему? Передвижение ведь идет на клиенте, а данные о игроке отсылаются серверу каждые N по cl_cmdrate.
В GoldSource хоть самый низкий cl_cmdrate поставь — ситуация передвижения на экране не изменится, а тут наоборот.