游戏技术革新的思考(一个人也能做开放世界游戏)
对于大多数人来说,开放世界似乎是大团队或者3A工作室才能做的品类,比如《塞尔达传说:荒野之息》、《上古卷轴5天际》、《GTA 5》、《荒野大镖客2》等都是顶级大作。
不过,这不意味着开放世界就是中小团队的禁区,比如海外独立开发者Adam Robinson-Yu就在2019年发布了一款开放世界游戏《A Short Hike》,而且只用了数月的时间研发,在此前的GDC演讲中,他对整个项目做了详细复盘,其中一些做法可能是对同行非常有用的。
以下是GameLook听译的演讲内容:
我是Adam Robinson-Yu,做了一款游戏叫做《A Short Hike》,首先感谢项目研发过程中所有帮过我的人,还有帮忙测试的人,感谢你们的贡献。
它一款远足旅行主题的游戏,你扮演一只访问海岛的鸟,你要在岛上爬山、探索、收集物品、找到其他远足者。
这是岛屿的整个地图,它是开放世界的,但并不是那么大的世界。
这次复盘中,我主要会谈到做游戏的目的,我是怎么开始做研发的、如何在截止日期前完成,还有在研发时学到的关卡设计经验、写作经验以及营销方面的心得等,基本上是整个项目的复盘。
一个原创故事
我想首先有必要说说自己是怎么走到游戏研发这一步的,我觉得做一款游戏最难的部分就是,是否决定要开始研发。
2017年的时候我做了一个令人质疑的决定,那就是放弃软件工程师的工作并搬回到多伦多,我想要全职研发一款简短的独立游戏。在此之前,我做过的所有游戏都是非常小的免费Itch.io游戏,但我觉得这是我自己做一款大游戏的机会。
一年之后,我想做一款野心很大的游戏,它是大型RPG、有很多的角色、地点和战斗机制,然而我对整个目标并不清楚,以至于一年之后我还有很多东西不确定。我发现这款游戏可能需要做很多年,于是觉得很有压力、很沮丧,可能永远都做不完,然而,这个项目却是我志在必得的,因为它是我的第一次尝试。
但在2018年11月的时候,我决定给自己一个短暂的休息,给自己买了份圣诞礼物,然后为一个小游戏做创意原型,用Unity完成研发,然后把自己认为有趣的东西都放进去。
随后,我还在社交媒体公布了自己的创意原型想法。
当时,这对我来说是一个很艰难的选择。由于个人的原因,我非常想做RPG项目,而且投入了一年多的时间,我觉得它给我打开了很多扇门,因此并不确定把它搁置去做一款远足主题小游戏的决定是否正确。
游戏研发是充满很多不确定性的,你很难知道一个项目该不该尝试,如果我只需要把项目做下去就能完成我的RPG大作呢?
但在2018年,我还在玩另外两款比较小的游戏,分别是《The Haunted Island》以及《Minit》,它们让我知道了一款短时间的游戏也可以成功。
所以我决定开始做远足旅行的小游戏,这对我来说是个很好的决定。我觉得做小项目有很多的益处,尤其是当你刚刚开始的时候。如果游戏不成功,你的风险更小;它不一定需要巨大的成功才能让你投入的时间值得,小的目标更容易实现;而且你可以更快地发布游戏,可以帮你学习很多东西,还可能带来一些收入。
确定游戏美术风格
我在《A Short Hike》项目中很早就开始做的一件事,就是确定游戏的美术风格。我是个没有名气的独立开发者,能够依赖的只有Twitter这样的社交媒体来吸引人们对我的游戏产生兴趣,所以我觉得画风很重要,因为你只有很短的时间来获得人们注意力。
对于独立开发者或者很小的团队来说,做出这样的画风很难让人们在游戏里投入时间。所以我考虑了自己在美术方面的局限性,比如我不会做很好看的手绘,建模也没做过多少,只能根据已有的技能试着把游戏做得有趣一些。
我在编程方面的经验更多,所以我把这个小世界渲染成了像素风。我觉得像素风很酷,它可以让我把游戏做的更大一些,可以避免做很多建模的工作,能用更短的时间做更多内容,虽然不够完美,但可以让玩家发挥足够的想象力寻找细节,同时能够知道我想要表达的东西。
为了在Unity里实现这种效果,世界着色器就是这个小小的RenderTexture,然后Unity里的另一个摄像头会看着这个Texture,用Point 滤镜模式把它放大。
我是通过GBCamera插件学到这个技巧的,如果对这个工具有兴趣可以关注一下。
很早的时候,我就在选择色彩,并且用它们来表达我想要的游戏氛围,我的做法很简单,那就是找加拿大秋季的照片,直接从这些照片找样本颜色,这些样本对我确定游戏调色板很有帮助。
但是,要在游戏里做得真实,它们有时候在不同的光照条件下会显得扭曲,所以我自己写了一个定制化的着色器,几乎可以让我控制每一个物体的阴影看起来是什么样子。总的来说,我的目标是让游戏里的颜色和阴影看起来是连贯自然的。
这是我做自定义光照的大致过程,最左侧是默认的ramp,然后做成了梯子一样的形状,最后的结果是把所有的阴影都更靠近白色,这样它们与真实颜色就会更接近。
而且,使用这种颜色风格,可以让我很快做出UV,通过把UV拆到调色板上,我在纹理上节省了大量时间。
而且这种方法实验起来也非常方便。
我想使用后期效果,为我的游戏增加更多的视觉表现力,你可以在Unity的标准免费资源库得到大量免费资源,还可以在不换掉大量的资源的情况下改变游戏的感觉和视觉效果。
如果没有任何特效,这是《A Short Hike》看起来的画面,这样远处的物体噪点比较多,让人很难注意到前面发生的事情。
所以,我首先做的就是给游戏增加一层雾,让玩家可以专注于画面前方发生的事情。
随后,我使用了边缘探测(edge detection)特效来选择背景的轮廓,这带来了很戏剧性的效果,这其实是偶然的,因为当时在尝试不同的滤镜。
如果你仔细看左侧,就会发现我最后加了颜色校正之后的差别,所以我增加了蓝色的阴影,让它看起来更真实。
如果你是小团队或者单枪匹马的开发者,这里或许有些东西是你可以考虑的:
发挥你的长处,尝试能够用到的工具,考虑美术风格对你的研发流程以及游戏大小的影响,你的局限性最后有可能会让你的游戏看起来很独特。
从创意原型到项目
上面大多数的工作都是在2018年12月完成的,考虑到我要做的是个小项目,我认为可以在三个月内把游戏做完发出来。
当我做创意原型的时候就做了份策划文档,把研发大致分为三个阶段,用三个月分别做alpha测试、beta测试和发行准备。
我觉得对我来说非常有效的是,我在脑海里有一个非常灵活度的目标,我把项目的核心目标定的很紧凑,完全可以在三个月的截止日期内完成。但是,还有很多功能是我想加入的,所以把它们当成了拓展目标。
理想情况下,即使扩展目标没有做出来,游戏本身也可以是好玩有趣的。
实际上大多数的拓展目标都没有在最初Humble商店发布的时候增加,但随后Steam版本做到了游戏里。
我还追踪自己的进度,使用简版的Scrum过程,每周都会检查进度,让我知道哪些事情是有很多时间可以做的,以及如何提前规划。当你自己工作的时候,做这样的规划并不容易,但我发现用这种方式追踪进度很有用。
另外,我给整个项目还设置了一个外部截止日期,以帮助我完成这个项目,我认为这种方式可以让你专注于完成某些事情,而不是把一件事做到完美。
走捷径
我很想在游戏里做尽可能多的东西,所以必须走一些捷径,比如之前提到的艺术风格让我节约了大量的美术资源创作时间。
但我还重新使用了以前项目当中使用过的知识、工具和资源。比如我使用了Yarn做对话系统,此前我在一个RPG小项目上也用过,还有很多工具与流程是之前试过的,所以用起来很快。
我还使用了Incontrol插件来支持手柄,它几乎可以一次性的自动支持大多数的手柄。
我用Cinemachine来快速建立动态摄像头系统,它让我在游戏里的不同区域创造了很多的虚拟摄像头。真实摄像头则可以跟随角色移动在不同区域之间变化。
我知道学习新工具是有代价的,但如果你对它们足够熟悉之后,长期来看是有益的,你可以在未来的项目中重新使用。
我还有自己的资源脚本,并且可以用于不同的游戏,只需要把他们放到每个游戏的资源库即可。
我还重新使用了之前RPG和其他游戏的资源。
游戏世界大多数是用Unity的默认地形工具完成的,在Unity里直接使用地形工具,让创意原型和关卡设计变的更容易。
Triplanar Shader也是很有用的,它可以自动给地形着色,这样你旋转时候不用重新渲染每一个表面。
我的地形着色器还使用了Unity默认的绘画工具,因此增加海滩和其他地形很容易。我不得不检查混合的代码以使用适合这个风格的形状,但这是必须做的改变。
另外,我还做了自定义工具,其实很简单,就是把角色快速移动到一个位置,然后在摄像头下预览或者以摄像头角度预览。
后来我还在游戏里给河流以及瀑布网格做了工具,这样就可以不用在每次改变地形的时候都要来回改动,这个工具节约了我大量时间,而且创作过程也很有趣。
做这些工具需要很多的时间,所以我的建议是,只在你的项目需要的时候才去做。
还有一个需要强调的是,当你创作了大量的资源之后,出现bug是不可避免的,我不知道这个情况是不是bug,但对于我来说,增加更多内容,比费尽心思去解决这个bug更重要。这些小bug是很多玩家注意不到的,而且你是个独立开发者或者小团队,有一些小问题是玩家可以原谅的。
接下来我想总结自己是怎么按时完成研发的,我把游戏研发分为不同的里程碑,并且不断更新每个里程碑完成的时间。你还要在规划目标的时候把不确定性考虑在内,可以使用之前的知识、工具和资源,在工作流程需要的时候创造一些工具,还有,你不需要要解决每一个bug。
接下来我想要说的是在关卡设计方面的心得
我想要做一款游戏,迷路是游戏的一部分。我觉得能在任何时候走向任何方向,给游戏增加了神奇的感觉,任何没有经过的路,都可能充满新东西,我想给玩家一种永远都有新东西可以发现的感觉。
所以在创作小岛的时候,我直接用Unity雕出了不同的区域,找到不同的气候加进去,这个过程让我得到了很多灵感,所以最后我头脑风暴了很多想法,给每个区域增加了很多的活动和事件,还用一些时间考虑岛屿的主线是什么。
最主要的路线从这个小屋开始,主角可以从这里进入小镇,在这个地方你可以学到如何玩游戏,并向你介绍这个世界。但这里是有障碍的,看起来无法通过。不过,最终你可以收集金币和羽毛,能让你在峭壁上攀爬,通过之后,你就到了山的左边,到达高处的会合地点。
这时候,你是无法到达山巅的,因为需要收集7根金色羽毛,通过这个设计,玩家们无法快速通关,有了更多的时间去探索游戏世界。
我知道有很多的捷径可以走,主要是保证游戏的自由度。但我觉得对满意度较高的玩家而言,你可能会想要做一些游戏里意想不到的事情。不过,控制游戏节奏也还是很有帮助的,因为它可以让我把游戏体验做的更好。
在测试中,有玩家觉得一直探索和遇见其他人会很枯燥,他们看到山上的NPC都不会与他们交流,只是一路跑过去。这让我对游戏的节奏开始思考,在很长一段时间内我都在不断设计新的角色和区域,以保持玩家们的兴趣。
制定一个计划可以帮你很好的控制节奏,但事情并不总是会如你想象的那样顺利。
比如在测试中,很多玩家并没有像我想象的那样进入快节奏,相反,它们直接跳进了海里。可能很多人想要试试游戏里是否让他们游泳?如果你允许游泳,有部分人会很开心。
但还有些玩家不这样做,他们一直绕着岛屿走,这种情况很普遍,虽然不是所有人都这样,可我在测试中看到了很多次。
不少玩家会迷失在山脉的背面,他们会错过游戏重要的新手教程部分。
让这种情况更糟的是,最初测试的版本中,山的背面没有太多东西可以探索。
为了解决这个问题,我最后在山背部增加了一个洞穴,我觉得人们走了很长时间之后,一个洞穴会引起他们的好奇心,他们就会穿过洞穴,而这会把他们直接引导到新手教程部分。
所以,让玩家按照规划的方式去玩,有一些要注意的地方。
首先是提供一些温和的指引,我不想要让玩家觉得是被迫做某些事。给玩家提供指引的方式有很多种,这些节奏帮助他们遵循我的计划推动游戏进度。如果指引是很自然的东西,比如山上的洞穴或是很酷的地标,这会让玩家有兴趣主动探索。
还有些方式是比较直接的指引方式,比如金币、小路等等,还有些信号是可以帮助迷路的玩家走回主要区域的,如果你没有迷路则不用关注它们。由于游戏的目标是到达山顶,通过爬上每一个斜坡,玩家们总会找到如何过去的方法。
另一个方式是用门,在玩家们获得足够的知识或者经验之前,隔断一部分区域。
但我在游戏里不会使用那样的门,而是尝试比较自然的门,在远足旅行当中,无法攀爬的悬崖就是一扇门。这种设计方式很自然,还会让玩家觉得或许有更多方式解决问题,比如集齐足够的羽毛或者得到跳跃能力之后才能通过。
还有一个让玩家按计划推进的方式是用无声的重复。比如在游戏一开始,你可以发现一个玩具铲子,在随后的游戏里,你可以换成真正的铲子,在岛屿上挖东西。从技术层面来说,这是个可选物品,但玩家错过后,会觉得错过很多东西。
最初的时候,我设计这个玩具铲子是准备让一部分留意的玩家拿起来,然后他们可以换成真正的铲子。但很多玩家因为各种原因都选择了避开这个铲子,有的人看到了山间的路直接走过去,有的人看到悬崖想要攀爬,完全打乱了我的计划。
所以,我决定在游戏世界里不止放一个玩具铲子,而是5个,都在区域开始的地方。只要玩家拿了一个铲子,其余四个都会自动消失。所以,如果玩家没有自己拿起铲子,他们也会在别的地方注意到,你是没有办法忽略的。
这些设计解决了问题,而且是不错的做法。但我也做了新手教学信息,你在游戏最后要爬到山顶,所以必须学会如何到达,比如学会二级跳。如果玩家没有攀爬过悬崖,就会看到一个信号,只因他们去爬山,如果已经自己学会了攀爬,就不会看到这些东西。
最后一个就是重视玩家,也就是当他们在玩游戏的时候,你要给他们的脑海灌注一些东西。
比如攀爬,游戏一开始是很难让玩家学习攀爬的,我觉得这并不是那么直观,因为大多数的游戏里你都可以跳跃,但并不是看到的每一面墙都能爬。而且攀爬是需要上下文的,你需要推着墙然后按住某个键,这些都不是偶然发生的,即使是用明显的标志放在对话里,玩家们也有可能会跳过对话,看不到你给的指引。
我最后做的是在游戏里增加了一个爬山者俱乐部,比如你收集羽毛的时候需要问他们如何攀爬,即便是错过了任务,也可以路过的时候看其他角色如何攀爬,最终学会这个能力。
我还想说一些与游戏最终区域相关的一些问题,这或许是最难设计的区域。我想让这个区域变成一个迷宫,比其他区域更难一些。
当玩家到达这个区域之后,他们的羽毛不会恢复,所以,一旦冻僵了之后,你就需要到更暖和的地方获得羽毛恢复的效果才能再回来。这样,玩家们就无法使用他们收集的羽毛一路爬到山顶,而是要做好计划,在哪个地方停留积攒羽毛数量,设计好登顶的方法。
这个区域最初设计的比最终版小很多,而且玩起来也更具迷惑性。实际上我不得不重做了这个区域,很难,因为这是最后做的,必须为其他地方留出空间。
最后一点就是,我给山顶增加了一个清晰的路线,所以到这里的时候,玩家们可以清楚地看到如何登顶,但却没有足够的羽毛去实现目标,他们需要时不时回来积攒羽毛,精神做好登顶的计划,而不是直接走上去。
我实际上还增加了更多的羽毛。测试的时候,登顶的难度更大,虽然增加更多羽毛会打乱游戏节奏、更难的游戏会卡住玩家进度,但我觉得这么做可以带来更有趣的体验。
我还想说的一个部分是协作。最开始做这个项目的时候,我没想到要写这么多东西,但最后还是写了很多,对我来说这很难,因为写作本身就不容易,至少我是这样。
以前做RPG游戏的时候,写作是比较难的地方,因为你要设计故事、对话。所以在做《A Short Hike》的时候,我决定让写作变得更容易一些。我设计了一些简短的弹出对话,而不是冗长的剧情,就像是给好朋友发短信那样。
我做研发的时候,没有打算把故事写的很深刻,而且觉得剧情不是游戏的主要部分,有时候是我的合作伙伴在检查我写的对话。
游戏发行
游戏研发之后,我们来说说发行方面的事情。
《A Short Hike》最初是在Humble发布的,令人意外的是玩家反馈非常好,我不知道有多少人玩过这个版本,但它的评价不错。
所以,我决定在Steam版本发布之前做一个重大更新,一部分原因是我还有很多东西想加进去,还有一部分原因是我希望对玩家更慷慨一些。这个阶段我给游戏增加最多的是一些小游戏,比如钓鱼、竞速。
我宣传游戏的方式就是通过Twitter发布一些有趣的动图,向玩家展示一些有趣和重要的信息。这对我很重要,因为人们会给我反馈,有一些玩家喜欢的动图我还放在了宣传片里。
游戏发布之前,我还做了一个媒体包,发送给可能对我游戏感兴趣的游戏记者,还找到了在Twitter上喜欢游戏的人,虽然并不是所有人都在发布当天报道了我的游戏,但一些人提及对我而言就是很大的成功了。
我并不觉得《A Short Hike》是一款所有人都能接受的游戏,它的节奏较慢,没有真正的解谜。所以我在展示游戏的时候非常谨慎地选择用词,以免给玩家带来过高的期望值。比如名字里就有short,描述是“有关山上远足旅行的一个小型探索游戏”。
在游戏的一开始,我还设计了一个画面,写的是远离城市去远足,这就给玩家带来一种感觉,游戏体验是令人放松的。
最终在2019年7月30日,游戏登录了Steam商店,我从一开始就没有过高的期望,但最终的表现还是超出了我的预期。
从数据来看,发布首周外部流量最大的来源是Twitter,而在Steam发布首周,大多数的流量都来自于Steam平台,所以我觉得Twitter带来的热度有很大的帮助,以上就是我今天分享的内容。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com