研发过程90%靠策划自主完成,这款接地气的国产引擎怎么创造20亿流水的?

发表于2018-06-11
评论0 2.2k浏览

在国内,想要开发一款好的游戏,对于从业者而言并不是件容易的事情。一个需求对接不到位,就会导致程序不爽、美术苦逼、策划夹在中间无比头疼的情况,有时甚至会为此让整个团队开上一整天的会。


一个好的开发环境,如果能大幅度减少这种情况的发生,游戏开发或许会更加顺利。葡萄君去年曾经报道过妙趣横生CEO左拉的一篇分享内容,为了让自己的团队更顺利的开发,他们自研了Saturn引擎,加入了很多接地气的功能。


对内他们梳理了一套清晰的项目管理流程,捋顺了不同工种之间的对接标准,让策划、美术、程序的分工更明确;对外他们开发了很多便于运营使用的辅助工具,来提升运营问题的处理效率。这套工作流程也引起了很多从业者的共鸣。



受惠于这套引擎与项目管理流程,妙趣在去年就已经实现了全流水线20亿的收入。其中和蓝港互动合作的《黎明之光》全球总流水已经达到10亿人民币,《十万个冷笑话》全球总流水也达到了1亿美金(约6亿4000万人民币)



在当时,左拉希望能做到最大限度优化协作流程,尽可能地减少不同部门间调配的环节,让策划能专注到开发上,并且承担起最多的开发内容。今年,妙趣研发的Saturn引擎迭代到了2.0版本,算上一代的开发耗时,左拉和他的团队在这款引擎上投入了整整10年的时间。


左拉在采访中告诉葡萄君,新版本的引擎对他们的团队来说意义重大,除了美术品质、光影渲染、图形计算能力的提升,更重要的是在管理流程方面的效率提升,以及底层计算能力提升等方面。妙趣从今年开始的产品,也将全线采用新引擎来制作。此外,左拉与合作多年的蓝港互动,也已就Saturn 2.0引擎达成全面战略合作,并将首次基于新引擎联合研发《伊苏8》手游。


关于引擎本身,首先,2.0引擎已经基本上可以做到80~90%的开发工作,全由策划来完成,妙趣的程序团队已经开始平台化,成为项目之间的共有资源,通过矩阵管理的方式介入项目。


其次,项目管理流程进一步功能化,除了能够更清晰地横向推进项目进度,还可以实现个人项目分支、打包、测试的竖向管理。同时还支持了多个工作人员的实时协作,两个工作人员在同一个游戏场景中的建模、摆放物件等操作可以实时显示到对方的游戏场景中,并可以通过语音沟通配合。


第三,妙趣团队还花3个月的时间研究出一套新的底层计算框架,来解决实现服务器之间、线程之间、运算核心之间,使用效率难以平衡的问题,避免出现负载失衡的情况。基于这个计算框架,他们实现了更高效处理全球同服、无缝大地图数据匹配的功能。


最后,二代引擎还将此前的数据分析模式更加细化,将用户数据打散为更细的标签,来支持大数据索引和跨时间段数据筛选、分析的功能。



在左拉的观念里,他之所以如此渴望优化工作流程和开发效率,是因为希望策划能把时间集中在游戏设计等更有价值的地方,而不是在应对工作的琐事上耽搁时间。他甚至还考虑推出个人版引擎,开放给独立开发者,像RPG Maker那样帮助好的创意简单且快速落地。


而从葡萄君的角度来看,Saturn 2.0或许是最符合国内特殊开发环境的引擎。尽管在美术表现上它还有可提升的空间,正如左拉坦言,它相比国外主流引擎会有些许的差距,但在外围系统以及项目管理流程等方面,对于技术实力不算拔尖的团队来说,Saturn 2.0实用价值要高得多。具体来看葡萄君近期对左拉的采访,以下为采访内容整理。


做自研引擎是为了什么?


