摘要:9月6日,2024腾讯全球数字生态大会游戏专场在深圳国际会展中心举办,众多游戏厂商、开发者,聚焦游戏研发、发行、运营全生..._新浪网...
9月6日,2024腾讯全球数字生态大会游戏专场在深圳国际会展中心举办,众多游戏厂商、开发者,聚焦游戏研发、发行、运营全生命周期,分享最佳实践与前沿探索。大会现场,腾讯云宣布全新升级游戏云全生命周期解决方案,为游戏提供全生命周期研运保障。

库洛游戏技术负责人林晨晨分享了《鸣潮》游戏的三年研发历程。据林晨晨介绍,在项目初期,《鸣潮》就定下了集群要支持500w PCU的目标,集群自身的横向扩展能力是需要解决的关键并且无法依赖任何外力。依托腾讯云云基础资源以及MongoDB数据库,所有库表都使用分片集群的方式,合理的分片键让读写压力分散在各个分片。逻辑服的横向扩容,做到了整个集群无单点,所有的业务都可以横向扩容增加算力。作为全球首个采用容器架构的二次元开放大世界游戏,《鸣潮》上线前全网预约人数超3200万,开启下载后迅速登顶全球100多个国家及地区App Store免费榜榜首,上线首周流水接近5亿元大关。
鸣潮是一个开放大世界动作游戏,战斗硬核、角色细腻、 boss 战斗有特色,游戏整体体量是比较大的。
以下是演讲全文:
在研发和运营过程中有两个大的挑战:一个是全球全平台同版本上线,另一个是开放世界本身的研发复杂度,三是立项就决定的发行方式,从三个方面稍微聊下这个命题我们的做法。
第一点关于全球部署。鸣潮是动作游戏,极限闪避、弹刀、协奏反应、对手感延迟比较敏感,设计目标是玩家在 120ms 延迟下可以流畅游戏。鸣潮是一个大单服的架构,这么做的原因后面同版本部分解释,也就是一个集群会尽可能大地覆盖更多范围,全球部署需要着重考虑延迟带来的体验问题,根据玩家分布情况,我们在物理距离满足的情况下,选择全球六个城市进行部署,实践的结果看,全球玩家的游戏网络质量是得到保证的。
第二点关于全平台开发。全平台适配且互通是一个对玩家最友好的游戏接入方式,不同环境都能找到最合适当前的体验方式,客厅主机、沙发平板、外出手机等等,做到一个工程打全平台的包,需要对工程有一些规范。首先基础是 unreal 引擎的支持,抽象各个平台差异的接口,在业务层保证设计和逻辑的全平台通用,适配不同的构建管线产出对应平台的包。
第三点关于同版本,做过的知道版本管理是非常细碎且容易出错的工作,并且不同版本对游戏又没有增益,半年前的内容展示在我面前,新鲜感是不足的,内容会有失效性磨损,同版本能让团队目标一致更聚焦去解决问题,反馈是及时的、问题是统一的,同时减少维护多版本的压力。同版本同一个包去服务好海量的用户,对内容有严格的要求。
技术工作上也有几个痛点,包括语言语音的适配切换、多语言的界面适配、语言本地化的流程管线等等。
内容上,需要考虑不同地区玩家的文化差异,在玩法、剧情、体验等等方面,取交集,做受众面更大的内容。
第二块是鸣潮研发复杂度相关的,复杂度话题很泛,具体分享两个案例,做的相对顺利的 500w 同时在线,做的不够好的客户端性能适配。
了解我们上一款产品战双的知道,上线过程有比较大的问题,到了鸣潮这个项目非常慎重对待这个问题,在项目初期定下了集群要支持 500w PCU 的目标,从上线情况来看,也确实需要做到这个量级。
首先是云基础资源的支撑,依托腾讯云,回到集群本身,集群自身的横向扩展能力是我们需要解决的关键,并且无法依赖任何外力。

让集群可横向扩容有两个大的工作,一个是数据库的横向扩容能力,数据库我们使用 mongodb,所有库表都使用分片集群的方式,合理的分片键让读写压力分散在各个分片。
另一个是逻辑服的横向扩容,我们做到了整个集群无单点,所有的业务都可以横向扩容增加算力,从每个具体业务逻辑入手解决单点瓶颈。
记得在 23 年 Q1 春节前 500w PCU 被定为服务端优先级最高的目标,压测结果 pcu 是我们量化这个目标的方法,压测工作除了服务端还需要高性能的客户端发压工具,在这方面 wetest 的发压框架给我比较大的支持,只需要填充压测逻辑。
如何模拟玩家真实的游戏过程是另一个难点认为靠比例去构造协议的方式是不够真实的,所以做了一套录制真实游戏过程的方法,通过录包回放的方式,看视频效果,结合 cbt 线上测试玩家的真实游戏情景占比。按比例混合不通情景录包来模拟开服状态,从结果看是比较接近上线情况的。
压测过程中发现很多问题,我简单列举几个,mongo bson 增量更新不如全量覆盖、入库逻辑需要流速控制主动保护 db、服务端用的托管内存语言,GC 问题比较多、需要做大量的内存优化工作、比如对象复用等等。压测第一次达成用时接近一年。
另一个案例是做的不够好的,在全平台发行的需求下,需要适配全平台设备这里面有 17 年上市,据今 7 年的 835 手机,例如小米 6 ,也有最新的 4090 PC,他们之间的性能差距超过百倍,如何让不同设备的用户都能有匹配当前设备的游戏体验,对技术工作提出了比较高的要求。
上线初期我们听到非常非常多的负面反馈,掉帧、发热、闪退、画面不清晰等等,我们自己深入反思下来有两方面原因,缺乏有效的发现和量化问题的工具方法,测试环境过于理想不能代表玩家真实情况,好的量化问题的方法是我们解决问题的关键。
在观测和量化线上性能数据方面,perfsight 是一个成熟的工具,可以获取每一个玩家真实玩游戏的过程,能从机型、 cpu 、 gpu 、 发热、功耗、卡顿、内存等等维度去分析,找准当前问题的关键点在哪里,精力投入在哪里是最有效的,减少个别反馈的干扰。
在找准瓶颈后,我们采取的方法是快速迭代、小量验证,有一套灰度外放的策略,在修复完问题后,通过客户端热更新的方式,按各种维度的比例外放,小量观察验证效果后再逐步放量,以达到快速迭代、稳定落地的目的。
客户端性能适配工作有两个收益比较大的例子。一个是时间预算管理,对于 60 帧的游戏来说一帧可用的时间 16.6ms 是固定的,这个时间用来跑什么逻辑对结果性价比最高需要一个调度系统来管理。另一个是超分辨率的应用,通过降低渲染分辨率可以有效减少计算量降低发热,但会带来画面糊的问题,超分辨率算法可以将低分辨率输出的结果转更高分辨率的画面,不同平台采用不同方法,通过持续调优最终在画面和性能上达到合理的平衡。
在做了一系列事情之后,突然有一天鸣潮的性能优化上了热搜,我们理解是持续的量变引发质变的结果,所有工作玩家都是能看得见的。
最后,站在今天回头看鸣潮的研发过程,整体还是比较曲折的,我觉得多做减法、保持聚焦、直面问题、拆解节点、量化进度、定时复盘
是我们能把这个项目做出来的关键。