在线即时对战游戏如何同步运行?
高实时性的互联网游戏设计要考虑延迟,不同类型的游戏会有不同的解决方案。游戏世界同步的方式有三种:一是集中式:即时战略游戏,比如DotA,强调游戏世界各种元素显示的准确性和游戏的公平性。这个游戏采用完全精确的同步方式,整个世界要完全同步到每一台加入游戏的电脑上。这给你的控制带来了三个延迟(1),从你发送指令到服务器收到指令的延迟。(2)服务器与您的计算机同步的延迟。(3)为了让你电脑中显示的游戏世界不会受到网络不稳定的影响,你的电脑要保持一定的缓冲时间。所以这类游戏不可避免的会出现反馈延迟,从你发出移动指令到角色开始移动会有明显的延迟。这个延迟等于以上三个环节的总和。二、分布式:实时控制的游戏,比如赛车、射击,强调玩家操作的实时反馈,所以不能使用集中式的世界同步。一般这类游戏的控制元素(角色或玩家控制的赛车)的大量信息都是由客户端自己计算处理并同步到服务器和其他玩家。所以你在游戏里看到的东西是不延迟的,而其他玩家和游戏元素是延迟的,也就是说每个玩家观察到的是不同的游戏世界。但是游戏的输赢必须是统一的,所以这种同步方式必然会产生输赢之争(为什么我先拍了他就挂了?),也给作弊者极大的便利。第三,分布与集中相结合:这种方法的本质还是分布的,只是玩家操控元素的演算在服务器上也有副本,服务器的副本用于决定输赢等关键指标,客户端的副本用于呈现。难点在于设计一个复杂的同步方法,使两个副本的差异尽可能小,并且不会随着时间的推移而越来越不一样:比如移动操作就是用鼠标点击一个位置,所以虽然我的电脑和服务器上的人物开始的时间和位置不同,但人物最终还是会去同一个位置。这种方法可以有效抵制作弊者,兼顾公平,控制实时反馈,但对结果的争议仍然没有解决,甚至更加严重。我玩的游戏不多,也清楚的知道暗黑破坏神2就是用这种方法的人。