2D视角游戏镜头机制研究(二):镜头的部署和移动方式

野驴酥

2022-06-245155次浏览

1评论

56收藏

14点赞

分享

现在的游戏虽然会采用多种视角,但总应该会有一个贯穿始终的主视角,很多类型的游戏都采用一种视角作为主视角,在一些特殊的场合辅助以其他类型的视角。

2D视角,并不表示只使用2D技术的游戏,为了增强表现力,横版过关游戏也会采用3D技术来增加表现力。游戏的主视角,面向玩家的时间最长,是影响玩家游戏交互体验的一个重要因素。

文章主要分3个部分(点击以下链接跳转相应章节):

下面就开始介绍本文重头戏,常用的几种镜头部署方式:固定位置、非固定位置、多焦点。

1.固定位置

将人物固定在中央,镜头跟着移动这种方式,是人最容易接受,也是最容易实现的方式。下图是我找的几个固定位置镜头的游戏例子:

王者荣耀
 Diablo II © 2000 Blizzard
 NOX © 2000 WESTWOOD

不过,由于摄像机是绑定在人物身上,主角的每一次移动,都会带动镜头移动,如果人物“不这么正常地”移动时,将会导致一些问题。

 Legend Of Mir 2 @ 2001 Actoz Soft

早期的网络游戏,人物移动得不够平滑,走路像是在走格子,人物的前进是一格一格的,摄像机的移动也是一格一格的。此外,人物向前走出一步,但由于网络卡顿,人物位置又会回置,那么摄像机位置也会回置。如此这般频繁出现,会让游戏的镜头体验非常差。

角色的移动速度过快,周围的画面变换会显得晃眼:

 天地创造 © 1994 ENIX

《天地创造》是SFC上一款非常经典的ARPG,游戏素质很高,但由于采用固定视角,镜头同步人物角色的移动,这就导致人物在快速跑动时,镜头的移动速度也很快,周围的画面也在快速变换显得晃眼。

2.平滑插值

正是由于镜头的移动非常影响整体的游戏体验,所以游戏的主角移动的速度不能特别快,以至于限制的游戏的表现,于是游戏开发者使用了一种叫做“平滑插值”的技术来缓解快速移动镜头的不适感。

上图是网上找的一端平滑插值的代码,主要的意思就是——让镜头的移动比主角慢一些,这样可以避免主角的位置频繁移动导致镜头也同时跟着频繁移动。

用下面的图解,大家应该能够很直观地了解“平滑插值”是如何运作的:

可以看到,主角(绿点)的位置非常飘忽,一会往左一会向右,摄像机(红点)无时不刻地跟着主角,但总是慢半拍。

我们把主角和摄像机的移动轨迹单独剥离出来进行对比:

可以很清楚地发现,主角的移动轨迹东扭西歪(这也是实际游戏的情况),但摄像机的移动轨迹却非常平缓。

有很多游戏的主角是”高速移动“的,灵活的主角会不断地冲刺、变向、加减速,如果将摄像机绑在主角身上,镜头也会随之高频率地移动,那将会带来很不好的体验。而加入了平滑插值,中和了这种快速变换,玩家可以很好地体验到游戏角色的灵活高速,同时不会被晃花了眼。

以下几个游戏都应用到了平滑插值,我用黄色十字标记出了画面的中心(也就是镜头的位置),可以很明显地观察到镜头和主角位置关系的变化:

 Lost Castle © 2018 Hunter Studio
 元气骑士 © 2017 凉屋工作室
Hyper Light Drifter © Heart Machine
 Halo:Spartan Assault © 2015 Microsoft

3.非固定位置

聪明的游戏开发者又尝试了一些其他的镜头移动方式,“为什么镜头一定要完全跟随主角呢?”,于是,以镜头非固定位置方式部署的“盒子模型”诞生了。(“盒子模型”的叫法是本人自创,业界并无此类说法,只是这套机制用“盒子”这个词来描述非常地形象)。

盒子模型这个说法听着很玄乎,但大家看了我介绍完特性之后,应该想起自己其实已经接触过非常多使用“盒子模型”特性的游戏了。下面我就拿FC时代的一款非常经典的游戏《赤色要塞》来分析盒子模型是如何运作的:

《赤色要塞》的盒子模型特性逻辑非常简单,只有两条:

①角色在盒子内移动,镜头静止

②角色试图走出盒子,镜头移动

①特性一:当角色在“盒子”内移动时,镜头静止在原地位置。

Jackal © 1986 KONAMI

黄色的框框是我添加上去的,也就是这个虚拟的“盒子”的边界。

