Сетевая игра с HTML5, Javascript и AJAX.Будет ли это работать? - PullRequest
0 голосов
/ 19 февраля 2012

Я сейчас создаю свой первый сайт только для практики.Я собрал быструю игру в понг в HTML5 и javascript.Мне было интересно, как я мог бы превратить это в сетевую игру.

Что-нибудь мешает мне сказать, войдя на мой сайт, сохраняя их информацию в базе данных sql, затем ища другого человека, вошедшего в систему?в ожидании, чтобы играть в мою игру.Чтобы справиться с сетью, могу ли я просто создать базу данных sql и использовать AJAX для публикации новой информации в таблице, которая конкретно занимается сетью?

вот наглядный пример того, что я проводил в мозговом штурме:

  [sql table: network]
  [logged in user: Josh] [Josh paddle position Y]
  [logged in user: Tim] [Tim Paddle position Y]

  Use Ajax XMLHttpRequest to post Josh paddle position Y and Tim Paddle Position Y
  to the network table, updating each client's screen accordingly (maybe use XMLHttpRequest.responseText to get the other person's information)

  delete network table when both users have left the game

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

1 Ответ

0 голосов
/ 19 февраля 2012

Есть несколько проблем с вашим подходом:

  1. Можете ли вы обновить положение весла так быстро, как его перемещает пользователь? Сетевые коммуникации имеют задержки, БД требует времени для обновления своих данных.
  2. Даже если для немногих пользователей это не такая проблема, многим людям будет действительно трудно справляться со всем таким количеством пользовательских запросов.
  3. Как вы уведомляете одного пользователя о действиях другого? В вашей схеме вы должны очень часто просить сервер получать обновления. Это увеличивает общую нагрузку.

Решением может быть одноранговое соединение, но JS пока не поддерживает его.

Чтобы публиковать обновления и получать уведомления о них, вы можете использовать постоянное соединение: вместо восстановления соединения для каждого запроса вы просто делаете это один раз, а затем используете его для двунаправленной связи. Дополнительным преимуществом этого является избавление от необходимости опрашивать сервер об обновлениях. См. Статью Server push в Википедии.

Также использование БД может быть неоправданно дорогостоящим. Фактически для каждой игры все, что вам нужно, это несколько переменных, которые будут удалены при закрытии соединения, так что вы можете просто сохранить их в памяти.

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