长春网站建设中心,设计专业哪个学校好,小程序与app的区别,设计ui在游戏开发过程中#xff0c;难免会有对线上已有功能进行迭代优化的需求。站在后端的角度来看#xff0c;难点在于#xff0c;如何在保证不会影响到用户的前提下#xff0c;顺利进行对功能的升级和优化。关键在于兼容。
兼容分为功能配置、代码、用户数据和接口的兼容性。…在游戏开发过程中难免会有对线上已有功能进行迭代优化的需求。站在后端的角度来看难点在于如何在保证不会影响到用户的前提下顺利进行对功能的升级和优化。关键在于兼容。
兼容分为功能配置、代码、用户数据和接口的兼容性。 一般来说优先考虑的是新的代码能够兼容老的配置、老的用户数据和老的接口这样能保证用户数据和旧版本的客户端也能正常使用。
如果是服务器是停服升级那么只需要考虑新代码兼容老的用户数据便可。
如果服务器使用的是滚动升级需要考虑的问题就比较多了在前者基础上还要考虑老代码对新的用户数据、新的配置和新的接口的兼容性因为滚动升级过程中玩家有可能会在已更新的服务器和未更新的服务器上来回切换。因此在实际开发中兼容性问题往往需要在开发功能的迭代部分时就考虑到优先功能的实现再对不能兼容的进行取舍。
配置方面考虑是使用 JSON 的情况下字段可以直接新增如果要修改或删除字段最好是新增一份配置使得新配置和老配置共存。等到线上全局更新完之后旧配置才可以废弃。
用户数据方面一般来说用户数据都是需要保留的特别是付费的活动。所以对于用户数据而言兼容是最为重要的。如果没办法新老数据直接兼容需要采取别的手段例如把新数据存储在另外一张表并在功能的迭代内容上线时通过代码把旧数据转换成新数据后续新代码直接使用新数据。
接口方面如果前后端使用的是 Protobuf则会有以下注意事项
只能删除 optional 的字段且字段序号后面不能再使用。一般来说字段可以保留不同但不建议删除字段。新增字段只能新增 optional、repeat 类型或者具有默认值的字段。字段名称可以修改但是字段序号不能修改数据类型也只能升级例如 int32 升级为 int64。 如果功能实现上无法做到兼容那么可能就要找关掉旧功能一段时间等完全更新好线上服务器后再开启迭代后的功能并同步旧数据到新数据。