使用node.js作为游戏服务器来跟踪游戏状态

我正处于移动多人游戏实时游戏的规划阶段,我正在考虑采用什么架构来跟踪游戏大厅的状态。

我已经考虑过让游戏成为点对点,在同一个游戏大厅(最多4个玩家)内的所有设备随着游戏的进展而将其位置发送给其他玩家。 我也考虑让玩家连接到服务器和服务器,跟踪游戏状态并将状态发送给每个玩家。

如果我走这条路线并使用节点来实现服务器,那么我需要考虑哪些问题?

我有一个预测,可扩展性将成为一个主要问题,因为服务器必须跟踪名义上以每秒60帧运行的每个游戏大厅的状态。 如果我有100个积极的游说者,我可以预见可能出现的问题。 这是否会是这样,我应该看看不同的networking架构? 或者我可以获得巨大的容量,直到服务器达到最大值?

高度依赖于这种游戏。 点对点的解决scheme可能比较棘手,除非你在每个客户端validation,否则作弊将是非常容易的,但是因为你想在移动客户端上运行它,这会使游戏变慢。

validation中央服务器上的数据并发送validation数据更有意义。

一般来说,FPS对于服务器根本不重要。 每个客户端只是发送用户input到服务器,而不是每个框架(按下button – button释放)。 服务器使用所有这些信息并计算需要发生的情况并定期向客户端发送更新。 然后,客户端渲染一切,如过去200ms(真正取决于游戏的种类),并“预测”服务器在下一次更新中将发送的内容,以使其看起来平滑。 只要阅读这篇文章,就可以比以前更好地解释它: https : //developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

但是,它会比普通的网站需要更多的权力。 然而,单个大厅不需要互相沟通,所以你可以超级简单地使用3台服务器并行。 您可以期望Node与其他大多数替代方法相比,performance得相当不错,因为它可以很好地处理并发连接。 只要确保你不要运行CPU繁重的东西,因为这将非常消除节点(如果你只是接收状态更新,并使用基本的math来validation它,并再次发送出去 – >完美的select)。

希望有所帮助

您将遇到的最大的问题是Node并不是用来处理像实时模拟一样对延迟敏感的应用程序。

HTTP是一个膨胀的协议,它是基于文本的。 它不适用于大多数人会考虑多人游戏的types。 它可能适用于高延迟游戏,如Facebook游戏。