BOOOM 作品《TRAiLS》创作笔记


3楼猫 发布时间:2022-06-01 09:51:35 作者:SleepyJeff Language

前言

机核的朋友们好,我是 Sleepy Jeff。2021年的 BOOOM 活动中我开始了自己的游戏开发之旅,2022年的 BOOOM 也自然不会缺席。
本人对游戏和游戏创作的理解及其浅薄,创作笔记仅为学习历程中的记录与分享,有问题之处还请大家多多谅解和指教。
我将本文分成了两个部分,第一部分是《TRAiLS》从灵感到成品的创作历程,第二部分则是在创作过程中的反思与收获。
本文涉及对《TRAiLS》的完全剧透,希望没有游玩过的朋友花 20min 体验一下再来阅读。

TRAiLS 痕迹

查看详情

0. 创作《TRAiLS》之前

提及之前的游戏创作经历既是个人的阶段性回顾,也方便大家更好的理解后文中的各种决策。
半年前参加第二届 BOOOM 时我刚开始学习 Unity,制作的第一个游戏《Interstice》中一半的代码是由朋友帮我完成的,耗时40天。游戏不建议去玩,感兴趣的朋友可以阅读创作心得
之后跟着非常基础的 Unity 教程做了两个练习,并在 Computer Science 课上学了一点 Java,了解了编程中最基本的 Class,Variable,Loop 等内容。
Global Game Jam 2022 的时候想参与一下,但情况如图,游戏耗时20天左右才完成。
之后就到了今年的 BOOOM 开发活动。

1.1 解题 & 灵感来源

刚刚得知开发主题是 「Take Me Somewhere Nice」的时候,我纠结了一下是否要做情感体验向的游戏,之前在创作这方面的内容上毫无经验。
但听完 Mogwai 演唱的《Take Me Somewhere Nice》后就立马被打动了,决定无论如何也要试试(二七姐和四十二老师属实是高)。
最初游戏的灵感来自于三款游戏和一个翻页书动画(点击跳转):
  • 《双子》- Echostone Games
  • 《风之旅人》 - thatgamecompany
  • 《又一条线》- SMG Studio
  • 《900页翻页书》- Andymation
《双子》和翻页书动画让我觉得仅通过简单的「点」也可以模拟和传达出人与人之间的情感,且相比于复杂的角色需要绘制/建模甚至是制作动画等一系列内容,用点来代表人物在技术上对于我来说也能够在短期内实现。
而不同于《双子》和《风之旅人》中的核心是陪伴,翻页书动画中想要表达友善,我想传达的重点在于离别,以及离别后带给玩家的一些思考。这是源自于我的一些个人经历,故事很长,在文章里不便分享,未来闲了可能会发在机组。
对于开发主题「Take Me Somewhere Nice」,我的解读是:
「Somewhere Nice」不在远方,而是和生命中的一些人所经历的时时刻刻。

1.2 从一个 Shader 开始

离别需要有冲击力,所以要在那之前构建出能打动玩家的亲密关系。
最初我的想法是:玩家会在随机生成角色的地图上遇到各种人,但其中只有极少数会选择一起同行,伴随玩家克服障碍,最后离别。这里并不是我隐去了细节,而是当时脑海中基本只有这一句话的内容。
之所以没有任何具体的设计,是因为出于编程水平的限制,几乎任何复杂的功能都可能将我的创作拦腰截断。我决定边制作边围绕着已有的内容做设计,踏上一块石板再去摸下一块。
这并不是吹哥所倡导的「让游戏设计它自己」,而是我确实对现有的能力毫无信心,不敢先入为主进行全面的设计。
我决定从创造障碍出发,因为共同克服障碍对增进关系有巨大的帮助,已经记不清为什么选择了漩涡,可能是受到创作的第一个游戏《Interstice》或者是《又一条线》中引力玩法的启发。不过现在回顾起来,即使是一步一步设计也应该先考虑核心玩法,而非设置障碍。
因为我完全不会美术,只好搜索如何用 Unity 做出一个漩涡,这才重新了解到了 Shader(学 Blender 的时候也用过,但忘得一干二净了)。开始创作的第一天,我就这样跟着教程做出了一个漩涡的 Shader,可以说这个 Shader 决定了整个游戏的视觉风格。

1.3 伙伴「AI」的实现

