1

我想使用 node.js 和 socket.io 创建一个多人 HTML5 半实时游戏。帧速率为 3 fps。玩家使用箭头键移动。所有游戏对象都沿直线移动(玩家水平或垂直移动)。玩家按 Page Up/Down 加速/减速。这是我的第一个动画 HTML5 游戏,也是我的第一个重型 JavaScript 项目。

我完成了一个名为“使用 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 游戏开发框架。)如果有人能指出我正确的方向,我将不胜感激。谢谢。

4

2 回答 2

0

不幸的是,它仅适用于一台计算机(但有多个浏览器选项卡)

这强烈表明您正在一台计算机上运行服务器,并且无法从其他计算机客户端(Web 浏览器)访问它。

您应该确保您在客户端中使用的代码使用任何尝试访问游戏的人(任何客户端)都可以访问的 URL,例如

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

除了运行服务器的计算机上的人之外,绝对不会为任何人工作。

如果您更新 URL192.168.1.4:8000并且该地址可供其他人访问,那么它更有可能起作用。

于 2013-05-27T12:58:45.110 回答
0

您不必将浏览器指向公众,地址(取决于您将其路由到的位置(如果您使用 express,它将只是 /index.html))http://127.0.0.1:8000(相当于 localhost) http://127.0.0.1:8000/index.html

我的第一个 socket.io 游戏已经完成了一半,我绝对建议使用 nodejitsu 之类的服务来部署甚至测试你的游戏

于 2013-09-18T00:38:13.023 回答