Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сетевое решение для пошаговой игры с таймером (мультиплеер) (http://www.flasher.ru/forum/showthread.php?t=213132)

JokerDen 08.07.2016 17:57

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

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

undefined 08.07.2016 18:28

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

JokerDen 08.07.2016 19:47

Цитата:

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

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

undefined 08.07.2016 20:24

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


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

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