游戏中线上已有功能迭代的兼容问题

在游戏开发过程中,难免会有对线上已有功能进行迭代优化的需求。站在后端的角度来看,难点在于,如何在保证不会影响到用户的前提下,顺利进行对功能的升级和优化。关键在于兼容。

兼容分为功能配置、代码、用户数据和接口的兼容性。

一般来说,优先考虑的是新的代码能够兼容老的配置、老的用户数据和老的接口,这样能保证用户数据和旧版本的客户端也能正常使用。

如果是服务器是停服升级,那么只需要考虑新代码兼容老的用户数据便可。

如果服务器使用的是滚动升级,需要考虑的问题就比较多了,在前者基础上,还要考虑老代码对新的用户数据、新的配置和新的接口的兼容性,因为滚动升级过程中,玩家有可能会在已更新的服务器和未更新的服务器上来回切换。因此,在实际开发中,兼容性问题往往需要在开发功能的迭代部分时就考虑到,优先功能的实现,再对不能兼容的进行取舍。

配置方面,考虑是使用 JSON 的情况下,字段可以直接新增,如果要修改或删除字段,最好是新增一份配置,使得新配置和老配置共存。等到线上全局更新完之后,旧配置才可以废弃。

用户数据方面,一般来说用户数据都是需要保留的,特别是付费的活动。所以对于用户数据而言,兼容是最为重要的。如果没办法新老数据直接兼容?需要采取别的手段,例如把新数据存储在另外一张表,并在功能的迭代内容上线时,通过代码把旧数据转换成新数据,后续新代码直接使用新数据。

接口方面,如果前后端使用的是 Protobuf,则会有以下注意事项:

  1. 只能删除 optional 的字段,且字段序号后面不能再使用。一般来说字段可以保留不同,但不建议删除字段。
  2. 新增字段只能新增 optional、repeat 类型或者具有默认值的字段。
  3. 字段名称可以修改,但是字段序号不能修改,数据类型也只能升级,例如 int32 升级为 int64。
    如果功能实现上无法做到兼容,那么可能就要找关掉旧功能一段时间,等完全更新好线上服务器后,再开启迭代后的功能,并同步旧数据到新数据。
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值