Как реализовать многопользовательскую браузерную игру? - PullRequest
4 голосов
/ 12 ноября 2010

В частности, как реализовать многопользовательскую часть? Я играл с шашками, чтобы тренировать свои мышцы JS / PHP / AJAX и заставить его работать довольно хорошо для одного человека (или двух человек на одном компьютере). Но я немного озадачен, когда дело доходит до того, чтобы заставить его работать между двумя людьми на двух разных компьютерах. У меня отключена часть AJAX, и сервер получает / отправляет ходы из / в браузер. Я просто не могу сосредоточиться на том, что мне нужно делать дальше, чтобы включить второго игрока.

Нужен ли мне MySQL для чего-то такого простого? Могу ли я использовать некоторую комбинацию идентификаторов сессий игроков, чтобы просто передавать ходы назад и вперед, а не хранить какую-либо информацию на стороне сервера? Как начинается игровая сессия между этими двумя независимыми сущностями?

Извините, если этот вопрос неосведомлен, но я просто очень не уверен, как поступить с этого момента.

Редактировать : Просто чтобы прояснить, определенно задействован сервер (отсюда ссылки на PHP / AJAX). Это очень очевидно для меня. «Ход», очевидно, потребует поездки от игрока А к серверу, а затем к игроку Б. Это то, на чем я рисую пробел. Сказав это, я думаю, что есть несколько хороших ответов ниже, и я исследую каждый из них по очереди. Но не стесняйтесь добавлять возможные предложения / решения, поскольку я уже многому научился только из базовых исследований уже опубликованных ответов.

Ответы [ 7 ]

1 голос
/ 12 ноября 2010

Вы можете переназначить одну из систем, подобных чату, такую ​​как jabber, и создать эквивалент комнаты чата, где сообщения принимаются и ретранслируются всем подключенным клиентам. Это где аспекты реального времени и последовательности вступают в игру. Так как шашки пошаговые, это довольно просто. В браузере можно использовать стандартный сервер Jabber и чат-клиент Javascript . Это даст дополнительное преимущество, позволяя игрокам отправлять сообщения друг другу на одном автобусе в дополнение к ходам игры.

1 голос
/ 12 ноября 2010

Я бы порекомендовал перейти с Комета .

0 голосов
/ 16 ноября 2010

Проверка APE (движок Ajax)

http://www.ape -project.org / home.html

0 голосов
/ 15 ноября 2010

Просьба оформить заказ Jaxl (Jabber XMPP Library в PHP / JS) BOSH MUC Чат пример примера. Вы можете легко расширить этот пример для разработки многопользовательских игр на основе браузера с использованием PHP / JS.

0 голосов
/ 12 ноября 2010
  • Используйте базу данных, если вы хотите хранить информацию об игроке / пользователе (это должно быть очевидно).
  • Если он основан на сеансе, вам определенно нужен сервер.
  • Для клиентской части я предлагаю что-то вроде Silverlight или Flash ... и т. Д.

  • Для взаимодействия в чате вы можете подключить каждого клиента к серверу с возможностью прослушивания push-уведомлений (это предотвратит любой «ручной» опрос сервера на наличие обновлений). Я знаю, что это напрямую поддерживается новейшими технологиями Silverlight и WCF.

0 голосов
/ 12 ноября 2010

Одна из техник, о которой я думал раньше (но никогда не реализованной), заключается в том, чтобы фактически использовать один и тот же сеанс PHP между всеми игроками (используя session_id), но дифференцировать их по IP-адресу ($_SERVER['REMOTE_ADDR']).Таким образом, вы можете сохранить все игровые состояния в одном сеансе, а данные, относящиеся к игроку, можно сохранить в массиве с IP-адресом.

Конечно, вам нужен отдельный канал для распределения идентификатора сеанса впервое место.Это можно сделать разными способами:

  1. для частных игр: передать идентификатор сеанса организатору игры и попросить его / ее распространить его среди друзей, желающих присоединиться к игре.
  2. для общедоступных игр: использовать базу данных для хранения идентификатора сеанса активных игр и позволить любому присоединиться
0 голосов
/ 12 ноября 2010

Прямой ответ на заданный вопрос: вам нужно какое-то «глобальное хранилище» на стороне сервера, поскольку каждый сеанс независим и не знает друг друга.

Вы можете использовать текстовый файл, базу данныхили память, в ASP он известен как переменные уровня Cache или Application, не знаю о PHP.

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