从《植物大战僵尸》看如何设计关卡的节奏


3楼猫 发布时间:2022-05-31 13:35:49 作者:Ilgco2Y Language

笔者最近在做自己的一款游戏demo,苦恼于如何设计关卡的怪物配置:
  • 每个出怪波次应该配置多少只怪才是比较合适的?
  • 每个出怪波次应该出什么怪,如何调整平衡?
  • 出怪的刷新间隔有何讲究?
  • ……
带着这些问题,笔者研究了一下《植物大战僵尸》(下简称《PVZ》)的刷怪机制,看看其是如何去设计关卡的出怪节奏和怪物配置的。下面是正文:

关卡内节奏

《PVZ》的出怪涉及的参数比较多,笔者主要以一周目的冒险模式作为研究的主题,不考虑无尽模式和二周目,公式进行了大量的简化,出现实际和模型不符的情况是正常的。如果读者想更详细的了解公式或者想了解无尽模式等其他关卡的话,可以去 植僵百科知识 进行了解
大体上来说,《PVZ》刷怪可以概括为,分N个波次刷新,每个波次随机出现若干个僵尸从左向右走过来,某个波次的僵尸出怪以后,等若干秒,刷出下一个波次的僵尸。
卡池
在每一关开始,我们首先需要选出这关玩家需要应对的僵尸,这些僵尸会显示在屏幕的右侧。我们把这些僵尸的集合称为“僵尸卡池”。之所以起这个名字,是因为每个波次的僵尸都是从这个“卡池”中随机抽取而来,这个机制和抽卡是一样的,下面会阐述。
每关开始右边显示的就是本关的僵尸卡池

每关开始右边显示的就是本关的僵尸卡池

抽卡
《PVZ》中,存在波次的概念,每个波次会刷出若干个僵尸。每10个波次的第十个是一个大波次,即旗帜波,会伴随“一大波僵尸即将来袭”的提醒。一般来说,在冒险模式中,我们的关卡都是10波~30波,而在关卡的开始,游戏会先选出前20个波次中每个波次的僵尸阵容。
这个选出每个波次的僵尸的过程被我们称为抽卡(一般叫选卡,但笔者觉得抽卡更容易理解)。
整个流程大致是这样的,首先我们为每个波次设定一个“战力上限”,比如第一波的战力上限是1,第四波的战力上限是2,第十二波的战力上限是4。而每个僵尸都有一个“战力”的设定,在程序中,普通僵尸的“战力”被设定成1,路障僵尸是2,铁桶僵尸是4……
抽卡指的就是不断从前面提到的僵尸卡池中抽卡,直到该波次的僵尸的“战力”刚好等于本波次的战力上限
比如假设卡池里只有普通僵尸和路障僵尸,我们需要战力总计为2的僵尸,我们就开始从僵尸卡池中抽卡。抽卡的结果带有随机性,我们可能第一张抽到的是普通僵尸,第二张抽到普通僵尸,这样战力就是2了,也可以第一张抽到路障僵尸,这样战力也是2。
读者可能会问如果第一张抽到普通僵尸,第二张抽到路障僵尸怎么办,这个时候我们一合计,僵尸战力超过上限2了,于是我们可以把路障僵尸放回去重新抽,直到战力等于2为止。
那么怎么确认每个波次的“战力上限”呢?《PVZ1》用一个简单的线性函数来计算每波的强度上限,我们对这个公式做一定的简化方便研究。
近似曲线

近似曲线

实际刷怪

实际刷怪

