2013-05-27 3 views
1

Я хотел бы создать многопользовательскую игру HTML5 полу-реального времени, используя node.js и socket.io. Частота кадров составляет 3 кадра в секунду. Игроки используют клавиши со стрелками для перемещения. Все игровые объекты перемещаются по прямым линиям (игроки перемещаются горизонтально или вертикально). Игроки нажимают Page Up/Down для ускорения/замедления. Это моя первая анимированная игра HTML5, и мой первый проект JavaScript с тяжелой нагрузкой.Многопользовательская игра HTML5 полу-реального времени, node.js/socket.io

Я прошел учебник под названием «Создание многопользовательской игры в режиме реального времени с помощью WebSockets и Node.js» (нажмите). В этом учебнике отображается черный квадрат для каждого игрока с перемещением стрелки. К сожалению, он работает только на одном компьютере (но на нескольких вкладках браузера). Вы должны указать свой браузер (ы) в файл public/index.html. Я хотел бы изменить его, чтобы я мог присоединиться к игре с другого компьютера в своей локальной сети, указав мой браузер на 192.168.1.4:8000. В конце концов я хотел бы, чтобы мой брат присоединился, посетив myquadrawebsite.com. Я знаю, как выполнять перенаправление портов для apache, но не node.js. Вот 3 обрывков сокращенного, высокий уровень кода из учебника:

// public/index.html 
     <script src="http://localhost:8000/socket.io/socket.io.js"></script> 
     <script src="js/game.js"></script> 
     <script> // Initialise the game 
      init(); 
      animate(); 
     </script> 
// game.js 
    var io = require("socket.io"); 
    var socket, players; 
    function init() { 
     players = []; 
     socket = io.listen(8000); 
     setEventHandlers(); 
    }; 
    var setEventHandlers = function() { 
     socket.sockets.on("connection", onSocketConnection); 
    }; 
    function onSocketConnection(client) { 
     util.log("New player has connected: "+client.id); 
     client.on("new player", onNewPlayer); 
    }; 
// public/js/game.js 
    var remotePlayers, localPlayer, socket; 
    function init() { 
     localPlayer = new Player(startX, startY); 
     socket = io.connect("http://localhost", {port: 8000, transports: ["websocket"]}); 
     remotePlayers = []; 
     setEventHandlers(); 
    }; 
    var setEventHandlers = function() { 
     socket.on("connect", onSocketConnected); 
     socket.on("new player", onNewPlayer); 
    }; 

Я искал высоко и низко для других руководств о Node.js и Socket.io, но ни один из них не помог мне до сих пор. (Моя долгосрочная цель - создать структуру разработки игр HTML5.) Если кто-то может указать мне в правильном направлении, я был бы признателен. Благодарю.

+0

Могу я предложить посмотреть в движок Unity Game? Повторное создание того, что уже создано, часто может быть легкой ошибкой. –

ответ

0

К сожалению, это работает только на одном компьютере (но несколько вкладок браузера)

Это наводит на мысль, что вы запускаете сервер на одном компьютере и не доступна из других компьютеров клиентов (Интернет браузеры).

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

socket = io.connect("http://localhost", {port: 8000, transports: ["websocket"]}); 

Определенно не будет работать ни на кого, кроме человека на компьютере, на котором работает сервер.

Если вы обновляете URL-адрес до 192.168.1.4:8000, и этот адрес доступен для других, тогда он будет работать с большей вероятностью.

+0

Спасибо за указание, что URL-адрес, используемый клиентом, не должен быть localhost. Я изменил его на «http://192.168.1.4:8000», но я не смог подключиться к другому компьютеру через локальную сеть. Затем я начал использовать apache, и я мог подключиться к моему предыдущему проекту с другого компьютера, посетив 192.168.1.4. Ваш ответ, кажется, указывает, что я на правильном пути. Если вы или кто-то еще может пролить свет на этот вопрос, я был бы благодарен. – Quadra

+0

Я нашел лучший учебник: [Многопользовательский режим реального времени в HTML5] (http://buildnewgames.com/real-time-multiplayer/) от Build New Games. Надеюсь, мне повезет с этим более сложным учебником. Благодарю. – Quadra

0

вы не должны указывать свой браузер для общественности, адрес (в зависимости от того, где вы разгромили его (если вы используете выразить это только будет /index.html)) http://127.0.0.1:8000 (эквивалент локальный) http://127.0.0.1:8000/index.html

Я нахожусь на полпути к своей первой игре socket.io, и я определенно предлагаю использовать такую ​​услугу, как nodejitsu, для развертывания или даже тестирования вашей игры.

Смежные вопросы