手游开发的工具流时代

文/ wein 2014-11-04 18:14:02

10月31日 - 11月2日,CSDN与创新工场联合主办的2014移动开发者大会(简称MDCC 2014),在北京隆重举行。厦门火盒网络科技联合创始人王楠做了主题为“手游开发的工具流时代”的分享。

王楠:刚才大家听到关于产品或者用户的演讲非常精彩,我现在讲的是工作流程和工具方面的问题,是专门为我们开发者自己服务的。

今天演讲的主题是“手游开发的工具流时代”,现在不谈用户,也不谈产品,我们谈谈开发者他的使用体验和感受,我们帮助开发者解决提高生活质量的问题。

题目里面说到“手游开发的工具流时代”,如果现在是个工具流时代,之前的手游开发经历什么样的时代?

当第一代iPhone出来的时候手游是创意时代,因为那个时候发生了《愤怒的小鸟》、《水果忍者》,这些游戏核心玩法很简单,没有特别复杂的内容和系统,那个时候只要有非常好玩的游戏性,再加上很漂亮的画面,它成功的概率就非常大。这个时代之后,手游的不管是数量也好、技术也好,都发生了很大的变革,我们管这个时代叫“技术和内容的时代”,这个时代的手游已经没有办法只靠核心玩法来留住用户,你需要有大量的内容,你需要有更好的画面,像无尽之刃必须有虚幻引擎的高端技术才能开发出来,这个时代我们认为是技术和内容的时代。

今天我们在之前的两个问题都解决了,大家认为最不缺的就是创意,因为每一个策划脑子里都有无数的想法,区别就是谁能把这些东西先实现出来。另外说技术,在当时那个年代没有很多很丰富的游戏引擎或者开发工具,大家需要写自己的引擎,需要从底层渲染做起,那个时候技术差异体现的结果很大差别,但是今天有Unix、虚幻引擎等这些商业引擎技术非常成熟,而且使用起来成本也不高,所以现在的开发者是能够大体上站在同一个起跑线上去竞争的。

解决了这两个问题的话,今天的手游开发者关注的问题是什么?前面说你创意还不够,你要最快速度把创意实现出来,开发者关心的是怎样更多更快实现迭代的过程,就是怎么样更快把想法实现出来。第二个是我们现在这个市场环境是渠道为王,或者市场有很大的发言权,作为研发团队它需要跟上市场的脚步,要能够非常快的进行一个技术的转型,可能去年你还在做2D游戏,那今年可能就要做3D游戏,去年跟风卡牌,今年可能就要刀塔传奇,大家都想改变这种现状,但是现状是现状,是我们现在遇到的问题。第三个,要更有效率的去优化资源和积累技术,因为只有你每次开发游戏这些资源如果下一款游戏能用到的话,你的开发速度才可以超过别人。

这些需求或者这些问题我们得出一个结论,就是要提高开发效率,要更有效率优化工作流程和更有效率使用工具,我个人把它概括为工具流的时代。


我叫王楠,新浪微博是南塔斯,以前做主机游戏开发出身,后面做过一些网页游戏项目管理包括手游开发,现在我在一家初创公司,叫厦门火盒。


现在我们回头说“工具流”,这个概念是我掰出来的,是工具流程加上工具软件的结合,在软件行业有一个接近的概念,叫“工具链”,把不同的工具有序结合在一起让它实现更大的任务。

首先,我们解释一下这个工作流程,各位如果做研发的话对工作流程这个概念不陌生,它需要短时间内把很多技术特色完全不同的开发者整合在一起,然后还要从无到有实现游戏概念,这个过程非常复杂,如果没有一些规则去规定每个人干什么、要怎么干的话,根本不就不可能把游戏做出来,所以这一点想必大家都很清楚。

但是我遇到很多团队他们的工作流程都非常僵化,我的团队经过两年时间项目换了很多、技术换了很多、开发人员换了很多的情况下工作流程还用同一套,那这肯定不能适应时代变化的需要,所以工作流程的僵化是很重要的问题。另外,当需要提高开发效率、开发速度的时候,很多管理者只会想到让员工加班、招更多人、采用强制外部手段去提高开发效率,而实际上工作流程的优化的这么一个能够从根本上提高工作效率的方法是常常被忽略的。

怎么改善工作流程?首先要理解工作流程的基本作用,第一,工作流程它可以让专门化的人才生产和加工原始资源,第二,工作流程允许成员们有序的加入到生产,并不是一帮小孩玩沙子,大家跑过去各干各的,然后也没有办法统一起来。游戏开发必须分成各个步骤有一定顺序的分批的去生产,才可以把一个游戏生产出来。而且不同人生产出来的不同资源之间要有接口对接,这样才是完整的流程。