如果你希望对《TRAiLS》里遇到的伙伴保留一些情感,而不是被冷冰冰的,及其无趣的程序所破坏,可以跳过下方的隐藏内容。
我的角色代码只有几个非常简单的脚本,称为「AI」仅为了方便大家理解,还请见谅。
在网上搜寻 AI 相关的教程时,发现多数都只是基本的跟随/寻路功能,而复杂一些的则会涉及到状态机,行为树等内容,其程序必然是我在 BOOOM 活动期间难以掌握的(还有好多其他的内容需要学习)。
最终我决定使用最简单的跟随来实现。为了让 NPC 更加鲜活,我自己瞎琢磨出了一个框架:NPC 跟随的并非玩家,而是在玩家周围的八个方位设置的点,这些点会随着玩家移动的方向而转动。
具体的逻辑如下(程序员视角):
- 数字 0-7 对应了8个「点」(例如「点0」为玩家正前方)
- 定义变量「跟随数字」,NPC 会始终飞向「跟随数字」所对应的「点」
- 每过 5-10 秒,NPC 会生成一个 0-2 的「随机数」
- 新的「跟随数字」= 旧的「跟随数字」+ 「随机数」
图例:
- 左图中 NPC 的「跟随数字」为4,对应的「点4」在玩家正后方
- 7秒后 NPC 生成了一个随机数2
- 右图中新的「跟随数字」为 4 + 2 = 6, 对应的「点6」在玩家正左方
NPC 的多数变化就基于上述框架,例如玩家在吃完一片区域的光点后,八个方位的点与玩家间的长度(即图中的蓝线)就会更短,NPC 也就会更近的陪伴玩家飞行。
值得一提的是一些无心插柳柳成荫的内容。例如打动了不少朋友的,NPC 试图阻止玩家下落的举动,实际上是在制作早期写的绕圈脚本:玩家在没有自己移动时 NPC 会绕着玩家周围的八个点转圈。写的时候还没给玩家加上重力,所以绕的圈是完美的,但在加上重力之后会发生碰撞,我又忘记改了hh,便成为了「阻止玩家下落」。
陈星汉老师在电台里聊《云》的时候说「艺术品有一个很讨巧的地方,就是你说的不是很清楚也无所谓,只要感觉上捕捉到了,观众会自己把它填进去」。我的游戏绝不敢自诩为艺术品,引用这段话是想说,如此简单的 AI 设计能打动很多朋友并非是我的功劳,而是大家可能联想到了生活中的一些经历/经验。

1.4 重新设计 & 成型

在核聚变宣布延期,BOOOM 宣布多两周的开发时间时,我看着 Unity 陷入了沉思。游戏创作到这时有许多不得不面对的问题:
  • 难以在短时间内实现完善的随机生成系统
  • 在随机生成的地图中设计符合预期的心流较为困难
  • 只制作了障碍,却没有给予玩家明确的目标
  • ......
而这一切都会回到一个最关键的问题:没有围绕最终想要传达的情感体验去设计。
以下是我当时观看和阅读的一些 视频 & 文章(点击跳转):
  • 【GDC】Designing Journey(中字)
  • 【GDC】Letting Go: A Florence Postmortem(中字)
  • 【GDC】Designing For Friendship(译介)
  • 我们与回音石工作室聊了聊三年的《双子》之旅
  • 浅谈《双子》中的情感体验设计
  • VG安利会:《双子》一场星间飞行 愿我成为你的光
  • 在这个手游里化身双子星,感恩陪伴你的那个人
很难说清究竟从其中受到了多少启发,但游戏核心设计的灵感,也就是连点画线的玩法,则是明确来自于两款游戏。
其一是上文提到过的《又一条线》。游戏中玩家通常会始终向上以获取更高的分数,但有几次我选择在几个点之间来回绕行,留下的轨迹形成了一些有趣的图案。而在我的游戏中玩家也有轨迹,在延长其停留时间后我试着画了一下,非常漂亮。
其二是恰逢 Ludum Dare 50,梓涛哥发布了《》,游玩后我发现连点成线再成图是个很好的设计,因为点比线更低维,在连完成为图像的情况下能让玩家自由发挥,不被限制。
连点画线的玩法是将「经历」具象化的一个很好的方式,对此我的解读是:点代表了人生中的一个个事件,地点或物品,这些事物独立存在的时候通常不是那么的重要,但是当我们跟生命中的一些人去经历的时候,一切都会变的有意义。
核心玩法的确定并不足以支撑整个游戏,为了更好的理清思路,我约了好哥们 David Chen 在线上会议室里聊了几个小时。他没有专门学习过游戏设计,但算是同龄人里资深的游戏玩家。一下午的讨论过后我画出了下方这张图:
图中的关键词有的包含了多个内容,且其代表的意思,箭头代表的关系等都是不一样的。但就是这张只有我自己看得懂的关系图让游戏首次有了成型的设计(因为是个人开发我一直懒得写GDD哈哈哈哈,请不要向我学习)。

