客户端应该多久向服务器发送一次请求?服务器应该多久向客户端发送一次更新?有什么建议吗?
3 回答
在你到达那里之前不要担心这个。从频繁的消息传递开始,然后随着您的扩展,如果有必要,您可以开始降低消息传递的频率(此时您应该使用分析来识别热点)。
如果您真的想知道,请启动您想到的任何游戏并进行测试。此外,大多数大型 MMORPG 都没有使用标准的 Web 请求/响应,并且可能具有使用非常优化的二进制协议的直接套接字连接。
但是,这是另一件事,一旦您确定需要它,您就可以切换到它。
正如两位用户指出的那样,您的问题很模糊。您正在实施的 MMO 类型以及您传递的信息类型很重要。
话虽如此,在 MMORPG 世界中,即使在这样的位置只有一个玩家在线,客户端和服务器之间也需要解决很多问题。
首先,您应该避免在客户端和服务器之间传输图片和音频。客户应该已经拥有了它需要的一切。
其次,每次世界发生变化(用户可以看到)时,服务器都应该将其告知客户端(新怪物、新玩家、移动、攻击)。客户端采取的每一个动作,都应该通知服务器。
第三,您应该尽量只保留所需的信息。不要多次发送任何内容并避免发送已知信息(如果有人攻击但不移动,请不要发送位置信息。这是多余的,您正在浪费带宽和处理时间)。
希望能帮助到你!
坦率地说,这取决于游戏的性质。人们将超过 0.1s 的往返时间视为延迟,将超过 1s 的往返时间视为一个重大问题。
http://www.useit.com/papers/responsetime.html
您的消息率需要考虑到这一点。但是,如果您能够建立真正的双向通信(通用 TCP 通道就足够了),它可能甚至不相关。
如果我要写这样一个游戏,我会建立一个 25ms 的事件收集延迟:
- 基本上,如果需要传达一个事件,我会再等待 25 毫秒来收集所有可能最终集中到同一个网络数据包中的后续事件。
- 然后,如果您在同一个大陆(和宽带上),那么您还有 25ms 的网络延迟,接收端的 25ms 事件收集延迟,以及返回服务器的 25ms 网络延迟。