我举一个最简单的例子说明这个过程和作用,一张图片的历险记,开发2D时候里面最基本的资源是图片,一般是美术人员把这个东西画出来,画出来以后怎么把它放在游戏里面让它成为可以运动、可以交互的角色?这就需要工作流程,这个过程是非常简单的工作流程。如果我们在cocos2d-x,这一行代码把图片资源变成游戏成员可以使用可以操纵的对象,在unity里面也非常相似,只不过不是用代码写的,因为它提供贴图导入器,只要把图片放上去,它自动帮你生成资源,你只需要做简单的设置,比如大小、图片压缩格式,之后你可以把这个拖到场景任何一个地方,可以用程序脚本调用它。

我们举这个例子的意义,这个例子虽然简单、虽然流程特别短,但它也包括我们前面说的这三点。第一是生产原始资源,美术是用photoshop生产原始资源,有原始资源才可以拿它做活动、做角色,它们之间需要有接口完成这个交接的过程,比如贴图导入器就是这样一个接口,这是最简单的例子。

之后,在2D游戏发展过程中,我们肯定不能满足于一张图片,这个过程就出现了其他的工具,比如我们把多张图片打包成一张大图,在游戏里面只读取一次就可以使用,这就是图集编辑器,静态的图片不够看,那我们就会有这种动画的编辑工具。接下来,动画占用太多存储空间,我们希望把动画拆借成一块块的不同部委,然后用骨骼驱动,这是骨骼动画的编辑工具。还有一些其他的,比如像这个是把场景切成一小块一小块,每一块可以重复利用很多次,这样的一些工具。这个过程我们可以看出两件事,第一是工作流程的需要它催生工具的变革,因为我们要更好的效果,让不同职能的人加入进来,所以我们需要这些工具完成这个功能。另外一方面,技术人员用更优秀的技术开发出更好的工具以后也能够反过来改善工作流程,这是一个双向影响的过程。

我们现在说一下工具对工作流程的补充和改善作用,实际上这个作用中涵盖项目研发各个不同阶段,从设计、研发、调试、部署到测试,任何一个环节我们可以使用很多不同的工具提高效率,或者做一些以前不可能做到的事情。首先,我们说这个内容生产,前面说工作流程要求专门化的人生产不同的原始资源,最早的时候,游戏开发的原始阶段是没有这个分工的,那时候只有一种开发者或者程序员,他自己想一个游戏的概念,他自己去编程实现它,而且自己用算法画出图像来,这时候是没有任何沟通成本的,可能一个人的左脑和右脑沟通一下,这件事情就这么敲定了。但是后来内容越来越丰富、技术履约复杂以后,我们就有专门的人来生产内容。比如说要有策划,3D游戏里面有关卡设计师生产关卡,如果我们没有工具帮助的话,关卡工具师要先写文档,写完文档以后开会把这个内容告诉成员,程序员把所有的内容写在脚本里,这就非常浪费时间。为了解决这个问题,我们有专门的工具,让非技术人员可以独立的生产,比如关卡编辑器是程序员写出来的,可以让美术或者策划去搭建一个世界,包括里面互动部分的这么一种工具。还有任务编辑器,任务编辑器可以让文案加入进来,可以通过这种编辑器独立完成。现在大家做手游最多的是界面。如果说我们有了这些工具,我们就能够用专业化的内容生产代替这部分沟通成本,也就是说我们程序员在项目早期花一定的时间把这些工具开发出来,之后策划的生活就可以自理了,就不需要每一次都找程序,那就能节省大量的沟通成本。

下面是还有其他工具解决沟通效率的问题,比如在版本控制工具成为标准之前,我们对文件的使用权的争夺有很多问题,比如有两个美术他们要修改同一个模型文件,如果两个人一起修改,那最后只能保留一个人的修改,可能另外一个人的时间就浪费掉了。为了解决这个问题,早期有人规定一个人修改的时候另外一个人就不能改,而且要口头通知对方说“我在改这个文件,你不要动了。”这个过程是非常不可靠的,有可能我忘记了,会造成效率的浪费。有了版本控制工具以后,大家可以通过一个工具规定一个文件的使用权。

然后是任务管理方面,可能早期我们用口头传达分配任务,包括口头进行任务汇报,但是后面有人发现这样太浪费时间,可能大家会用一些有任务版一样的工具,比如Trello或者JIRA,这个应用对于管理者来说可以给每一个人分配任务、计划时间,如果作为开发者就只需要看一下每天需要做什么事情,然后把任务在这个软件里汇报上去就可以了。

