2012-05-02 27 views
3

首先,我是新來的nodejs,它對我來說很神奇!nodejs遊戲循環和外部腳本文件

我真的想用nodejs中的bot玩家構建一款遊戲。 這個想法是讓機器人玩一些遊戲(例如跳棋)。

的第一個問題是:

  • 是適合的NodeJS爲了這個目的?請注意,主要思想不是構建遊戲,而是獲得異步編程的經驗,特別是nodejs(很好,因爲節點很酷且很棒!)。

然後我遇到了另一個問題。雖然的NodeJS編寫一個Web服務器是簡單的(有上百萬例的過網),幾乎沒有例如如何寫一個無限循環,而不會阻塞事件循環,所以質疑二:

  • 怎麼寫一個無限的遊戲循環,沒有阻止主循環?在C/C++中,我會做類似while(gIsRunning){doStuff(); gIsRunning = gameEnded();睡眠(MS)/延遲(毫秒); }

當然在我的情況下,遊戲是無限的(因爲玩家是機器人),應該運行而我沒有手動殺死節點進程。由於遊戲是面向機器人的,我希望能夠在JS中編寫殭屍程序並將它們包含到主遊戲引擎中。所以第三

  • 是否有可能將機器人作爲獨立的JS腳本編寫並加載到節點運行在某種有限環境(沙箱)中的主遊戲引擎中?未來的想法是爲bot開發提供一些基本的API,並且我不想運行具有全部功能(fs,套接字等)的第三方機器人。另外我不想手動檢查每個第三方機器人的代碼。

想象這個挑戰就是所謂的「Google AI挑戰」。 Google開發了一些引擎,並提供SDK來開發將由引擎加載並「玩」的機器人。我想要做同樣的事情,但是在nodejs中,編寫遊戲引擎和用於bot開發的SDK。

對不起,這個問題對於SO來說可能過於籠統,並且受到個人觀點的限制(節點是否合適,可能是個人喜好)。

非常感謝您的幫助!

回答

3

爲了讓您開始使用的問題之一,你可能會感興趣的HTML5/Node.js的遊戲叫BrowserQuest由Mozilla http://browserquest.mozilla.org/

源代碼是在這裏實現了沙盒效應https://github.com/mozilla/BrowserQuest

的一種方式,你可以爲機器人邏輯運行多個node.js進程,並使用您的主要遊戲循環進程使用的RPC庫(如https://github.com/substack/dnode)來獲取機器人動作?

+0

非常感謝!它非常有幫助! :) –

+0

至於你的編輯。我雖然關於每個機器人運行另一個節點進程。這看起來像是我的完美解決方案。然後,我可以在遊戲引擎和每個殭屍程序之間實現某種HTTP通信(或者可以是TCP上的自定義協議)。我還不確定這是否是我想要的模式。也許我會讓殭屍程序開發者自己託管他們的殭屍程序,並且只會使用引擎將用來與之通信的URL註冊殭屍程序。 –