我想使用node.js和socket.io创建一个多人HTML5半实时游戏。帧速率为3 fps。玩家使用箭头键移动。所有游戏对象都以直线移动(玩家水平或垂直移动)。播放器按Page Up / Down加速/减速。这是我的第一个动画HTML5游戏,也是我的第一个重型JavaScript项目。
我经历了一个名为“使用WebSockets和Node.js创建实时多人游戏”的教程(点击here)。本教程为每个具有箭头键移动的玩家显示黑色方块。不幸的是,它只适用于一台计算机(但有多个浏览器标签)。您必须将浏览器指向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 :(得分:0)
不幸的是,它只适用于一台计算机(但有多个浏览器标签)
这强烈建议您在一台计算机上运行服务器,而无法从其他计算机客户端(Web浏览器)访问该服务器。
您应该确保您在客户端中使用的代码使用任何试图访问游戏的人(任何客户)都可以访问的URL,例如
socket = io.connect("http://localhost", {port: 8000, transports: ["websocket"]});
绝对不会对运行服务器的计算机上的人以外的任何人起作用。
如果您将网址更新为192.168.1.4:8000
,并且其他人可以访问该地址,则可能会更有效。
答案 1 :(得分:0)
您不必将浏览器指向公众,地址(取决于您将其路由到哪里(如果您使用表达它只是/index.html))http://127.0.0.1:8000
(相当于localhost) )http://127.0.0.1:8000/index.html
我的第一个socket.io游戏已经过了一半,我肯定建议使用像nodejitsu这样的服务来部署甚至测试你的游戏