Как сделать интернет карточную игру используя .net - PullRequest
0 голосов
/ 10 августа 2009

Какой лучший способ сделать карточную игру для двух игроков в Интернете? В настоящее время я намеревался сохранить состояние игры в базе данных, используя ajax, чтобы проверить, когда состояние игры меняется. Есть ли лучший способ сделать это, когда клиенты общаются друг с другом, а не через посредника?

Ответы [ 4 ]

3 голосов
/ 10 августа 2009

То, что он основан на Интернете, не означает, что он должен быть основан на Интернете. Вы могли бы просто сделать настольное приложение с WCF, так как вы находитесь на платформе .NET.

Если вы ХОТИТЕ, чтобы он был на веб-основе, и вы не хотите, чтобы он работал на сервере (а вместо этого просто использовали сервер в качестве места для поиска других игроков), вы можете использовать стратегию двойного блайнда и использовать каждого игрока проверить действия другого игрока. Что делать, если вы обнаружите какое-то несоответствие - ваш звонок. Я бы просто откатил изменения и заставил игрока повторить ход. Имейте в виду, этот вид проверки не самый лучший подход.

Идеальный подход заключается в том, что вы НИКОГДА не доверяете любому вкладу любого пользователя. ВСЕГДА проверяйте. Дважды проверьте, если это необходимо. Думайте о пользователях как о бешеных собаках, которых вы должны кормить, но которые будут пытаться кусать ваши руки, ноги и более важные части, когда у них есть шанс. Так защити себя.

1 голос
/ 10 августа 2009

Вероятно, вы не сможете установить прямое P2P-соединение с ASP.NET (при условии, что это веб-интерфейс).

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

0 голосов
/ 11 августа 2009

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

http://www.microsoft.com/azure/servicebus.mspx

Это может быть немного излишне, но было бы здорово построить.

0 голосов
/ 10 августа 2009

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

Например, предположим, что вы все еще используете AJAX, но приложение для вашей карты используется в качестве библиотеки javascript. Что ж, тогда вы, вероятно, будете использовать стек событий push-pull на сервере, заставляя клиента A ждать в указанное время, пока клиент B не отправит свое событие на сервер, после чего сервер обновляет клиента A событиями от клиента B.

Таким образом, самое «состояние», которое у вас будет, - это следующее синхронное событие. Сервер отвечает за отправку событий клиентам, и они запрашивают события с сервера, говоря: «Последнее событие, которое я получил, - это событие # 12345, отправьте мне все после этого».

Затем вы управляете своей игрой, ожидая событий в определенное время.

ПРИМЕЧАНИЕ: Вы не первый, кто задается вопросом! См. Многопользовательские Ajax Games на ajaxonomy.com, где пользователь Kev ссылается на свою Ajax Blackjack игру .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...