Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контроль времени хода игроков со стороны сервера 
:(
    Опции темы
Septim
Дата 1.10.2011, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.9.2011

Репутация: нет
Всего: нет



  Доброго времени суток. Сейчас столкнулся с такой проблемой как контроль времени хода игрока на сервере.Тоесть,когда в комнате более 2 игроков я отсылаю клиентам команду принять решение готовности играть ."готов->не готов" и запускаю таймер на клиентах,но как теперь отследить это все на сервере,учитывая то ,что у меня динамическое создание комнат(тоесть,их создают сами игроки).Мне код вылаживать  НЕ НУЖНО ! Мне главное понять суть как это правильно реализовать или еще более важнее,кто такое уже делал или знает как реализовывается.

Вот пример:

1)Сервер отсылает команду разрешающую ходить первому игроку и остальным,что ходит первый игрок.На клиентах запускаются таймеры инкрементирующие 60 сек до 0
2)Когда игрок не успел нажать "конец хода" до окончания отсчета таймера сервер должен четко через 60 сек,запросить результат или передать ход второму игроку.

Как отследить это на сервере,нужна ли синхронизация.Я использую протокол TCP .


PM MAIL   Вверх
KaraKum
Дата 1.10.2011, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Можно и не контролировать и даже разрешения не получать. Каждый может совершать ход так, как если этот ход точно будет совершён - все ходы всё-равно проходят через сервер, поэтому проверка валидности хода может и должна совершаться на сервере при каждом ходе. И если происходит невозможное (ходит тот кто уже ходил или ходит до того как сходил кто-то другой, то это исключающее состояние - на сервере эта попытка должна быть либо отброшена (клиент может оказаться читером), либо отправлено клиенту соответствующее сообщение, в результате которого он сможет совершить ещё одну попытку сходить.
PM MAIL WWW   Вверх
Septim
Дата 1.10.2011, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.9.2011

Репутация: нет
Всего: нет



Цитата(KaraKum @ 1.10.2011,  21:23)
Можно и не контролировать и даже разрешения не получать. Каждый может совершать ход так, как если этот ход точно будет совершён - все ходы всё-равно проходят через сервер, поэтому проверка валидности хода может и должна совершаться на сервере при каждом ходе. И если происходит невозможное (ходит тот кто уже ходил или ходит до того как сходил кто-то другой, то это исключающее состояние - на сервере эта попытка должна быть либо отброшена (клиент может оказаться читером), либо отправлено клиенту соответствующее сообщение, в результате которого он сможет совершить ещё одну попытку сходить.

Спасибо большое за ответ,но как можно контролировать клиента если на ход дается определенное количество времени.Тоесть,серверу нужно четко через 60 сек(если клиент забыл походить,отошел куда-нить) сделать передачу хода. Повторяю,у меня динамические комнаты.Комнаты храняться в контейнерах в памяти,и обрабатывается в цикле.

Я думал....Это моя летучая мысля...Создать специальный таймер на сервере.И когда,начинается отсчет,просто добавить 60 сек к текущему значению таймера и записать этот результат.Когда сервер пребирает комнаты,он проверит это поле и сравнит с текущим значение,если боле 60 сек,передать ход.ИМХО есно,и естественно это неверно !!!
PM MAIL   Вверх
KaraKum
Дата 1.10.2011, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Да - именно так. И все клиенты также знают когда заканчивается возможность игрока совершить ход, а сервер просчитывает игровую логику за ход (если это реализовано на сервере, а не на клиенте) и, затем, отправляет всем клиентам новое состояние этой комнаты.
А комнаты, кстати, правильно реализованы - каждая сама-по-себе - тогда работа с каждой из них происходит в случайный момент и нагрузка на сервере растянута по времени, если думать о нагрузке...
PM MAIL WWW   Вверх
Septim
Дата 1.10.2011, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.9.2011

Репутация: нет
Всего: нет



Цитата(KaraKum @ 1.10.2011,  22:23)
Да - именно так. И все клиенты также знают когда заканчивается возможность игрока совершить ход, а сервер просчитывает игровую логику за ход (если это реализовано на сервере, а не на клиенте) и, затем, отправляет всем клиентам новое состояние этой комнаты.
А комнаты, кстати, правильно реализованы - каждая сама-по-себе - тогда работа с каждой из них происходит в случайный момент и нагрузка на сервере растянута по времени, если думать о нагрузке...

Тоесть,Вы говорите,что моя идея с таймером верна?
PM MAIL   Вверх
KaraKum
Дата 1.10.2011, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Да, только предположение о завершении времени на ход можно делать одновременно и на клиенте. Идеальный вариант - это когда сервер выступает лишь посредником для реализации мультиплеера и в качестве валидатора против читерства.
PM MAIL WWW   Вверх
Septim
Дата 2.10.2011, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.9.2011

Репутация: нет
Всего: нет



Цитата(KaraKum @ 1.10.2011,  23:10)
Да, только предположение о завершении времени на ход можно делать одновременно и на клиенте. Идеальный вариант - это когда сервер выступает лишь посредником для реализации мультиплеера и в качестве валидатора против читерства.

Огромнейшое спасибо.Буду пробовать smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.1276 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.