和其他所有独立游戏开发手记一样,所有的故事都开始于一句:“如果我们……”
编者按:这是一篇非常非常长的开发手记,详细记录了《浮天小子》(Heroki)的开发经验和教训,原文发布于Gamasutra,由触乐编译。这款游戏曾经获得苹果的全球首页大图推荐,你可以点击这里来获得详细的游戏评测和视频。开发者对评测中提出的诸如“关卡过长”的一些问题,给予了正面回应。同时把自己在开发过程中走过的弯路一一细数,想必能给各位游戏开发者一些借鉴。这里是他们的官方博客,里面有更加详尽的资料。
和其他所有独立游戏开发手记一样,所有的故事都开始于一句:“如果我们……”
当iPhone3GS推出的时候,Michael Balm(音乐家,特效制作)是我们之中第一个买苹果手机的,并且把它看做一个严肃的游戏设备。他和Bobby Bouman(3D效果制作)详细交换了相关的意见。不过在当时,Bobby Bouman在Triumph Studios制作某个3A的主机游戏,他觉得手机游戏实在太过简单,而且也不看好移动设备作为游戏平台的前景。
随着时间流逝,iPhone逐渐证明了自己在游戏方面的潜力。我们逐渐产生了“在这个平台上搞点什么”的想法。一天夜里,当我们一起滑冰的时候,Bobby和Jeffrey Kamermans(程序员)聊起来移动游戏开发的事情,并且最终同意加入我们。而在鹿特丹的一次旅行中,我们邀请到另外一个朋友, Jimmy de Meza,来担任游戏的概念设计。
如果我们把自己的专长都集中在一起,会做出怎样的游戏?由于我们都有自己的工作,所以游戏的开发只能在业余时间完成。这就决定了这款游戏必须具备两个特点:要足够小(没错,小),要足够有趣。
在一开始的时候,我们有无穷无尽的点子和想法。为了检验这些点子的可行性,我们开始为这些点子匹配合适的游戏机制。我们所想到的第一个游戏十分简单:玩家在游戏中需要操作一辆载满了乘客的公交车,在一条颠簸的路上行驶,汽车每颠簸一下就会有几名乘客掉出来,最后在终点以所剩的乘客多少来定胜负——对于我们来说,这个游戏足够简单,也足够有效地磨合了团队。
团队的所有成员都十分喜欢“有趣”甚至是有点怪异的游戏机制,我们决定通过自己的作品,探索移动平台上可能的游戏机制。在制作游戏的过程中,负责程序的Jeffrey正在做其他完全不相干的小项目,但是他将自己的灵光一闪告诉了我们。多亏了他的点子,我们第一次发现了最适合触屏设备的操作方式:在触屏设备上,我们可以把一个物体进行360度旋转,推来推去。就好像一阵风把屏幕里的世界吹过一样,你的指尖就是那阵风!这是第一个得到我们所有人认可的游戏原型,太完美了!
很快,我们就发现这个新的思路背后有无限的潜力。所以我们就中止了“公交车”项目,全力发掘这个新点子的潜力。根据这个机制,我们最初的游戏原型是一个迷宫游戏,玩家需要在不惊动任何守卫的情况下走到终点。开始,我们觉得一年怎么也能做完了。没想到,这个小点子做成了一个大项目,而且居然做了有5年。
在一开始,我们就知道自己必须围绕新的操作方式来做文章。核心玩法一旦确定,我们自然而然地产生了很多新的想法。而我们最终的目标,就是做一个向诸多经典游戏致敬的冒险游戏。
严格来说,《浮天小子》并不能算作平台过关游戏,因为它会飞!之所以给它增加上飞行功能,为了体现游戏独特的操作。游戏在保留了原有的平台游戏的要素和挑战性,同时因为有了新的操作方式,又大大提高了角色的自由度。
Heroki可以去到地图上任何一个地方探索——我们在设计探索地图的时候也试图将两种玩法结合起来:玩家既可以干掉那些敌人;也可以躲开那些敌人不做理会,不过这样做的话,玩家会丧失掉一部分挑战性和乐趣。我们在设计关卡的时候,时刻提醒自己:我们的关卡是用来邀请玩家探索,引导玩家战斗,而不是难为玩家的。但,具体要怎么战斗呢?
传统的平台游戏是通过跳跃或者是把敌人踩扁来进行攻击的。但这种方式并不适合我们的游戏,因为我们的Heroki会飞,让它直接跳起来会显得有点蠢,所以我们需要一个更符合游戏风格的角色跳跃方式。而如果允许角色随时随地都能攻击,我们又认为太过简单,所以,我们想通过一个类似“扳机”机制来对攻击的时机做出调整。这个“扳机”应该在点击之间就可以触发,当玩家点击目标的时候,Heroki就会自动朝向那个方向;当玩家按住目标的时候,会触发新的机制:Heroki会拿起箱子,按住目标的时候调整方向,当玩家松手的时候它会把箱子丢出去,这是他基本的攻击手段。这种攻击的流程是受到了弹弓的启发:按住、拉回来、射击。
到了这个时候,我们已经有了所有的基础游戏机制。但是当我们自己试玩游戏的时候,总是觉得缺点什么:游戏的节奏在有些地方总是显得太慢了。所以,我们加入了一个新的机制:自由落体,Heroki可以进行自由自在下潜,这让整个游戏的节奏都变得更快。玩家通过快速单击就可以实现这个操作(根据选择模式不同略有区别)。“自由落体”是《超级马里奥》和《索尼克冲刺》里的跳跃,只不过是反方向的——它是我们游戏机制之拼图上缺失的一块,有了它让整个游戏的节奏和深度都更加完整。
随后,我们又加入了“冲刺”、“背刺”和大环境中风随后,我们又加入了“冲刺”、“背刺”和大环境中风力的影响等附加能力,试图让游戏变化更多。因为有了风的影响,我们必须设计一套新的触发机制,这样才不会和原有的机制有所冲突,比如说从屏幕边缘画出风的轨迹。在这之前,我们并没有见过类似的操作方式,但是这个方式出奇地好用。
在触屏设备上,不通过任何虚拟按键设计如此之多的手势,并且对每一个都明确区分、防止误触是一件很有挑战性的事情,尤其是当我们决定只用一根手指就完成全部操作的时候。同时,所有操作必须足够简单,因为只有为数不多的几个手势是可以被用到触屏设备控制上的。我们客服了这些挑战,最终呈现出来的成品看起来十分简明易懂。
我们希望《浮空小子》的美术风格能被足够多的人所接受,这样玩家才会耐心去探索游戏的每一个角落。并且希望能让玩家感觉到自己置身于一个美丽的幻想世界中。
在确定现在的风格之前,我们也做了一些尝试,但是从头到尾的大方向没有变。我们的游戏应该有一副老少咸宜,造型有趣,颜色鲜明的好皮相,既可以被广为接受,而且还让人印象深刻。
这是我们最初的概念图:
我们从小时候的那些游戏中得到了丰富的营养,比如《超级马里奥》《大金刚》《超级索尼克》《星之卡比》,每一个游戏都有自己独特的风格。就Heroki而言,我们期待这个角色能有很高的辨识度。比如他用来抓取东西的长胳膊,可以读取表情的大脑袋,小小的身体和短腿,都说明这个角色是偏重飞行功能的。
之所以选择3D游戏是为了表现空间感。当我们开始制作《浮空小子》的时候,iPhone 3gs的内存并不足以实现我们想要的效果。如果制作2D游戏,很容易出现内存崩溃的情况,用3D的就可以解决这个问题。我们决定使用通用材质,这样可以制作许多不同的场景和形状。当2D图像转化成3D图像的时候,我们尽可能保留了2D概念图的风格,很高兴我们做到了!
随着开发进程的推进,我们逐渐增加了越来越多的视觉特效:实时阴影、 边缘光材质球、 明暗渐变、溶解特效、镜头耀斑等等。很快我们发现,这些效果并不适合2D表现,我们需要一个别的东西来营造氛围。所以我们将自己的注意力转到环境光遮蔽(ambient occlusion)上,这让我们可以在保留2D效果的基础上增加景深。唯一的问题在于我们的引擎不支持环境光遮蔽的效果,所以最后决定用顶点着色的方法来手工来增加环境光遮蔽的效果。手工加特效的好处在于,可以把精心挑选的颜色和材质纹理进行最合适的匹配——我们甚至还配出了全局照明的效果!实际上,使用单调的黑色只会让画面看起来十分“脏”,所以对于颜色进行细微调整十分重要。但,手工添加环境光效果也有一些弊端:这个工作十分单调,而且耗时十分长。
《浮空小子》的音乐和音效为整个游戏奠定了基调,欢快的节奏和Heroki飞行时的胳膊一起摇摆,希望各位玩家能够听到就开心起来。
虽然我们的音乐几易其稿,但其中“欢乐摇摆”的调调从未改变。我们在游戏中用了大量动态循环的音乐,比方说,当Heroki在村庄的时候,玩家所听到的是村庄主题曲和主旋律的混音。我们在大多数场景都用了这种方法增加背景音乐的丰富程度。在游戏地图选择界面时,当玩家切换不同的地图时,背景音乐会强调不同的乐器;而当玩家在水下的时候,背景音乐也会为之一变。这些都是十分微小的改变,但可以让玩家的视听体验更好。在《浮空小子》中,总共有40首不同的音乐(包括剧情过场)。
游戏的所有音效都是配合当时音乐的基调(global pitch)。从总体来说,游戏音效应该比音乐的音调要低一点,展现一种不同的调性。使用基调进行音效制作,可以很好地解决这个问题,达到最好的环境音效。我们最后在游戏中使用了900多个音效来营造氛围。
在2010年的时候,像是Unity或者是虚幻这样的引擎都十分贵。我们没钱买这些引擎的商业许可,所以就自己做了一个。这让我们对游戏引擎有了百分之百的掌控权,同时,开发引擎的过程也为我们提供了不少经验。
使用自研引擎其实有非常大的优势。我们可以轻而易举地在稳定性、帧率,以及加载速度上达到最好的效果。所有的部分,都能在不增加垃圾进程的情况下得到最恰当的优化。因为我们对游戏引擎有着完全的掌控,所以成功实现了在苹果全系列设备上都能以60fps的速度,向玩家展示华丽的特效和阴影效果。即使在老机器上运行游戏,我们也不需要牺牲视觉效果作为代价。这证明,我们当初选择自研引擎是正确的。
不过,自研引擎也有一些缺点,构建一个可用的引擎十分花时间。DIY引擎一方面在拖慢你的工作进度,另一方面在磨损你的耐心。控制好工作进度是非常非常重要的一件事,而这正是接下来要谈到的内容。
总体来说,我们的Picon引擎最后成为了非常有用的工具,我们为它而骄傲。
对于手机游戏来说,5年的开发时间实在太长,甚至是闻所未闻。主要是由于是利用业余时间开发,所以我们敢说自己有着全世界最宽松的游戏开发环境,想怎么做就怎么做。对于我们来说,没有死线的压力;SEGA在时间方面对我们也没有步步紧逼,给了我们相当大的自由度。我们可以拍着胸脯保证:我们自己也很爱玩《浮天小子》,并且我们把所能想到的点子都放在了游戏中。
我们的成员都有稳定的收入来源,并且没有直接在做游戏上花钱(除了时间、必要的软件许可和个人贷款什么的)。尽管会有一些麻烦,但是这种开发方式让我们的成员都感觉很舒服。
因为我们主要是以进度为中心,并不能投入足够的时间去熟悉合适的工具。制作关卡时,选择合适的工具十分重要。在开发的最后几年,我们没能在在关卡编辑器上运行过游戏,也不能在Mac的模拟器上运行游戏——因为游戏太大了!
为了测试游戏,我们不得不:
1、提交文件到服务器,然后等着,直到压出来一个合适的工程文件;
2、把工程传到Test Flight或者iTunes Connect;
3、从Test Flight下载游戏到手机或者平板上,这时候才能看到测试版游戏有什么问题。
我们必须在“做(找)一个好工具”还是“做一个好游戏”做出选择,很明显,我们选择了后者。但我们不知道这个选择是否正确:好工具无疑可以提升生产效率,不合适的工具会浪费时间——我们在反复的上传和等待中深刻地认识到了这一点。
除了引擎方面的问题,异地工作并不像想象中那么高效,这也拖慢了我们的游戏开发进度(平时都是各自在家开发游戏的)。我们大多数沟通都是通过Skype进行,每次必须十分清楚地询问对方才能避免误解。即使这样,依然时不时会出现成员之间对于一个玩法解读不同的情况。万幸的是,最终我们适应了这种远程工作关系。
在项目快结束的时候,我们终于可以在同一地点工作了,这段时间我们的工作效率十分高。一同工作让我们的创作和测试流程以及开发进度更加快。
毋庸置疑的是,我们自己工作进度控制十分差。不过,这种宽松的流程正是激发我们创造力的因素之一。不管宽松或者是严苛的工作流程,大家能一起工作,这个事情本身就是一份有趣又有益的经验。
好的计划是成功的一半,它应该能对项目当前的进展有一个大概的描述——我们用一种非常惨痛的方式才认识到这一点。
关注了我们社交媒体的人,都会注意到:在游戏完成之前,我们说了很多很多遍“要做完了!”。
我们发现一个制定按部就班的计划会花费很多时间,但我们都没那样的闲心。结果,我们做了一系列小计划保证项目顺利推进,但这些小计划并不能做到总揽全局,也不能让我们看到还剩下多少工作没做。如果有一个切实可行的计划,会让我们对开发进程有更明确的认识。
我们向大家保证,已经好好地吸收了这些经验教训,在下一个项目中绝不再犯。
在业余时间做这种规模的游戏,需要我们每个人都做出一些牺牲。对于项目的热情让我们放弃了一些陪伴家人、朋友和伴侣的机会。这些牺牲对我们的个人生活造成了一些影响,令游戏开发的最后阶段举步维艰。
虽然我们自己承担了大部分游戏测试的工作,并且还找了专业的测试人员进行协助,SEGA方面也给了一些行之有效的建议,但还是发现这些测试结果远远不够。
在游戏推出后,我们发现一系列的Bug,这些Bug无一例外的都可以在测试中发现。比如在iPad Mini上游戏会闪退,这主要是由于设置了错误的材质大小,而导致内存崩溃。这个问题很容易解决,但因为我们没有在iPad Mini上测试游戏,所以没有发现。由于类似这样的Bug,导致一部分玩家在App Store上打出低分。
在游戏推出后的几天再更新一个Bug修复版已经成为iOS游戏的常态。4天后,在我们修复这个问题以后,我们收到了很多积极的回应,App Store的评分也有显著的提升。
在我们自己玩游戏的时候,可以在5到10分钟就完成一个关卡。我们收集了几位玩家总的通关时间,发现平均每位玩家完成一关的时间在20到30分钟。虽然这不是什么致命伤,但我们发现,总有玩家在意料之外的地方卡住。
既然有喜欢某款游戏的玩家,就一定会有不喜欢某款游戏的玩家。我们很难说清楚到底什么游戏更加适合移动游戏市场。但现在我们知道,在iOS平台上玩家比较喜欢短小精悍的游戏流程和简单易懂的游戏设计。这个结论看起来如此简单易懂,但是和我们的初衷相反——我们的目标是制作在视听效果和游戏性上都能达到主机品质的游戏。因为市场上缺乏这样的作品,所以我们想要把这样的体验在带到移动游戏市场——尽管,这可能是一个比较小众的需求。
开发《浮空小子》是一场非比寻常的奇妙旅程。我们在其中学到了很多游戏开发的知识,和一个大发行商合作了5年——这只是开始。《浮空小子》是我们的第一个作品。随着游戏发行,我们的团队也要“从头开始”。我们一路上克服了各种困难,互相激励。《浮空小子》已经证明了我们能作为一个团队工作,一起做出好玩的游戏。
开发商:Picomy
发行商:SEGA
发行日期:2015年7月2日
平台:iOS
开发人员名单:Michael, Bobby,Jeffrey,Jimmy
开发时长:58个月
开发工具: Picon引擎,Maya,Photoshop,FL Studio等