《First Shot!》是我单人用godot引擎制作的一款类幸存者肉鸽游戏,不过与一般的类幸存者游戏不同的是,一般的类幸存者游戏普遍带给玩家的体验是不需要进行过多思考的爽快的割草感;而在我的游戏中,我尝试借鉴《杀戮尖塔》的设计在类幸存者游戏中复现出《杀戮尖塔》中的策略性体验。
这篇文章主要讲解一下我在制作这款游戏时进行的思考、最终达到的大致效果,与制作后的反思。游戏的最终效果可以见视频演示,也可以在游戏的网页版亲自体验。文章的编排如下:
- 第一小节简要分析了《杀戮尖塔》中的策略性体验是什么样子、怎么实现的。
- 第二小节讲解了我是如何借鉴其设计,将其搬运到类幸存者游戏框架下的。
- 第三小节介绍了游戏中一些肉鸽元素的具体设计。
- 第四小节简单介绍了游戏最终达到的效果。
- 最后我讲述了制作这款游戏的感受,与其带给我的经验教训和自我反思。
1. 《杀戮尖塔》是怎么做的?
1-1. 《杀戮尖塔》的策略性体验
《杀戮尖塔》的策略性体验在于拒绝“流派化”。“流派化”的肉鸽游戏会给玩家提供很多的体系,但体系之间毫无关联,且完善某个体系后足以通关,这会导致:虽然肉鸽游戏的随机性为玩家提供了很多选择,但一旦玩家选择了某个体系,之后反而“没得选”,只能机械地选择同体系内的元素,极大降低游戏的策略性体验。
《杀戮尖塔》带给玩家的体验是与“流派化”截然相反的:在一局游戏的绝大部分时间内,玩家都要不断地进行思考,选择合适的卡牌与遗物来补强现有卡组。这也是我的游戏想要达到的体验。
1-2. 《杀戮尖塔》实现策略性体验的底层设计
《杀戮尖塔》中卡组具有3个维度的强度:攻击、防御、过牌。《杀戮尖塔》通过怪物设计保证了:玩家的卡组必须在3个维度同时具备足够的强度才能通关。同时游戏中的每个职业都没有某个体系能够完全覆盖3个维度,各个体系只能分别覆盖各别维度。同时游戏中某些卡牌或遗物还能将一个维度的强度转向另一个维度,如战士的“全身撞击”等。
于是,在游玩《杀戮尖塔》时,玩家的最终目标是要让自己卡组的3个维度强度均达到要求。而对于这个目标,游戏没有提供给玩家“预设解”,比如某个体系能覆盖所有维度,只需要无脑选择这个体系就能达到目标。相反,游戏中的一些单卡、遗物或是小体系只能或多或少提供个别维度的强度,像积木中的组件一样;还有一些卡牌、遗物将某个维度链接到另一个维度。玩家要在一局游戏的过程中从随机的奖励中不断思考如何选择合适的组件与链接,来最终使自己的卡组能完全达到3个维度的强度要求。
2. 借鉴这种设计到我的游戏?
首先总结《杀戮尖塔》实现策略性的关键:
- 将卡组分出3个维度,并通过怪物设计要求玩家要在3个维度上均达到强度。
- 提供组件(不同的小体系、单卡、遗物,能直接为某个维度提供强度)与链接(将某个维度的强度转化到另一个维度)供玩家完善卡组。但各个组件都只能为个别维度提供强度。
为了复现《杀戮尖塔》中的策略性,应该要实现以上两个关键点。
2-1. 实现第一个关键点
类幸存者游戏的主要玩法是:操控角色躲避、攻击敌人,最终在不断变多、变强的敌人中生存指定时间或是回合。在这个游戏框架下可以很自然地分出3个维度:攻击、生存、速度。据此可以首先将一部分玩法具象化:
- 玩家通过发射子弹攻击,发射频率由射速决定、子弹伤害由伤害决定,由此攻击维度具象为游戏中的射速与伤害属性;
- 玩家具有血量,敌人攻击玩家扣血,血量归0则失败。血量的上限值由血量上限决定,每秒钟血量可以自动恢复,恢复量由血量恢复决定,由此生存维度具象为游戏中的血量上限与血量恢复属性;
- 玩家在地图中的移动速度由速度决定,速度维度对应游戏中的速度属性。
由此,在本游戏中,玩家一共具有5个属性:伤害、射速、血量上限、血量恢复、速度。
接着,需要通过敌人设计来要求玩家在3个维度上均达到足够的强度。在这款游戏中,为了简便,我只做了一种敌人,会靠近角色并在足够近时攻击角色。它具有攻击、血量、速度3个属性(各属性的作用顾名思义)。通过调整敌人的各属性分配,得到其各种变种,来防止玩家在某一维度足够强便足以过关的情况,具体如下:
- 黑色变种:攻击力非常高,但相对的降低了血量与速度。防止玩家只靠生存维度的强度硬抗敌人的攻击来过关;
- 红色变种:血量非常高,但相对的降低了攻击与速度。防止玩家只靠攻击维度的强度把敌人全秒掉过关;
- 绿色变种:速度非常高,但相对的降低了攻击与血量。防止玩家只靠速度躲避过关。
公平来讲,以上的设计有一定效果,但最后发现其实玩家某个维度高到一定程度时还是能过关,我后来又想到了更好的设计:以一定概率随机为敌人加上buff,分为以下3种:
- 按血量上限比例对玩家造成伤害。这防止了玩家血量上限极高,只依赖生存维度硬抗通关;
- 间隔性地无敌,即无法受到伤害。这防止了玩家只依赖攻击维度将敌人秒杀掉过关;
- 加入远程怪物,发射长时间留场弹幕。玩家即使速度很高,也很难躲避场地上越来越密集的弹幕。
当然,这些最终没有做在我的游戏中。这只是一种思路。
2-2. 实现第二个关键点
第二个关键点涉及到更具体的游戏机制,在这之前要先将游戏整体的框架搭建起来。
我选择借鉴《土豆兄弟》的游戏框架。在《土豆兄弟》中,战斗分为20个回合,战斗中通过击杀敌人获得资源,每个回合战斗后在商店中购买道具进行提升。游戏的目标是要坚持完20个波次。类似的,在我的游戏中,共13个回合,每回合战斗中要求玩家在敌人进攻中坚持指定时间,并根据杀敌情况给予金币。每轮战斗后玩家进入提升环节,通过选择提升自身强度,下面介绍提升环节的设计,这是实现第二个关键点的地方。
首先复现《杀戮尖塔》中的“组件”,即可以为个别维度提供强度的机制。
对应在提升环节,每轮战斗后,玩家可以在5个属性中选择性提升。这种提升幅度较小,为此我又借鉴了《以撒的结合》中属性倍率的机制,玩家的5个属性均有倍率,倍率越高,每次属性提升提供的强度就越高。于是提升属性的倍率相当于较大幅提供对应维度的强度。对应在提升环节,每4轮战斗后,玩家有机会自由分配属性的倍率,使某属性倍率上升需要以其它某个或某些属性倍率下降为代价,分配越激进,所需花费金币就越多。
接着复现《杀戮尖塔》中的“链接”,即将某维度的强度转化到另一个维度。
游戏中设计了44种能力,其中15种左右对应不同维度,乃至不同属性间的链接。在提升环节中,玩家在每轮战斗后能够从随机刷新的能力中选择性获取。这些能力的设计不仅有复现 《杀戮尖塔》中的“链接”,也是肉鸽游戏随机性体验的核心,将在下一个小节具体介绍。
3. 能力的具体设计
我的游戏中共实现了44种能力,其中15种左右对应不同维度、属性间的链接。我实现了3个维度的两两之间共6个链接的能力:
1. 吸血:攻击维度 生存维度
- 机制:每当敌人受伤,玩家以一定比率获取其生命值下降值
2. 荆棘护甲:生存维度 攻击维度
- 机制:受到伤害后,在某半径内辐射所受伤害某比例的伤害
3. 嗜血:攻击维度 速度维度
- 机制:每杀死1名敌人,获得一层嗜血,每1秒失去一层嗜血,每层嗜血提供一定比例的速度提升,最高40层
4. 魔法深渊:速度维度 攻击维度
- 机制:玩家会在身后留下持续8秒的尾迹,当尾迹构成封闭图形时,会形成持续3秒的法阵,对内部的敌人每秒造成伤害。法阵越大,造成伤害越高。
5. 狂怒:生存维度 速度维度
- 机制:玩家受伤每累计一定值,获得一层狂怒,每2秒失去一层狂怒,每层狂怒提供一定比例的速度加成,最高20层
6. 天女散花:速度维度 生存维度
- 机制:地图中会不断生成血花,拾取后恢复玩家血量,每个血花持续存在3秒时间
考虑到在分配倍率时,玩家需要牺牲某些属性,这些属性应该由链接来弥补。同时为了进一步丰富游戏内策略的丰富性,我进一步细化到了属性间的链接,具体可以在游戏内文档或是演示视频中看到。
4. 游玩体验
根据个人感受,最终达到的游玩体验大致是:玩家要合理分配属性倍率与选择属性提升,大幅提高某些维度、属性的强度,而强度不足的维度通过维度、属性间的链接弥补,像是在“拼积木”一样将3个维度的强度“拼”出来。
得益于丰富的链接能力设计,这种“拼积木”有很多种拼法,而且需要玩家视情况动态地调整,规避了“流派化”,一定程度上复现了《杀戮尖塔》中的策略性。具体的情况可见演示视频,也可在网页版亲自游玩体验。
5. 感受与自我反思
这是我制作的第一款游戏,花了我很多的精力,做得也很不容易,在这个过程中我学到了很多很多,但在这里,我不打算将它们一一罗列来说,而是只集中在让我认识最深刻的一个点上,那就是:做游戏永远不要自以为是。
这款游戏花了我很大的精力,大概有两、三个月的时间,我每天一边学引擎,一边设计游戏机制。当游戏逐渐成型,我亲手玩着自己的游戏并发现达到了预期的体验,还能从中获取乐趣时,内心的快乐与成就感是无语言表的。游戏初版做好后,我又一遍遍地玩,然后根据自己的体验微调游戏数值和机制,感觉游戏变得越来越完整、好玩。
接着我拿我的游戏参加了国内godot社区的游戏比赛,内心虽然有点忐忑,但心底里还是觉得自己应该要拿一个不错的名次。经过了一个多月漫长的等待,最后我的游戏只拿到了一个三等奖。参赛的游戏里面很大部分都是没认真做在凑数的,几乎可以认为只要是认真做的游戏都比我的排名高。
看到结果时,我受到了不小的打击,甚至会在想评委没有认真体验我的游戏。但冷静下来后,我突然意识到,让玩家去认真体验自己的游戏难道不是自己作为游戏制作者的责任吗?如果一款游戏画面精美、引导详实、难度曲线友好,同时本身又好玩,那大部分玩家怎么会不去认真体验呢?而我在做游戏、乃至测试迭代的过程中,都太注重甚至只注重我自己的游玩感受。回过头来看我自己的游戏,美术全靠免费素材堆积,画面贫瘠;引导只是简要介绍,没有做教学关手把手指导玩家;没有像其它肉鸽游戏一样做难度分级,而是只依赖我个人的体验调整难度,导致对于初接触的新手过难,再加上类幸存者游戏低质量的刻板印象,这个结果是理所当然的。
我仍然认为我的游戏作为一个小体量的游戏足够好玩,只是我过于自以为是,没有站在一个普通、无关的玩家的角度上去审视我的游戏,没有去优化他们的体验。这次经历让我认识到制作游戏,或者是其它产品,永远要站在使用者的角度审视产品,而不是陷入到自以为是的怪圈中。
虽然这款游戏没有拿到特别好的成绩,不过为什么要期待自己第一次做游戏就拿名次呢?以及在做游戏的过程中我很开心,做完后也学到了很多东西,我觉得这就足够了,我会继续饱有热情地去实现我的下一款游戏的(笑