②特性二:当主角企图走出盒子的时候,镜头会被同时往外推。

我们可以清楚地看到,系统允许角色在一个特定的盒子内移动,只有当角色到达盒子边缘时,镜头才会开始移动。这个盒子还被刻意地设置成了中间偏下的位置,因为游戏整体推进进程是往上的(这款游戏是支持双人同屏游戏的,下面文章还会讲到盒子模型是如何在双人模式下运作的,比想象中的要复杂)。

不过,盒子模型相比镜头固定绑定在角色身上,有个致命的缺点,大家可以看下图:

角色在向右移动时,前方视野是严重不足的,很容易遇到这种“转角遇到爱”的情况。游戏开发者似乎也是发现了这个问题,所以敌人被设定成未刷入屏幕内不会开火,稍稍平衡一下这种影响。

尽管如此,“盒子模型”还是一个很优秀的设计,在一些2D平面、2D横板过关、2.5D游戏里面,都有过优秀的表现,极大地提高了玩家的游戏体验。

下面几张图是运用到“盒子模型”的几款优秀的游戏:

 Metal Gear: Ghost Babel © 2000 KONAMI
 Contra: Force © 1992 KONAMI
 Shining Force II © 1993 SEGA

值的一提的是上面这款游戏,《光明力量2》使用了一种非常特殊的“双盒子模型”,它界定了两个盒子:

第一个黄色盒子,主角在内部移动时镜头不动,主角试图走出盒子时镜头开始移动,但是,镜头的移动速度追不上主角的移动速度,所以主角可以“走出“黄色盒子”。第二个绿色盒子,才是真正限制主角走出的盒子。

这种”双盒子模型“比较罕见,大家有兴趣可以深入研究研究。

4.多焦点的情况

前面我们说的几种情况,都是只有一个”焦点“。一般就来说,一款游戏画面的焦点就是主角,也就是你控制的角色,无论是固定位置、非固定位置,镜头都是以主角的位置为基准。

说得本质一点,单焦点的情况下,只有主角的状态,才能驱动镜头的移动。但是,还会存在多焦点的情况,例如:同屏多个玩家游戏时(任天堂大乱斗等),有多个因素都可以驱动镜头的移动,这种情况应该如何处理呢?

范例一:《孤胆枪手》

我们可以看下面这款经典PC老游戏《孤胆枪手》:

这个游戏的镜头移动特性有三条:

①镜头中心始终跟随角色和准星连线的中心

②认同跟随不是及时,且有一定的启动阈值

③使用平滑插值移动镜头

鼠标准星、角色移动都能驱动镜头的移动,这就符合了上面所说的“多焦点”的情况:

①角色不动,鼠标准星驱动镜头移动

②鼠标准星不动,角色移动驱动镜头移动

把“准星”、“角色”、“屏幕中心”三个位置相互之间的关系分解如下就是:

角色和准星做连线,屏幕中心对连线做切线,得到交点到屏幕中心的距离X。只要X不等于0,X就会不断减小,也就是说,角色和准星的交点,会无限地往屏幕中心接近,可以称之为“回正”。

回正的运动非常消极,速度相当地慢,到达一定临界值的时候,几乎是每几秒1个像素的速度。尽管很慢,但交点最终还是会回到屏幕中央,有耐性的同学可以回去自己试试观察一下看看。

由于回正的速度相当慢,也可以说是镜头回正的速度也相当慢,这就缓和了角色和准星相互拉扯造成的镜头频繁移动,也可以说这是另外一种形式的平滑插值。

虽然镜头回正的速度很慢,但不表示它可以被任意地拉扯。看上面这个动图,我们把准星和角色强制往右边移动,交点到屏幕中心的距离X被拉到了最大。

按照镜头的自主回正速度是不可能追上的,但系统不允许X被拉过限定值,所以它强制将镜头同步拉了过来,这样就不会出现鼠标准星和角色都走出屏幕外的情况了。

平滑移动的意义

右边的游戏是《迈阿密热线2》,也采用了和《孤胆枪手》类似的机制。不同的时候,《迈阿密热线2》的镜头移动是即时移动的,没有任何的缓冲时间和平滑参数的加入。

平滑移动
 没有平滑移动

对比动图我们可以发现,刻意地用鼠标在人物两边左右拉扯,准星在小范围内的剧烈移动下,《孤胆枪手》的镜头几乎是没有移动的,《迈阿密热线2》的镜头不停地在抖,因为准星的每一次微小的移动,都会驱动镜头移动,所以整体体验比《孤胆枪手》稍逊一筹。

范例二:《赤色要塞》的双人模式

