译者注:本文原作者Itay Keren(Untame工作室创始人,《Mushroom 11》作者),文章发布于GAMASUTRA。是其于2015年游戏开发者大会(GDC)上《How Cameras in Side-Scrollers Work》演讲稿件的修改补充版。
上图是开发中的《Mushroom 11》,开发中遇到很多设计和技术难题。游戏角色形状的动态变化或是顶点动画带来的种种问题,起初没期待能直接找到参考案例。然而纵观三十多年的游戏历史,却很惊讶的发现游戏摄像机的运用方法却几乎没什么人讨论。
于是我决定从2D游戏的历史发展上一步一步看过来,整理他们当时所面临的挑战,并逐步分析方案的演化过程。由于没有专业术语能够直接将这些方案阐述出来,我就在搜集过程中试着按类归纳,用自己的词汇描述出来(方便日后进行检索)。
滚动或平移,当试图展现的场景在单屏幕下容纳不下时的表现手法。其实有很多潜在问题需要在滚动中解决,比如:选择哪些是必须要展现给玩家看的;作为设计者希望玩家去关注什么;解决问题的同时如何带给玩家流畅而舒适的感受。
虽然今天讨论的内容都是2D摄像机系统,但很多理念在3D的设计上也是共通的。
在讨论游戏之前,先来接触一些神经学的背景知识,以便我们能够更好的了解我们的视觉和感知系统。也就能够理解有些滚动为什么设计的不好了。
中心窝是眼球内部的接收器,负责视觉中最清晰的部分。视觉中的第二、三条纽带分别是副中心窝和近中心窝,负责减轻视觉中图像的偏移,善于捕捉图像的位置变换,并且能够很迅速的察觉到危险形状的物体以及他们的速度和方向。
这些视觉输入通过一些高速的神经通道直达脑部的杏仁体,允许我们在大脑视觉皮质层解析视觉输入前做出更快的反应。只需要花点时间训练一下,就能将某些视觉信息和相应的反应操作捆绑在一起,这在游戏设计中也十分有用。
前庭系统位于内耳,负责维持身体平衡和方向感。大脑接收来自前庭系统的神经信号就可以帮助我们维持身体的平衡,并且能够辅助我们的视觉系统,使我们集中注意力到想要观看的细节上。有些人,比如我这种,喜欢在车内看书,但这时车身加速度不断变化,而视觉上接收到相应的辅助反馈又很少,就有很可能引起头晕恶心。
反之亦然:中心窝接收到视觉上背景物体的变化,于是等待前庭系统相应的反馈信号。然而什么神经反馈都没有(因为这时玩家正老老实实的坐在电脑前面),带来的负面效果是一样的。
尽管在3D场景中(尤其是VR)感官信号之间(视觉上和听觉上)冲突所引发的不适和眩晕感表现更为明显,但在2D游戏中所带来的影响也是不可忽视的。
注意力,互动感与舒适度(Attention, Interaction and Comfort)
我将摄像机滚动所带来的种种需要解决的问题与挑战分成了以下三类,以便我们更好的理解:
注意力 :利用摄像机提供有效的游戏信息显示和反馈(玩家需要看到些什么)
互动感 :把玩家所作的操作清晰的反馈出来,让背景变化变得可预测,并且与操作紧密相连(玩家想要看到些什么)
舒适度 :根据背景变化的前后关系进行调整或减缓背景的变化速率(如何让摄像机平稳舒适的移动以满足视觉上的需求)
经典滚动设计(Scrolling Nostalgia)
那么就从80年代开始我们的旅程吧。有很多设计师,即使是30年后的今天再回头看,也很难想象他们是如何在技术有限的情况下克服重重困难,在那个年代就发明了如此多的独创设计方案的。
文章里也会提到很多近10年的独立游戏,这些独立制作者有很多相当有创意的表现方式,并且在注意力的把控上也做得很好,而且摄像机的运作方式也截然不同。
先从最基础的说起。大部分游戏中,玩家对主角有着绝对的控制权。也就意味着,所有的注意力都应当直接引向玩家所控制的角色,而摄像机也应当紧紧的跟随着角色运动。
在80年代早期,实现滚动还是个很难的事。尽管开发者需要面对CPU、内存容量与分配等等限制所带来种种问题,仍然有很多非常杰出的滚动方案诞生,并且也克服了这些硬件、软件上的限制。当然那个时代的案例中,运动还很简单,而且游戏分辨率也比较低。
值得一提的是早在1980年,类似《拉力赛车》这种作品,已经能够解决技术限制,并且在画面展示上实现了真正意义上的双轴摄像机。通过对指定位置的锁定机制,让赛车始终锁定在摄像机正中央,随之产生的镜头运动也都在玩家的意料之中。
位置锁定(position-locking) - 锁定玩家所操控的角色
注:本文中的摄像机分类是我参考多种资料和作品后自创的。如果您觉得还算有用,发现有可以改进的地方欢迎联系我(译者注:此处指联系Itay Keren)。
关于位置锁定摄像机还有另一个例子,由西山隆志设计的《功夫》。西山隆志也是《月球巡逻车》的设计者,后来还制作了《街头霸王》。
《功夫》还使用了另一个机制,边界捕捉,把摄像机的移动范围限制在当前关卡内,这种设计可以允许角色离开摄像机追踪锚点继续移动。
位置锁定 (position-locking)
边界限位 (edge-snapping)- 设定一个摄像机调整位置的边界限制。边界限位的机制几乎在每个游戏中都有,下文再遇到就暂且不标出来了
位置锁定虽然是很基础的手法但确实很实用。制作类似《泰拉瑞亚》这样的冒险游戏时,角色相对于整块屏幕的比例很小,而且跳跃幅度也不大,动起来的效果很好,各个方向也都留有足够的视野。
摄像机运动约束(Curb Camera Motion)
如果不是必须要移动摄像机,如何能避免它的移动呢?早在30年前,摄像机滚动还存在很多问题:非常耗费CPU,屏幕上很多东西都需要刷新显示。就算能够成功动起来,单位时间内移动大量的像素点也会导致运动不连贯。所以最好的方法是将滚动的需求降到最低。比如让角色在屏幕有限的范围内移动,只有当角色碰到边缘时才运动摄像机。
很多人认为《跳跳车》是历史上第一个平台跳跃游戏,虽然严格意义上讲,玩家只是不断的自动跳跃,能做的操作也因为受到跳跃机制的限制而只有向左或向右移动而已。当时大部分游戏摄像机都是自动移动的,促使玩家在避开障碍的同时,要不断跟上摄像机的视野。
摄像机窗体 (camera-window)- 当玩家碰到窗体边界时推动摄像机
尽管是为了解决运动层面上的问题才使用摄像机窗体,但实际上它还同样解决了另外一个很多设计者本身都没意识到的问题,而它所带来的设计标准,也致使后来数不清的平台跳跃游戏都沿用这种设计。不过摄像机窗体技术也带来了新的难题,例如玩家在朝着窗体边缘移动时,视野很小,玩家很难判断之后会遇到什么。
另一款我非常喜欢的游戏,《拉斯坦传奇》,有双轴移动并且还有多个路线可选。它也是第一款将摄像机和游戏机制间的关系带来革命性变化的作品。摄像机窗体的高度和人物跳跃高度一致,因此只要人物在窗体内进行普通跳跃就不会造成摄像机纵向的移动。实现了消除摄像机抖动的需求。
但这个例子中也有个比较严重的缺陷,玩家很难看到从上方来的敌人,尤其是当拉斯坦已经在窗体内发生纵向移动的时候会更难发现。并且在需要向左移动时,尤其是城堡那关,由于窗体只留了很窄小的空间,会非常不舒服。
摄像机窗体的技术在新出的游戏中也还在用。再来看《菲斯》,横向的窗体边缘在空间旋转时也保持不变,实际上,空间旋转的轴心是经过调整的以保证角色始终处于窗体内。Fez的摄像机距离它默认追随物体的空间距离非常远,对于它独特的玩法而言是非常理想的解决方案,后面我们也会再解释。
摄像机窗体(横向) (camera-window horiz.)- 空间变换时也持续作用
位置锁定(纵向) (position-locking vert.)
线性插值缓冲(lerp-smoothing)
区域性锚点(region-based-anchors)
手动操控(manual-control)- 用右摇杆可以进行手动摇摄
注:未加粗的术语下文会进行讲解
上文介绍了摄像机窗体的设计来减少相机的移动,但从《跳跳车》和《拉斯坦传奇》的例子中不难看出,即使玩家在窗体内进行移动,也还有很多问题。现在就来讨论几种修正的方法。
《忍》应该说是我最喜欢的经典游戏之一了,游戏中有很多需要在不同平台间进行大跳的操作。设计师就想了个独特的系统:纵向上有很多需要玩家来回跳跃的平台,所以《忍》就使用了一个纵向高度很大的摄像机窗体。和之前一样碰到窗体边缘时会立即推动摄像机移动。但问题在于这种纵向过高的窗体,当玩家做了个小跳的时候很有可能被卡在一个相对于屏幕较高的位置,这时候顶部的视野就变得异常狭窄,就像《拉斯坦传奇》中那样。而《忍》却通过一个简单的方法,让摄像机持续地缓慢地对准忍者角色,让画面始终聚焦在移动的主角上,并且也大大减少了需要频繁的挪动摄像机情况的出现率。
位置捕捉(纵向) (position-snapping vert.) - 持续作用,减少摄像机在重新聚焦玩家时所造成的画面抖动
摄像机窗体(纵向) (camera-window vert.)
位置锁定(横向) (position-locking horiz.)
静态前置聚焦(static-forward-focus)
《超级马里奥世界》运用的机制更多,但有一点值得一提的是它的平台捕捉。和其他摄像机窗体一样,如果玩家没有碰到窗体边缘摄像机就始终保持静止。但当玛丽奥落到不同的平台上时,摄像机也会立即开始吸附到玛丽奥所在的位置。
区域性锚点(region-based-anchors)
平台吸附 (platform-snapping)- 摄像机只有在玩家落于某个平台的表面上时才开始吸附
摄像机窗体(纵向) (camera-window vert.)- 视情况生效
双侧前置聚焦(dual-forward-focus) - 阈值触发器
手动操控(横向)(manual-contro horiz.) - 使用控制器可以自主选择额外的摇摄位置
(本文中第一次提到宫本茂,当然后面会再讲他的作品。真正优秀的设计师能够用心地注意到细节设计,不止是在游戏玩法机制上耍小聪明。)
可以看到在最早的《雷曼》中也用了同样的点子。屏幕的最顶端相当于摄像机窗体的最上沿。可以看到摄像机在雷曼跳跃的时候并没有移动,而在他落地后才平缓的吸附到他落地的位置。而摄像机窗体刚好比雷曼的跳跃高度稍高一点也是个很聪明的设计,当然也再次证明了摄像机系统是游戏设计中必不可少的一部分。
平台吸附 (platform-snapping)
摄像机窗体(纵向) (camera-window vert.)
区域性锚点(region-based-anchors)
双侧前置聚焦(dual-forward-focus)
线性插值缓冲(lerp-smoothing)
均视情况生效
这个技巧在今天的游戏中也十分有效,允许设计师能够在游戏角色跳跃时仍保持相机平滑稳定的运行,只有在完成跳跃或是角色推动摄像机窗体之后再开始重新居中摄像机。注意一点,平台吸附只有在角色能够确实的落到平台时才会比较有效。在其他游戏中,像是《王牌英雄》这种有喷气背包的角色,摄像机的移动更多是靠玩家触碰纵向的摄像机窗体来完成的。
摄像机窗体(纵向) (camera-window vert.)
平台吸附 (platform-snapping)
位置锁定(横向) (position-locking horiz.)
之前介绍了周围视觉在视觉系统中所承担的角色以及基于它的机理所带来的影响。以前的游戏看起来像素点都很大,使得即使是很简单的变换都会看起来非常跳跃,突兀。
假定我们只能使用设备原生网格上的像素时,要怎么样才能让相机的移动更加平滑呢?虽然当下我们可以创作出各种精美的像素艺术,但他们实际运动时像素位移的精度是要比看上去的像素画的像素大小要精细的多的。如果你不想用完美像素处理技术(Pixel Perfect)的话,你甚至可以利用现代游戏引擎所提供的亚像素空间(sub-pixel space)。
伪物理特性也可以在平滑相机移动上掺一脚,尤其是位置锁定摄像机(当然你可以认为任何游戏引擎内的物理系统实际上都是伪物理)。
有说法认为《吃豆世界》是第一款现代平台跳跃游戏。它所包含的多种玩法元素帮助人们确定了这种类型游戏的定义,例如需要跳到各种平台上,还要躲开不同种类的敌人,最后捡起多种奖励道具。至于移动的平滑方法,使摄像机的速度从0像素每帧开始逐渐加速,位移1像素每秒,2像素每秒,3像素每秒,直到最大速度,之后再减缓到0。由于摄像机是锁定到玩家位置上的,所以呈现的画面就变得清晰又平滑了。另外《吃豆世界》不需要纵向滚动,但其实纵向滚动才是最难做的,因为起跳和落地时加速和减速的变化非常快。
位置锁定 (position-locking)
静态前置聚焦(static-forward-focus)
不过既然都说到这了,不得不致敬一下宫本茂了,顺便展示一下他早期的作品。他对整个游戏产业的极大贡献,以及对游戏细节的极致设计都是非常宝贵的,毫不夸张。
早在1984年他开始实验性的研究屏幕滚动,并且用完全不同的滚动模式设计出两款游戏。这两款游戏玩家操控对屏幕滚动的控制比重很小,甚至没有。更像是身处在一个背景会变化的房间中。
《越野机车》就和现代游戏的滚动模式差不多,根据摩托车的速度来调整滚动速度。运动起来也足够平滑,但实际上并没有在镜头上加其他的效果。
《恶魔世界》几乎所有的玩法都和滚动紧密相连。主角就和吃豆人一样,玩家扮演一个基督小龙和恶魔对抗,恶魔是个负责调整屏幕滚动方向的角色,试图把玩家推向屏幕边缘。也是由于使用了宗教相关的符号,这款游戏成为了唯一一款在北美遭遇禁售的宫本茂作品。当然如果把他数十年的作品都对比列出的话,似乎这也算不上什么巨大损失了。不论怎样,去看看这些现在被誉为天才的游戏设计师的早期或者不太成功的作品其实也很重要,也能够时不时的得到些启发。毕竟最伟大的艺术家的实验作品也经常有失败作。
把时间向前推进1年,很难错过《超级马里奥兄弟》的绝妙设计。游戏玩法本身就结合了最简单的“从左到右”,水平方向上只有这一个方向。并且游戏不允许玩家返回至超出当前屏幕的位置,很典型的平台跳跃游戏特征(从技术上讲,应该被定义为单侧的摄像机窗体)。
区内加速 (speedup-push-zone)- 角色处于加速区内时,相机会逐渐加速直到追上玩家的速度
摄像机窗体 (camera-window)- 单侧检测
静态前置聚焦(static-forward-focus)
所以,当玛丽奥一路向左走到头,之后加速通过摄像机窗体边缘时,摄像机在1帧内会从零速静止状态直接变成满速状态,与此同时背景速度大幅变化,不可避免得会造成玩家各种不适的症状。于是设计者想了个办法,在偏移中心区域大约25%的位置加入了一个虚拟点,角色通过时摄像机会进行加速试图追上玛丽奥,所以当玛丽奥碰到摄像机窗体时,摄像机的速度已经和人物移动速度相差无几了。
《银河战士》也曾经是一款突破性的游戏,创造了一个全新的游戏类型,平台跳跃与探索相结合。( 顺便一提,它的“亲兄弟”《恶魔城》使用的是非常基础的方法,位置锁定摄像机。)
《银河战士》进行探索时有多个轴线,但不同时存在。它有另一套缓冲摄像机移动的方法,允许玩家走出摄像机窗体,之后再使摄像机加速追上玩家。追踪速度的快慢取决于玩家穿过窗体后的距离长短,最终也呈现出一个非常平滑的摄像机移动模式。
摄像机窗体(横向或纵向) (camera-window horiz./vert.)
区外加速 (speedup-pull-zone)- 当玩家穿过摄像机窗体时摄像机开始加速移动以追上玩家
由于技术的不断提升,设备有了更高像素的画面和更强劲的处理器,也直接影响到摄像机系统设计。新技术允许摄像机更加自由的移动,而不用担心摄像机移动时,特别是低速一帧一动的情况下,因为低分辨率导致画面抖动。
《大金刚国度》也有很多新颖的摄像机设计,也是第一个使用线性插值做摄像机移动缓冲的游戏,让游戏在角色跳跃时的镜头追踪或向前移动时的聚焦前移都很顺滑(画面聚焦后文会继续讨论)。
线性插值缓冲 (lerp-smoothing)- 持续通过线性插值来减小摄像机与玩家角色间的距离
位置锁定(纵向) (position-locking vert.)
区域性锚点(region-based-anchors)
双侧前置聚焦(dual-forward-focus)
线性插值听起来挺高大上的,但实际上已经是个用来减缓摄像机速度变动的标准工具了,尤其是摄像机在追踪人物跳跃的时候。
float lerp (float a, float b, float t) { return a + t * (b - a); }
它真的非常有效而且在平滑缓冲方面的用途很广。像《超级食肉男孩》那种在移动时忽快忽慢的角色,用线性插值做缓冲很好用。但有个缺点,如果是体积比较大运动又极其快的角色,使用这种方法很容易在相机还没追上角色前,角色就已经移动到屏幕边上了,这样在一段时间内屏幕外即将遇到的敌人就对玩家不可见了。
线性插值缓冲 (lerp-smoothing)
位置锁定 (position-locking)
2014年一款非常精美的游戏《不再孤独》面世了,游戏中的摄像系统用了很多不一样的元素,后面会详细讲。它缓冲的技巧是将摄像机移动速度考虑进来,所以当摄像机要发生移动的时候,速度变化会稍慢一些,并且有可能超量移动,越过需要追踪的目标。最终呈现出一种将玩家运动与运动缓冲相结合的摄像机行为模式,不会因玩家反复的移动变换而过度反应。
模拟物理缓冲 (physics-smoothing)- 摄像机增加物理特性,持续靠近追踪目标
位置均值(position-averaging)
电影化路径(cinematic-paths)
区域性锚点(region-based-anchors)
关键信息聚焦(cue-focus)
代码的层面上讲,如果线性插值是淡出(EaseOut)操作,那么模拟物理缓冲就是淡入加淡出(EaseInOut)。如果有条件的还可以研究一下平滑缓冲(SmoothDamp)的细节,或者是你自己动手实现一个,别忘了把到目标的距离、摄像机速度加入到系数当中。
如果你只是单纯的使用完美像素着色器(pixel-perfect shaders)的话,你有时候就会发现某个图像和其他图像或背景做对比时,看起来偏移了1个像素,那是因为数值划分上不一致导致的。
尽管《光明旅者》画面是低分辨率的像素风的,但也很巧妙的做到了平滑滚动。先在游戏原生完美像素画布上预渲染一次,之后再将画布变换到屏幕完美像素的大小,补充出变换后游戏原生画布中有缺失位置的像素点。它还有很多有意思的摄像机设计,我们后面再细讲。
模拟物理缓冲 (physics-smoothing)- 游戏原生画布分辨率480x720,而相机滚动的画布使用是全解析度
区域性锚点(region-based-anchors)
目标聚焦(target-focus)
关键信息聚焦(cue-focus)
动作聚焦(gesture-focus)
译者注:《光明旅者》已于2016年发售,故对原文进行修正
虽然自动滚动从定义上讲超出了今天的讨论范围,因为这种方式剥夺了玩家对屏幕滚动的操控权。但与此同时,因为需要应对前方接踵而来的敌人,并需要给随时在后方出现的威胁留出反应空间,因此,玩家需要在这两者间权衡,也就间接暗示了场景中玩家的理想站位。
自动滚动 (auto-scroll)-玩家对画面滚动几乎没有控制权(但玩家有调整自身对于画面框体的相对站位的权利)
再回来看《吃豆世界》,如果你想通过把摄像机绑到玩家角色身上,使其直接控制摄像机移动的话,你可以将摄像机聚焦区域从基于玩家的位置向前推。这样给玩家留出足够多的前方视野,并且也留有足够让他们留意后方事物的空间,这种设计也同样暗示了玩家应该朝哪个方向移动,因为人们总想让人物瞄着画面的中央跑。
位置锁定 (position-locking)
静态前置聚焦 (static-forward-focus)- 给主前进方向留出额外的视野
把时间往回推,早在1981年一款飞行射击游戏《防御者》进入了我们的视线,后来它也陆续出了一系列的游戏。其画面的特点在于使用了两个方向上的前置聚焦,而聚焦区域几乎都处于雷达图示的下方。《防御者》始终将聚焦点放在飞船的前端的某个点上,该点到飞船的距离大约是屏幕整体宽度的25%。这种摄像机系统在快节奏的游戏中非常好用,尤其是当大部分敌人都从主角正面来袭时尤为明显。
双侧前置聚焦 (dual-forward-focus)- 角色变换朝向时,摄像机也变换至对应侧的前置聚焦点,以给角色提供足够的前方视野
1990年世嘉发行的《龙凤神偷》是一款非常棒的横板偷盗街机游戏。利用分屏功能,非常独特的设计了双人合作模式,因为游戏就是兄弟二人协力完成各种惊天劫案。
当然,对于各种盗窃场景来讲,给玩家前方一个良好的视野肯定是必须的,所以游戏也使用了双向前置聚焦的设计。而且还让摄像机在方向切换时,有个缓慢加速后再追上新对焦点的过程,让整体移动效果在保证足够视野的条件下仍然非常顺滑。相机切换时的移动速度大约是玩家的两倍,而且它只有在玩家移动的时候才会移动。可以仔细地观察下图的红色角色。
双侧前置聚焦 (dual-forward-focus)- 聚焦基于玩家的行走速度进行变换
接下来要说的摄像机设计来自于《超级马里奥世界》,应该说是我最喜欢的2D摄像机设计之一了,以一种压倒性的聚焦模式变换让玩家关注到游戏中需要注意的细节。
区域性锚点(region-based-anchors)
平台吸附 (platform-snapping)- 摄像机只有在玩家落于某个平台的表面上时才开始吸附
摄像机窗体(纵向) (camera-window* vert.)- 视情况生效
双侧前置聚焦 (dual-forward-focus)- 阈值触发器
手动操控(横向)(manual-contro* horiz.)- 使用控制器可以自主选择额外的摇摄位置
另外,游戏设计了两个锚点,允许玩家无论朝哪个方向移动都能有足够宽的视野。甚至当玩家开始往反方向移动时(《超级马里奥世界》中经场需要这样),摄像机仍然根据之前移动方向的聚焦模式而暂时保持静止(译者注:因为根据窗体摄像机原理,当时玩家没有走到对应侧窗体边缘,所以无需推进摄像机,这里大家可以仔细的看看动图,非常精妙),直到玩家碰到了另一个预设好的阈值边界,摄像机这时才将聚焦点调整到反方向的锚点上。这个设计在《超级马里奥世界》这种需要时不时向左或右转身走两步但又不需要持续朝反方向移动的情况下非常好用。
回来看近些年的游戏,《洞窟物语》也使用了双侧前置聚焦,变换时根据人物移动的速度以较为缓慢的速度的从一侧对焦点挪到另一测,和之前《龙凤神偷》的例子有些相似,只是在这个例子中摄像机是始终朝新的目标锚点移动的,只是会在玩家移动时加速。
位置锁定(纵向) (position-locking vert.)
双侧前置聚焦 (dual-forward-focus)
模拟物理缓冲 (physics-smoothing)
手动操控(manual-control)- 使用控制器可以自主选择额外的摇摄位置
早期EpicGames的《爵士兔子2》也是一款出色的平台跳跃游戏。它有一个非常独特的设计元素:根据玩家的控制输入调整摄像机横向或纵向地远离玩家所操控的角色。
它非常完美的诠释了我提出的“目标聚焦”设计,玩家移动是因为想要到某个地方或接近某个目标位置,因此玩家的操作指令信息对摄像机也是一样的,能让摄像机知道应该朝哪个方向移动。因为当你朝左走时,你肯定是想要看左边的东西。而当控制器上按键都被释放时,聚焦点就会移回玩家本身。
线性插值缓冲(纵向) (lerp-smoothing vert.)
目标聚焦 (target-focus)- 相机根据控制器输入信息给出更多的目标方向的视野
由手柄摇杆或鼠标位置将聚焦目标点移向要去的方向
手动操控( manual-control) - 可操控的纵向视野,可视为目标聚焦的延申
目标聚焦的设计可以从字面上解读,衍生成画面表现上的视觉目标,像很多靠鼠标操作的游戏那样。在《快照》中,可以使用鼠标去截取场景中的某些物品再把他们放到其他位置来完成谜题。而这里的鼠标某种意义上就是你当前想要关注的点,是一种视觉的延伸,而相机则聚焦在鼠标和玩家间的中点位置。
目标聚焦 (target-focus)- 玩家与鼠标位置间的中点
线性插值缓冲 (lerp-smoothing)
《易位者》有很多高级技巧,后面会细说。现在先集中讨论目标聚焦,克隆仪瞄准目标的过程某种程度上相当于玩家视线的具象表现,并且也做了非常好的视觉追踪聚焦。当游戏中有众多独立瞄准性能的武器或装置的情况下这种设计非常好用。玩家可以一边向后退,一边向前看,继续瞄着他们想瞄的位置。是一种非常多变的摄像机行为模式,不过也需要有额外的控制系统来调节摄像机。
目标聚焦 (target-focus)
模拟物理缓冲 (physics-smoothing)
区域性锚点(region-based-anchors)
关键信息聚焦(cue-focus)
电影化路径(cinematic-paths)
《雷堤康的秘密》也有很多有意思的摄像机设计,而基本构图方面,它使用了预估聚焦,根据玩家当前所在的位置和当前移动速度进行简单的推论计算得出相机聚焦位置。
需要注意的是,这个方法在平台跳跃游戏中表现并不好,尤其是纵向。因为角色的跳跃和落地都很难做好预估。
预估聚焦 (projected-focus)- 相机预估(推断)的玩家位置并进行追踪
模拟物理缓冲 (physics-smoothing)
关键信息聚焦(cue-focus)- 根据引力场调整位置和放大倍数
动作聚焦(gesture-focus)- 部分动作会影响相机行为,例如:飞行时镜头会拉远
电影化路径(cinematic-paths)
《天空奇兵》吸收了多种优秀的设计并且有非常有趣的组合:飞机当前瞄准的位置(目标聚焦),和飞机实际飞行的方向(预估聚焦),其他的关键元素如水面,飞空战舰,空中子弹等等都会在靠近机体时拉动对焦点(关键信息聚焦)。
目标聚焦/预估聚焦 (target-focus / projected-focus)
模拟物理缓冲 (physics-smoothing)
关键信息聚焦(cue-focus)
我们已经讨论了如何将视角和玩家操控重新塑造为准确的视觉反馈,换句话说,给他们看他们自己想看的信息(互动感,可以参考前文的图例)。我们也介绍了很多种可以让视角变得更加舒适,有效的方法(舒适度)。
但与此同时,作为游戏的制作人,我们肯定知道场景内有些东西是很需要玩家看到的,不管是为了承接游戏发展还是场景推进,甚至是剧情和叙事需要,我们都希望能将玩家的注意力放到那些重要的东西上。
《神奇小子》,另一款个人很喜欢的游戏,作为一款快节奏的平台跳跃游戏,只使用老式的单侧检测的摄像机窗体来保证镜头的前置聚焦。和《超级马里奥兄弟》不同,它并没有减缓摄像机加速度变化的加速区,但是它引入了一个很有趣的设计技巧,我个人称之为路径摄像机。摄像机将会摆放好位置,通过移动方向来暗示玩家将要出现的各种关卡挑战在何方。
路径摄像机 (camera-path)- 预设好的关卡推进路线
摄像机窗体 (camera-window)- 单侧检测
静态前置聚焦 (static-forward-focus)
PS和N64等等第五代的主机平台,有更好的硬件和性能提升,也开创了真正的3D游戏。而3D摄像机技术则是一个更加奇妙而复杂的课题了,但同时3D技术的支持也同样影响到了2D游戏的设计。设计师们可以使用诸如缩放,拼接,甚至是2D和3D相结合做出2.5D的游戏(游戏在2D平面上展开但实际上物体是处于一个游戏内的真实的3D空间中的)。
PS上的《风之克罗诺亚》就是这种类型的游戏。角色操控方式基本和2D游戏一样,但实际上游戏是在一个精心设计好的3D世界当中游玩的。克罗诺亚有个3D的路径摄像机,帮助指引玩家前进的方向并引导他们的注意力到主要玩法与叙事细节上。可以看到,路径摄像机可以在多个关卡中提供角色定位,画面拼接,镜头缩放的功能,并且也暗示了主角该往哪个方向走,以及何时该做跳跃等。
路径摄像机 (camera-path)- 路线提示。包含缩放和画面拼接功能。
摄像机窗体(纵向)(camera-window vert.)
线性插值缓冲(lerp-smoothing)
双侧前置聚焦(dual-forward-focus)
这种摄像机控制方式为游戏提供了一系列作用,在游戏中帮助玩家预判,或带给他们惊喜甚至是警示。像克罗诺亚游戏里那样,镜头拉远,Boss出来了,玩家立刻就知道接下来要干嘛了。
《大金刚国度》里的精妙设计后来也成为了平台跳跃游戏的设计标准之一:需要给关卡设计师一个可以根据每个独立关卡(或是同一关卡内的不同区域)内容设计出不同的摄像机运动行为模式的工具。需要快速,跑动通过的关卡区域需要一个偏前置的视野,同时可以牺牲掉玩家后方的视野。而一些需要探索的关卡区域则需要让画面两侧都留有足够的空间。
线性插值缓冲 (lerp-smoothing)
位置锁定(纵向) (position-locking vert.)
区域性锚点 (region-based-anchors)- 不同的区域(甚至是在一关内的不同区域)设置不同的锚点来帮助摄像机定位和聚焦
双侧前置聚焦 (dual-forward-focus)
就像我们在克罗诺亚中看到的那样,3D画面技术可以允许我们使用新的指引工具来展示环境布局,像镜头缩放和移动摄影就是其一。缩放本质上是调节摄像机的视野角参数(field-of-view angle,FOV),而移动摄影则有点像拍摄电影那样,让摄像机和被拍摄对象保持一定关系并向前推进或往回移动摄像机。两者都是为了重新调节画面结构,只是方式不同,移动摄影更有物理层面上变换的感觉。如果想了解更多关于缩放或移动摄影的知识,也可以去电影网站或资料库等地方再深入的学习一下。
看下《耀西故事》这个例子,整个场景的构图围绕耀西、Boss、柱子展开,将场景内所有需要玩家关注的元素都收进来了:所需攻击的目标和场景边缘。摄像机并不是简单的处于几个元素的位置中心,而是通过缩放(其实是一边推移镜头一边缩放的)来将此时需要关注的点告诉玩家。
缩放适配 (zoom-to-fit)- 调整缩放比例或通过前后移动镜头给几个关键要素一个近景
双侧前置聚焦(dual-forward-focus)
摄像机窗体(纵向)(camera-window vert.)
平台吸附(platform-snapping)
手动操控 (manual-control )
《疯狂扭曲的暗影星球》(译者注:下文简称为ITSP)也有个很强力的摄像机系统,融合了玩家的移动速度(预估聚焦),玩家的目标(目标聚焦),以及最重要的通过使用一个吸引场来帮助玩家将注意力逐渐移向画面之外的关键线索上。可以看看 ITSP的开发日志 来深入的学习一下他们摄像系统的杰出之处。 ITSP使用双环吸引场来暗示游戏中诸如存档点或敌人等游戏线索。处于外环时吸引场是渐渐地影响摄像机,使其不断的向线索靠近,并用加权平均来计算位置。当处于内环时,摄像机就完全忽略飞船的位置了,会死死的锁住对应的线索。不同的线索间有不同的环形场,彼此间也可以叠加,场与场之间也能够平滑变换。
其实想要吸引玩家注意到线索还是有很多种方法的,但如果玩法上有很多需要玩家注意到的元素的话,环形吸引场就是个非常强力的方法了。其实它也可以反过来用:把玩家的注意力转移走,把吸引场变成排斥场以使摄像机远离。当你想要让某些元素变得富有悬念或是隐藏起来时,也可以用这个方法。
Edmund McMillen和Tyler Glaiel在2008年推出了一款画面非常漂亮的Flash游戏《苍穹》,也使用了另外一种独特的靠近线索的方法:游戏将整个世界旋转起来,以指明玩家已经开始靠近某个星球,这时游戏也会给玩家传递出一种安全和被引领的感觉,因为这时只要向下移动就肯定能落地了。就像你真的在太空中飞翔而被某个星球的重力场捕捉了,感觉整个画面都开始逐渐旋转,朝向重力来源。
关键信息聚焦 (cue-focus)- 摄像机会因重力作用进行旋转变换
位置锁定 (position-locking)
线性插值缓冲 (lerp-smoothing)
如果想全面的讨论摄像机系统,那绝对不能落下《地狱边境》。通过操控画面的曝光度,拍摄位置和缩放大小,游戏真的营造出了一种独特的氛围。《地狱边境》中的每个区域都有自己的特点,调节锚点到屏幕上的某个点,并让某个物体利用摄像机给玩家暗示出关键信息,如下图所示,把注意力引导到敌人身上。
区域性锚点 (region-based-anchors)- 缩放,定位(以及曝光度)
位置锁定 (position-locking)- 每个区域都做相应变换
关键信息聚焦 (cue-focus)- 相关动作触发的关键信息线索,如:敌人的攻击等等
模拟物理缓冲 (physics-smoothing)
另一个在《几何战争》中使用的简单又有效的方法,区域聚焦。将玩家飞船的位置和活动区域中心相结合。换句话说,由于结合了飞船的位置,画面始终处于运动的状态,方向总是朝着飞船,而速度则是飞船的一半。因此玩家始终可以通过观测距离中心的偏移量来判断自己当前所处的大致位置。这种设计对于在封闭或有限空间内展开的游戏很好用,尤其是当各种威胁都有往中心区域聚集趋势的时候更好用。
区域聚焦 (region-focus)- 聚焦至区域锚点(例如,角色活动空间的中心点)。
注:摄像机的位置是飞船和区域中心点间的中点
《滴滴动力》是一款经典解谜游戏,玩家需要探索多种不同元素来解开游戏中各种基于液体设计的谜题,这使得摄像机拍摄区域变得更大了。和《几何战争》类似,Strange Loop更加强调区域性,在玩家解密的时候几乎将摄像机保持固定。同样是老式以房间为维度的解谜游戏,《滴滴动力》对于房间上的想法更加多变,在大小和特点上都有变化,算是一种现代化的表现手法。
区域对焦 (region-focus)- 相机的位置几乎固定在区域的锚点上,而在玩家移动时会有略微的平移
区域性锚点 (region-based-anchors)- 不同的区域有着不同的锚点,位置和缩放系数也不同
关键信息聚焦 (cue-focus)
模拟物理缓冲 (physics-smoothing)
电影化路径(cinematic-paths)
《滴滴动力》还有个很聪明的设计,即使摄像机已经被大致固定在一个区域内了,仍然会追踪玩家位置并作出非常小幅度的位移。这种设计使得其即使在一个区域内固定着,仍会有非常好的操控反馈。另外,当玩家解决了谜题离开所在区域时,因为摄像机已经在做小幅度的位移了,所以之后加速移动到下一个区域是也能够很好的减小突兀感。
还有一种通过摄像机来吸引玩家注意力并带有戏剧化效果的方法,由玩家的行为出发预设好的摄像机行为动作。《我是东巴!》是个很有趣的游戏,应该是第一批2.5D的PS游戏。通常情况下摄像机都是保持一个垂直角度来拍摄画面的,而在玩家做出诸如攀爬,或移动至不同深度的平台等部分动作时,摄像机会调整其拍摄角度。在玩家做出动作之后摄像机的变化能给玩家一种非常独特的操控反馈感,同时也能给玩家提供更好的视野。
动作聚焦 (gesture-focus)- 在游戏过程种触发摄像机动作。摄像机变换自身位置来反映出动作和状态变化。
双侧前置聚焦(横向) (dual-forward-focus horiz.)
平台吸附 (platform-snapping)
摄像机窗体(纵向) (camera-window vert.)
在游戏过程中触发摄像机动作的可以有多种运用方式——运动可以有不同的模式和轴向,回应动作变化或提前预知动作做出变化等等,可以灵活运用。当摄像机根据玩家动作和既定的摄像机动作之间建立好对应关系比做出变化时,我相信我们肯定还在死死的抓着平台表面不放呢。
这还有另一个例子,可以看出动作聚焦的可活用性,《阿兹特克人》即将发售的游戏。它是用了不一样的动作:缩放(拉近和拉远)和画面拼接,给打斗事件中的近距离交战和致命一击一个具有戏剧化效果的特写。
动作聚焦 (gesture-focus)- 通过游戏中的不同动作来触发缩放(拉近或拉远)和画面拼接
位置锁定(纵向) (position-locking vert.)
线性插值缓冲 (lerp-smoothing)
缩放适配 (zoom-to-fit)
译者注:《阿兹特克人》已于2015年发售,故对原文进行修正
在世嘉经典的清版格斗游戏《怒之铁拳》当中,摄像机大部分时间都是根据单侧摄像机窗体来移动的,通常清版格斗游戏都是这种设计。然而经场会有将摄像机直接挪出屏幕外拍摄(或者是到一个远离玩家的位置)的操作,来拍摄出额外的叙事或是其他戏剧化内容。
电影化路径 (cinematic-paths)- 摄像机跳出通常运行时的拍摄模式,转拍屏幕外的叙事内容
区域性锚点 (region-based-anchors)
摄像机窗体 (camera-window)- 标准清版游戏设计:单侧摄像机窗体,两次战斗的间隔中启用
也是个很强大的系统,允许设计者做出一个电影化的间歇而又不打断整体游戏过程,也可以叫不怎么分割场面的过场动画。
电影化路径在Behemoth的《外形原始人》和《城堡破坏者》中都有很好的应用场景。大部分案例中都是暂时将正在进行的游戏过程挂起,这时摄像机移动到某个Boss或者是故事元素上进行拍摄。这种设计主要有两个目的:给出叙事内容并且对之后的玩法进行引导暗示,而不在玩家操控的过程中分离注意力。
区域性锚点 (region-based-anchors)
电影化路径 (cinematic-paths)
摄像机窗体 (camera-window)- 标准清版游戏设计:单侧摄像机窗体,两次战斗的间隔中启用
就像上文讨论的那样,单个目标的聚焦就已经有相当多的难点要解决了。但如果是多人游戏或多个目标需要考虑时我们该怎么办呢?
《圣铠传说》作为一款踢门团式的地下城割草游戏,它使用了当时相当先进的技术和设计。由于屏幕中有多个玩家,所以将摄像机简单的锁定在各玩家所在位置的均值上。而当玩家间的距离过远抵达到屏幕边缘时,玩家的行动便会受限,无法继续前进。事实上,如果玩的过程中有人要暂时要离开游戏,那游戏中他对应的角色只能留在原地不动,这时候所有人都会因为有个人拖屏导致所有人都没法继续前进了。
位置均值 (position-averaging)- 聚焦点放在所有目标位置的平均值上
《侍铳》也用了类似的方法,但为了突显游戏紧张胡闹的氛围故意把摄像机推出画面边缘。并且还伺机使用画面定格和渐隐等方法进一步加强效果。至于摄像机,由于玩家频繁的重生或瞬移,位置平均值会瞬间变化,就给人一种频繁变换聚焦点的感觉。游戏甚至还关闭了边缘吸附,允许摄像机越过关卡边界进行拍摄。与这款游戏的游戏氛围非常匹配,但观看画面时会有些不适,尤其是对旁观者而言。当玩家控制自己的角色时,也经常会走出到屏幕外,而游戏也不会用屏幕边框限制移动。
位置均值 (position-averaging)
线性插值缓冲 (lerp-smoothing)
边界限位 (edge-snapping) - 为了实现紧张胡闹的氛围,边界限位基本上关掉了,所以屏幕基本上时时刻刻都在动
在早期甚至是之后整个《街头霸王》系列中也能找到类似的例子。游戏使用横向的摄像机窗体使得大部分时间摄像机都在某个区域下相对固定。而和其他摄像机窗体一样,当玩家碰到窗体边缘时,窗体会随着玩家一同移动。而窗体移动时会连带着另一位玩家一起移动,使所有角色都保持在画面内。只有当双方(摄像机与玩家之间或玩家与玩家之间)都试图往反方向推动窗体时摄像机才会被卡住。
摄像机窗体(横向) (camera-window horiz.)- 触碰窗体边缘时拉动摄像机,并有可能拉动另一名角色一起移动
还有另一个重新定义了多人游戏的,《任天堂明星大乱斗》系列。即使系列中最早一作也有非常出色的摄像机系统。大乱斗通过在场所有玩家位置均值来设定自身位置,并随着角色间距离的需要,及时拉远镜头。
缩放适配 (zoom-to-fit)
位置均值 (position-averaging)- 严格意义上讲是看起来在位置均值上
这种系统设计很好用,而在《火箭,火箭,火箭》中承担着两个作用:让每个人都在画面中,引导玩家向中心区域移动,玩家将很难避免近距离的冲突作战。
缩放适配 (zoom-to-fit)
位置均值 (position-averaging)
就像上文已经讨论过的《不再孤独》中使用的技术,你可以把各种角色位置考虑到一起再算均值,单人或者多人游戏都可以,甚至是在计算时给不同角色分配不同的权重。
模拟物理缓冲 (physics-smoothing)
位置均值 (position-averaging)
电影化路径 (cinematic-paths)
区域性锚点 (region-based-anchors)
关键信息聚焦 (cue-focus)
《洞穴探险》从另一个角度解决了多角色间位置冲突的问题,每次摄像机只聚焦在其中一位玩家身上。如果该角色死亡,火炬(白旗)就会传递给另一个玩家。而这种摄像机也引出了另一个玩法元素,当有玩家处于屏幕外时就会开始死亡倒计时。
位置锁定 (position-locking)
线性插值缓冲 (lerp-smoothing)
手动操控 (manual-control)- 可手动朝角色上方或下方进行纵向摇摄
有些情况下,设计师可能需要根据玩家的选择提供额外的视觉信息。一种方法是将摄像机与玩家操作相绑定。
再次来说《超级马里奥世界》,第一个加入额外摄像机操控的游戏。两个肩键可以将摄像机推向不同的方向。其实这是挺聪明的点子,但总有人说它没用,而且大部分玩家最开始玩的时候都用不到它。
区域性锚点 (region-based-anchors)
平台吸附 (platform-snapping)
摄像机窗体(纵向) (camera-window vert.)- 视情况生效
双侧前置聚焦 (dual-forward-focus)- 阈值触发器
手动操控(横向) (manual-contro* horiz.)- 使用控制器可以自主选择额外的摇摄位置
其实《超级马里奥世界》摄像机额外提供的手动操控只是没那么自然、直观。因为普通行走的操控和肩键没什么直接联系。
另一个好的案例,来自于《星噬》,手动操控时非常直观。和平时屏幕边上显性的滚动条不同,《星噬》可以更加隐性的调节摄像机。使用鼠标滚轮或者是在平板上双指收缩控制就能够调节摄像机的缩放大小,将镜头控制和操作方法更明显的联系起来了。
位置锁定 (position-locking)
手动操控 (manual-control)- 使用鼠标滚轮或多指收缩手势调节缩放
前文提到的《爵士兔子2》,纵向视野上非常完美的根据玩家对角色的操控进行额外的摇摄(译者注:持续按住上键或下键),这也让摄像机行为变得更加清晰,可预测。
线性插值缓冲(纵向) (lerp-smoothing vert.)
目标聚焦 (target-focus)- 相机根据控制器输入信息给出更多的目标方向的视野
由手柄摇杆或鼠标位置将聚焦目标点移向要去的方向
手动操控(manual-control) - 可操控的纵向视野,可视为目标聚焦的延申
如果需要加入额外手动操控,那最好使用已有的操控,尤其是正在操控中的按键来触发,像《洞穴探险》中如果我们操作角色爬下或者是向上看时,摄像机也会自动聚焦到相应的方向上。
位置锁定 (position-locking)
线性插值缓冲 (lerp-smoothing)
手动操控 (manual-control) - 可手动朝角色上方或下方进行纵向摇摄
这份研究报告看到这,已经学习了如何正确清晰地制作摄像机控制系统,使玩家同屏幕背后的虚拟世界建立多种感官上的联系。而换个角度:如果我们切断了相机与各种控制间所有的联系,例如使用屏幕震动,同样能有另一种戏剧效果,而且比玩家自己操控所得到的刺激更加强烈。
我在研究中试图找到最早使用屏幕震动的游戏。最后发现居然还是宫本茂的作品,不过这也没什么可惊讶的了,1983年的《马里奥兄弟》。可能是技术或者是时间的限制,只有在部分版本的游戏中有屏幕震动。
屏幕震动(和画面定格,都有相似的作用)已经有数不清的游戏在用了,尤其是最近几年在Vlambeer工作室的作品中几乎都有出现。另外有个由Vlambeer的设计师Jan Willem Nijman的演讲,很详细的讲了 游戏中屏幕震动的设计 。 自定义相机(Custom-Made Camera)
把各种技巧放一块:当个裁缝,给你的游戏缝个摄像机吧
你肯定要为你游戏中的各种细节投入不同程度的精力。而就像构成游戏的其他元素一样,你也同样应该重视摄像机系统。在你随便选择个默认的目标把摄像机锁定在上面之前,请你多想一想,如何能让你的摄像机系统富有特点的和你的游戏相结合。
我自己做游戏的时候设立了几条很有用的基础规则,其实也是这篇研究文章的行文思路。
显然,不能说摄像机正常能运行就完事了。还要与你游戏中其他的方面的设计,美术,音效,等等相匹配。
先举一个将摄像机与游戏过程相结合的例子。Taito的《影子传说》,第一批有双轴向的平台跳跃游戏之一。(还有个趣事:这是第一个,也是唯一的一个,正常过关过程是从右往左的游戏)。注意看它摄像机窗体的横向宽度。游戏中有很多战斗都在树上展开,而窗体的横向宽度刚好和树的宽度一样,这样在战斗时,虽然角色频繁的改变方向而摄像机仍然能保持相对稳定的状态。
位置锁定(纵向) (position-locking vert.)
摄像机窗体(横向) (camera-window horiz.)- 窗体的大小是基于树的宽度设计的
另一个把现有系统改装变成你自己的设计思路来自于《忍》。由于游戏允许的跳跃高度很高,所以有个较高的摄像机窗体,差不多是整个屏幕的高度了。为了避免角色偏离画面中心,一个缓慢的位置捕捉就出现了。
位置捕捉(纵向) (position-snapping vert.)
摄像机窗体(纵向) (camera-window vert.)
位置锁定(横向) (position-locking horiz.)
静态前置聚焦 (static-forward-focus)
《刺猬索尼克》是一款多轴高速移动的平台跳跃游戏。较窄的窗体设计是为了保证索尼克始终能处于屏幕中央,因为玩家必须要有清晰的视野,看到前方有什么东西正在快速接近。窗体的高度略微比小跳的位移稍高一点。而这个功能在索尼克处于平台上时暂时无效,因为还引入了平台吸附,来保证索尼克在平台上移动时纵向位置齐平。
以较高的速度碰到窗体上,尤其是循环移动,或者是在重力作用下朝着窗体底部下落时,会让画面看起来有点抖动。而让窗体较矮较窄可以减小这种影响,因为在静止时,在窗体的有限空间内角色很难通过有限的加速度达到很高的速度。
平台吸附 (platform-snapping)
摄像机窗体 (camera-window)
静态前置聚焦 (static-forward-focus)
手动操控 (manual-control)
如果需要较宽的前方视野,而角色的移动方向有没有什么限制的时候,双侧前置聚焦就是理想的选择了。如果想要切换视野聚焦的锚点也有很多种方法。《洞窟物语》在这点上做的很棒,相机切换至另一侧的聚焦锚点的速度是根据玩家的移动速度进行调整的(如,把聚焦的速度和玩家当前的移动速度相叠加)。而龙凤神偷则是只有在玩家移动时摄像机才继续向锚点移动,这在偷盗类型的游戏中很合适,但是对于有成堆敌人的平台跳跃游戏《洞窟物语》来讲就没必要这么做了。
位置锁定(纵向) (position-locking vert.)
双侧前置聚焦 (dual-forward-focus)
模拟物理缓冲 (physics-smoothing)
手动操控 (manual-control)- 使用控制器可以自主选择额外的摇摄位置
《菲斯》没有成群的敌人朝你冲过来,所以只设计一个基本的摄像机窗体就够了。但是《菲斯》的设计师很聪明的重塑了这个经典技法,以配合游戏独特的玩法。当然你可以争论说,在拐点上进行空间变换没什么稀奇的,但其实你面前的画面不是我要讨论的重点,后方你看不见的摄像机才是。更进一步讲,在空间变换的时候,相机是重新调整聚焦点并保持好人物到窗体的距离,以表现空间变换。
摄像机窗体(横向) (camera-window horiz.)- 空间变换时也持续作用
位置锁定(纵向) (position-locking vert.)
线性插值缓冲 (lerp-smoothing)
区域性锚点 (region-based-anchors)
手动操控 (manual-control)- 用右摇杆可以进行手动摇摄
《滴滴动力》中的摄像机系统是房间式解谜游戏的理想处理办法。通过区域对焦调节画面构图(和房间展示)摄像机将解谜需要的所有要素清晰地展示给玩家。而基于玩家的位移也提供了更好的操控反馈,让区域间的切换变得更加平滑,总的来说将画面展示和手感反馈进行了很好的结合。
区域对焦 (region-focus)- 相机的位置几乎固定在区域的锚点上,而在玩家移动时会有略微的平移
区域性锚点 (region-based-anchors)- 不同的区域有着不同的锚点,位置和缩放系数也不同
关键信息聚焦 (cue-focus)
模拟物理缓冲 (physics-smoothing)
电影化路径 (cinematic-paths)
之前提到的《易位者》,通过人工设计好的电影化路径,来讲述精心编排的故事,并塑造出独特的氛围。这样使玩家始终处于游戏当中,不会因为表演环节打破玩家的方向感和目标感,而过场动画就会经常让玩家忘掉这些。
目标聚焦 (target-focus)
模拟物理缓冲 (physics-smoothing)
区域性锚点 (region-based-anchors)
关键信息聚焦 (cue-focus)
电影化路径 (cinematic-paths)
《蘑菇 11》中的摄像机系统是基于每个区域而仔细设计出对应的摄像机移动方向。每个关卡都包含了数个不同的区域,而每个区域设定好矩形框体以保证摄像机的拍摄位置。而框体也包含对应的缩放控制(FOV参数)。
区域性锚点 (region-based-anchors)- 为每个区域预设好矩形拍摄区以及缩放参数
位置均值 (position-averaging)
静态前置聚焦 (static-forward-focus)
关键信息聚焦 (cue-focus)- 只在部分适用的区域启用
预估聚焦 (projected-focus)
模拟物理缓冲 (physics-smoothing)- 基于移动速度设计的缓冲机制
译者注:此处标注的设计方法《蘑菇 11》都有用到,而下文标为粗体的是仅与对应段落相关的方法,未全部注明。与前文不同,需注意。另外由于翻译本文时游戏已发售,故插图所配的发售日期也修改为实际的发售日期
每个拍摄区都细致的设定好优先级序列,当前蘑菇块所在的有着最高优先级的拍摄区获得相机的控制权。我不对蘑菇块做数量判断,也就是说即使只有一片细胞块到了更高优先级的区域,相机也会移动到该区域进行相应的变换。
区域性锚点 (region-based-anchors)- 为每个区域预设好矩形拍摄区以及缩放参数
蘑菇细胞只要碰到摄像机的边界就会自动销毁,使这种摄像机控制精度更高。而注意观察上图,画面给玩家解谜留了足够的空间,而紧接着由于有蘑菇块到了新的区域摄像机也随之移动,在完成这一系列动作前没有任何蘑菇块因到了屏幕边界而被消除。
拍摄区域可以分类两大类:面向均值,面向进程。区域的类型决定了聚焦的位置。按照定义好的取聚焦点的规则,摄像机就会在限定的区域内,朝着计算出的聚焦点移动了。
面向均值区域(Average-Oriented Region)
部分区域使用所有蘑菇块位置的均值来聚焦,所以摄像机会非常自然的靠近大块的蘑菇块。某些区域要求玩家同时处理多个蘑菇块而没有明确的目标指向性,这时均值方法就会比较好用。利用面向均值区域的特性可以很方便的限定解谜的区域,可以让蘑菇块都停留在某个区域内(否则就会撞到画面边界被消灭)。
面向进程区域(Progression-Oriented Region)
某些区域本身就很线性化,并且需要关注蘑菇块在线性流程中的进度。在某一时刻,最靠近线性流程前端的(根据区域中预设好的线性进程路线来计算)蘑菇块决定当前相机的位置,而被落在后方的蘑菇块将被忽略。另外,通过增加静态前置聚焦的距离参数值,可让摄像机与区域的玩法更匹配。
静态前置聚焦 (static-forward-focus)
由于上文两种区域的特性与关键信息聚焦的模式相悖。所以在调节区域控制机制的同时,可以使游戏中的某些物体或生物作能够吸引摄像机移动,为它们添加预设好的或是会动态变化的吸引系数。就像下图所示的那样,显然Boss战就是个好的例子。
关键信息聚焦 (cue-focus)- 只在部分适用的区域启用
将预估聚焦模式和模拟物理缓冲相结合来平滑摄像机的移动。以蘑菇块的移动速度作为平滑参数:如果玩家进行快速移动,摄像机能够精确(波浪式的)的移动起来,如果玩家正在缓慢的修正蘑菇形状,摄像机也能够缓慢地在小幅度变化的聚焦位置上巡航拍摄。
由于游戏中角色没有跳跃操作,所以直接用预估聚焦效果就很好。把摄像机位置聚焦在推算出的蘑菇块(或所有蘑菇块位置的平均值)即将移动到的位置上,就能有更准确更加可预测的摄像机行为模式了。
预估聚焦 (projected-focus)
模拟物理缓冲 (physics-smoothing)- 基于移动速度设计的缓冲机制
各种摄像机行为模式都定义好,这样即使有多个在速度、形状都在进行动态变化的蘑菇块,甚至是快速地跨区域移动,摄像机系统仍能够稳定运行。
区域性锚点 (region-based-anchors)- 为每个区域预设好矩形拍摄区以及缩放参数
位置均值 (position-averaging)
静态前置聚焦 (static-forward-focus)
关键信息聚焦 (cue-focus)- 只在部分适用的区域启用
预估聚焦 (projected-focus)
模拟物理缓冲 (physics-smoothing)- 基于移动速度设计的缓冲机制
自动滚动(auto-scroll) 玩家对画面滚动几乎没有控制权
路径摄像机(camera-path) 预设好的关卡推进路线
摄像机窗体(camera-window) 当玩家碰到窗体边界时推动摄像机
电影化路径(cinematic-paths) 摄像机暂停正常拍摄功能转去拍摄当前画面外的某个用于叙事演出的物体
关键信息聚焦(cue-focus) 聚焦会受到游戏世界中关键信息要素的影响(如受到吸引场影响)
双侧前置聚焦(dual-forward-focus) 角色变换朝向时,摄像机也变换至对应侧的前置聚焦点,以给角色提供足够的前方视野
边界限位(edge-snapping) 设定一个摄像机调整位置的边界限制
动作聚焦(gesture-focus) 游戏过程中触发摄像机动作
线性插值缓冲(lerp-smoothing) 持续通过线性插值来减小摄像机与玩家角色间的距离
模拟物理缓冲(physics-smoothing) 摄像机增加物理特性,持续靠近追踪目标
平台吸附(platform-snapping) 摄像机只有在玩家落于某个平台的表面上时才开始吸附
位置均值(position-averaging) 聚焦至所有相关物体的位置平均值上
位置锁定(position-locking) 摄像机锁定在角色身上
位置吸附(position-snapping) 持续作用,减少摄像机在重新聚焦玩家时所造成的画面抖动
预估聚焦(projected-focus) 相机预估(推断)的玩家位置并进行追踪
区域性锚点(region-based-anchors) 不同的区域(甚至是在一关内的不同区域)设置不同的锚点来帮助摄像机定位和聚焦
区域聚焦(region-focus) 结合玩家的位置,聚焦至区域锚点
区外加速(speedup-pull-zone) 当玩家穿过摄像机窗体时摄像机开始加速移动以追上玩家
区内加速(speedup-push-zone) 角色处于加速区内时,相机会逐渐加速直到追上玩家的速度
静态前置聚焦(static-forward-focus) 给主前进方向留出额外的视野
目标聚焦(target-focus) 相机根据控制器输入信息给出更多的目标方向的视野
缩放适配(zoom-to-fit) 调整缩放比例或通过前后移动镜头给几个关键要素一个近景
感谢各游戏社区为这份研究所提供的帮助,另外特别感谢 NYU游戏中心 的支持。
评论区
共 20 条评论热门最新