3

好吧,首先我是 nodejs 的新手,它对我来说看起来很棒!

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

第一个问题是:

  • nodejs 适合这个目的吗?请注意,主要想法不是构建游戏,而是获得异步编程的经验,尤其是 nodejs(因为 node 很酷而且很棒!)。

然后我遇到了另一个问题。虽然用 nodejs 编写 Web 服务器很简单(网上有数百万个示例),但几乎没有示例如何在不阻塞事件循环的情况下编写无限循环,所以问题二:

  • 如何在不阻塞主偶数循环的情况下编写无限游戏循环?在 C/C++ 中,我会做类似 while(gIsRunning) {doStuff(); gIsRunning = gameEnded(); 睡眠(毫秒)/延迟(毫秒);}

当然,在我的情况下,游戏是无限的(因为玩家是机器人)并且应该在我没有手动杀死节点进程的情况下运行。

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

  • 是否可以将机器人编写为独立的 JS 脚本,然后在某种受限环境(沙盒)中加载到节点运行的主游戏引擎中?未来的想法是为机器人开发提供一些基本的 API,我不想运行具有完整功能(fs、套接字等)的第三方机器人。另外我不想手动检查每个第三方机器人的代码。

将此挑战视为所谓的“谷歌人工智能挑战”。Google 开发了一些引擎并提供 SDK 来开发将由引擎加载和“播放”的机器人。我想做同样的事情,但在 nodejs 中,为机器人开发编写游戏引擎和 SDK。

抱歉,这个问题对于 SO 来说可能过于笼统,并且受个人意见的限制(节点是否合适,可能是个人喜好)。

非常感谢您的帮助!

4

1 回答 1

3

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

源代码在这里https://github.com/mozilla/BrowserQuest

实现沙盒效果的一种方法是,您可以为机器人逻辑运行多个 node.js 进程,并使用您的主游戏循环进程用来获取机器人动作的RPC 库(如https://github.com/substack/dnode )?

于 2012-05-02T10:41:11.010 回答