服务器如何避免MMO游戏中的流量二次增加?

时间:2016-02-22 12:30:54

标签: algorithm optimization server game-development

假设你有一个服务器权威的多人在线游戏(服务器对游戏中发生的事情有最终决定权,客户只需渲染图形并接受用户输入并将其提供给服务器)。

如果您在一个区域内的X个玩家彼此相邻,彼此的可见性,则服务器必须向每个玩家发送有关所有玩家状态的信息。

职位,当前动画,游戏统计等。

这意味着它必须发送X^2个数据。然而,我已经看到有超过一千名玩家在一个地方聚集的游戏,但它仍在继续运作。

如果服务器试图发送如此荒谬的数据,这是不可能的。

那怎么办呢?

1 个答案:

答案 0 :(得分:3)

更新其他玩家的状态不需要大量数据。例如,每个客户端可以重新计算仅给出其游戏手柄输入的所有其他玩家的位置,动画状态,统计数据等。假设有16个按钮(位),每秒采样10次。这导致每个播放器20个字节的数据和第二个,需要总带宽为20 * 1000 * 1000字节/秒= 1,000个播放器的总带宽为20 MB / s。通常只需传输(动作,时间戳)对即可进一步压缩此数据。

也就是说,在MMO游戏的许多方面都没有办法避免二次空间或时间复杂性。这就是为什么即使今天的MMO每个地图通常只支持32-64个玩家,很少支持256个或更多。