2013-05-27 244 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明確提出部署,甚至測試您的遊戲