演讲实录!谷得技术总监陈镇洪教你打造游戏研发流水线

Posted 163yun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了演讲实录!谷得技术总监陈镇洪教你打造游戏研发流水线相关的知识,希望对你有一定的参考价值。

本文来自网易云社区

 

7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行。本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术、新实践,如AR、区块链、安全、大数据等。

 

技术分享图片谷得游戏技术总监陈镇洪表示,通用化组件能快速提升游戏开发效率

 

谷得游戏技术总监陈镇洪做了《谷得游戏如何打造自主研发流水线》的主题演讲,表示游戏厂商们应当建立平台部,实现游戏研发的通用化,助力流水线型的游戏开发工作。

 

过去的开发模式项目组之间是互相独立的,因此常常会面临重复制造轮子、重复踩坑、没有质量保证等问题,而技术中心的成立则可以有效打破这种僵局。陈镇洪表示,技术中心即平台部,它是各个项目组之间的运转中心,可以将各个项目中通用的模块进行归纳、优化、总结、提炼,进而提供给有同样需求的其他项目。以这个雏形不断循环,不仅能够优化整个研发流程,而且能够快速占领市场先机,把握产品竞争优势。

 

陈镇洪阐述道,这个平台部应该具备四大特点。

 

第一个特点,组件化开发。产品的研发过程可以拆解为一个个被量化的模块,比如底层框架、核心玩法、功能系统,而任何游戏几乎都可以拆解为这三个模块。

  1. 底层框架,包括有游戏管理器、UI框架、网络模块、资源模块、热更新模块、消息事件模块等等,它们彼此之间互相独立,共同组成了一个游戏的骨架;
  2. 核心玩法,不同类型的游戏核心玩法不一样,可以借助动作编辑器、子弹编辑器、AI编辑器、地图事件编辑器等工具实现通用化,避免重复性工作;
  3. 功能系统,包括登陆支付、聊天、角色、装备等,不同游戏的功能系统也不一样。

 

第二个特点,工具自动化。游戏研发都会经历纯手动开发到流程化、再到自动化的阶段,但重要的是要在研发过程中发现痛点,并形成工具,比如云构建、动作编辑器、地图编辑器等等。其中,云构建很好地解决了手游打包的问题,简化了沟通流程和人员工作量。

 

第三个特点,上线标准。上线标准的核心是将上线准备工作拆解组装,以协助项目组顺利完成,主要包括性能优化、机型适配、渠道接入等,这个过程是保障游戏上线的必要工作。

 

第四个特征,质量把控。为了保证游戏安全,我们需要在某些研发阶段做几次全面的检查,知道它究竟有没有这样的问题,然后去解决这些事情。

 

陈镇洪最后提到,在游戏研发如此激烈的情况下,如何像流水线一样快速有保障地开发一款游戏,是提升公司竞争力以及个人竞争力非常重要的事情。而想要打造研发流水线,有两条路径可以选择:第一条线是项目研发,分为项目立项、研发中以及上线前三个阶段;第二条线则是TDR评审,由评审委员会对项目的各个阶段进行全面的检查。

 

以下是陈镇洪演讲实录:

 

各位来宾,各位同行,大家下午好!我是谷得游戏的技术总监陈镇洪。

 

今天我分享的是主题是《谷得游戏如何打造自主研发流水线》。游戏的研发现在越来越激烈,一款游戏不可能从零开始开发,如果做一到两年再上线市场机会就丢失了,像吃鸡游戏,出来第一款,马上出来第二款、第三款。所以当你有一个idea的时候,如何保证快速的高质量研发出来,就是我今天分享的重点。

 

过去式的开发模式项目组之间是互相独立的,所以项目组没有互相传承跟积累。举个例子,项目A从零开始研发到上线,项目V立项的时候还是要经历这样的过程。所以导致了各种各样的问题,包括重复制造轮子、重复踩坑、没有质量保证等等。因为项目组之间天然是一种竞争的关系,而且他们也有进度各方面的压力,所以希望他们主动去分享经验是非常难的。

 

怎么打破这种局面呢?我的做法是成立一个平台部,类似技术中心的概念,它是各个项目组之间的运转中心。举个例子,项目A将一个比较通用的模块提到平台部,平台部进行归纳、优化、总结、提炼,项目B这时候有需求了,就能够把这个功能给到项目B,项目B减少了研发时间,同时平台部不断研发一些新的工作,将一些功能和工具给到项目A和项目B,也减少了他们的时间。以这个雏形不断循环,整个流程就比较顺畅。

 

技术分享图片

 

接下来我将重点说明怎么围绕平台部来做这些事情。

 

第一个特征:组件化开发。一个产品的研发过程是可以被拆解为一个个被量化的模块,未来的游戏不会从零开始研发,而是从一个已经研发上线的产品、或者说从已有的基础模块上面进行组装,成为一个新的游戏。就好象你买电脑一样,你的需求可以拆解成一个个硬件配置,然后把这些硬件买回来进行组装,就可以用了。举一个案例,《世界2》是一款argp产品,它的拆解从大的方向、大的概念来讲,可以被拆解为三个部分:底层框架、核心玩法、功能系统。任何游戏,或者大部分游戏都可以拆解为这三个模块。

 