之前介绍到了使用“盒子模型”的《赤色要塞》,那么两个玩家同屏游戏,每个玩家都镜头都移动都有话语权(也就是多焦点的情况),那么在“盒子模型”下,镜头的移动机制是怎样的呢?

其实,就只有两种情况:

①双方协同:两个角色往同一个方向推进,只要有一个角色就可以推动盒子了。

②双方不协同:两个角色企图将盒子朝向相反方向推时,盒子就会停留在原地。

①双方协同:

②双方不协同:

透过现象看本质,我们来看看实现这两个特性的底层机制是如何实现的:

①首先进行一些简化。

②继续简化,把原来的盒子拆开,不需要同时研究横轴和纵轴,只需要研究一个方向轴就行。

从1到2:双人模式下,角色是有可能跑出盒子的,所以我们需要将盒子边界延长。

从2到3:X轴和Y轴的逻辑是一样的,我们只要搞清楚一个轴的逻辑就可以了,这里我们把X轴的边界隐藏只保留Y轴的边界。

③需要检测AB之间的距离,分别为X轴距离和Y轴距离,预设的X轴距离约等于盒子的宽度,Y轴距离约等于盒子的高度。因为角色自己有高宽,所以实际可能会稍微小一些,这里我们姑且认为它们是一样长的。

4、根据上面的处理,我们将问题进行了简化,通过尝试,是通过这两条规则来实现这种机制的:

①规则一:必须保证预设的X轴(或Y轴)小于或等于盒子宽度(或高度),才能推动盒子

②规则二:当AB距离大于或等于最大值时,盒子内的角色可以往内“拖拽”盒子,直到AB距离小于最大值。

①规则一:

必须保证预设的X轴(或Y轴)小于或等于盒子宽度(或高度),才能推动盒子

我更喜欢把这个规则叫做“钩住”规则。这个情况,就有点像B把盒子“钩住”了,不让它离开自己。如果此时A不动,B向下走,盒子也会被A“钩住”,变成B走出了盒子范围。

用抽象图,在这套逻辑运作下,具体会发生什么情况:

如图1:A企图向上移动,但此时AB距离已经超过Y轴最大值,所以盒子不会随着A继续向上移动,A只能自己径直走出了盒子范围。

如图2:此时B也向上移动,此时AB距离小于Y轴最大值,所以盒子和随着A继续向上移动。

如图3:若A往下走,此时AB距离远远小于最小值甚至为0,所以盒子会乖乖地被A推着往下走。

②规则二:

当AB距离大于或等于最大值时,盒子内的角色可以往内“拖拽”盒子,直到AB距离小于最大值。看下面的动图,红、绿两车都在盒子外,绿色试图进入盒子,进入之后,可以向上“拖拽”盒子,然后把队友给卖了:

同样,我们看抽象图,在这套逻辑运作下,具体会发生什么情况:

如图1:接着规则一举出的例子,A留在了盒子外面,此时B往上走,此时盒子也会跟着往上移动。相反,如果此时B往下走,那就违反了规则一,B只能自己径直移出盒子,这就是上面说的“两人不协同”情况。

如图2:盒子和B持续向上移动时,AB之间的距离也持续减少,当AB距离到达小于最大值的临界值时,同时也是A和B都在盒子范围内时,盒子就不会再被B拖拽了,B再向上移动,盒子也不会继续向上了。

这个规则生效的前提是,B必须自己在盒子范围内,所以如图3这种情况,B向上移动是不会让盒子移动的,只有B继续往上走,进入盒子范围内后,才会触发“拖拽”。

总结

执行这两套规则,是为了让A、B两个角色协同作战,减少了镜头的频繁推动,避免了两个角色相互拉扯,更重要的是,单人模式和双人模式采用了两套不一样的“盒子模型”,但镜头的观感相当地一致,我相信当年大家小时候和小伙伴一起联机打这个游戏的时候,不会觉得和自己一个人玩有什么异样。

这套机制的目的和优点在于:

①鼓励协同作战

②镜头的观感和单人模式保持一致

③要求程序的运算量和判断少

现在回头看来,这是一款80年代开发的游戏,只能感叹这个游戏做的真牛逼,规则简洁、明了、有效,对程序要求的运算量和判断也很少,厉害。

👇推荐阅读👇

2D视角游戏镜头机制研究(一):常用的2D视角

2D视角游戏镜头机制研究(三):优秀案例及实际应用

《游戏交互中的镜头技巧》

浅析让游戏更有趣的镜头小窍门

评论 (1)

0/1000
网易游学APP
为热爱赋能
扫描二维码下载APP