同步问题解决的一些思路
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 内发射信息(不做物理检测)
记录历史玩家状态,支持按序号或时间回滚,加入超时机制
基于以上信息做位置、方向、发射频率、弹量等策略匹配
Move():执行一次移动
SendMove:发送移动数据包
Check Move or Cheat:位置校验,作弊校验
SendMoveAdjust:下发纠正数据包
Adjust Move():纠正或回滚位置
OnSerializeOthers:同步属性到远程客户端
瞬发技能同步:
关键点:
Local Player 发送射击事件,由 Server 同步给 Remote Player 进行表现
本地检测命中后预表现命中效果,需发送当前时刻的状态数据给 Server
Server 收到后验证命中是否合理
校验通过,应用伤害并同步给所有客户端
命中判定方案:
优先满足射击的人,多数情况下射击是会成功命中的
客户端发送命中上报序号、状态、时间戳、方向、命中位置、玩家信息(弹量等)
Server 在收到数据后进行状态的重现并计算
判定通过,执行命中逻辑并广播给所有客户端
AOE类同步:
关键点:
本地通过前摇推迟子弹发射时间,由 Server 发起子弹创建并通过给所有客户端
所有客户端均存在弹道延迟,通过 Dead Reckoning 算法计算当前位置,再通过插值算法实现帧间平滑效果
命中判定方案:
射击行为监控,Server 创建影子快照,采集 2S 内发射信息(不做物理检测)
记录历史玩家状态,支持按序号或时间回滚,加入超时机制
基于以上信息做位置、方向、发射频率、弹量等策略匹配
相关文章推荐
- 解决Nginx 400 Bad Request问题的一些思路
- spark 使用中会遇到的一些问题及解决思路
- spark 使用中会遇到的一些问题及解决思路
- 解决app在没有上传app store前大规模安装测试问题的一些办法与思路
- 利用WIN8自带系统还原功能还原系统,遇到的一些问题及解决思路。
- dataguard归档不同步的问题解决思路及步骤
- spark 使用中会遇到的一些问题及解决思路
- innerHTML 的一些问题解决思路
- [学习记录]关于解决问题思路的一些反思
- jsonp跨域同步问题解决思路
- AIX应对编译链接问题的一些解决办法和思路
- 笔记:做一个MFC串口界面遇到的一些问题和解决思路
- 解决app在没有上传app store前大规模安装测试问题的一些办法与思路
- [科普向] 一些问题的解决办法 即算法思路。
- 解决app在没有上传app store前大规模安装测试问题的一些办法与思路
- spark 使用中会遇到的一些问题及解决思路
- sed一些解决问题的思路与方法
- spark 使用中会遇到的一些问题及解决思路 spark-shell命令行执行spark hql
- 利用WIN8自带系统还原功能还原系统,遇到的一些问题及解决思路。
- 解决app在没有上传app store前大规模安装测试问题的一些办法与思路