可以看到《PVZ1》的关卡节奏非常简单,对于这个公式,我们可以写成y=kx+b的形式,这样我们就得到了游戏关卡的两个参数:k和b。显然地,如果关卡设计师想提高难度,他只需要调高k和b的数值;如果关卡设计师想降低难度,他只需要降低k和b的数值即可。
然而这个曲线又是怎么出来的呢,这点笔者猜想是《PVZ》的游戏设计师通过反复测试得到的,不妨从最简单的模型开始,杀死本波次僵尸时间刚好等于这波僵尸走到最终防线的时间,以这个作为极限值推算本波僵尸的血量应该是多少比较合理。然后进一步的加入僵尸的兵种、植物的伤害等其他因素去计算和有关关卡测试,反复调试k和b的取值得到一个最终的参数取值。
我们重新回到抽卡的过程,接下来我们要介绍游戏关卡中的另一个参数,权重,这里涉及到概率部分。
抽卡的时候,每种僵尸被抽到的概率是不同的。每个僵尸都有自己的选择权重, 假设我们现在的卡池中有普僵、铁桶,这些僵尸的总权重是4000+1000=5000,假设我们现在需要战力和为8的僵尸组合,我们可有的选择是2铁桶、1铁桶+4普僵、8普僵。可以用概率论知识算出各个组合的概率。
假如我们再加入一个路障僵尸,路障僵尸的权重为2000,那么总权重将变成4000+2000+1000,通过简易的抽卡模型,我们能计算出各种刷怪组合出现的概率。调节这些概率,使之平衡。
随机选择的僵尸一方面使得玩家的关卡体验充满了一定的随机要素,这意味着每一次打关都有一部分需要根据场上形式来随机应变的要素。也有的塔防游戏出怪是完全固定的,游戏设计师选择采用随机出怪或者是不随机出怪,随机要素有多大,这些问题都需要有自己的考虑,要结合具体的体验来分析。
值得注意的是权重在游戏中并不是一成不变的,普僵和路障僵尸的权重会随着波次的增加而递减,因此在后续的波次普僵数量将会减少,这点也是游戏控制关卡难度中的一环。
刷怪间隔
简单来说,PVZ的每个波次之间存在一个波次间隔,当本波僵尸开始出现的时候,等待X秒才会开始刷下一波僵尸。但是如果你输出够高,打的足够快,在本波僵尸血量低于一定值以后就会立刻开始刷下一波僵尸。
这点很好的对玩家做了适应的设计,如果玩家杀的慢,游戏会给予一定的时间让玩家慢慢展开,如果玩家杀的快,那游戏就赶快开始刷新下一波,让玩家不至于在无聊中等待。
这个设计很好的让会玩的玩家和没怎么接触过游戏的玩家在游玩的时候都有很好的体验,对于高端玩家,他们杀的足够快,适当调快游戏节奏,使得游戏保持紧张,不至于感到无聊;对于不那么会的玩家,游戏给予了他们时间与宽容。而这一切的设计都是潜移默化的,很多玩家都未察觉。
如果想使用这种自适应难度设计,想搞清楚我们并非要把休闲玩家当成傻子,而是提供一种“技巧”。对于那些已经或多或少觉察到这个机制的玩家,他们可以充分地利用这些技巧。如果玩家发现了这个刷新规律,开局可以选择将使用土豆雷、倭瓜这样的作物种在后排拖延时间,以让下一波僵尸到来更慢,以求更多的发展时间。通过拖延,铺满两到三排向日葵,为后续的展开做准备。事实上在打无尽模式,了解这些小技巧是非常必要的。
《PVZ》这样的自适应设计很多,有兴趣的同学可以看看文末的PVZ在GDC上的演讲,里面提到了如何让休闲玩家和硬核玩家都玩得开心的小技巧。
小结
我们可以小结一下《PVZ》怎么设计出怪的。
首先,根据游戏设计师的理解,为每一种僵尸设定一个“战力值”,设计合理的刷新间隔机制。
然后,确定关卡的主题和难点,从而确定卡池以及每个僵尸权重。比如本关的目的是介绍新僵尸,应该确保新僵尸的刷新概率足够高,或者本关的主题是考验玩家如何应对rush,那么卡池就应该加入海豚、撑杆跳、橄榄球等移动速度较快的僵尸。
之后,设想难度,设计合理的刷怪战力曲线。这一点要根据玩家群来决定,如果用户是休闲玩家,这关对他们会不会太难,如果用户是硬核玩家,会不会觉得太无聊。
最后,反复游玩,优化,直到满意为止。
举一反三
在了解了《PVZ》的机制以后,我们可以举一反三,改进《PVZ》的出怪设计来满足我们自己的游戏设计,这也是我们做分析所想达到的目的。
《PVZ》每次抽卡都是从本关的总卡池抽的,而我们可以改成每一波都有自己的一个卡池,从而可以到某一波固定只刷撑杆僵尸+海豚僵尸的组合。事实上,《PVZ2》就是这么做的。
更加灵活的卡池选择

更加灵活的卡池选择

