DevOps在游戏行业中的应用
如果无法正常显示,请先停止浏览器的去广告插件。
1. DevOps在游戏行业中的应用
字节跳动 悦研
2. 讲师简介
【讲师介绍】
游戏行业多年从业经验,先后在腾讯游戏,字节跳动从事游戏研发工作,
参与过多款游戏项目的研发,在游戏行业标准化流程,质量管理,效能工具
平台,DevOps实践积累了较为丰富的经验。
目前担任字节跳动游戏上海无双工作室工程效能负责人,从事游戏研发效能
张秀栋(悦研)
ee.msup.com.cn
优化工作。
3. 目录
目录
CONTENTS
ee.msup.com.cn
01 行业背景以及DevOps实践挑战
02 DevOps在游戏行业实践案例
03 总结与后续展望
Industry background and Challenges
DevOps game industry practice
Sumary and follow-up outlook
4. 行业背景
雅达利时代,革命性的游
戏《乒乓(Pong)》。世
界上第一台家用游戏主机
1958
1972
任天堂FC诞生,两个月内
售出超过50万部,并且在
北美市场取得良好的口碑。
1980
《吃人豆(Pac-
man),这个属于
街机时代
ee.msup.com.cn
1983
1994
Sony PS发布
iPhone出世
局域网联机游戏风靡
1994-2004
2005
MMORPG王
者 魔兽世界发
布
2007
2009
LOL发布带动
电子竞技蓬勃
发展
2015-至今
5. 行业背景
• 2020年,中国移动游戏市场实际销售收入持续上升,人口红利逐步消退,市
场竞争激励,移动游戏占比突出
ee.msup.com.cn
6. 行业现状
竞争激烈 成本升高 效率需求
2020年全年过审有1213款,在研的产品 游戏产品成本动辄上亿,并且随着品质 市场,IP热度变化快,需要团队迅速应对,
更是不计其数,头部产品占有大部分市 要求的提升,成本呈现上升趋势。
场份额。
ee.msup.com.cn
来抓住黄金窗口期。
7. 游戏实施DevOps挑战
游戏的业务不同点
ee.msup.com.cn
8. 游戏研发团队构成
ee.msup.com.cn
9. 游戏研发流程
立项阶段
原型阶段
迭代阶段
游戏系统制作
市场评估 核心玩法展示
筹备团队 美术方向确定
玩法探索 技术选型确定
美术优化
世界观,内容铺
量
数值,细节打磨
ee.msup.com.cn
测试阶段
封闭测试
数据验证
不删档测试
10. 游戏客户端技术
游戏客户端各种功能都依赖游戏引擎,游戏引擎
为游戏虚拟世界提供基础规律。
游戏客户端不仅依赖程序,还大量依赖各类资源
文件。
游戏客户端容量大,并且需要运行在多个物理平
台上 。
ee.msup.com.cn
11. 游戏服务器技术
互联网服务器常见使用请求/响应
模式,游戏服务器需要支持推送模
式。
互联网服务器通常是无状态服务,
而游戏服务器通常保存大量状态。
游戏服务器实时性要求高。
在架构设计上,会有分区分服,全
区全服等概念。
游戏服务器需要tick来完成定时任
务,需要支持广播消息等。
ee.msup.com.cn
12. 游戏业务与非游戏业务对比
游戏业务
人员组成
研发过程
前端技术栈
后端技术栈
策划,美术,开发,PM,QA等等,每个角色的细分
领域比较多,职能差别较大,人数也较多。 通常分为产品经理,开发,QA,PM等。
分为立项阶段,原型阶段,迭代阶段,发布测试,上
线。发布测试后会根据数据调整内容或者方向,从而
达到调优目的。测试次数有限,并且对外测试的版本
内容比较多也相对完整。 快速迭代完成MVP版本,上线后根据回馈修改产
需要基于游戏引擎开发,主流的商业引擎UE和Unity,
游戏引擎支持多平台开发,也有不少公司使用自研引
擎。 一般为Web,App,小程序技术栈以及技术框架。
2.
3.
ee.msup.com.cn
品,不断优化产品 。
不同类型游戏服务器架构区别很大,需要根据不同游
微服务架构,容器化技术等,服务器通常采用短
戏类型进行设计,游戏服务器采用长连接并且有状态。 连接,无状态。
1.
其他
非游戏互联网业务
游戏中牵涉到大量美术制作流程,资源较大,
构建时间较长。
游戏研发过程中依赖的生产工具也要保持快速
高质量交付。
游戏的质量保障工作建设 。
13. 游戏行业DevOps实践挑战
01 游戏技术栈与传统互联网开发技术栈差异大,无法完全借
鉴成熟的 DevOps 实践经验,需要因地制宜的落地,开发
使用适合自己业务的工具链,聚焦全局优化效果。
02 游戏质量保障方法与传统互联网业务质量保障方法差异较
大,需要在 DevOps 实践过程中搭建适合游戏业务的自
动化保障体系,实现快速验证快速闭环。
03 游戏服务器多为有状态服务,如何更好更优雅地实现用户
无感知自动化更新。
ee.msup.com.cn
14. 目录
目录
CONTENTS
ee.msup.com.cn
01 行业背景以及DevOps实践挑战
02 DevOps在游戏行业实践案例
03 总结与后续展望
Industry background and Challenges
DevOps game industry practice
Sumary and follow-up outlook
15. DevOps流程
需求管理
需求
管理
缺陷
管理
Jira
持续集成&持续测试
仓库
管理 代码
扫描
SVN Coveri
ty
资源
检查
Git
部署
制品
仓库 分包 部署 监控
Dock
er Messi GOP
S Bi
构建 自动化
测试 Unity Shoots Unreal Noah Sladar
AI Bot GPM
P4
人工
测试
监控&运营
WSDevCI
WSDevBox
GOPS
自研工具
字节内部
WSDevBox
ee.msup.com.cn
商用工具
16. 案例一:优化Unity引擎游戏客户端构建
优化客户端构建速度
客户端构建速度直接影响到整个迭代的效率,通过一
系列技术方案最终缩短构建时长。
构建资源的降本提效
游戏构建资源通常使用物理节点,成本高,扩展性差,
新增或者修改构建环境繁琐,环境复用率低。
引擎迭代DevOps流程搭建
随着品质要求的提升,常常需要游戏引擎进行迭代,
需要打通引擎修改到发布到构建环境整个链路,方便
统一升级修改引擎。
ee.msup.com.cn
17. 案例一:优化Unity引擎游戏客户端构建
工具层优化
游戏客户端构建所使用的工具优化。
服务层优化
WSDevCI提供持续集成能力,提供集群构建资源调度,
容器化构建等服务。
硬件层优化
利用虚拟化技术,为整个业务提供高性能可扩展的底层构
建环境。
ee.msup.com.cn
18. 案例一:优化Unity引擎游戏客户端构建
硬件层优化:
经过分析Unity客户端构建硬件影响因素,主要
依赖磁盘IO以及CPU,综合考虑使用虚拟机方
案代替原有实体机方案以提供 :
1. 高性能
2. 容灾,高可用
3. 弹性扩容
4. 方便维护
使用VMware vSAN 超融合技术方案,VMware vSAN 使用软件定义的
方法为虚拟机创建共享存储。可以虚拟化 ESXi主机的本地物理存储资源,
并将这些资源转化为存储池,然后可根据虚拟机和应用程序的服务质量要
求划分这些存储池并分配给这些虚拟机和应用程序。
ee.msup.com.cn
19. 案例一:优化Unity引擎游戏客户端构建
服务层优化:
自动化地生成回收构建资源
利用虚拟化技术可以动态新增回收构建资源,提高整
个系统可扩展性。
构建集群调度服务优化
WSDevCI的调度服务负责调度整个工作室各个项目的
构建机集群,可以通过一些规则算法获取最适合的构
建机环境。
工程打开加速
通过保存记录Library的内容,当新的构建环境启动时,
会自动拷贝相应的Library,减少打开工程的时间。
构建环境监控报警
对所有接入CI系统的集群构建资源进行监控报警,进
一步保障基础环境正确,防止因环境问题导致的构建
失败。
ee.msup.com.cn
20. 案例一:优化Unity引擎游戏客户端构建
资源上传:
Unity Cache Server使用
Unity 在每次导入资源时基于以下内容进行缓存:
资源获取:
资源接收:
• 资源文件本身
• 导入设置
• 资源导入器版本
• 当前平台
如果以上任何内容更改,Unity 都会重新导入资源。
否则,Unity 从缓存服务器下载资源。
使用缓存服务器时,甚至可以跨多个项目共享资源导
入(即,在一台计算机上完成导入工作,结果将与其
他计算机共享)。
Unity Cache Server优化
经过分析Cache Server与Unity断开连接时,Unity认
为自己仍然保持着与服务器的连接,导致Unity不会
重连,从而陷入接收数据->数据错误->连接正常->
接收数据的死循环,造成构建时hold on问题。
ee.msup.com.cn
21. 案例一:优化Unity引擎游戏客户端构建
01
分析包体资源
分析安装包资源构成,不仅包括资源物理空间大小,
还可以计算占用的内存,实时追踪,避免引入问题资
源。
02
包体大小告警
根据最近包体大小以及拆包后的资源情况,如出现包
体大小在短时间迅速变大,则告警,防止异常资源的
合入导致构建时长增加。
ee.msup.com.cn
22. 案例一:优化Unity引擎游戏客户端构建
引擎持续交付流程
1 2 3 4 5
需求创建 代码提交 代码扫描 单元测试 构建
6 7 8 镜像创建 测试环境验
证 发布
利用Docker容器化技术,将引擎制作成镜像,验证通过发布后,构建客户端时可以获
取对应版本的引擎版本来执行构建任务。
ee.msup.com.cn
23. 案例一:优化Unity引擎游戏客户端构建
引擎更新版本 构建资源新增 通过将引擎构建成容器镜像实现构建环 通过将实体硬件资源升级为高性能服务 通过一系列优化方案,流水线中客户端
境自动化更新,从原先需要120分钟到现 器虚拟机,从原来新增一台构建资源需 构建效率提升25%+。
在10分钟,效率提升12倍,同时也保证 要2个工作日优化到只需要30分钟,效率 引擎版本的正确性。 提升了32倍。
ee.msup.com.cn
构建效率提升
24. 案例二:游戏DevOps中的质量保障实践
加速验证闭环,提高最终质量
尽可能早的发现问题,加速整个验证的闭环,避免把
隐藏风险留到最后。
日常专项测试自动化
游戏专项测试相比其他业务更关心适配兼容性,性能,
图像表现等,需要将这些重点关注内容日常常态地自
动化测试。
研发标准化,规范化
推动整个研发的标准化,规范化体系建设,培养各个
研发角色的质量意识,从源头上避免风险的产生。
ee.msup.com.cn
25. 案例二:游戏DevOps中的质量保障实践
技术标准制定
设立专家团,根据游戏品类以及市场竞品,制定研发过
程内的标准。
云测自动化平台
拥有top100机型,可以实现自动化兼容适配,性能等专
项测试。
测试左移
根据专家团制定的标准,开发配置测试左移工具链,方
便在构建前发现风险。
ee.msup.com.cn
26. 案例二:游戏DevOps中的质量保障实践
专家团标准建立:
目录结构标准
骨骼规格
除了满足字节游戏研发标准,工
作室内组建专家团,根据当前市
场,游戏类型,已有数据,竞品
标准等因素。
最后输出一套技术以及资源规格
标准。
ee.msup.com.cn
模型面数
贴图规格
27. 案例二:游戏DevOps中的质量保障实践
测试左移工具链支持:
01 工具链部署在构建流程之前,快速
发现问题提高最终交付版本质量 。
02 工具链抽象出框架层以及规则层,
方便不同项目配置自定义规则。
03
工具链与需求管理工具Jira打通,规
范提交,避免质量潜在风险。
ee.msup.com.cn
28. 案例二:游戏DevOps中的质量保障实践
自动化云真机测试平台:
实现游戏客户端在多台真机上
自动化测试。
覆盖兼容性以及基础性能采集,
进一步完善质量保障体系。
支持画面异常,引擎测试等专
项自动化测试。
ee.msup.com.cn
29. 案例二:游戏DevOps中的质量保障实践
兼容性覆盖机型 日均自动化执行 机柜有TOP100机型,保证游戏产品在主 日均运行2000+自动化case,包含冒烟 通过一系列规则制定一周大概有12%的
流设备上兼容性不出现问题。 测试,特定场景,常规功能测试等。 提交存在风险。
ee.msup.com.cn
拦截风险提交
30. 案例三:游戏自动化蓝绿发布
目标:
游戏服务器实现优雅地不停服部署更新,服务器更新部署对
用户没有任何感知。
整体思路:
利用游戏特点,服务器架构支持分批次更新以及更新对应的
指令,最终实现自动化蓝绿部署更新。
ee.msup.com.cn
31. 案例三:游戏自动化蓝绿发布
01
更新前
02 需要提早考虑数据库以及应用的回
滚操作。
03 自动化发布需要服务器支持相关操
作命令行。
更新发布
04
ee.msup.com.cn
游戏类型需要单局有固定时间,或
者有逻辑把玩家在更新前从蓝色区
域转移到绿色区域。
游戏业务的蓝绿更新还需要考虑客
户端的更新,避免在窗口期造成无
法登录的情况。
32. 目录
目录
CONTENTS
ee.msup.com.cn
01 行业背景以及DevOps实践挑战
02 DevOps在游戏行业实践案例
03 总结与后续展望
Industry background and Challenges
DevOps game industry practice
Sumary and follow-up outlook
33. 经验总结
01 因地制宜
每个领域在落地DevOps时都需要充分考虑自身公司现状,产品,
人员,技术等特性,切勿生搬硬套一些成功的实践经验,会带来效
能的负优化,深入理解当前业务,合理使用工具,解决当下的痛点
问题才能达到正向的效果。
形式
02 最终效果优先
在实施DevOps时,需要从最终优化效果出发,发现核心痛点问题,
效果
防止掉入局部优化“陷阱”,搭建数据平台,做好过程数据收集,
量化成果数据,不断优化,追求极致。
03 规范及标准化
需要制定规范,可以有效管控软件生产各个环节。工具是标准化的
载体,将研发流程标准化不仅有利于DevOps实施,更有利于保障
产品的整体质量。
ee.msup.com.cn
34. 后续展望
前沿技术生产流程融入
4
将程序化生成,动捕等前沿技术的生产工
作流程融入到DevOps体系中,提升生产
效率以及制品质量。
AI游戏测试实践
将AI与自动化测试结合,根据业务类型实
2
组织架构演进
3
践,解决游戏变动频繁以及自动化实现难
度高等问题。
1
服务器架构演进
服务器架构根据业务类型逐步演进,充分
借鉴互联网产品所使用的技术,能够真正
打通Dev到Ops路径。
ee.msup.com.cn
优化团队组织形式,搭建各个主要模块的
生产管线,支持大型团队以及团队跨地域
的研发工作。
35. 关注msup公众号
获取更多工程效能实践案例