首先是底层框架,底层框架包括有游戏管理器、UI框架、网络模块、资源模块、热更新模块、消息事件模块等等各种各样的模块,它们彼此之间是互相独立的,然后把它们组成一个游戏的骨架,类似于一个建筑,它们就是地基,只有这些模块稳定的同时,才能在上面建造出更多花样。其次是核心玩法,不同类型的游戏核心玩法不一样,怎么把这个核心玩法进行拆解呢?战斗副本有什么可以拆解的?一方面它要同步,你可以选择是真同步的技术或者是装了同步的技术,另一方面还可以借助编辑器:动作编辑器中,每个角色都需要有各种各样的动作,以及各种各样技能,你需要有一个强大的工具,可以让策划更加灵活去做这个事情;子弹编辑器中,决定你释放出来的技能是一个暴光还是一个冲击波;AI编辑器中,会包括怪物的行为、树怎么去编辑等等;地图事件编辑器中,一些剧情或者战斗中的陷阱通过这个来做,还有镜头、数据表等等......我们拆分出这些模块之后,在下一次做这种类型游戏的时候就可以完全通用化。而其中的某些模块也可以单独拿出来使用,比如做一个动作游戏,就可以把其中的动作编辑器、AI编辑器拿出来用,而其他模块不需要动,这样就不会重复性工作。最后是功能系统,包括登陆支付、聊天、角色、装备,不同游戏的功能系统也不一样。

 

《创造者》是目前公司正在研究的,也是我所负责的一款新产品,是开放世界+沙盒+大规模多人+二次元叙事的一款游戏。从画面上看它是由一个个方块组成的游戏,里面所有的方块和树,甚至远处的栏杆等等各种各样的东西,在这个游戏里面都可以被破坏或者建造。所以如果你很不爽可以把整个山坡、整个树全部砍掉,或者建一个非常漂亮的房子。

 

《创造者》的拆解我们是怎么做的呢?它也可以被拆解为几个模块,包括底层框架、核心玩法、功能系统。我们做这个立项的时候,已经有了一定的底层框架和核心玩法的积累,所以整个游戏立项的时候只要解决核心玩法定型的问题,整个游戏的雏形就已经出来了。这个重点是研发工期临时缩减了一半,所以这个前提是策划不要频繁改动需求的前提下。

 

技术分享图片

 

刚才说过不同的游戏类型其核心玩法是不一样的,《创造者》核心除了战斗之外还有核心玩法,做每个核心玩法的时候会做技术攻关,把一个新的游戏核心玩法包装利用出来,形成一个组件化的形式。像我们这样的游戏难点是非常大的,因为所有的数据、地形是动态生成的,所以导致不能被烘焙,它必须是通过数据来生成的一个地形。所以要解决很多问题,这个过程中我们遇到很多难点,像数据量比较大、网格内存大:整个游戏里面我们建了一个城堡,城堡所使用方块的数量、家具等加起来大概40多万个,所以肉眼就可以看到40多万个物件,那是非常恐怖的事情;还有大量火把光,玩家可以自己放火把,想放多少火把都可以,没有限制;还有寻路,因为整个地图范围比较大,寻路问题也是必须解决的问题。

 

这个游戏的类型也是一片蓝海,所以过程中有很多东西我们都是以先行者的姿态在解决。对此,我们做了一系列的技术攻关。一方面,因为网格内存比较大,所以网格方面我们对一些看不到的地方或者方块与方块之间连接的面,会相应的删减,比如只保留你看到的表面的东西。另一方面,我们会进行定型核定,会以一个小区域进行合并,而不是一下子把整个区域进行合并,在空间力度的把控上更加重视,所以我们大概是以16X16X16个方块作为一个网格。此外,在解决大量火把光问题的时候,我们还自定义了顶点光,实现了顶点颜色的渲染......通过这些实践总结,我们就可以快速做出第二款游戏。

 

第二个特征,工具自动化。游戏研发过程中,都会经历从纯手动开发的阶段到流程化、再到自动化的阶段。这个事情其实并不是很难,重点是怎么在研发过程中去发现一些痛点,然后把它做成工具并开发出来,所以对于研发的理解是非常重要的。

 

我们做了一些什么样的工具呢?第一是云构建,它解决了手游打包的麻烦事情。举个例子,首先策划会提出程序打包的需求,开发在程序打包的时候不仅要跑到版本机上面先配置好环境、构建完成之后还要经过漫长的等待、打好了还要进行各种参数配置、证书配置、描述文件配置等等,然后继续打包、构建,才能上传和安装下载。整个流程非常烦琐,所以我们做了一键打包,你只需要通过一个按纽,就可以直接得到一个版本。

 

技术分享图片

 