在成立妙趣横生的时候,我们的团队已经做了7、8年游戏,对引擎日常使用所面临的问题非常了解,如果要持续开发出好的产品,必须解决工程化的问题,解决因沟通成本、流程繁杂带来的低效问题。


游戏虽然是创意产品,但其中至少30%~40%的内容是可以工程化处理的,就像电影行业那样。当时我们认为,要支撑上层策划、美术的创意,没有好的底层工程化工具,是不可能实现大规模生产的。


于是我们的切入点就是去做底层的技术支持,做更接地气且符合我们实际使用需求的引擎。


在开发过程中,我们会遇到大量棘手的问题,比如程序有版本管理系统,但是美术没有。那外包的美术资源怎么管理?100人的美术团队产生出来的PSD、3DMAX文件和已经导入引擎的文件,少则1G、2G,多则十几G,该怎么管理?此外,还有集中打包版本的优化,硬盘的资源恢复,都是问题。


于是我们在一代引擎里就开发了美术版本管理功能,来解决资源压缩、版本更迭、储存等问题。


又比如缺乏有效的管理手段时怎么办?多个项目并行的时候怎么处理?国外引擎的单机属性更强,协同性相对弱一些,因为国外研发团队大多有自己的内部管理手段,但国内很需要这种系统。即便现在很多主流引擎也在集成外围功能,但主要还是依赖与第三方工具的商业合作,而非引擎内置。那么如果我们的引擎内,策划、美术可以协同,来推动项目进程,就能更高效。


所以我们把这一部分也工程化了,例如测试打包等已经全部实现自动化。后端程序不仅能看到团队和资源的绑定情况,也能看到统一的版本情况,SDK接入也支持自动化处理。别人用一周的时间打包,我们可能一天不到就搞定了。


值得一提的还有服务器更新。以往人工管理的阶段,500台服务器需要5、6个人更新4到6个小时,而且在上传、解压、更新的过程中,手动操作很容易出错。现在我们实现自动化以后,系统自动分发、停服、更新、启动,仅需一个人花费半小时就可以处理完成。


以上种种都是为了把团队的时间腾出来给创作,只有简化了底层的流程,才能让人聚焦在业务层面。比如一小时里用10分钟去实践想法、45分钟可以拿来想创意,而不是一个BUG找一天,最后发现代码里多了一个空格。


所以按我们的角度来定义,Saturn是提供整套开发流程的工具集,是一个工作引擎。


整整耗费10年,做引擎到底有多难?


一代Saturn引擎我们研发了接近8年,二代又做了整整2年,期间我们经历了非常多的困难。


起初,因为我们一代做了8年,积累了150~160万行代码,中间有大概60~70%可以复用,理论上大多数只需要梳理一遍填入新的引擎框架中就好了,但实际上并没有想象的那么轻松。光是引擎的设计文档,我们就花了1年的时间,大量的细节堆积起来之后,工作量非常可怕。


第一个难点在于技术上的突破。我们重新设计了底层的计算框架,光这一部分就折腾了近三个月,期间我们选用了很多计算模型,不仅要考虑底层的运算处理,还需要考虑上层开发者的实际使用。如果一旦底层设计不到位,把不容易理解的概念暴露给了上层,那么对开发者来说便会造成困扰。


比如网络游戏中有很多高频率的运算量,但是每个包体的运算量并不大,有时只占用十几毫秒的时间。而这类运算在底层分发速度虽然很快,但因为计算量很小,其实是浪费了分发的效率,所以我们在底层逻辑上做了更为整合、高效的分发方式来提升总体效率。同类的数据储存结构、版本系统也都做了相应的优化。


第二个难点在于匹配开发者使用习惯。一代引擎注重界面简洁,而二代我们考虑让开发者使用起来更为顺手。比如美术会用到大量的软件,如PS、贴图制作、建模制作、电影剪辑等等,UI、UE的前端设计需要和这些软件匹配,由于需要反复测试,后端的制作也会有难度。


一代Saturn引擎的逻辑编辑界面


