Цитата:
|
А как в клиентах синхронизировать анимацию?
|
А никак, да и зачем? У меня слабый компьютер, у кого-то сильный => fps разный и если ждать ENTER_FRAME то на разных компьютерах пройдет разное время (игровое время)
Можно померить пинг (отослать сообщение, дождаться ответа, общее время = пинг * 2) и исходя из этого проводить синхронизацию. Соответственно, сервер говорит сколько сейчас времени + поправка на пинг. Клиент это запоминает и все действия делает исходя из этого.
То есть как?
1) Вася нажал "идти"
2) Сервер разрешил Васе идти - всем остальным (и Васе тоже) пришло сообщение "Вася начал идти на северо-запад в 19.00 со скоростью 3 км/ч".
3) Все. Этого достаточно (при условии синхронизации по пингу) чтобы Вася у всех на экране был в одном и том же месте.
То есть даже если сообщение пришло намного позже чем 19.00, мы все равно можем рассчитать на клиенте где сейчас Вася, ибо нам известны направление и скорость.
ВЫВОД
каждое сообщение надо "подписывать" датой его отправки