Node.js nodejs游戏循环和外部脚本文件

Node.js nodejs游戏循环和外部脚本文件,node.js,Node.js,首先,我对nodejs是新来的,它看起来很棒 我真的很想建立一个游戏与机器人玩家在nodejs。 这个想法是让机器人玩一些游戏(比如跳棋) 第一个问题是: nodejs是否适用于此目的?请注意,主要的想法不是构建游戏,而是为了获得异步编程的经验,尤其是nodejs(因为node很酷,很棒!) 然后我遇到了另一个问题。虽然在nodejs中编写web服务器很简单(网上有数百万个示例),但几乎没有示例说明如何编写无限循环而不阻塞事件循环,因此问题二: 如何编写一个无限的游戏循环,而不阻塞主偶数循

首先,我对nodejs是新来的,它看起来很棒

我真的很想建立一个游戏与机器人玩家在nodejs。 这个想法是让机器人玩一些游戏(比如跳棋)

第一个问题是:

  • nodejs是否适用于此目的?请注意,主要的想法不是构建游戏,而是为了获得异步编程的经验,尤其是nodejs(因为node很酷,很棒!)
然后我遇到了另一个问题。虽然在nodejs中编写web服务器很简单(网上有数百万个示例),但几乎没有示例说明如何编写无限循环而不阻塞事件循环,因此问题二:

  • 如何编写一个无限的游戏循环,而不阻塞主偶数循环?在C/C++中,我会做一些类似while(gIsRunning){doStuff();gIsRunning=gameend();sleep(ms)/delay(ms);}
当然,在我的例子中,游戏是无限的(因为玩家是机器人),应该在我没有手动终止节点进程的情况下运行

由于游戏是面向机器人的,我希望能够用JS编写机器人,并将它们包含到主游戏引擎中。所以第三

  • 是否可以将机器人作为独立的JS脚本编写,然后加载到由节点在某种有限环境(沙箱)中运行的主游戏引擎中?未来的想法是为bot开发提供一些基本的API,我不想运行具有完整功能的第三方bot(fs、sockets等)。另外,我不想手动检查每个第三方机器人的代码
把这个挑战想象成“谷歌人工智能挑战”。谷歌开发了一些引擎,并提供SDK来开发机器人,这些机器人将由引擎加载并“播放”。我想做同样的事情,但在nodejs中,编写用于bot开发的游戏引擎和SDK

很抱歉,这个问题可能过于笼统,仅限于个人意见(节点是否合适,可能是个人偏好)


非常感谢您的帮助

从第一个问题开始,您可能对mozilla开发的名为BrowserQuest的HTML5/Node.js游戏感兴趣

源代码在这里


实现沙箱效果的一种方法是,您可以运行多个node.js进程来执行机器人程序逻辑,并使用RPC库,就像您的主游戏循环进程用于获取机器人程序操作一样?

非常感谢!这很有帮助!:)至于你的编辑。我想为每个bot运行另一个节点进程。这看起来是我的完美解决方案。然后,我可以在游戏引擎和每个机器人之间实现某种HTTP通信(或者在TCP之上实现自定义协议)。我仍然不确定这是否是我想要的模式。也许我会让机器人开发者自己托管他们的机器人,然后用一个引擎用来通信的URL注册机器人。