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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Ну вот, он уже есть на сервере. Смысла клонировать его и на клиенте нет никакого, это бесполезное усложнение.
Это лень.

Ну у меня сейчас примерно так:
- каждую секунду я отсылаю ping
- примерно каждую секунду я получаю pong
- теперь я знаю лаг и могу делать поправку
(по разнице отосланных ping и принятых pong я знаю, какой именно pong вернулся)

- клиент присылает "идти туда"
- я подписываю это сообщение на сервере: timestamp = (new Date().getTime() - sender.pongTime)
- я отсылаю каждому клиенту подписанное сообщение

- клиент получает подписанное сообщение
- клиент двигает фигурку sender по экрану туда, где он должен быть в данный момент (знаем дату начала движения и скорость). Двигает быстро, независимо от скорости самого sender, таким образом восстанавливая правильную картину мира
- далее клиент просто двигает фигурку sender с заданной скоростью в заданном направлении

ЗЫ
@Котяра - 1 байт прекрасно отсылается из под любой винды

ЗЗЫ
Касательно графов - клиент полностью рассчитывает путь. После чего отсылает 2 клеточки - ту, в которую он сейчас идет и ту, в которую он пойдет дальше. Сервер валидирует 2 клеточки и отправляет "можно/нельзя". Таким образом клиент заранее знает, как быть дальше и может начинать показ анимации до подтверждения. После первой отсылки и до конца движения отсылается только одна клеточка - та, в которую мы пойдем после текущей точки назначения. И валидация тоже для одной клеточки (грубо говоря nextTarget = {x=10; y=15}).
__________________
...вселенская грусть