第三个难点在于行业向心力。外部商业环境、内部团队目标都要匹配以后,才能把事情推动下去。比如我要求公司,今年所有的项目都要用新版本的引擎来制作,包括我们新的沙盒游戏、以及和蓝港合作的《伊苏8》手游等。


如果没有一个商业化的游戏做支撑,我们就很难拿到一线最实际的需求和反馈,引擎开发也就脱离实际意义了。这方面我非常敬佩Epic Games,他们除了引擎,每年也在做游戏。


所以尽管开发引擎是更技术、更纯粹的事情,但实际上它不光是影响技术层面的,对架构层面、产品层面、团队层面的冲击也很大。现在我们还有差不多两个月的工期,完善一些细节就可以实际投入运用了。我是工程师出身,对我们公司来说,这十年研发引擎下来,技术方面的积累会更多一些,这是优势,也有可能成为核心竞争力。


从技术角度怎么优化开发效率?


从我的角度来看,Saturn 2.0引擎变化的细节实在是太多了,很难一一举例。除了图形计算、物理引擎、物理光照、动态采集系统、服务器集成框架等基础层面之外,最大的革新有四个方面。


第一,项目管理的角度来说,2.0的整个流程、版本管理、业务分配、协调性都会更好。


二代的工作流会比一代更加先进。一代中我们已经做到任务分配的体系,有完整的分发、完成、提交的流程,二代在这个基础上,可以让每个任务下直接附加相应的资源,然后在这些完成的节点上,都可以根据需求级别提升版本、出版本包来进行自动调试。


这相当于在每个人的节点处,都设置了向下独立的分支,来实现横向总流程的推动和竖向独立分支的管理功能。比如策划调整了某个核心数值,直接提交后可能会影响到社交关系、货币系统等其他系统的平衡性,而有了单独自己的工作分支以后,就能够自行测试数值,调好之后再提交。


另外,我们还可以导出独立的游戏模板,比如RPG、SLG的模板,用户将资源替换成自己的,就可以快速生成游戏。这个功能主要是针对于未来考虑发布的个人版引擎,方便一些游戏爱好者快速制作游戏。


在协同性方面,我们还有一个图层的概念。比如将10~20个开发人员分为一层,在同一个游戏场景中进行合作。可以想象,一名美术在处理地表层的纹理、地形,而另一名美术就在地表上放置物件,不管是这边刷上了地表的植被、还是那边放置一颗树木,这些操作都能实时显示在对方的操作界面中。而且我们可以通过内部语音、截图工具来沟通这些细节的制作思路。


一代Saturn引擎场景搭建界面


第二,技术上变化比较大的,是我们的计算框架,影响到全球同服、服务器协同运算、开放世界大地图实现等功能。


以往的计算框架下,服务器功能还是定制的,服务器之间的功能是绑定的,不够灵活。未来很多游戏,比如无缝大世界的实现,除了客户端机能、3D图形加载技术,最大的难点还在于服务器的融合。看似无缝的大世界,其实是由多个服务器协同运算、数据同步来实现的,如果底层运算柔性不够,就很难实现策划的一些个性化需求。


所以这次我们在自动化的计算框架中引入套间的概念,只要在设置中拖动功能类到服务器的套间内,服务器就能随时切换功能,拖入聊天类,就是聊天服,拖入物理计算类,就是物理计算服。


对于无缝大世界的处理,让两个玩家站在地图实际的接缝处,看不出来异样,就是依靠引擎底层封装好的大套间对应协议和调动机制,可以让系统不关注对面的玩家到底在哪个服务器或是哪个进程,从而调度双方的数据进行匹配。


这种处理的好处是,不论双方的数据、动作过程、动作结果最终在哪里执行,我们都会把它落实到相应的服务器位置上,再读取出来。而开发者不需要考虑底层到底怎么运算的,在制作界面,只需要指定需要多少组服务器,然后把想做的内容拖到引擎界面编辑就可以了。


