多人游戏服务器:从客户端到服务器的通信量是多少

问题描述

我正在制作具有统一性和 Colyseus 后端的多人游戏(服务器/客户端)。目前,后端每秒向每个客户端发送 20 个更新。我希望每个客户端每秒也向服务器发送大约 20 条消息。是不是交流太多了? (消息非常小,一个带有 5 个字符串字段的 JSON 对象)。

我不想构建游戏并发现它不可扩展:(。所以论文:每个客户端每秒向服务器发送 20 次小消息太多了吗?

解决方法

正如 Slugart 所提到的,最好进行基准测试并从那里开始。

话虽如此,如果您发现性能成为瓶颈,您可以做一些事情:

  • 减少消息数量 - 通常,每个客户端每秒 20 条消息可能有点太多 - 游戏通常不到一半(6-12 条消息/秒)。
  • 使用二进制格式而不是 json - 如果服务器需要充当中继,您可以使用二进制协议对您的消息进行编码。查看 protobufmessagepack

还有一些其他选项可用,但它们不适用于 javascript(据我所知)。 如果您期望有大量玩家,并且每个人都想尽可能地优化,我建议切换到支持多线程、对象池(以减少垃圾收集时间)等的后端,以获得最大性能。

免责声明:我是 ServerBytes 的联合创始人 - 我们帮助您更快地制作游戏。

您还可以免费试用 ServerBytes - 一个支持高并发、高吞吐量、自定义 c# 后端代码等的平台。

,

这取决于您未指定的许多事情,首先是您希望同时拥有多少个玩家和多少个服务器端玩家。

我建议您快速确定消息(反)序列化所需的时间,然后将其乘以您希望看到的实际消息量。

您还可以创建一个概念证明,除了以不同的消息速率发送消息之外什么都不做,以了解它的扩展性。