我们也不需要遵守《PVZ》设计的这条线性曲线,它使得关卡变得不再具有变化性,我们可以在不同的关卡采用更合理的符合我们主题的曲线。
设计出多样的出怪曲线

设计出多样的出怪曲线

我们还可以加入更多的AI设计,比如我们可以加入对场上局势反应的AI,如果用户种的豌豆射手比较多,就多刷门板僵尸(门板僵尸的门板可以防御豌豆,但是大喷菇可以穿过门板直接攻击)。或者发现用户种下了高坚果,就偷偷降低撑杆跳僵尸的比重等。
不过要注意,过于不一致的变化可能会让玩家对游戏机制产生不信任感。种下高坚果就不刷撑杆跳僵尸可能会让玩家感觉疑惑,从而产生“这个kuso game用赖招打赢了我”的感觉。

关卡外节奏

下面的这些研究本不是笔者本次研究的主要目的,但笔者在研究《PVZ》的时候发现的一些可以提高流程体验的技巧。
“一大波僵尸即将到来”
这是个很微小的设计,但笔者认为在这个设计做的非常好。
这一点让游戏提高了策略性,减少了临场反应,你可以看着下面那个条条知道大概什么时候高压波会到来。策略性,就是玩家能未来能有一个宏观的大致规划,如果去掉右下角这个进度条条的话,玩家就无法预测高压波次什么时候到来,于是会很难做出规划。比如这波有个强力的僵尸,但我不知道下一波是不是高压波,我是不是该用掉手上的樱桃炸弹去处理呢?玩家甚至不知道这个游戏什么时候会结束。这就让游戏变成了根据每波僵尸随机应变的游戏。
策略是在计划和应变的平衡,如果关卡的流程无法预测,那玩家就疲于用临场反应应对,无法进行长远的规划。如果开局就制定好了策略,游戏过程就变成了枯燥的执行步骤的过程。
一条连续的光谱

一条连续的光谱

当然你可以说玩家可以通过学习去理解这个出怪节奏,事实上很多塔防游戏都没有高压波的提示。这不是必须的,我想要表达的是如果玩家在关卡花费了大量的时间反复重开去记忆高压波的位置和理解怪物的机制,就会稀释了花在制定策略上的时间。
而且调节这一切的关键点就在于控制关卡的情报节奏,战场制定策略需要情报,在PVZ的开局,他会告诉你这关会出现哪些僵尸,地形是什么(泳池、屋顶等)。在关卡的进程中,告诉玩家未来会有几波大僵尸靠近。你也可以让一些怪物罚站,即“隐患”,提前了解“未来可能会发生什么”。关于“隐患”的设计可以看看这篇文章
并不是说以策略为主的游戏不能有或者要足够少随机应变的要素,而是要把控好一定的度。
关卡间的节奏控制
《PVZ》的每个关卡之间也有节奏的控制,可能很多玩家意识不到,实际上一周目是一个大型的引导流程。游戏不断的给你新植物、新僵尸、新地图机制,玩家需要去学习和领悟这些新的机制。
《PVZ》对这个流程节奏做了很多的控制设计
  • 游戏将简单的机制放在前面,将复杂的机制放在后面(如禅境花园需要到很后面才解锁),这是因为在游戏的开始,玩家学习的意愿是最弱的,因此这个时候不要给予他们太多的信息。
  • 游戏每五关就会出现一个小游戏或者一些别的东西,坚果保龄球这些游戏让玩家从塔防过程中暂时的解脱出来,避免长时间玩同一个游戏产生疲劳。
  • 游戏的设计非常的保守,新僵尸总是会预留2~4关来让你了解和学习新僵尸的机制,并且大部分时候会给出对应的植物解。

总结

所谓的刷怪问题,即确定在某个时间某种环境下,应该刷什么怪。《PVZ》的做法在于设定好僵尸的战力,规定每个波次的战力上限(节奏),随机选择僵尸,在策略和临场反应之间取得一个平衡,使得关卡富有趣味。
《PVZ》中具有一些自适应的难度调控,比如它没有选择将波次固定在某一个时间点去刷,而是玩家打的越快,下一波的出现的就越早,同时满足了高端玩家和休闲玩家的需求。
通过研究《PVZ》的这种简单模型,能帮助我们构造我们的更复杂模型。希望能对各位有所帮助。

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