Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 27.07.2009, 13:36
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 1  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Arrow Многопользовательская игра реального времени - нужен совет

Допустим есть поле, по нему летают кораблики. Каждый юзер управляет своим корабликом при помощи стрелок: газ, поворот влево, поворот вправо. Вопрос: как организовать обмен данными между клиентом и сервером, чтобы все клиенты были синхронизированы, т.е. каждый видел реальное положение вещей? Дополнительное условие - желательно свести к минимуму количество запросов.

Пока думаю обмениваться сообщениями о нажатии и отпускании клавиш:
1. юзер нажимает кнопку (например газ), его корабль начинает газовать
2. на сервер уходит сообщение о том, что юзер включил газ, плюс его текущие координаты плюс локальный таймстамп (зная разницу во времени с сервером, можно вычислить время нажатия по серверным часам)
3. сервер запоминает что этот кораблик включил газ, шлет подтверждение и рассылает остальным клиентам сообщение о том что этот корабль включил газ (плюс координаты, таймстамп, все дела)
4а. клиент получает подтверждение, все ок, процесс продолжается
4b. клиент не получает подтверждение... тогда получается что юзер будет видеть газующий кораблик, пока клиент не получит новую порцию данных с сервера, в том числе о своих координатах и скорости, и тогда для юзера его кораблик встанет на реальное место и перестанет газовать. Чтобы включить газ, нужно будет отпустить кнопку газа и нажать снова.

Насчет отпускания - алгоритм тот же.

Какие плюсы и минусы у такого подхода? Какие ещё могут быть варианты? Что можно почитать по теме? (Статью Касперски читал, там несколько не то, это скорее обзорная статья по способам организации сети)
__________________
тонкий тролль, осеянный благодатью

Создать новую тему   Часовой пояс GMT +4, время: 21:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
latency , socket , алгоритмы , игры , синхронизация

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:42.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.