如上图所示,里面显示了每个构建版本所需要的时间,平均每个应用构建的时间不到10分钟。通过这个基础的东西我们还做了很多外围的应用,比如像闹钟一样可以定时每天晚上零点的时候打一个包,隔天早上上班的时候就可以看得到,知道今天程序员具体做了哪些工作等等。还有其他一些周边工具,比如资源更新,资源更新是一个很复杂的功能,我们把它做成一个工具流,将复杂的系统转化为简单的操作,并把类似的思想运用到了游戏各流程中去。对于策划来讲,只需要通过这个界面去部署,通过部署好的信息就可以上传、更新和下载资源。此外还有一个SDK聚合,把重复的工作量转化为只做一次,这里面不仅指渠道,还包括很多自定义的组件,比如语音SDK或者苹果的特性ARK等等,我们都把它做成了一个SDK聚合的东西。跟云构建一样,当我点击云构建的时候,我可以选择需要的渠道或者是组件,让它自动聚合上去。整个东西跟我们一开始做底层框架的时候是挂钩在一起的。

 

技术分享图片

 

 

除了一些周边的工具之外,在游戏研发中也需要做一些自动化的工具。

 

一是动作编辑器。我们在游戏中的理念之一是尽可能地解放策划思维,策划通过工具和模板就可以把自己想实现的功能做出来,而不需要告诉程序你要怎么做,这个沟通成本是非常大的,同时也限制了策划的思想。动作编辑分为几个模块:其一是角色的定义,包括角色的所有动作、状态和事件,比如具体的普攻信息、动作片断、触发特效等等,每个事件都有不同的编辑面板,分为各种各样参数的配置;其二是中断的定义,当玩家点击了两次技能A再点击技能B,会出现另外一个攻击技能,这时候通过中断定义的配置,会切到另外的动作片断。这两者共同形成了整个动作编辑器。

 

技术分享图片

 

二是地图编辑器。地图编辑是游戏开发中非常重要的工具之一,我们专门有两个美术做这样的事情,得力于我们强大的编辑器,让美术在编辑地图的时候完完全全解放了很多机械性、重复性的工作。如下图所示,右边是各种编辑功能,比如画刷、其他区域选择等等。左边是其中的某一个功能,比如地形生成,编辑器中也会有一些地形生成的模板,可以通过配置模板自动生成一个村庄、草原、沙漠或者树林,在这个基础上面再进行修改。

技术分享图片

 

各种编辑器的目的就是想要解放人员的工作量,无论是程序、策划还是美术。而且我们不仅有这几个编辑器,还有更多的编辑器。

 

第三个特征,上线标准。一个游戏上线的时候要做很多事情,比如性能优化、卡断检测、是否发热、会不会内存闪退等等。而上线标准的核心就是将上线准备工作拆解组装,以协助项目组顺利完成,主要包括:性能优化,对项目深度优化,把问题找出来,并给出建议报告;机型适配,适配各种各样的机型以解决兼容性问题;渠道接入,做各种各样SDK的接入。这个过程是保障游戏上线的必要工作,也类似于组件开发的思路一样,把上线一些通用的工作抽离出来,由平台部做这样的事情。因为这些通用化的工作由一个部门去做的时候,它可以不断积累沉淀,所以在做第二个项目的时候,就可以有非常多的经验去解决问题。

 

第四个特征,质量把控。为了保证游戏安全,我们需要在某些研发阶段做几次全面的检查,知道它究竟有没有这样的问题,然后去解决这些事情。

 

最后总结一下今天讲的内容。

 

技术分享图片

 

如果想要打造研发流水线,有两条路径可以选择。

 

第一条线是项目研发,分为三个阶段:项目立项、研发中以及上线前。项目立项的时候,通过组件化减少工作量;而在研发当中可以借助云构建、打包等工具,在过程中不断优化整个项目研发效率;在上线前,确保上线前的质量,比如性能优化、机型适配等等各种各样通用化的工作。这些动作分别在三个不同的阶段进行,会给这个项目做一个全面的支撑。第二条线则是TDR评审。TDR评审是由评审委员会组成的,评审委员应该包括平台部里面的技术专家,以及其他项目的专家,在项目某个阶段的时候进行全面的检查。检测应分为三次:项目立项之后做第一个Demo的时候,第一次测试的时候审查整体的性能和框架,整个游戏正式上线前还会进行更全面的检测,不同阶段的检测内容也不一样。

 

所以现在在游戏研发如此激烈的情况下,如何像流水线一样快速地开发一款游戏、有保障地开发一款游戏,是提升你公司竞争力以及个人竞争力非常重要的事情。

 

谢谢大家。

免费试用网易云易盾安全服务

以上是关于演讲实录!谷得技术总监陈镇洪教你打造游戏研发流水线的主要内容,如果未能解决你的问题,请参考以下文章

游戏后台开发九问(腾讯技术分享实录)

演讲实录 | 手把手教你Jenkins开发进阶,加速DevOps落地

2018 Unite大会——《使用UPA工具优化项目》演讲实录

: 塞尔达组在GDC2017演讲的文字翻译:技术的智慧

OpenStack与Tungsten Fabirc如何集成丨TF成立大会演讲实录

TOP100summit:分享实录-QQ空间10亿级直播背后的技术优化