Использование Pusher / Pubnub с авторитетным игровым сервером - PullRequest
2 голосов
/ 13 декабря 2011

Я хотел бы создать пошаговую игру для двух игроков с авторитетным сервером для управления состоянием / логикой игры.Поток, который я имею в виду, выглядит примерно так:

  • Игроки подписаны на уникальный игровой канал (через pubnub / pusher / что-то подобное)
  • Игроки отправляют свои ходы через HTTP напрямуюигровой сервер
  • Сервер запускает игровую логику и публикует результат на игровом канале (на который подписаны оба игрока)
  • Клиент обрабатывает ответ и отображает результат
  • сватовство меня немного смущает.Есть какие-нибудь предложения?

Является ли это "правильным" способом использования паба / субсервиса в этом сценарии?Есть ли лучший подход (что-то кроме постоянного опроса сервера)?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Это горячая тема в нашем офисе!Я использовал PubNub в качестве авторитетного игрового сервера, используя креативный выбор названий каналов.Он работает следующим образом:

  1. Запустите сервер node.js (не обязательно должен быть узлом; может быть чем угодно), который обслуживает ваш контент, а также действует как уполномоченный объект.
  2. Когда клиент подключается, сгенерируйте UUID (можно сделать либо на стороне сервера, либо на стороне клиента), и клиент и сервер прослушивают этот канал (что-то вроде «my_game_ [UUID]»).
  3. Поскольку никакие другие клиенты не знают это имя канала, клиент и сервер могут свободно общаться на этом канале.
  4. Сервер может общаться со всеми, а клиенты могут выполнять безопасные действия через сервер и связываться друг с другом, используя «небезопасный» канал vanilla pubnub.
1 голос
/ 13 декабря 2011

Ваше предложение звучит великолепно и является "правильным" способом. Проблема, с которой вы сталкиваетесь, разделяется с самого начала компьютерной эпохи, когда синхронизация данных является обязательным требованием между несколькими устройствами, такими как мобильный смартфон. Опрос медленный и дорогой (и не имеет смысла для большого количества игроков). Многопользовательские игры являются отличным примером необходимости объединения игроков и предоставления игровых комнат. Ваше решение:

  1. Создание игрового лобби, где игроки могут создавать игровые комнаты и присоединяться к игровым комнатам.
  2. Создание автопары игроков (Быстрое соединение) [Рекомендуется]

Вы можете решить эту техническую проблему с помощью таких продуктов, как Socket.IO и некоторых других вариантов с открытым исходным кодом. Однако вы хотите просто создать свою игру, а не сосредоточиться на развертывании сервера Node.JS и подключении его к Express.

Вместо этого используйте облачную службу, такую ​​как PubNub , PusherApp или Beacon Push. Используйте API Pub / Sub для простой синхронизации пользователей в многопользовательской среде.

...