您的位置:首页 > 其它

同步问题解决的一些思路

2017-12-29 22:15 357 查看
移动同步:



Move():执行一次移动

SendMove:发送移动数据包

Check Move or Cheat:位置校验,作弊校验

SendMoveAdjust:下发纠正数据包

Adjust Move():纠正或回滚位置

OnSerializeOthers:同步属性到远程客户端

瞬发技能同步:



关键点:

Local Player 发送射击事件,由 Server 同步给 Remote Player 进行表现

本地检测命中后预表现命中效果,需发送当前时刻的状态数据给 Server 

Server 收到后验证命中是否合理

校验通过,应用伤害并同步给所有客户端

命中判定方案:

优先满足射击的人,多数情况下射击是会成功命中的

客户端发送命中上报序号、状态、时间戳、方向、命中位置、玩家信息(弹量等)

Server 在收到数据后进行状态的重现并计算

判定通过,执行命中逻辑并广播给所有客户端

AOE类同步:



关键点:

本地通过前摇推迟子弹发射时间,由 Server 发起子弹创建并通过给所有客户端

所有客户端均存在弹道延迟,通过 Dead Reckoning 算法计算当前位置,再通过插值算法实现帧间平滑效果

命中判定方案:

射击行为监控,Server 创建影子快照,采集 2S 内发射信息(不做物理检测)

记录历史玩家状态,支持按序号或时间回滚,加入超时机制

基于以上信息做位置、方向、发射频率、弹量等策略匹配
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: