pvp实时对战,同步机制,针对掉线简单分析

咱们游戏项目,刚开始pvp实时战斗,就是最简单的方式:编程

客户端发协议,服务器转发指令,服务器不会存任何状态,可是假如A发了一条指令,服务器在转发给B的时候,B刚好断了网,未能及时捕捉,那么这条指令就永远丢失了,服务器

固然,B重连回来的时候能够根据A的战场数据来同步本身的战场,不过这种作法对客户端的编程要求挺高,并且客户端要存不少状态,随机数和时序都容易出错,事实上也是如此,队列

还有一点就是容易在断线是被外挂修改数据。游戏

 

后面,决定服务器开房间,作个消息队列,专门转发指令,这样首先能够避免,消息量很频繁的时候,不能及时响应,可是最终仍是能按顺序逐条转发!同步

同时这个房间还会存下客户端发送的全部指令,这时候假如一方掉线了,这时候服务器存的整场战斗指令[1,2,3,4,5],可是指令5发送没成功,重连回来的时候:消息队列

 

1.假如是在战场中重连回来,那么掉线一方的客户端会存有整场战斗的指令[1,2,3,4],这时候服务器给他推送[1,2,3,4,5],他仅仅只须要恢复指令5就好了。随机数

2.假如是在主界面重连回来,即掉线一方的客户端已经销毁了全部的战斗指令,这时候服务器给他推送[1,2,3,4,5],他须要所有恢复,才能重现战场。数据

相关文章
相关标签/搜索