ПрограммированиеФорумСеть

Передача ходьбы

#0
19:22, 17 апр 2013

Есть клиент с сервером. Есть персонаж с анимациями: стойка, ходьба, атака. Сервер передает клиенту "персонаж перемещается из точки А в точку Б за время Т". На данный момент у всех персонажей скорость одинаковоа, поэтому пакет выглядит примерно как [char_id, pos_old, pos_new, time]. При получении такого пакета клиент просто запускает анимацию ходьбы, и перемещает с известной константной скоростью игрока.

Требуется... ввести неконстантную скорость. Например, некоторые игроки ходят медленно, некоторые быстро (скилл), кто-то устал или перегружен. При этом ноги не должны проскальзывать, следовательно скорость проигрывания анимации пропорциональна скорости. Возможные варианты решения:

1. Анимации стойки и атаки запускаются с фиксированной скоростью, а ходьба зависит от скорости перемещения. То есть аниматоры стоят анимацию ходьбы 1 м/с, а потом она домножается на скорость ходьбы.
2. Сервер передает какую анимацию воспроизводить при ходьбе, и с какой скоростью. Часть логики уходит с клиента на сервер, и клиенту не надо проверять "Если атака, то атака, иначе если стоим то стойка, если перемещаемся довольно медленно, то ходьба, а если быстро, то бег". С другой стороны должен приходить еще один пакет, когда игрок дошел до финальной точки, мол "запустить анимацию стойки", а при потере связи игрок будет бежать на месте, пока этот пакет не придет.

#1
19:41, 17 апр 2013

AntonV
я слал только time, char_id, pos
на клиенте вычислял в зависимости от текущего положения
использовал интерполяцию с статическим лагом в 150 мс
проблемы и глюки были но решаемо

ПрограммированиеФорумСеть

Тема в архиве.