Hay Day系统设计沉思录——操作序列与网络

想对Hay Day(卡通农场)的设计进行一些推演,所以就有了本系列的文章。

尝试了在玩的过程中断开网络,此时对菜地进行了移动和收割,过了大概10多秒,提示重新连接,重连之后发现刚才的操作依然有效。由此可以得到以下猜测结论:

 

一. Hay Day并非一有数据改动的操作就马上向服务器发包,而是先在本地存储以下数据

      *  存储上一server回包之后的操作序列,比如包含了3各:

          - 将 ID为1001的对象(菜地)移动到了坐标x,y;

          - 收割了ID为1002的作物;

          - 在ID为1003的菜地上播种了玉米等等

 

      *  由于要刷新界面表现,所以本地也需要存储操作结果

 

二 . 到了固定的时间间隔(比如30秒),向服务器发操作序列:

     (1) 如果服务器将操作序列验证成功,客户端则不必进行任何处理;

     (2)  如果服务器验证失败,客户端则需要将操作回滚(这里要求操作序列对象支持undo)

     (3) 如果网络连接断了,也不会马上回滚操作,而是提示用户重连;如果用户重连成功,则再次发送操作序列,重复步骤(1)(2)

 

三. 在这里还不能断定Hay Day使用了长连接还是短连接:

      因为如果按固定时间间隔向服务器发包的话,长短连接都可以满足需求,即使在使用长连接的情况下,发现网络断了,也不会马上通知用户,而是等到时间间隔到了再通知。

     唯一只能用长连接的情况是,服务器需要主动实时地下发一些信息给客户端


四. 如果在固定的时间间隔内没有任何操作,则客户端发的是空操作序列,服务器返回的统一游戏时间用来校准。

     客户端时间是不能作为依据的,所以会隔一段时间进行校准。用户有序的输入决定了游戏每一时刻的状态。


五. 客户端使用的是系统时间进行计时

      此结论得出过程如下:播种麦子,看着倒计时,出去将网路断掉,然后切回游戏,继续看那块麦子,发现时间会正确刷新(补足enterBackground的那部分时间流逝)

 

     下次继续~

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值