很多游戏都有远超过我们屏幕可显示范围的场景尺寸,为了能让我们使用有限的屏幕去了解这些更大的场景,我们需要移动摄像机的位置,这就形成了卷轴(Scrolling)。下面的内容就整理了各种摄像机的使用方式。
锁定/Follow Action
在早期游戏里,将镜头完全锁定在主角身上并试图将主角保持在屏幕中央的这种镜头方式可以被称为“位置锁定”镜头。
Kung-Fu Master,1984 位置锁定-边缘捕捉(边缘捕捉太过于常见,基本出现在所有的游戏里,后面就不再重复提到它了) |
另外我们可以发现当角色来到一个场景的边缘时,将镜头的位置固定在了和场景边缘一定距离的某个位置上,不再跟随角色。
很多现代的游戏也在使用这种简单的镜头语言,比如《泰拉利亚》。这时镜头不但在水平方向、在垂直方向也将角色固定在了屏幕的正中央。将镜头拉得很远(或是说通过缩放让角色看起来很小),这种镜头仍然提供了不少的周围环境的信息,这对于一个以探索为主要玩法的游戏来说很重要。
Terraria,2011 位置锁定 |
限制的镜头(窗口镜头)/Curb Camera
早在80年代的时候,游戏设计还受到很多现已完全不存在的问题限制——比如过于频繁的镜头运动会使cpu的负担加重而让游戏变卡这样的问题。所以在角色能够跳跃的时候,游戏设计师需要限制游戏的镜头移动。
角色在一个限定的范围内移动并不会使镜头移动,而每当角色来到这个镜头限定的边缘时,镜头会被朝角色移动的方向推动过去,这可以被称为一个“窗口镜头”。
Jump Bug,1981 窗口镜头 |
这种是影响了很多后期游戏的镜头语言的一个设计。很多新的游戏也在使用这样的镜头语言,或是混合使用:在Fez里,角色水平的移动会受到一个窗口镜头的影响,而在垂直方向是使用了一个线性插值(lerp)的方式让镜头比较平滑地跟随了角色。
Fez,2012 窗口镜头(水平) 位置锁定(垂直) *线性插值 |
但是它也存在着一定的问题:玩家获取镜头边缘之外的信息的能力受到了限制,如果敌人从头顶上过来,就会被打个措手不及。
跟随/Snapping
虽然设计师们想到了窗口镜头这样的可以限制镜头频繁移动的方法,但在某些游戏里(比如前面提到的Jump Bug),角色会总是徘徊在屏幕的边缘,这样的感觉并不好。后来设计师们想到了新的解决方案——一种跟随镜头的变体。
Shinobi,1987 位置跟随(垂直) 窗口镜头(垂直) 位置锁定(水平) |
在Shinobi这款游戏里,角色是一名弹跳能力高超的忍者,这意味着游戏的镜头会更关心垂直方向的移动。因为镜头很近,所以窗口镜头非常在每次角色跳跃时都会被推动,之后镜头会在垂直方向匀速地移动来将角色再一次地保持在垂直的中间位置。设想一下如果没有这个镜头移动,玩家将经常被限制在屏幕的顶部范围里,无法看清头上的平台和敌人,这显然是很糟糕的体验。
在超级马里奥兄弟里,设计者引入了一个基于平台的镜头跟随方式。角色不会在跳跃的同时马上推动镜头的移动,而是在降落到一个平台上之后才将镜头推动过去对准这个平台。这种镜头技巧在很多平台游戏里都被大量使用,它可以使玩家的跳跃更加平滑,操作更加精准,Journey的设计师在一次GDC的分享上也提到了这种镜头的重要性:https://www.youtube.com/watch?v=C7307qRmlMI&t=21s。
Super Mario World, 1990 平台跟随 窗口镜头(垂直) |
雷曼的初代作品里也可以看到一样的镜头设计。
Rayman,1995 平台跟随 窗口镜头(垂直) |
很多新游戏里都能看到这样的设计。在Awesomenaut里,有一个使用喷漆背包的角色。这里有一个问题,大家觉得在一个可以浮空的角色身上使用平台跟随镜头是不是个好主意呢?
Awesomenaut,2012 平台跟随 窗口镜头(垂直) 位置锁定(水平) |
平滑/Smooth
当角色的移动加速度被引入时,如果镜头的速度、方向频繁地产生极端的变化,玩家会感到不适,设计者们需要考虑这些问题,并重新设计他们游戏的镜头语言。
超级马里奥兄弟是一个伟大的游戏,这不仅在于它巧妙的游戏机制和关卡设计,它在镜头的使用上的很多难以察觉的细微技巧将这个游戏带到了更高的高度。
大家都玩过超级马里奥兄弟。你可以加速跑——你的角色会逐渐加速前进——在镜头能够跟随你的情况下,这不算是很严重的问题,因为背景的移动并不是直接达到最高速度的,变化不会那么剧烈。但是这个游戏有另外一个设计:你的角色只能朝着一个方向移动,而试图后退时镜头不会朝后方推动。这使得玩家可以退后到屏幕左侧并加速冲刺,那么当角色达到窗口镜头边缘推动镜头时,它将以最大速度移动——这会让背景的变化非常剧烈,从而让玩家感到不适。
Super Mario Bros,1985 加速区镜头推动 窗口镜头 |
超级马里奥兄弟很天才地设计了一个“加速区”,这块区域是从屏幕中央向左大约1/8开始,到屏幕中央的范围,当角色处于加速区且正在向前移动时,镜头就已经开始逐渐加速跟随角色,而不是等到角色到了窗口边缘时才开始移动。这极大地平滑了整体镜头的运动效果。
银河战士,这个另一个时代经典,创造了一种新颖的镜头平滑方式。角色在移动中可以超过镜头限制范围,而超过的范围时由角色在超过的一瞬间的速度决定的,随后,镜头跟随到新的位置上。这也实现了一种很不错的平滑效果。
Metroid,1986 加速区镜头拉动 窗口镜头 |
Donkey Kong Country所采用的线性插值平滑实现了很好的镜头效果,即使用线性插值持续地减少镜头和它所跟随的角色之间的距离来实现的平滑效果。
Donkey Kong Country,1994 位置锁定(垂直) 线性插值平滑 |
Super Meat Boy也使用了这样的镜头行为。
Super Meat Boy,2010 位置锁定 线性插值平滑 |
有些游戏会赋予摄像机一些物理特性,让它受到速度、惯性等影响来跟随目标。这样实现的平滑效果更加自然。
Never Alone,2014 物理平滑 |
画框/Framing
很多时候我们需要通过将角色至于一个合理的位置来使玩家可以清楚地了解角色和其他场景、敌人之间的位置关系。如何做到这一点就需要运用一些画框的技巧。
在Pac-Land里,屏幕的中央不是角色,而是比角色靠前一些的位置。因为玩家的主要目标是向前移动,这样的镜头不但潜在地提醒了玩家这一点,还能给出更多关于前方的信息。
Pac-Land,1984 位置锁定 靠前的单方向焦点 |
在Defender里,镜头有左右侧两个方向的焦点。当角色朝某一个方向移动时,镜头会将焦点推动到角色移动方向大约1/4个屏幕的距离,使角色最终停留在屏幕左侧或右侧的1/4处。这对于一个快节奏的射击游戏来说是一个很不错的镜头语言,它让玩家把注意力放在移动方向的敌人身上。
Defender,1981 双方向焦点 |
这里需要再次提到超级马里奥兄弟的镜头设计。不同于初代作品,超任上的这代超级马里奥兄弟需要玩家频繁地朝左右两个方向移动,所以他们这样设计了游戏的镜头:两个实线是角色的位置锚点,角色在移动中基本总是处于这两个位置中的一个,并像刚才提到的游戏一样,将焦点向角色的朝向推前一点。但角色在转身时,焦点并不会马上切换成另一侧,而是需要角色移动达到虚线处的这个临界线时,镜头才会开始运动,前往新的焦点。
Super Mario World,1990 平台跟随 窗口镜头(垂直) 双方向焦点(受阈值触发) |
下面这个游戏的做法和超级马里奥兄弟稍微不同。角色也仍然在两个方向有两个锚点,但是在玩家转身时,焦点就开始朝另一侧移动,只不过这个移动的速度并不是固定的,而是受玩家朝该方向的移动速度影响,所以在下图中玩家转身向左的一瞬间并没有直接地改变焦点,因为玩家并没有向左移动的速度。
Cave Story,2004 位置锁定(垂直) 双方向焦点 物理平滑 |
随着更多的双摇杆和键鼠控制器使用,玩家可以使用右摇杆或是鼠标来控制镜头的焦点了。下面这个游戏提供了一个很好的例子——玩家可以自由地决定朝哪个方向看,而一边后退一边向前看也变得可能了。我做的顶视游戏原型基本都使用的是这种镜头设计。
The Swapper,2013 目标焦点 物理平滑 |
Luftrausers除了使用目标焦点之外,还根据角色的速度预测了焦点的位置,使整个镜头表现更加动态,很好地展现了空战游戏的特点。
Luftrausers,2014 目标焦点/预测焦点位置 物理平滑 |
(未完待续)
厉害
其实站里有一篇译文 https://indienova.com/indie-game-development/scroll_back_the_theory_and_practice_of_cameras_in_sidescrollers-ph/
最近由 MrUp 修改于:2017-08-17 18:27:15不过还是感谢你的分享!
@MrUp:啊是的,才发现。一不小心做了重复劳动,看来以后要注意才是!
_(:з」∠)_
最近由 MeowSnow 修改于:2017-08-17 18:02:57译文是不怕多啦,不过最好还是动手之前搜一搜先,不然可能会泄气【趴
好亏,不过个人筛选、简短版本还是可以。