2013-05-27 194 views
1

我想用node.js和socket.io创建一个多人游戏的HTML5半实时游戏。帧频是3 fps。玩家使用箭头键移动。所有游戏对象都以直线移动(玩家水平或垂直移动)。玩家按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游戏引擎?重新创造已经创造的东西往往是一个容易犯的错误。 –

回答

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”,但无法通过我的LAN从另一台计算机进行连接。然后我开始了Apache,我可以通过访问192.168.1.4从另一台计算机连接到我之前的项目。你的回答似乎表明我正处在正确的轨道上。如果你或其他人可以在这个问题上多说一些,我将不胜感激。 – Quadra

+0

我从Build New Games发现了一个更好的教程:[HTML5中的实时多人游戏](http://buildnewgames.com/real-time-multiplayer/)。希望这个更复杂的教程能带来更好的运气。谢谢。 – Quadra

0

你不应该有你的浏览器指向公众,地址(取决于您路由(如果你用它表达出来就只是/index.html))http://127.0.0.1:8000(相当于本地主机)http://127.0.0.1:8000/index.html

我大约一半通过我的第一场比赛socket.io,我会使用服务像nodejitsu明确提出部署,甚至测试您的游戏