1

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

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

4

2 回答 2

2

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

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

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

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

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

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

于 2021-02-15T17:22:00.667 回答
1

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

我建议您快速对消息的(反)序列化需要多长时间进行基准测试,然后将其乘以您希望看到的实际消息量。

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

于 2021-02-04T07:15:38.103 回答