|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+3 17.05.11]
Регистрация: May 2009
Сообщений: 53
|
Сетевое решение для пошаговой игры с таймером (мультиплеер)
Есть вопрос по протоколу и организации клиент-серверного взаимодействия. Суть такова.
Пошаговая игра с мультиплеером на двух человек (соединение с сервером по сокету), где игроки ходят по очереди. Также имеется таймер, ограничивающий по времени один ход игрока. Есть следующие проблемы: 1. Когда ход одного игрока закончился, нельзя сразу же запускать таймер другого игрока – между этим проигрываются различные анимации. 2. Не хочется очень сильно доверять клиенту, чтобы он решал, когда начинать ход. На текущий момент есть несколько сомнительных решений. Хотелось бы узнать, какая практика считается хорошей в этом вопросе, есть ли какие-нибудь готовые паттерны, как это делали вы. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
1)Никогда не используй таймеры для отсчета времени т.к. стоит юзеру свернуть флэшку и таймер встанет.
2)Очередность ходов и время хода (с учетом всех задержек на анимации) определять должен однозначно сервер. |
|
|||||
[+3 17.05.11]
Регистрация: May 2009
Сообщений: 53
|
Цитата:
1. Сервер присылает клиентам, что ход начался. Здесь же, допустим, и время, которое сервер дает на ход (например, 15 секунд). 2. Если клиент не успевает уложиться в это время, сервер рассылает сообщение, что время вышло и передает ход другому игроку. 3. Но ход другому игроку переходит не моментально. Между ходом первого игрока и второго, проигрываются анимации, которые, допустим, длятся 10-20 секунд (условность, но дает понять суть проблемы). Анимации проигрываются на клиентах. Как сервер узнает, что клиент готов начать свой ход и можно запускать серверный таймер? |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
сервер должен знать, что клиенту нужно время на проигрывание анимаций. Либо клиент может оповестить сервер, что он готов начать ход,но делать это клиент должен строго после того, как сервер сообщит ему(клиенту) что ход у него.Второй вариант на случай если длительность этих анимаций заранее неизвестна.Соответственно второму игроку сервер сообщает что первый игрок начал ход, только после получения подтверждения от него(первого игрока).
Последний раз редактировалось undefined; 08.07.2016 в 20:36. |
Часовой пояс GMT +4, время: 13:29. |
|
« Предыдущая тема | Следующая тема » |
|
|