客户端A进行了布雷动作,雷假设3s后爆炸,A发此消息给服务器,服务器转发给客户端B,假设A发给服务器,服务器转发给B,这个过程耗时200ms。客户端B收到消息后布雷,爆炸应该以自己下雷点开始计时3s(时间流逝3.2s),还是根据权威 爆炸时间,比如A的3s(也就是B布雷后的2.8s)后。
为什么不是 :客户端告诉服务端 “我布雷了”,服务端在倒计时后再通知客户端 “雷爆炸了”
这样不是都收到爆炸了吗
那客户端A到服务器的延迟怎么算?
比如服务器收到A的布雷消息要100ms
那么这个定时器的开始时间从什么时候开始算?
是从客户端A布雷开始时间T1算,还是T1+100ms
嗯嗯 就是楼上的描述问题。
双端都有一个时间 Tick,每个 Tick 都是有 ID 的,布雷基于时间基线,延迟就回滚操作
布雷客户端发服务端 服务端计时爆炸广播 会有一点误差 想要更精确 客户端和服务端建立连接的时候就进行时间同步 客户端布雷发服务器 服务器不计时直接广播爆炸时间给客户端 客户端计时爆炸 这种需要以服务端的时间为基准不定时的检查时间同步
第二种方式 只要网络延迟不超过爆炸时间 都是准确的 因为服务器提前广播了
提升玩家体验,客户端预测,先行