我目前正在开发一款多人游戏,该游戏旨在处理20-50名玩家与单个游戏实例的连接。
我当前的客户端连接模式:
- 客户端从服务器rest端点请求连接
- 服务器创建2个绑定到随机端口的新套接字(1个tcp和1个udp(
- 客户端获得响应并连接
我不认为这有什么明显的问题,但我现在质疑这是否是游戏服务器连接的一般方式。
为了进一步解释,我正在学习如何使用Kubernetes和Agones,通过将它们封装在Kubernete 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。我之前已经用普通的Kubernetes部署了一些实例;hostNetwork=true";选项,它允许游戏实例直接绑定到主机端口并暴露于外部网络,从而使我的上述网络模型能够工作。然而,对于Agones,似乎至少不鼓励使用此选项(https://github.com/googleforgames/agones/issues/1389)。
我当然不是网络专家,所以请原谅我的无知,但如果我只暴露一个端口,那么客户端连接将如何处理?所有的流量都是多路复用的吗?或者我可以以某种方式直接将连接转移到其他套接字/端口,并让它们自动暴露在外部网络中吗?
是否所有流量都是多路复用的,或者我可以以某种方式直接将连接传递给其他套接字/端口,并让它们自动暴露在外部网络中?
我会多路传输流量。听起来现在您正在使用传入端口来确定";谁是谁";。但是,您也可以将该信息包含在到共享端口的数据包流中。