导语
pvp系统已经现在新手游的上线标配,手游Pvp系统体验是否优秀,很大程度上决定了游戏的品质。从最近半年上线的新手游来看,越来越多的游戏把核心玩法重心已经放在pvp多人游戏中,手游朝着更重度、多人实时交互的方向发展。
同步机制的一致性
同步问题的本质是一致性的问题,在同一局多人游戏的过程中,玩家A看到玩家B的状态,应该跟玩家B自身看到自己的状态相一致。延迟是造成不一致的本质原因,假设理想情况下双方的网络时延都为0,那两者应该是同步的,但是在现实情况中,往往是不可能的。
帧同步
帧同步(Frame Synchronization)是一种在游戏开发中常用的网络同步技术,特别是在需要高精度和实时性的多人在线游戏(如格斗游戏、实时策略游戏等)中。帧同步的主要目的是确保所有玩家在同一时间看到相同的游戏状态,从而实现公平的游戏体验。以下是帧同步的概念及其工作原理的详细说明。
1. 帧同步的基本概念
帧同步是一种将游戏的状态更新与固定的时间帧(frame)进行同步的机制。在这种机制下,所有玩家的游戏客户端在每一帧上都执行相同的游戏逻辑,以确保游戏状态的一致性。
2. 工作原理
-
固定时间步长:游戏的逻辑更新通常以固定的时间步长进行,例如每16.67毫秒(60帧每秒)。所有客户端在每一帧上都执行相同的游戏逻辑。
-
输入同步:每个玩家的输入(如移动、攻击等)在每一帧上被收集并发送到服务器。服务器会在每一帧上处理所有玩家的输入,并计算出新的游戏状态。
-
状态广播:服务器将计算出的游戏状态广播给所有客户端,确保每个客户端在同一时间接收到相同的状态更新。
-
回放机制:如果某个客户端的状态与服务器的状态不一致,客户端可以根据服务器的状态进行回放,重新计算游戏状态,以确保一致性。
核心思想
对于后台开发来说,服务器主要起到控制作用,对客户端的帧信息进行输入输出管理,服务器就像是一个时间序列的驱动器,每隔一定间隔,会把在这段时间间隔收集到得客户端的输入,下发广播到所有客户端中去,从而驱动客户端执行帧同步处理,简而言之可以看作服务器在时间轴序列上,收集切片,每隔一定间隔,把这时间切片收集到的数据下发给客户端。
对于帧同步来说,数据同步的频率较高,因此一般采用udp进行数据传输,但是需要通过重传解决丢包丢帧问题。
服务器单局中数据首先对每一帧下发客户端的数据进行编号,然后并保存下来,某某客户端网络不佳,中途丢了一些包,可以跟服务器发请求,我现在播放到哪一个序列号的帧了,服务器可以把这个客户端当前序号的帧和客户端缺省的帧一并下发,这样客户端拿到数据后,便可继续通过合帧快播的方式,加速播放,赶上当前时间。这样客户端的表现就是在快放一样。
帧同步的方案的包量都是比较小的,对于客户端在这个时间间隔没有上传任何数据,服务器也得帮该客户端构造空帧出来,免得其他客户端出现没有输入的情况出现
断线重连
服务器单局可以把所有逻辑帧存储下来,当客户端断线,重新登陆的时候,服务器可以将所有的逻辑帧下发给客户端,客户端拿到所有的逻辑帧后,可以快速在后台跑完全部的逻辑帧,当跑完后,加载到画面,就重新回到游戏单局了。由于断线时,跑的是单局上所有客户端一样的逻辑帧,因此,等到恢复游戏的时候玩家的状态是一致的
1万+

被折叠的 条评论
为什么被折叠?



