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

本文来自网易云社区程序员

 

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

 

谷得游戏技术总监陈镇洪表示,通用化组件能快速提高游戏开发效率性能优化

 

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

 

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

 

陈镇洪阐述道,这个平台部应该具有四大特色。编辑器

 

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

  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的时候,第一次测试的时候审查总体的性能和框架,整个游戏正式上线前还会进行更全面的检测,不一样阶段的检测内容也不同。

 

因此如今在游戏研发如此激烈的状况下,如何像流水线同样快速地开发一款游戏、有保障地开发一款游戏,是提高你公司竞争力以及我的竞争力很是重要的事情。

 

谢谢你们。

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

相关文章
相关标签/搜索