向后滚动:侧滚轴中相机的理论和实践

2020-12-06 05:29:30

[[这篇文章是我在2015年GDC独立游戏峰会上发表的演讲的修改版。其中包含有关2D滚动的一些背景信息以及许多经典的游戏怀旧。希望您觉得它有用和愉快!]

在开发Mushroom 11游戏时,我面临许多不同的设计和技术挑战。我没想到会找到诸如动态更改形状或顶点动画之类的问题的参考,但是令我惊讶的是,几乎没有讨论过相机工作这一具有30多年游戏历史的主题。

我决定开始探索2D游戏的历史,记录他们的挑战,方法以及解决方案的发展方式。另外,由于对于许多不同的解决方案都缺乏合适的术语,因此我开始将它们收集和分类,并提供了自己的词汇表,以供个人参考。

滚动或平移是指试图显示比单个屏幕大的场景。滚动存在许多潜在的挑战,例如选择玩家需要看的东西,我们作为设计师希望玩家专注的内容以及如何以一种流畅而舒适的方式进行操作。

在我将重点介绍2D摄像头系统时,许多一般概念也适用于3D。

在研究这些游戏之前,让我们先谈谈滚动的神经背景,以便我们可以更好地理解我们的视觉和感知。通过这样做,我们可以了解滚动错误。

中央凹中央是我们眼球内部的受体,负责清晰而细致的中央视力。第二和第三感受器带,即副中央凹和中央凹,擅长将图像和运动减少为模式,从而可以迅速识别出变化,包括识别出熟悉的警报形状以及运动速度或方向的变化。

该视觉输入使用直达杏仁核的快速通道,在Visual Cortex解密输入时允许警报响应。随着时间的推移,训练您的大脑(尤其是通过将周围视觉的变化与控件绑定在一起)证明是有用的。

位于我们内耳的前庭系统负责保持平衡并提供空间方向。它发出的信号可以使身体保持平衡,同时将视觉重点放在特定细节上。

当像我这样的人尝试在汽车中阅读时,加速加上缺乏视觉上相应的反馈,会导致恶心和眩晕。

反之亦然:当Perifovea迅速发现背景变化时,它期望前庭系统有相应的反馈。如果没有(当您坐在计算机前时),结果可能是相同的。

因此,相互矛盾的感官信号(视觉与前庭)可能会导致不适和恶心,尽管在3D(尤其是VR)中这种情况更为严重,但在2D游戏中仍然非常有效。

为了帮助理解滚动中的问题,我将其元素分为三大挑战:

注意:使用相机提供足够的游戏信息和反馈(玩家需要看的东西)

互动:Â在显示的内容上提供清晰的播放器控件,使背景变化可预测并与控件紧密绑定(播放器希望看到的内容)

因此,让我们开始追溯到1980年代,当时设计师发明了全新的设计方案,同时克服了30年后难以想象的技术限制。

您还会注意到一些主要的独立游戏的引用,这些引用大多来自最近十年左右,它们往往总是展现独立艺术家可以期望的创新,关注和关怀,而相机的工作当然也没有什么不同。

从基础开始。一般来说,您的玩家对主角拥有权限。这表明应该通过与照相机密切关注来关注角色。

在80年代初,滚动是一项艰巨的任务,开发人员不得不面对CPU,内存容量和分段等限制。即使遇到了这些挑战,仍然释放了一些出色的侧卷轴,可以优雅地克服这些限制。然而,在许多情况下,运动是简单的或低分辨率的。

引人注目的是,早在1980年,像Rally-X这样的游戏就可以克服技术局限并提供真正的双轴摄像机。它使用默认的位置锁定机制,使汽车始终保持对焦,并且摄像机的运动完全可预测。

注意:整个演讲过程中介绍的术语仅供我参考和工作使用,如果其他人觉得它们有用,有所改进并提供反馈,我将感到非常高兴。

功夫大师是位置锁定的另一个很好的例子,它是由制作“月亮巡逻队”的设计师西山隆志设计的,后来又制作了“街头霸王”。

这款游戏使用了另一种称为边缘捕捉的基本机制,即将相机捕捉到关卡的边缘,从而使角色能够从其锚点移开。

*每场比赛都很少提到边缘捕捉,从现在开始将被忽略

位置锁定是基本的,但仍然非常有用。对于Terraria之类的精心制作的冒险游戏,相对于屏幕而言,角色较小且跳跃很小,它的效果非常好,可以在各个方向上提供足够的视图空间。

如果并非绝对必要,我们如何避免移动相机? 30年前,滚动存在几个问题:占用大量CPU,需要刷新屏幕的大部分内容。即使成功,时间上的大像素也会使滚动变得不稳定。最好的方法是保持滚动到必要的最小值。一种方法是允许角色在某个窗口内移动,并且仅当它推向该窗口的边缘时才滚动。

尽管从技术上讲,玩家会自动反复跳跃,但很多人认为Jump Bug是第一个平台游戏者,并且控制范围仅限于跳跃高度以及左右移动。像大多数其他滚动游戏一样,大多数游戏都是自动移动的摄像头,迫使玩家在保持速度的同时避免障碍。

但是上一阶段使用的摄影机窗口技术解决了许多设计师甚至不知道存在的问题,并为成千上万的平台开发人员设定了标准。摄像头窗口技术还引入了一些问题,例如,当玩家跳向出口时,对即将发生或即将发生的事情几乎一无所知。

我最喜欢的人之一拉斯坦·萨加(Rastan Saga)介绍了2条轴的运动,并选择了各种路线。它也是最早真正改变相机与机械之间关系的游戏之一。此摄像头窗口的高度与标准跳转一样高,因此,除非Rastan已在窗口内移动,否则跳转不会引起摄像头垂直运动。这消除了快速照相机晃动的需要。

这种方法的主要缺陷是,来自上方的敌人不太明显,特别是如果Rastan已在窗户内垂直移动的情况下。同样向左移动,这在城堡中经常发生,实在令人不舒服,因为它留下了非常狭窄的前瞻边缘。

相机窗口技术仍在现代游戏中使用。了解在Fez中如何通过尺寸移动来保持水平的相机窗口,实际上,选择了移动轴是为了将角色保持在窗口内。菲斯(Fez)中的相机窗口选择绝非默认设置,它代表了这种独特游戏机制的理想相机解决方案,我们将在后面介绍。相机在垂直方向上保持简单的位置锁定,并使用lerp-smoothing平滑,稍后我们将对其进行定义。

我们展示了使用摄像头窗口来减少摄像头移动,但是正如我们在“跳虫”和“拉斯坦”中所看到的那样,当玩家在窗口内漂移时,它会存在一些缺陷。这是我们可以解决的几种方法。

也许我最喜欢的经典游戏Shinobi在多个平台之间都有很大的跳跃。设计师想出了一个独特的摄像头系统:垂直方向上,由于角色在多个平台之间跳转,Shinobi使用了非常宽的垂直摄像头窗口。与往常一样,窗口会立即拉动相机。宽(或高)窗口的问题是,在小跳后,角色可能会停留在窗口顶部,而顶视图很少,就像我们在Rastan Saga中所看到的那样。 Shinobi只是连续不断地将相机缓慢地对准忍者,从而将注意力集中在动作上,并且在大多数情况下,将相机的快速运动保持在最低水平。

位置捕捉(vert。)-通过将相机重新聚焦在播放器上来不断减少窗口漂移

超级马里奥世界推出的众多功能之一是平台捕捉。与任何摄影机窗口一样,摄影机将保持静止,直到角色撞到边缘。但是由于马里奥(Mario)不可避免地降落在平台上,所以一旦他这样做,相机就会立即锁定到其位置。

(这是宫本聪作品的第一次提及,当然不是最后一次提及。对最小细节的了解和关注才是真正的真正设计师,而不仅仅是聪明的游戏机制。)

您可以在原始《雷曼》中看到相同的想法。屏幕的顶部用作摄像机窗口的顶部。请注意,相机不会随雷曼跳跃而移动,而是在着陆时轻轻拍动。这是一个聪明的解决方案,因为摄像头窗口刚好超过Rayman跳跃的高度,再次显示了摄像头系统是游戏设计不可或缺的一部分。

即使在今天,这项技术也非常有效,它允许设计人员在跳跃过程中保持相机平稳,并仅在跳跃完成或推动相机窗口时使相机居中。注意,平台捕捉自然仅在玩家可以登陆平台时才有效。在其他情况下,例如Awesomenauts中的Jetpack角色,播放器仅符合垂直的相机窗口。

我们之前谈到了周围视觉的作用及其对视觉舒适度的影响。在较早的日子里,由于时间较大,因此由于像素大,即使是简单的补间也会显得跳动。

那么,当我们受到一个非常严格而又粗糙的大像素网格的约束时,如何使摄像机运动平滑?如今,我们可以设计漂亮的像素艺术,然后将其移动到比像素艺术要精细得多的实际像素上。而且,如果您选择避免像素完美,您甚至可以利用大多数现代引擎提供的亚像素空间。

伪物理学可以发挥作用,以帮助平滑位置锁定的相机(您可以说任何引擎物理学实际上都是伪物理学)。

Pac-Land可以说是第一个现代平台游戏。它具有帮助定义这种类型的许多元素,例如,跳上平台,避开敌人并获得奖励。关于平滑,它的速度从每帧0像素变为1、2、3,一直到最大速度,然后衰减到0。并且在将相机锁定在播放器位置的情况下,结果很清晰和顺利。但是Pac-Land不必垂直滚动,真正的平滑挑战就在于此,在跳跃和着陆时可以快速加速和减速。

在这一点上,我想给大家简单介绍一下宫本茂,并展示他的一些早期作品。他对游戏行业的宝贵贡献,以及对游戏设计最小细节的关注都不能被夸大。

1984年,他开始尝试滚动,设计了两种完全不同的方式使用滚动。在这两种游戏中,如果有的话,玩家对滚动的控制都很少。它更像是一个背景不断变化的房间。

Excitebike具有现代的滚动动作,受自行车速度的影响。滚动足够流畅,但对游戏没有实际影响。

但是,Devil World的游戏玩法与滚动有关。在这个“吃豆人”克隆中,您扮演的是与恶魔战斗的基督教巨龙,其作用仅限于改变滚动方向,使您靠近边缘。它也是宫本唯一一款由于使用宗教偶像而被拒绝在北美发行的宫本游戏,但与他数十年的作品质量相比,这似乎并不是一个巨大的损失。但是,重要的是,有时甚至是鼓舞人心的,来研究现代天才的早期作品,通常是不太成功的作品。即使是最伟大的艺术家也在尝试,并且经常失败。

向前迈进一年,很难夸大《超级马里奥兄弟》的光彩。游戏本身就采用了一种非常简单的从左到右,仅横向的方法。而且,它不允许回溯到屏幕边缘之外,这是常见的平台游戏特质(从技术上讲,它可以定义为单面相机窗口)。

speedup-push-zone-在推动区域内时,逐渐加速相机以跟上玩家的速度

因此,当Mario一直返回并加速穿过相机窗口边缘时,它将在一帧中从0变为全速,从而导致背景速度发生重大变化,从而不可避免地产生不适感。设计师通过添加一个虚拟点解决了这一问题,该点偏离中心大约25%,在该点相机可以加快速度以赶上Mario,因此当他撞到边缘时,相机速度就已经可以赶上。

《银河战士》是一款突破性的游戏,结合了平台化和探索性,帮助创造了一种流派。 (顺便说一下,它的流派兄弟恶魔城有一个非常基本的位置锁定相机。)

银河战士使用了一个多轴级数,一次。它通过允许角色走出窗口范围,同时加快了相机的追赶速度,引入了一种使相机轻松运动的不同方式。玩家最终跨越那条线的距离取决于它击中那条线的速度,但是结果是平滑的摄像机行为。

speedup-pull-zone-跨越窗口边缘后拉动相机以赶上玩家的速度

技术的进步直接影响了相机系统,它具有更多的像素和强大的CPU。它可以使摄像机自由移动,而不会出现表征摄像机运动的低分辨率抖动,特别是在速度较慢的情况下,可能导致每几帧出现一次。

大金刚国家提供了大量创新的相机解决方案,并且是率先使用lerp(线性插值)平滑技术的设备之一,可实现足够平滑的跳跃和前向对焦切换(稍后会详细介绍)。

轻声平稳并不是什么大的成就,它已成为减少令人讨厌的相机速度(尤其是跳跃)的标准工具。

float lerp(float a,float b,float t){return a + t *(b-a); }

这可能是最有效,最普遍的平滑技术。它适用于“ Super Meat Boy”中缓慢或快速移动的角色。但是,对于移动速度非常快的大型角色,它可以很容易地击中屏幕边缘,然后再赶上摄影机,从而将传入的敌人隐藏到最后一刻。

Never Alone是一款出色的游戏,于2014年问世,它包含许多不同的元素,我们将在后面介绍。它的主要平滑技术考虑了现有的摄像头速度,这意味着其运动速度略慢,并且可能会超出其目标点。结果是平滑,自然的,尽管显然对玩家的快速运动没有反应。

用代码术语来说,如果Lerp是EaseOut,则物理平滑是EaseInOut。如果可用,请查看SmoothDamp方法以获取详细信息,或者考虑到目标的距离以及当前速度来定制自己的实现。

如果仅使用像素完美的着色器,您会发现有时由于数学除法不一致,与其他精灵或背景相比,您的精灵似乎会移动一个像素。

Hyper Light Drifter使用巧妙的解决方案来实现平滑滚动,即使它具有低分辨率的像素图。它在游戏像素完美的画布上预先渲染,然后在屏幕像素完美的画布上移动画布,以反映除以游戏像素大小后剩余的位置。该游戏还具有许多其他有趣的相机功能,我们将在后面讨论。

自动滚动不在本文讨论范围之内,因为根据定义,自动滚动不提供玩家对滚动运动的控制。但是,它为我们提供了一个理想的参考标准,帮助玩家理想地定位自己的位置,在即将来临的威胁之间保持良好的平衡,并为来自后面的威胁留出一些空间。

自动滚动-播放器仅对滚动没有控制权(但对其在帧中的放置具有完全控制权)

正如我们在Pac-Land中看到的那样,如果将相机绑定到播放器并提供方向控制,则可以将相机聚焦在播放器之前。这为我们提供了足够的空间来展望未来,并且仍然可以跟踪背后的动向-并作为前往目的地的指南,因为我们努力瞄准中心。

1981年初,Defender的发行遥遥领先于时代,这是一种射击游戏,激发了一种全新的流派。它呈现双向前向聚焦的方式几乎在雷达之下。 Defender始终尝试将屏幕聚焦在飞船前方的一个假想点上,向前约25%的屏幕宽度。该系统适用于节奏快的游戏,大多数敌人来自前方。

Bonanza Bros.是一款令人愉快的横向滚动抢劫游戏,由世嘉于1990年为街机游戏推出。它具有分屏功能,可用于独特的一对一合作模式,两兄弟共同完成抢劫。

当然,清晰的前视图对于抢劫场景至关重要,因此可以启用双重前视图。但是,相机要花几步才能赶上新的目标点,在提供足够空间的同时,使整个运动感觉更加流畅。切换速度大约是播放器速度的两倍,这也意味着相机仅在播放器移动时移动。在下图中检查红色。

以下《超级马里奥世界》中的摄像头技巧是我最喜欢的2D摄像头技术之一,并且对游戏的特定游戏细节极为关注。

再次,有两个锚点允许玩家选择向哪个方向进行宽广的前视。但是,即使玩家开始向后移动(在SMW中不断发生),摄像机仍会保持目标点,直到Mario达到预定义的阈值为止,然后摄像机才会锁定到另一个锚点。这对于SMW频繁的左/右运动(不保证方向改变)非常有帮助。

最近,Cave Story使用双前向聚焦,根据行走速度从一侧到另一侧缓慢移动焦点。有点像我们在Bonanza Bros中看到的那样,尽管在这种情况下,相机始终会移向新的锚点,但随着玩家的移动而加速。

Jazz Jackrabbit 2是Epic Games早期的漂亮平台游戏。 它具有一个真正独特的摄像头元素:它根据控制器的输入水平和垂直方向将摄像头从播放器上移开。 这是我所谓的“目标聚焦”的完美体现,在此,玩家可以根据他们的实际目标或目标来提供将摄像机移至何处的提示。 当您向左走时,您想在左侧看到更多。 释放控制器后,焦点将重新放在播放器上。 正如在指针控制游戏中看到的那样,目标焦点可以反映更真实的视觉目标。 在“快照”中,您可以使用鼠标捕获场景中元素的快照并将其释放到其他位置以 ......