捕鱼游戏帧同步方案

设计原则:
  1. 玩家在按下的时候,就会看到子弹射出去。
  2. 这种设计注定了,玩家会收到其他玩家在之前时间射出的子弹
  3. 优先保证自己的准确性,其他玩家的准确性可惜部分牺牲

同步方案:
  1. 服务器按照固定频率下发同步帧,假定每秒10帧。每帧数据包括帧号、4个玩家的炮台发射角度,没有发射则发-90度表示空。
  2. 通常客户端的逻辑帧为同步帧的2倍,即每秒20帧。比如服务器下发的帧号为1、3、5、7、9。客户端会在中间补帧成1、2、3、4、5。
  3. 客户端逻辑帧间隔大,直接更新鱼的位置会出现跳跃,需要用比如60帧的渲染帧来平滑展现。
  4. 客户端按下屏幕射出子弹,告诉子弹的角度以及逻辑帧的帧号,服务器收到后,广播给所有玩家。
  5. 比如A在4帧按下的子弹信息,B、C、D收到的时候已经是服务器下发的第10帧了。这时候1可以直接无视,让子弹在10帧射出去,这样看别人的就会不同步,但是3个人看到的信息是同步的。2是把当前的鱼往回倒退到第4帧,开始让子弹出来,并开始计算碰撞。如果在4帧到10帧的时候已经撞了,那么直接在鱼身上播碰撞特效。如果没撞,那么此时子弹是和A是同步的,因为都是从第4帧开始出发。
  6. 第二种方案,需要记录所有鱼在比如最近10帧的位置信息,占用内存,每帧收到其他3人的子弹,都会额外计算1-10帧的碰撞,占用CPU。不过这种方案同步效果是最好
  7. 因为鱼是固定的,所有客户端在收到服务器下发的鱼信息后,就自己按照帧号来更新鱼的位置。
  8. 如果没收到服务器下发的同步帧,鱼也应该继续走,当收到后,补上前几帧的子弹。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值