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],他需要全部恢复,才能重现战场。

转载于:https://www.cnblogs.com/huangliang-hb/p/6373112.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值