【问题标题】:Unity real-time multiplayer with node.js (cross-platform with IOS & Android)Unity 实时多人游戏与 node.js(跨平台与 IOS & Android)
【发布时间】:2016-12-30 09:04:04
【问题描述】:

我很难找到关于使用 node.js 开发实时多人游戏的答案。目前我有一个小团队,想构建一个实时多人棋盘游戏(回合基地),它将在 ios 和 android 之间跨平台。由于我们没有预算订阅 Photon 或 Smartfox 作为多人服务器,我们建议设置我们自己的 node.js 服务器。但由于我们对实时多人游戏开发还很陌生,所以我们仍然在纠结 node.js 是否适合我们的实时多人棋盘游戏。

我们知道一些开发人员提到 node.js 的速度较慢,因为它使用 TCP 而不是 UDP,但我们确实阅读了一些使用 node.js 作为多人服务器的帖子/教程。

我想知道这里有没有人在开发实时多人游戏时使用node.js作为服务器?

【问题讨论】:

  • 是的。我推荐 node.js。因为它是一个回合制游戏,所以 TCP 是一个更好的选择,因为它的可靠性。

标签: unity3d


【解决方案1】:

Node 可以使用 TCP 或 UDP,作为实时服务器是一个不错的选择,但也有一些优点和缺点(一如既往):

优点:

  1. 由于强大的社区和大量的模块和示例,Node 易于开发
  2. 默认情况下,您的服务器将是异步的,并且能够处理大量并发连接,而​​您实际上无需执行任何操作

缺点:

  1. 默认情况下,节点将只在一个逻辑线程中运行所有连接,因此如果您为响应消息执行任何计算,您将阻止来自服务器的所有其他响应。所以 node 最适合低计算但高 I/O 的服务器
  2. 如果您的实时服务器创建和销毁大量对象,那么您可以触发垃圾收集器,这将有效地暂停您的服务器。这通常会很快完成,完成后所有收到的请求都会得到处理,但这确实意味着您会遇到偶尔的延迟高峰

因此,如果您的服务器计算量较低,并且可以处理偶尔轻微的延迟峰值,那么 node js 是一个不错的选择。

我建议您设计服务器,以便您可以一次运行多个实例,就好像您确实遇到了处理瓶颈一样,您可以通过添加更多服务器实例来简单地水平扩展。

如果需要持续的低延迟,您也可以研究 golang,尽管它更难编写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 2013-05-22
    • 1970-01-01
    相关资源
    最近更新 更多