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

3

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

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

第一个问题是:

  • nodejs适合这个目的吗?请考虑到主要的想法不仅是构建游戏,而且还要获得异步编程和特别是nodejs的经验(因为node很酷很棒!)。

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

  • 如何编写无限游戏循环,而不会阻塞主事件循环?在C/C++中,我会做类似于while(gIsRunning) {doStuff(); gIsRunning = gameEnded(); sleep(ms)/delay(ms); }的事情。

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

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

  • 是否可以将机器人作为独立的JS脚本编写,并在一定程度上限制环境(沙盒)中的node运行的主游戏引擎中加载它们?未来的想法是为机器人开发提供一些基本API,并且我不想使用具有完整功能(fs、sockets等)的第三方机器人。此外,我也不想手动检查每个第三方机器人的代码。

将这个挑战视为“Google AI Challenge”。Google开发了一些引擎并提供SDK来开发将由引擎加载和“玩”的机器人。我想在nodejs中做同样的事情,编写游戏引擎和用于机器人开发的SDK。

对于可能让SO的问题过于泛化并与个人观点有关(无论node是否合适,可能是个人喜好),我感到很抱歉。

非常感谢任何帮助!

1个回答

3

关于您的编辑。我考虑为每个机器人运行另一个节点进程。这对我来说似乎是完美的解决方案。然后,我可以在游戏引擎和每个机器人之间实现某种HTTP通信(或者在TCP之上自定义协议)。我仍然不确定这是否是我想要采用的模型。也许我会让机器人开发人员自己托管他们的机器人,并只注册引擎将用于通信的URL。 - Dmitry Kudryavtsev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接