Добавление мультиплеера в игру HTML5 [закрыто]

15

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

Я делал игры прежде, чем использовать прямые C-сокеты, а также с сетевой библиотекой для SDL.

Каковы некоторые из моих лучших вариантов сделать это в среде на основе холста?

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


Общий игровой процесс будет представлять собой игру типа платформер 2.5D, поэтому обоим клиентам необходимо постоянно обновлять позиции игроков, позиции врагов, снаряды, данные об окружающей среде и т. Д.

the_e
источник
1
Когда websockets ( en.wikipedia.org/wiki/WebSockets ) будет завершен (и реализован и т. Д.), Это, вероятно, будет хорошим способом, до тех пор я думаю, что AJAX (без X, для этого не требуется XML), вероятно, будет лучшим способом (все еще не очень хороший способ, я полагаю).
Эльва
Кажется, что поддержка веб-сокетов быстро падает ...
the_e
Вы хотите сделать стенд или игру? Если вы хотите сделать игру; не беспокойтесь перейти на HTML5.
@stefan: почему не оба? то, что он еще не завершен, еще не значит, что я не могу с ним работать!
the_e

Ответы:

12

Socket.IO предлагает систему, построенную поверх нескольких других слоев (включая веб-сокеты, flash, кометные техники) с изящным выбором.

Node.js - это один из вариантов запуска на стороне сервера.

Винсент Шейб
источник
5

Смотрите этот ответ :

Однако вы можете использовать Flash там, где это возможно, для обеспечения вашего сценария запасным вариантом, пока WebSocket не станет широко доступным. Gimite web-socket-js - один из бесплатных примеров такого рода. Однако на вас распространяются те же ограничения, что и для Flash Sockets, а именно то, что ваш сервер должен иметь возможность выдавать междоменную политику по запросу на порт сокета, и у вас часто будут проблемы с прокси / брандмауэрами. (Флэш-сокеты создаются напрямую; для тех, кто не имеет прямого публичного доступа по IP, кто может выйти из сети только через HTTP-прокси, они не будут работать.)

Ricket
источник
3

« Комета », вероятно, является общим термином, который вы могли бы использовать здесь. WebSockets будет более желательным вариантом, хотя (когда они счастливы, что это безопасно).

CASR
источник
3

Node.js является ответом. Я использовал его для разработки многопользовательской стрелялки в реальном времени, и от начала до конца потребовалось около 1 месяца. Он представлял некоторые уникальные проблемы, такие как необходимость минимальной задержки, и все игроки должны синхронизироваться друг с другом, чтобы концепция работала.

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

Игра продолжалась около 2 месяцев без перезапуска, и были сыграны тысячи матчей.

Socket.io является частью сокетов и использует node.js, однако в данный момент он слишком раздут для игры. На github есть другие реализации websocket для node.js, а также примеры игр, в которых он используется.

onedayitwillmake
источник
2

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

Брендан Лонг
источник
2

Вы можете попробовать использовать http://easywebsocket.org/ , он прост в реализации и представляет собой решение serverLess, основанное на websocket :)

Пьер-Лоик Дульсе
источник
2

В настоящее время я использую это: http://code.google.com/p/phpwebsocket/ в качестве сервера сокетов для тестирования. Он делает звонки на C сокеты, которые вы используете. Может быть какой-то службы.

Tamler
источник
2

Мы работаем над многопользовательской платформой, которая может показаться вам интересной. Вы можете увидеть наш проект на www.16cubes.com - мы предоставляем простой слой javascript для одноранговой связи. Он в некоторой степени основан на принципе Comet, и у нас есть планы перейти к использованию веб-сокетов, поскольку он станет немного более стандартизированным. С другой стороны, мы предоставляем некоторые функции с полки, такие как автоматическое сопоставление оппонентов, игровой чат, приглашение в Facebook одним щелчком мыши и т. Д.

У нас есть демоверсия, вы, вероятно, получите лучшее представление, если увидите его. И да, вы тоже можете играть анонимно. Регистрация не требуется, если вы не хотите. Существует менее 10 API-интерфейсов javascript, с которыми вам нужно кодировать, и они доступны по адресу www.16cubes.com/documentation.

Мы активно ищем отзывы, поэтому дайте нам знать, как хорошие, так и плохие


источник
1

Посмотрите на эту платформу, которую я создал специально для создания многопользовательских html5-игр в реальном времени с использованием node.js в подходе клиент / сервер. Где сервер запускает игровую симуляцию, а игроки только отправляют входные данные.

демо: http://vimeo.com/24149718

РЕПО: https://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs

onedayitwillmake
источник