Показать сообщение отдельно
Старый 03.05.2010, 23:15
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 10  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
А как в клиентах синхронизировать анимацию?
А никак, да и зачем? У меня слабый компьютер, у кого-то сильный => fps разный и если ждать ENTER_FRAME то на разных компьютерах пройдет разное время (игровое время)

Можно померить пинг (отослать сообщение, дождаться ответа, общее время = пинг * 2) и исходя из этого проводить синхронизацию. Соответственно, сервер говорит сколько сейчас времени + поправка на пинг. Клиент это запоминает и все действия делает исходя из этого.

То есть как?
1) Вася нажал "идти"
2) Сервер разрешил Васе идти - всем остальным (и Васе тоже) пришло сообщение "Вася начал идти на северо-запад в 19.00 со скоростью 3 км/ч".
3) Все. Этого достаточно (при условии синхронизации по пингу) чтобы Вася у всех на экране был в одном и том же месте.

То есть даже если сообщение пришло намного позже чем 19.00, мы все равно можем рассчитать на клиенте где сейчас Вася, ибо нам известны направление и скорость.

ВЫВОД
каждое сообщение надо "подписывать" датой его отправки
__________________
...вселенская грусть