0

我目前正在开发一款多人游戏,旨在处理与单个游戏实例的 20-50 名玩家连接。

我当前的客户端连接模型:

  • 客户端从服务器休息端点请求连接
  • 服务器创建 2 个绑定到随机端口的新套接字(1 个 tcp 和 1 个 udp)
  • 客户端得到响应并连接

我看不出有什么明显的错误,但我现在质疑这是否是完成游戏服务器连接的一般方式。

为了进一步解释,我正在学习如何使用 Kubernetes 和 Agones 通过将它们包装在 Kubernetes pod 中来部署和管理应用程序/游戏实例。我主要使用官方指南 ( https://agones.dev/site/docs/getting-started/create-gameserver/ ) 和相关的 github 示例 ( https://github.com/googleforgames/agones /blob/release-1.15.0/examples)。

对于 Agones,我的理解是客户端连接是通过“GameServer”yaml 中“hostPort”中指定的端口进行的。我之前使用“hostNetwork=true”选项部署了一些带有普通 Kubernetes 的实例,它允许我的上述网络模型通过允许游戏实例直接绑定到主机端口并暴露给外部网络来工作。不过,对于 Agones,似乎至少不鼓励使用此选项(https://github.com/googleforgames/agones/issues/1389)。

我当然不是网络专家,所以请原谅我的无知,但是如果我只暴露一个端口,那么客户端连接应该如何处理呢?是所有流量都多路复用,还是我可以以某种方式直接将连接传递给其他套接字/端口并让它们自动暴露给外部网络?

4

1 回答 1

0

是所有流量都多路复用,还是我可以以某种方式直接将连接传递给其他套接字/端口并让它们自动暴露给外部网络?

我会多路复用流量。听起来您现在正在使用传入端口来确定“谁是谁”。但您也可以将该信息包含在流向共享端口的数据包流中。

于 2021-07-07T05:24:47.110 回答