运用这套技术,还能更合理的利用服务器资源。以往服务器资源分配不均、服务期内核心负载分配不均的问题,都可以基于底层计算框架的改变,来实现动态的负载分配。


一代Saturn引擎脚本编辑器


第三,从运营的角度来看,数据分析系统的变化也很大。


一代的时候我们可以统计游戏中的大量数据,比如玩家在游戏中的产出、消耗、行动,甚至是服务器宕机次数等。研发人员会从这些数据中了解用户的需求,从而找到对游戏和服务的优化方法,这可以帮助策划更精准地找到玩家在游戏中遇到的问题和游戏中的BUG。


但一代所需要的数据储存是关系需求,这样虽然能记下每个人产生的记录,但是这些数据没有办法抽选出来做类比,因为数据的关联属性被定死了。


一代Saturn引擎玩家行为日志


因此在二代引擎中我们将不再使用关系储存而是使用了大数据的概念,采用hadoop的对象存储系统。这样一来,我们就可以调用不同的关键数据,自动导出数据来进行分析。之后,还能再进入关系层数据库,随时查询具体的用户行为关联情况。比如用户任何一步的流失节点,广告带量的效果,都可以挖掘出来。


第四,我们这次在图形图像方面也做了很大的提升,包括支持纯物理方程、光线追踪算法、动态模糊等。现在我们与主流引擎可能会有一些差距,但不会有代差。图形图像的最终表现效果,依然要看团队美术素质、制作能力以及对引擎的理解。这方面,我们也在和国外团队合作,来拓宽自己的思路。


引擎解放了策划与程序,之后呢?


总体来看,我们这套引擎的新功能,能更大程度释放策划的工作时间,然后用引擎的功能来代替程序员、美术的作用。一代中策划可以完成接近40%的游戏开发工作,在2.0引擎中,策划甚至可以承担起80%~90%的开发工作,掌控大部分内容。


因为引擎上层我们采用了ECS实体组件系统,可以依靠拖拽图表来实现大部分的引擎功能,所以现在我们的团队非常精简,单个组策划在8~12人,程序8人左右,总体峰值在20~30人。而我们会把程序和美术分割成公用平台,按照矩阵管理的思路,来调用到不同需求的项目组中。


这样一来,策划便成为我们最核心的人员。我希望策划释放出时间和空间以后,能更专注于锻炼自己的思维,花更多的时间去想创意,放飞自己的设计思路,活用到我们今后所有的产品中去。


比如即将与蓝港首次联合开发的《伊苏8》,就是采用二代引擎来制作的第一批游戏,主要由我们提供技术支持来配合蓝港进行开发,开发团队大概30人左右。这次借助引擎新的性能,我们也希望拿出更好的品质,特别是在打击感、画质、世界观还原等方面。这也是和蓝港第一次联合开发,且在立项之初就考虑全球化发行的IP游戏。王峰也亲自拍板拿下了《伊苏8》全球独家手游改编权。这款游戏预计在2019年Q2推出,除此之外后续我们还陆续会有Saturn2.0研发的游戏上线。



现在除了已经立项的商业化项目,我们也在尝试改变做产品的思路。


立项时,首先团队要对游戏行业有热情,其次制作人不仅要喜欢项目本身,还要拿出报告来说服我和核心管理层。接下来制作人需要找到同样喜欢项目的成员,搭建自己的团队,而且每个人都必须真心愿意为项目付出。因为在未来,只有拥有玩家良好口碑的游戏才会成为盈利的游戏,商人思路做出来的产品,玩家不会再买账。


如果这个局能组起来,我们将会拥有一帮有热情的开发者,那创意离我们就不远了。现在我们团队里就有人想做沙盒游戏,在这个团队里80%的人都喜欢玩沙盒游戏,所以他们就想做一个属于自己的沙盒游戏。团队内驱力十足,开发环境才会健康。


总之在我看来,技术不是为了技术而做的,技术更应该是推动生产力的一方,要能充分地发挥这个行业的创意。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引