还有一种是基于通知的讨论工具,这种工具是解决开会太多的事情,因为很多游戏概念是以前没有的,如果把这个游戏概念讲清楚可能要开会给大家描述,实际上开会又非常的浪费时间,因为有时候会议组织者一次叫很多人开会,但是不同事情是说给不同人听的,那剩下的人要陪着他一起浪费这个时间。通知讨论工具有什么特色?它像一个论坛一样,每次发帖可以手动指定说这个帖子要发给哪些人,这些人接到邮件以后必须过来讨论,如果没接到邮件的人就可以专心工作,不需要浪费时间。

工具在这里面起到什么样的作用?把杂乱的沟通信号统一成为一个非常容易接收的非常精简的信息,这个过程中就可以节省每个人大量的时间。

这边说一下接口的问题,我们前面说有了不同的资源解决沟通效率的问题,下面是有不同的资源,我要怎么把它处理成另外一个跟你职业技能完全不同的人能够理解的格式,比如动画编辑器或者动画导入工具,拿骨骼动画来说,如果骨骼动画上传是flash格式,我程序是没有办法用的,我要把它分成两部分,一部分是带图片的原始资源,另外一部分是可序列化的文本文件,这个文本文件里面包含每一个资源的引用,包括它们之后怎样去运动,有了这个文本文件以后程序才可以在控制它。同样的内容还有图集编辑器,这个有两部分,一部分是把多张图片合在一起,另外还有文本文件描述每个图片的大小和位置。

然后是策划用到得比较多的,数值策划必须要用到的工具是EXCEL,我们的程序是没办法读它的,我们要让这个转化成游戏程序可以理解的工具,首先要转化成这样的格式,然后我们需要一个小工具,就是由策划决定这个表里面每一个表头的数据类型是什么,它是一个名字或者是什么,这些告诉我们导入工具以后,导入工具可以把这个数据读进来,放在游戏里面成为开发者定义好的类里面的数据。这些工具解决了开发者之间的数据传递统一格式标准化的问题。这个工具的作用就是自动化所有需要重复的流程,比如photoshop有一个自动化的东西叫开始,如果你每次点一下就能把这个过程完成,那就可以节省大量的时间。

接下来是版本打包,现在的游戏程序跟以前不一样,以前只要把游戏性做出来然后定个价格就可以卖了,现在不行,现在要有各种各样的SDK加进去,比如渠道计费、手机原生功能、统计、广告、社交,所有这些都需要在游戏构建版本的时候一个个加进去,包括它们的参数设计非常麻烦,做一次都会嫌麻烦。如果每一个版本发的时候都把这些东西手动加进去的话,那就会浪费非常多的时间。

我举一个例子,就是怎么用unity自动打包IOS版本,首先是告诉unity构建版本时候的参数,比如我用哪些场景、要发布到什么平台,这个过程之后我可以有一个unity打包构建出来的项目,接下来可以选用一些市面上已经有的,我们用的是这样一个开源的库,用它可以非常容易的操作这个项目,给这个项目条件SDK文件包括配置它们的参数,最后再用一个自带的命令行工具,完成这个应用程序签名包括打包成IPA的操作。所有这些脚本都可以通过去驱动,这就完成了。这个技术非常简单,网上一搜就有,我想举这个例子是想说我们在这个例子里面用了三种不同的编程语言、不同的平台,实际上你遇到的每一个问题,如果你把眼光放远一点,在其他平台或者不常使用的编程语言里面别人早就有这个解决方案,你所要做的是把你的问题拆成一块块的,分别用不同的方案去完成,就可以达到自动化的效果。

刚才这部分相信在座很多团队都在用,那么自动化打包下一步是什么?就是自动化测试和持续集成。这个概念在WEB应用开发里面可能比较流行,这些偏重前端的一些自动执行的工具,包括持续集成的这么一些服务,但是游戏引擎太过庞大等这些问题我们刚开始在研究,希望以后有机会跟大家再交流。


刚才我们回顾手游发展这么多年和游戏行业发展这么多年有哪些工具已经改善了我们的生活,那么下面展望一下现在这个时代或者未来有哪些工具,这些工具能做到什么样的效果。

首先,技术门槛降低了,大家都在用商业引擎了,我们关注的重点已经从实现某个功能转化到了怎么样能够实现得更好更快或者更容易的实现,从功能性变成了易用性和体验,简单的说就是简化。

我这边打一个比方,我把工作流程比作一个游戏的界面,因为它们都是需要人们去学习、也使用的东西。先看一下这两年最火的一个,算是战略游戏,我把它定义为战略游戏,你可以有不同的看法。去年的战略游戏它的界面是这个样子,我们再看一下5年前的战略游戏,它的界面是这个因为的,区别非常大。因为现在的市场更加注重易用性,我们如果过几年看今天的研发工具可能也有同样的感觉,就是我们现在的研发工具非常的复杂。这个复杂跟什么相比?跟PS或者AE这样的工具相比,这种工具只生产一种资源,所以任何会画画的人拿到这个工具可以马上上手。下一档工具是3DSMax、Maya,再下一个档次的工具是Unreal\unity,让一个没有学过美术的人上来根本都不知道从哪开始。

