我正在写有关不同游戏体系结构的论文,但没有找到我对这个问题的答案。我已经搜索了几个小时,但是没有找到答案。
我正在阅读这篇文章:https://gafferongames.com/post/what_every_programmer_needs_to_know_about_game_networking/
此段讨论了游戏的p2p限制:
由于游戏通过仅发送更改状态的命令消息进行同步的方式而出现最终限制。为了使它起作用,所有玩家都必须从相同的初始状态开始。通常,这意味着每个玩家都必须在开始比赛之前先加入大厅,尽管从技术上讲,它可以支持后期加入,但这并不常见,因为在实况游戏的中间很难捕获并传递完全确定的起点
如作者所述,在建立p2p连接时,玩家应该在开始游戏之前加入大厅,而不是加入正在进行的游戏。 他说,这是因为在实况游戏的中间很难传递完全确定的起点。
有人可以告诉我为什么吗?是因为可能要传输的数据太多,并且可能会导致一些延迟问题还是其他问题?
答案 0 :(得分:1)
要传输的数据量并不是真正的最大问题,但肯定会产生影响。
为使事情简单一些,我将为您提供一个示例,说明如何在客户端/服务器模型中完成操作,即,玩家连接到中央服务器,该中央服务器运行游戏引擎并将游戏状态发送给玩家的计算机。服务器的任务是保持客户端对游戏的观看尽可能一致,即玩家的健康状况/位置,地图中对象的位置等。
让我们假设您有7位玩家参加比赛,而第8位希望加入正在进行的游戏。服务器需要确保新玩家及时接收游戏的当前状态,这需要服务器上的处理/网络资源。从编程的角度来看,这不仅具有挑战性,而且还会导致服务器上的资源使用量激增,从理论上讲,这可能会影响其他进程以及当前的匹配项本身。
在P2P游戏模型中,服务器是玩家的机器之一,与网络有关的问题更加严重,因为与普通家庭相比,通常服务器具有更好的Internet连接。以上仍然存在。
在纯P2P模型中,每台机器都可以直接相互通信(我不认为实际上有现代游戏可以做到这一点),这在保持全网状分布式中的一致性方面是一个非常具有挑战性的问题系统。