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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.07.2016, 17:57
JokerDen вне форума Посмотреть профиль Отправить личное сообщение для JokerDen Найти все сообщения от JokerDen
  № 1  
Ответить с цитированием
JokerDen
[+3 17.05.11]
 
Аватар для JokerDen

Регистрация: May 2009
Сообщений: 53
Attention Сетевое решение для пошаговой игры с таймером (мультиплеер)

Есть вопрос по протоколу и организации клиент-серверного взаимодействия. Суть такова.
Пошаговая игра с мультиплеером на двух человек (соединение с сервером по сокету), где игроки ходят по очереди. Также имеется таймер, ограничивающий по времени один ход игрока.
Есть следующие проблемы:
1. Когда ход одного игрока закончился, нельзя сразу же запускать таймер другого игрока – между этим проигрываются различные анимации.
2. Не хочется очень сильно доверять клиенту, чтобы он решал, когда начинать ход.

На текущий момент есть несколько сомнительных решений. Хотелось бы узнать, какая практика считается хорошей в этом вопросе, есть ли какие-нибудь готовые паттерны, как это делали вы.

Старый 08.07.2016, 18:28
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 2  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
1)Никогда не используй таймеры для отсчета времени т.к. стоит юзеру свернуть флэшку и таймер встанет.
2)Очередность ходов и время хода (с учетом всех задержек на анимации) определять должен однозначно сервер.

Старый 08.07.2016, 19:47
JokerDen вне форума Посмотреть профиль Отправить личное сообщение для JokerDen Найти все сообщения от JokerDen
  № 3  
Ответить с цитированием
JokerDen
[+3 17.05.11]
 
Аватар для JokerDen

Регистрация: May 2009
Сообщений: 53
Цитата:
Сообщение от undefined Посмотреть сообщение
1)Никогда не используй таймеры для отсчета времени т.к. стоит юзеру свернуть флэшку и таймер встанет.
2)Очередность ходов и время хода (с учетом всех задержек на анимации) определять должен однозначно сервер.
С этим то понятно, спасибо. Просто вот, например, такой кейс:
1. Сервер присылает клиентам, что ход начался. Здесь же, допустим, и время, которое сервер дает на ход (например, 15 секунд).
2. Если клиент не успевает уложиться в это время, сервер рассылает сообщение, что время вышло и передает ход другому игроку.
3. Но ход другому игроку переходит не моментально. Между ходом первого игрока и второго, проигрываются анимации, которые, допустим, длятся 10-20 секунд (условность, но дает понять суть проблемы). Анимации проигрываются на клиентах. Как сервер узнает, что клиент готов начать свой ход и можно запускать серверный таймер?

Старый 08.07.2016, 20:24
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 4  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
сервер должен знать, что клиенту нужно время на проигрывание анимаций. Либо клиент может оповестить сервер, что он готов начать ход,но делать это клиент должен строго после того, как сервер сообщит ему(клиенту) что ход у него.Второй вариант на случай если длительность этих анимаций заранее неизвестна.Соответственно второму игроку сервер сообщает что первый игрок начал ход, только после получения подтверждения от него(первого игрока).


Последний раз редактировалось undefined; 08.07.2016 в 20:36.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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