• 《Celeste》 开发者是如何精心制作“冲刺”的


    转自:http://www.gameres.com/804804.html

    简介与序曲

    在Celesete里,许多细微的行动都是发生在转瞬之间的,甚至往往比你想象中还要“转瞬之间”。

    这里是 [游戏机制设计] 专栏,由 Alex Whiltshire 邀请游戏制作人员们来分享、讨论他们在游戏制作过程中遇到的困难、趣事和辗转反侧,以及他们是如何战胜这些琐事,打造出最适合他们游戏的机制的心路历程。今天,我们有幸请到了最近冉冉升起的爬山-平台跳跃游戏新作《Celeste》的制作者们,请他们聊一聊精心打磨角色控制代码所花费的心血。

    上个月初,Celeste 的制作者们放出了他们游戏中最重要的一项机制--主角 Madeline 的角色控制机制源代码。其中包含了 5472 行代码以及数不胜数的细致的Variables (变量): JumpGraceTime, DashHJumpThruNudge 或 DuckFriction, 这些代码使得Madeline无论是奔跑、跳跃、攀爬、还是冲刺都能拥有精确并且顺畅的感觉,这些代码使得玩家操控下的Madeline 仿佛有了自己生命一般灵活。

    如果你不是一名程序员,那你就不大容易猜出来这些代码代表了什么,有什么意义,所以我采访了 诺埃尔.贝瑞 先生来解释这些代码是如何聚合在一起来使玩家角色的操控感“如丝般顺滑”的。专注在她的冲刺能力上,经由反复考虑,最后出现在 Celeste 这款游戏中的机制,最终使得你能够完美操控 Madeline,使她能做出玩家真正期望去做出的动作,而并不必须是你按下的按钮所连接的动作。

    就像你预料的一样,Celeste 中的冲刺功能是一个短程的高速冲刺,主角 Madeline 能够向8个方向自由地冲刺,在空中也能冲刺。但是想要再次使用冲刺技能的话,则需要主角接触地面来重新充能冲刺能力,所以说在每次跳跃过程中她只能冲刺一次(使用后头发颜色变成蓝色)。这是个极简的机制,能让玩家瞬间就理解其含义,但是并不会马上就把这个使用这个机制的技巧全部吃透。在此之上,整个游戏都是围绕这个机制来创作的,将刺儿们摆放在环境的周围制造出一个狭窄而危险的区域,仅给予玩家一息之机来落地、充能,重新喘息。

    它的运作方式十分直截了当,当你按下冲刺按钮的时候,她便在那一瞬间进入了“冲刺状态”(A separate ‘dash’ state)。 她的头发会变成蓝色,会有一个计时器开始计时,她会被施加一个固定的速率(velocity),指向你按下冲刺按钮时候的方向。接下来计时器会使你在恰好0.15s 内无法控制 Madeline(译注:这使玩家不会因乱输入指令意外改变冲刺的方向),在那之后,随着冲刺速率降低,系统会渐渐将你对角色的控制功能还回来,直到她回到“正常状态”。所有这一切都发生在不到一秒之内。

    尝试将每次“冲刺”做成完美

    经典的平台跳跃游戏设计技巧

    他们做了巨量的工作来确保整个冲刺过程感觉起来很棒、很顺,最后巧妙小心地把控制能力,完整地,稳定地归还给玩家。“如果你得等到整个冲刺时间结束,才能输入其他操作指令,那么整个冲刺动作就会感觉很僵硬,” 诺埃尔.贝瑞说道。“这里面有许多微小的细节,是一般玩家不会去注意到的,除非是那些挑战极速通关记录的玩家。”

    这里展现了Celeste的动作设计非常聪明的一个点,那就是游戏始终会把一个动作的“最终裁决权”交给玩家,来维持“操作感”。另外,即便 Celeste 确实很难,那它其实远比那种需要精确、完美到像素单位级的变态游戏要简单,比你想象中的还要简单。“许多我们之所以这样写这样一段代码的意图,是建立在我们认为玩家想要去做什么样的动作的基础上的。” 诺埃尔.贝瑞继续说."我们想要把难度设计的重心放到环境和关卡上。"

    他们也使用了不少经典的游戏设计技巧来润色操控,比如“威利狼跳”,名字由来于威利狼在动画里跑出悬崖范围之后的空中动作。这实际上是让系统赋予玩家角色一小段额外时间,可以在Madeline从地面走到空气后的短暂时间内仍然做出跳跃动作。异曲同工的,当她的冲刺会因稍稍有些低而撞上墙的时候,游戏会调整路线,使她能够“滑上”墙壁上方的地面,而不是撞到墙上卡住。

    译者补充图:威利狼跳 (Coyote Jump)


    “我们还得考虑究竟精确到多少个像素单位,当玩家角色在靠近一面墙或者浮于地板之上时仍能够发出一次冲刺动作” 诺埃尔.贝瑞说:“虽然可能只有一两个单位级别的差距,但是为了把握到正确的感觉,我们做了大量的测试来验证。”

    大量测试与细致微调

    诺埃尔.贝瑞和它的设计师小伙伴 麦特.索尔森 会邀请朋友来参加测试,虽然他们知道,当新玩家们玩一个游戏的早期原型时,即便一次又一次地撞墙,玩家们也很难识别出究竟是游戏的那个部分出了错。“但观察他们的游戏过程,你就能看出那里运转的不大对劲。有时候是关卡设计的问题,比如那块墙本身有问题,有时则感觉是玩家角色摩擦力不足‘太滑了’,所以显得不稳定,有时则简单的是他们的跳跃不够高,没达到跳跃的最大高度。”

    但同时 Celeste 对于会使游戏规则产生细微变化的地方十分小心。许多游戏都会进行一定程度的“操控器微调”,他们会微调系统读取手柄、键盘输入的信息,来使他们更大几率符合玩家们实际想要去做的动作,而不是他们实际上按了啥。(译注:就是说辅助瞄准系统)大多时候是这么做的:要么是修改那些输出实际为零的区域(Deadzone),或者是增大那些常见方向(Direction)相关联的角度参数,来使玩家能够更容易向这些方向攻击、冲刺。

    而尽管普通玩家们抱怨最多的就是他们有时会意外地往不想要的方向冲刺, Celeste 仍只微调了一点点它们读取摇杆信息的方式。因为游戏需要,冲刺功能可以向任何方向使用,所以游戏只有在赋予 Madeliine 能够冲刺的八个方向中每个方向同等的权重时才表现得最好。呃,大致同等,事实上因为玩家很少向下,下左,下右方向冲刺,这几个方向稍微有点更高的阀值。

    “这是个特别棘手的问题” 诺埃尔.贝瑞说道,“我们可以做一些尝试,来读取一次操作指令输入中的多个帧(reading multiple frames of input),但这也会导致其他问题,比如说如果求的是多个帧中的平均值的话,当玩家快速地轻打摇杆时,系统可能没法读取到正确的指令。而我们想要做到的是尽可能的精确,所以我们尽可能100%还原从摇杆上读取的指令,而不是微调它。”


    将一个机制从设计层面上调整到最佳

    实际上,有许多设计上的细微调整都是在 Celesete 的早期开发流程中被决定的,而如果我们将时钟拨回那么一点点,这款游戏的原型最早诞生于2015年,是一个 麦特.索尔森 与 诺埃尔.贝瑞 仅用了4天完成的PICO-8 jam game。但当他们着手开始设计关卡之后,他们必须要在对主角的操控做修改时加倍小心,因为任何对主角操控动作的微小改动都可能影响所有他们游戏中所做的其他设计工作。

    “我们曾经在游戏里放过一个,现在来看比较糟糕的机制,但我们一开始还觉得蛮酷的。”诺埃尔.贝瑞回忆道,“当我们从PICO-8的原型版本转移到现在工作的平台之后,我们增加了一个攀爬墙壁的能力给主角,然后我们立刻意识到需要给他加一个精力条、时间限制之类的限制条件。但我们同时也加入了这么一个设计:当你在攀爬墙壁耗空精力值之后你不得不在地面上站个一、两秒种来喘气,之后你才能继续爬墙。我们甚至做了几个关卡,是以这个机制为基础而设计的,像是你必须要在破碎的墙、平台之中跳跃,然后找准时机喘气来恢复精力。但是,这个机制其实完全破坏了这个游戏的“flow“。没有任何人会觉得站在原地发呆发个两秒是件有趣的事。所以我们不断地减少等待所需的时间,然后当我们降到大概只有0.2秒的时候,我们才清醒过来,我们为什么还要做这个啊?” 诺埃尔.贝瑞大笑道。

    他们俩也对于把游戏中不符合游戏机制,游戏玩法的东西移除一直是持一个乐观、正向的态度的。而后来,在他们有了大量的关卡之后,调整的部分就主要是 麦特.索尔森 的微调了。“他好像甚至有把浮点数(floating)从0.2调到0.21来尝试一个东西感觉起来对不对味,哈哈”

    在Celesete里,许多细微的行动都是发生在转瞬之间的,甚至往往比你想象中还要“转瞬之间”。诺埃尔.贝瑞回想起来了他们设计 [绿色水晶] 时候的细节,当Madeline在半空中碰触到一个 [绿色水晶] 时,游戏会将画面帧“冻结”一瞬间然后重置Madeline的冲刺能力。最开始发布的游戏版本里,这个一瞬间只有0.1s,但是当他观看了许多玩家的视频之后,他仍然觉得那个持续时间太长了。现在的版本,这个一瞬间则只有0.05s,而且这个一瞬间仍然是肉眼可察觉的。“人眼的辨识能力真的远远比我们想象的还夸张。”诺埃尔.贝瑞说道。

    殊途同归地,Madeline 的单次冲刺过程仅仅持续0.15s,但是你却能够清晰感觉到这一瞬间的“份量”,这是由于许多小的、细微的视觉效果的支持。比如一阵疾风般的粒子效果在半空中留下她的冲刺轨迹,或是一阵微小的屏幕抖动,方向恰好是与Madeline冲刺的方向相匹配。“我们忙了很久在这些小玩意上,我们投入了很多精力,来确保游戏里的每个动作,每个行动都有它的清晰的影响,” 诺埃尔.贝瑞说道。“我们真的很讨厌那种任何东西都是轻飘飘的,没有清晰、立竿见影的冲击感的情况。” 但他们也非常小心,不在这些特殊效果做过头,不将他们做的喧宾夺主。使得你能感受到它们,但不会被它们分散了注意力。

    这不是BUG。。。是技巧!!

    一旦你完成游戏的一周目,你就可以开始着手挑战游戏的“B-面”啦, Celeste 从B面开始会教你更夸张的技巧来向你展示 Madeline的冲刺功能的更多可能性,甚至让你抵达一些你之前想都没想到的关卡。比如说一种“长跳”一样的动作, 在Madeline的一次冲刺抵达地表的一瞬间跳跃,这时Madeline就能继续这股势能,向前跃进。这个动作灵感来源与 诺埃尔.贝瑞和麦特.索尔森之前合作过的一款游戏 《Towerfall》, 但他们在本作里放入了更多深度。延迟Madeline的跳跃动作直到她的冲刺能力冷却好的瞬间,这会使她带着冲刺的势能冲向半空中,并且她能准备好再次冲刺。

    这并不是提前计划好的,而是自然而然从现有机制里生发出的。但当这个技巧成功地帮助速通玩家跳过他们做好的关卡设计后。麦特.索尔森和诺埃尔.贝瑞就开始爱上这个了。“速通玩家能够做一大堆那些疯狂的事!而且这些并不会过度影响休闲玩家的游戏体验。那些技巧的判定帧足够短暂,所以没人能够偶然性做出那些动作,不过一旦你搞懂原理,它的判定帧也长到足够让你捕捉到机会持续使用这个技巧。”

    也有其他几个游戏技巧在游戏的开发流程中浮现出来,诺埃尔.贝瑞和麦特.索尔森全心全意地支持着这些技巧,但并不是所有的这些游戏技巧都有一个出彩的结果。游戏里内设了一个计时器,显示了一场游戏已经经过的时间(为速通爱好者准备的)。在游戏刚发售的时候,这个计时器会在玩家打开菜单,以及经过过场小动画的时候暂停。“但是在游戏发售的几周后,玩家们意识到在几个特定的房间内,如果你打开暂停菜单再恢复游戏时,Madeline 会移至到她在房间里设置的重生点。这会帮助玩家省下几个像素格的时间,因为在打开菜单时游戏的计时器会暂停。我并不确切地知道到底有多少个房间是最适合使用这种技巧的,不过我想大概得有几十个吧,而且说实话这个技巧并不是一件很有趣的事。没有玩家喜欢这种技巧,没人想要在每次进入一个房间的时候都试一下打开然后再恢复菜单。”

    结语:

    在游戏中,所有赋予Madeline移动能力的系统都是隐形的。在玩家眼前,她只是单纯地移动着。但是这份轻松自如的灵活手感,却是来自于实实在在的数个月的对于源代码中细微数值的微调,来使她的移动模式真正符合玩家想要的。“这就是为什么代码里她的类(class)有那么长,这是因为我们不断地添加细节到我们关注的特定的实例中(Insatances),”诺埃尔.贝瑞说道。“这对于一个以移动能力为核心的游戏来说非常重要,总是有些你不得不去设计的细节,他们也许在现实的物理环境下不合理,但是在游戏里的手感却能成倍顺滑。”

    你能在这里看到关于 Madeline的移动能力的源代码

  • 相关阅读:
    使用非ServiceDependency方法获得模块中已注册的服务
    一个比较有效的存储过程命名规则
    SQL重复记录查询
    Redis命令行启动,修改密码
    springboot+dubbo后端打包成jar并运行
    开发问题:NOAUTH Authentication required
    @Api报错
    String的indexof使用
    开发报错:init datasource error, url: jdbc:mysql://localhost:3306/book(初始化数据库错误)
    开发问题:异常Required request body is missing
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/9454146.html
Copyright © 2020-2023  润新知