工具软件如果包含更多工作流程环节,它的复杂度会上升很快,怎么解决这个问题?前几年photoshop做了改变,右上角加了“工作区”的选择,把你经常使用的功能重点突出出来,不使用的功能隐藏起来,画画的人可能跟摄影师的界面就会完全不一样。如果我们在游戏开发工具也用这种思想去做,我们会为不同职能的开发者定制不同的入口。如果我们把这些东西提供给不同的人,每一个人学习的成本都会下降很多。

以后我们还可以展开更多提高团队沟通能力和创造能力的工具,比如新手包这样一个概念,新手包是什么东西?我们创作时候最艰难的过程是哪个过程?你面对一张白纸或者白画布的时候特别难,因为首先你要知道自己想画点什么,如果刚刚打开游戏引擎什么都没有的时候非常令人沮丧,里面一片虚空,这时候如果你想做点原型,把各种东西拖进去,写基础的脚本,让它跑起来。我们希望以后能够做到通过新手包的形式,可能你就选一个游戏类型,它就帮你生成一个已经可以运行的游戏版本,它里面的功能非常简单,而且使用的是一些资源,这样的话有什么好处?原型生产的开始阶段,每个人就可以拿现有的资源去做他们应该做的事情,而不用等别人先去生产,因为你现在生产的资源早晚也会被替换掉的,这样所有资源可以在开发过程中慢慢去替换。

下面一个概念更加超前一点,就是智能编辑器,如果我们把每日例会需要沟通的任务分配、遇到问题全部集成到智能编辑器,开发者又可以少用一些工具,他可以在引擎里面完成任务,还可以得到金币奖励,拿金币奖励再去换奖金等。而且可以用敏捷的团队,用敏捷的团队的任务计时非常麻烦,要及时汇报给管理人员。如果引擎里面我们集成任务计时包括内容提交测试等这些功能,这些问题就非常容易解决。

再有一个概念是在线协作编辑,前面说到不同开发者对同一个文件的争夺,拿场景编辑来说,场景编辑特别头疼,因为一个人改这个场景的时候另外的人就没办法动它。实际上90%以上的情况不同的人是改的不同部分,他们之间不应该存在冲突,但是因为这个文件是二进制的,没有办法,只能等到一个人改完再改。有人想到把这个场景变成文本以后行不行,不同的人修改不同的部分,可以把修改做个合并,这部分已经有了,引擎里面都有人做这样的插件。如果我们再进一步,把引擎变成服务器端加上客户端这么一个架构,根本不需要有提交和合并的过程,客户端修改的时候服务器已经告诉你另外一个人在修改另外一个东西,而且你还能够看得到。GoogleDoc不知道多少人用过,不同人加到同一个文档编辑的时候,可以看到什么人编辑什么样的部位,而且头像会显示出来,我们以后的编辑器要有这样的功能,可能还可以和其他人有一些非常有意思的协作,比如用真人代替AI快速测试一些功能,非常有意思。

我们有这么多工具开发的可能性,包括这么多可以改善我们生活的需求,我们怎样更快速的开发工具?我们现在的创意团的在研究这部分内容,瓶颈在于跨平台交互界面的研发,单看一个平台都有非常成熟的工具或者框架,但是要想跨平台去使用的话难度就非常高。我们看到这几年网页和WEB应用它们的开发工具和技术,增长速度远远超过游戏行业内使用交互技术的发展速度,我们就想到用WEB技术来实现这么样一个开发。我们现在用的研发框架是使用HTML+CSS做工具界面的排版,而且我们使用了WEB组件这个技术,可以把表现和功能全部打包到HTML元素里面去,相当于你在游戏界面里面放置不同的控件,然后再用一些比较前沿的技术把它打包成一个跨平台的桌面应用。

我今天的演讲内容就到这边,我们现在是专注于游戏开发工具的革新,欢迎大家加入,谢谢大家。


Alex Matveev
2022-06-06 16:27:13
不合规
审核中
@苏某某: 她在音乐方面的喜好,以及对天文的兴趣,也源于这部动画的影响。一直很喜欢爵士乐的她突然开始想
乐方面的喜好,以及对天文的兴趣,也源于这部动画的影响。一直很喜欢爵士乐的她突然开始想,没有系统了解过此类音乐的她怎么会喜欢上 呢?后来听完《美少女战士》原声带后才发现,“原来我在那么小的时候
评论全部加载完了~