1.5 结尾 & 提交游戏

直到五一假期时我的场景还没开始搭建,只好开始狂肝,在最后的三天两夜中只睡了8个小时左右,终于赶在了截止前提交了游戏。
提交的版本中有许多 bug,且砍掉了非常重要的结尾。设计中完整的游戏流程应该是「相遇 - 离别 - 回顾 - 点题」,但没有结尾部分则少了「回顾」,「离别 - 点题」显得突兀不少。
游戏已经更新了完整版,虽然由于时间和精力的限制仍然有不少遗憾,例如 NPC 与环境自始至终变化不大,没能像《风之旅人》和《双子》一样做出起伏的情感弧线,但就我目前的开发水平而言,已经基本达到了设计时的预期。

2.1 学习与创作的正反馈

不同于我在制作第一个游戏时不会编程的糟糕体验,Unity 入门了之后则进入了一个甜蜜期,大概的情况是能在完全不了解一个功能的情况下,可以通过查找网上的教程,问答,Unity 的 API 和向群友请教等方式实现。
虽然很多时候及其简单的功能仍花费了我数个小时,但学习过程中的每一次发现(例如发现了更明确的关键词而不用再胡乱搜索,发现了功能里所需的最核心的术语,发现了折磨人的 bug如何修复...)都是一次正反馈,就像在一团迷雾中突然看到了一束光。即便不少时候在更深入的查询和尝试之后才知道走错了,也为未来积累了经验。
更强的正反馈来自于几经周折后成功的做出想要的内容,每次都让人非常开心。

2.2 「井底之蛙」的创作

我在《Interstice》创作心得中提到人文基础的缺失会极其限制游戏创作的思路,类比的话就如同一只井底之蛙,但在做完《TRAiLS》之后有一些内容想要补充:
第一点是像我这样的井底之娃也仍然能够,且应该去试着通过游戏设计做一些表达。虽然没有到过广阔的大海,也没有见过璀璨的星空,但井下的苔藓,石头等也可以成为创作时的参考。苔藓中或许有美妙的生态,石头上或许有雨水留下的纹路。
之所以说不仅是可以,更是应该,是因为创作需要磨练。通过游戏设计较为准确的传达情绪,感受或思考并非易事,只有在一个个差劲作品的积累后才能离带来理想中的体验更近一步。
另外提及一下梓涛哥分享的《邱志杰:青年艺术家们的“十大学生腔”》,里面讲到的「琥珀」可以说是必要的警醒,转述可能会有偏差,因此直接引用:
年轻人误以为创作是自我表现,而年轻人拥有的经验大多数是青春故事和童年记忆。于是要自我表现,采集这些生活经验的碎片也就顺理成章。封存、储存、收纳、冻结各种杂七杂八的记忆,同时视觉上又可视,琥珀显然是理想的办法。用树脂、冰块代替道理一样。用抽屉装满记忆不加封闭,或者用蜡或者水泥封存杂物,视觉上只能见到局部,略逊一点,但基本路数一致。这些做法,是私人日记的一种碎片形式。它是另一种版本的 Facebook 上的“时间线”。这个时代每个人都活得理直气壮,每个人都觉得自己的生活值得记载下来,并热衷于暴露给观众,这种权利我不敢反对。但需要想一想的是,为什么你的生活碎片是艺术而别人的不是?
第二点是在各个领域我们或多或少学过一些东西,作为游戏设计师要在学习时留心,并尽可能在创作游戏时快速地与之关联和使用起来。
这点是我在观看陈星汉老师的 GDC 演讲时感受非常深的,他提到创作《风之旅人》时是如何从叙事中非常经典的《英雄之旅》中获得灵感,并基于此设计了情感弧线。而我虽然在几年前浅显的学习过《英雄之旅》,但在设计《TRAiLS》时没有想起来一次(直到观看演讲)。

2.3 基于限制的游戏设计

《TRAiLS》创作过程中的每一步都是基于各种限制:
  • 视觉风格是基于在 YouTube 上找到的几个易抄的 Shader 教程
  • 「AI」设计是在最简单的跟随脚本上做了一些变化
  • 玩法设计的成型是因为尝试了随机生成后发现难以实现
  • ......
如果我会美术或者编程水平高一些,最终游戏可能会呈现出与现在完全不同的样子。但幸运的是,我选择尽可能在各种限制下围绕着想要传达的情感体验做设计,把握住了比技术更关键的东西。

2.4 细节与游戏反馈

我在制作前两个游戏时基本只考虑了程序如何实现,关卡如何设计,完成后都还是比较粗糙的原型,直到这次 BOOOM 才开始考虑细节与游戏中的反馈。其一是情感体验向的游戏需要有氛围感,其二是我的编程水平和开发周期也允许做一些尝试,举几个例子:
  • 在屏幕边缘引导玩家的光源,其路径并非直角而是圆角矩形,这样光源在四个角时不会被遮住大半部分(花了8个小时才做出来)。
  • 背景的星空有两层,模拟远处的一层较小较暗且移动的更慢,模拟近处的一层较大较亮且移动的更快。
  • 玩家的重力会在按 WASD 时归零,这样在朝各个方向移动时速度会保持一致,不符合物理规律,但画线时手感会舒服很多。
游戏中的反馈还有很多欠缺,大家感兴趣的话可以参考《Cato》,《Heartbeat Faraway》,《绿蝇侠》和其他很多 BOOOM 作品中非常优秀的设计。

游戏的背景音乐这次没有选择继续使用 CC0 素材,但由于无法确定游戏是否能按时做完,我不好意思找别人帮忙做音乐,最终选择在网上购买了一些音乐的使用版权。
游戏中最大的遗憾是没有加音效。虽然向梓涛哥,Zuxin哥和在上音读书的老同学请教了一些知识,但碍于精力有限实在是肝不动了,且音频工程是非常深的领域,难以在短期的学习中做的比较像样。这里顺便安利一下梓涛哥的演讲《再重聚:音频驱动的游戏设计视角》,在提醒游戏创作者重视音频的同时提供了更多很有价值的思考。

2.5 长期与个人创作的压力

虽然看过吹哥关于深度工作与长期项目的演讲,但是一个多月连续的开发(对我目前来说算是长期)还是让人有些吃不消,同时还要面对因疫情隔离在家的各种压力。
不止是我,像 GMTK 频道的 Mark 这样的大佬,在 Developing 系列的视频中提到 2-3 个月的高强度开发让他接近「Burnout」而不得不好好休息一阵子。
YouTube 的评论区里有一位朋友的回复我认为很有道理:
仅仅两个月的开发后感到倦怠并不意味着你需要休息一个月,而是意味着你需要发展一种更合适的工作模式。这个建议更多的是针对工作中的游戏开发者(Mark Brown 的情况不同),在冲刺和长时间的休息之间翻来覆去是不健康的,这样做一定会失去动力和工作中所运用的知识,使每次冲刺都需要重新熟悉技能以及项目本身,每次都会越积越多,让游戏开发变得更加困难。
至于「更合适的工作模式」是什么样的,我得在之后的生活中慢慢探索了。
相比于团队开发中的成员们可以讨论和互相激励,个人开发的过程也对我造成了一定的困扰:我对游戏逐渐有一种「不识庐山真面目,只缘身在此山中」的迷茫,且容易感到孤独和疲惫。对此我有两点体会想分享:
一是可以多跟朋友们交流正在开发的游戏。像我这次就跟好哥们 David 聊了很久,虽然他不懂游戏设计,但从玩家视角提了很多建议(其中不少都不合理但没关系),并且我发现在向他人倾吐迷茫的思路时,经常自己顺着自己的话就捋顺了。
另外朋友有时会给一些言过其实的赞扬,多少能抵消一些焦虑和负面情绪哈哈哈哈。
二是在疲惫的时候可以专门挑一些让人有成就感的内容做。例如我在开发周期刚刚过半,最没动力的时候做了《TRAiLS》开始时的标题转场,对游玩并没有什么帮助但是自己非常开心。

结语

感谢 BOOOM 群聊,GMTK Discord 和 Unity Discord 里的朋友们帮忙解决程序问题!
感谢@David Chen @叶梓涛 @Zuxin @奏奏 @郑瑞婷 对游戏开发提供的帮助!
感谢机核网举办 BOOOM 开发活动,祝愿 BOOOM 越办越好!
感谢大家的游玩与支持!我在未来会带来更优秀的作品!

© 2022 3楼猫 下载APP 站点地图 广告合作:asmrly666@gmail.com