横版游戏的摄像机移动理论与实践(上)
本文較長并有大量動(dòng)圖,請注意流量使用情況。
概述(Overview)
?
?
《蘑菇11》("Mushroom 11")2015 Untame
上圖是開發(fā)中的《Mushroom 11》,開發(fā)中遇到很多設(shè)計(jì)和技術(shù)難題。游戲角色形狀的動(dòng)態(tài)變化或是頂點(diǎn)動(dòng)畫帶來的種種問題,起初沒期待能直接找到參考案例。然而縱觀三十多年的游戲歷史,卻很驚訝的發(fā)現(xiàn)游戲攝像機(jī)的運(yùn)用方法卻幾乎沒什么人討論。
于是我決定從2D游戲的歷史發(fā)展上一步一步看過來,整理他們當(dāng)時(shí)所面臨的挑戰(zhàn),并逐步分析方案的演化過程。由于沒有專業(yè)術(shù)語能夠直接將這些方案闡述出來,我就在搜集過程中試著按類歸納,用自己的詞匯描述出來(方便日后進(jìn)行檢索)。
滾動(dòng)(Scrolling)
滾動(dòng)或平移,當(dāng)試圖展現(xiàn)的場景在單屏幕下容納不下時(shí)的表現(xiàn)手法。其實(shí)有很多潛在問題需要在滾動(dòng)中解決,比如:選擇哪些是必須要展現(xiàn)給玩家看的;作為設(shè)計(jì)者希望玩家去關(guān)注什么;解決問題的同時(shí)如何帶給玩家流暢而舒適的感受。
雖然今天討論的內(nèi)容都是2D攝像機(jī)系統(tǒng),但很多理念在3D的設(shè)計(jì)上也是共通的。
神經(jīng)學(xué)背景(Neural Background)
在討論游戲之前,先來接觸一些神經(jīng)學(xué)的背景知識,以便我們能夠更好的了解我們的視覺和感知系統(tǒng)。也就能夠理解有些滾動(dòng)為什么設(shè)計(jì)的不好了。
?
中心窩是眼球內(nèi)部的接收器,負(fù)責(zé)視覺中最清晰的部分。視覺中的第二、三條紐帶分別是副中心窩和近中心窩,負(fù)責(zé)減輕視覺中圖像的偏移,善于捕捉圖像的位置變換,并且能夠很迅速的察覺到危險(xiǎn)形狀的物體以及他們的速度和方向。
這些視覺輸入通過一些高速的神經(jīng)通道直達(dá)腦部的杏仁體,允許我們在大腦視覺皮質(zhì)層解析視覺輸入前做出更快的反應(yīng)。只需要花點(diǎn)時(shí)間訓(xùn)練一下,就能將某些視覺信息和相應(yīng)的反應(yīng)操作捆綁在一起,這在游戲設(shè)計(jì)中也十分有用。
?
前庭系統(tǒng)位于內(nèi)耳,負(fù)責(zé)維持身體平衡和方向感。大腦接收來自前庭系統(tǒng)的神經(jīng)信號就可以幫助我們維持身體的平衡,并且能夠輔助我們的視覺系統(tǒng),使我們集中注意力到想要觀看的細(xì)節(jié)上。有些人,比如我這種,喜歡在車內(nèi)看書,但這時(shí)車身加速度不斷變化,而視覺上接收到相應(yīng)的輔助反饋又很少,就有很可能引起頭暈惡心。
反之亦然:中心窩接收到視覺上背景物體的變化,于是等待前庭系統(tǒng)相應(yīng)的反饋信號。然而什么神經(jīng)反饋都沒有(因?yàn)檫@時(shí)玩家正老老實(shí)實(shí)的坐在電腦前面),帶來的負(fù)面效果是一樣的。
盡管在3D場景中(尤其是VR)感官信號之間(視覺上和聽覺上)沖突所引發(fā)的不適和眩暈感表現(xiàn)更為明顯,但在2D游戲中所帶來的影響也是不可忽視的。
注意力,互動(dòng)感與舒適度(Attention,Interaction and Comfort)
我將攝像機(jī)滾動(dòng)所帶來的種種需要解決的問題與挑戰(zhàn)分成了以下三類,以便我們更好的理解:
?
注意力:利用攝像機(jī)提供有效的游戲信息顯示和反饋(玩家需要看到些什么)
互動(dòng)感:把玩家所作的操作清晰的反饋出來,讓背景變化變得可預(yù)測,并且與操作緊密相連(玩家想要看到些什么)
舒適度:根據(jù)背景變化的前后關(guān)系進(jìn)行調(diào)整或減緩背景的變化速率(如何讓攝像機(jī)平穩(wěn)舒適的移動(dòng)以滿足視覺上的需求)
經(jīng)典滾動(dòng)設(shè)計(jì)(Scrolling Nostalgia)
?
那么就從80年代開始我們的旅程吧。有很多設(shè)計(jì)師,即使是30年后的今天再回頭看,也很難想象他們是如何在技術(shù)有限的情況下克服重重困難,在那個(gè)年代就發(fā)明了如此多的獨(dú)創(chuàng)設(shè)計(jì)方案的。
文章里也會(huì)提到很多近10年的獨(dú)立游戲,這些獨(dú)立制作者有很多相當(dāng)有創(chuàng)意的表現(xiàn)方式,并且在注意力的把控上也做得很好,而且攝像機(jī)的運(yùn)作方式也截然不同。
運(yùn)動(dòng)追蹤(Follow The Action)
把所有的注意力都放在你所控制的物體上
先從最基礎(chǔ)的說起。大部分游戲中,玩家對主角有著絕對的控制權(quán)。也就意味著,所有的注意力都應(yīng)當(dāng)直接引向玩家所控制的角色,而攝像機(jī)也應(yīng)當(dāng)緊緊的跟隨著角色運(yùn)動(dòng)。
在80年代早期,實(shí)現(xiàn)滾動(dòng)還是個(gè)很難的事。盡管開發(fā)者需要面對CPU、內(nèi)存容量與分配等等限制所帶來種種問題,仍然有很多非常杰出的滾動(dòng)方案誕生,并且也克服了這些硬件、軟件上的限制。當(dāng)然那個(gè)時(shí)代的案例中,運(yùn)動(dòng)還很簡單,而且游戲分辨率也比較低。
值得一提的是早在1980年,類似《拉力賽車》這種作品,已經(jīng)能夠解決技術(shù)限制,并且在畫面展示上實(shí)現(xiàn)了真正意義上的雙軸攝像機(jī)。通過對指定位置的鎖定機(jī)制,讓賽車始終鎖定在攝像機(jī)正中央,隨之產(chǎn)生的鏡頭運(yùn)動(dòng)也都在玩家的意料之中。
?
位置鎖定(position-locking)-鎖定玩家所操控的角色注:本文中的攝像機(jī)分類是我參考多種資料和作品后自創(chuàng)的。如果您覺得還算有用,發(fā)現(xiàn)有可以改進(jìn)的地方歡迎聯(lián)系我(譯者注:此處指聯(lián)系Itay Keren)。
關(guān)于位置鎖定攝像機(jī)還有另一個(gè)例子,由西山隆志設(shè)計(jì)的《功夫》。西山隆志也是《月球巡邏車》的設(shè)計(jì)者,后來還制作了《街頭霸王》。
《功夫》還使用了另一個(gè)機(jī)制,邊界捕捉,把攝像機(jī)的移動(dòng)范圍限制在當(dāng)前關(guān)卡內(nèi),這種設(shè)計(jì)可以允許角色離開攝像機(jī)追蹤錨點(diǎn)繼續(xù)移動(dòng)。
?
位置鎖定(position-locking)邊界限位(edge-snapping)-設(shè)定一個(gè)攝像機(jī)調(diào)整位置的邊界限制。邊界限位的機(jī)制幾乎在每個(gè)游戲中都有,下文再遇到就暫且不標(biāo)出來了
位置鎖定雖然是很基礎(chǔ)的手法但確實(shí)很實(shí)用。制作類似《泰拉瑞亞》這樣的冒險(xiǎn)游戲時(shí),角色相對于整塊屏幕的比例很小,而且跳躍幅度也不大,動(dòng)起來的效果很好,各個(gè)方向也都留有足夠的視野。
?
位置鎖定(position-locking)攝像機(jī)運(yùn)動(dòng)約束(Curb Camera Motion)
避免不必要的或預(yù)料之外的抖動(dòng)
如果不是必須要移動(dòng)攝像機(jī),如何能避免它的移動(dòng)呢?早在30年前,攝像機(jī)滾動(dòng)還存在很多問題:非常耗費(fèi)CPU,屏幕上很多東西都需要刷新顯示。就算能夠成功動(dòng)起來,單位時(shí)間內(nèi)移動(dòng)大量的像素點(diǎn)也會(huì)導(dǎo)致運(yùn)動(dòng)不連貫。所以最好的方法是將滾動(dòng)的需求降到最低。比如讓角色在屏幕有限的范圍內(nèi)移動(dòng),只有當(dāng)角色碰到邊緣時(shí)才運(yùn)動(dòng)攝像機(jī)。
很多人認(rèn)為《跳跳車》是歷史上第一個(gè)平臺跳躍游戲,雖然嚴(yán)格意義上講,玩家只是不斷的自動(dòng)跳躍,能做的操作也因?yàn)槭艿教S機(jī)制的限制而只有向左或向右移動(dòng)而已。當(dāng)時(shí)大部分游戲攝像機(jī)都是自動(dòng)移動(dòng)的,促使玩家在避開障礙的同時(shí),要不斷跟上攝像機(jī)的視野。
?
?
《跳跳車》("Jump Bug")1981 Hoei/Coreland(Alpha Denshi)
攝像機(jī)窗體(camera-window)-當(dāng)玩家碰到窗體邊界時(shí)推動(dòng)攝像機(jī)
盡管是為了解決運(yùn)動(dòng)層面上的問題才使用攝像機(jī)窗體,但實(shí)際上它還同樣解決了另外一個(gè)很多設(shè)計(jì)者本身都沒意識到的問題,而它所帶來的設(shè)計(jì)標(biāo)準(zhǔn),也致使后來數(shù)不清的平臺跳躍游戲都沿用這種設(shè)計(jì)。不過攝像機(jī)窗體技術(shù)也帶來了新的難題,例如玩家在朝著窗體邊緣移動(dòng)時(shí),視野很小,玩家很難判斷之后會(huì)遇到什么。
另一款我非常喜歡的游戲,《拉斯坦傳奇》,有雙軸移動(dòng)并且還有多個(gè)路線可選。它也是第一款將攝像機(jī)和游戲機(jī)制間的關(guān)系帶來革命性變化的作品。攝像機(jī)窗體的高度和人物跳躍高度一致,因此只要人物在窗體內(nèi)進(jìn)行普通跳躍就不會(huì)造成攝像機(jī)縱向的移動(dòng)。實(shí)現(xiàn)了消除攝像機(jī)抖動(dòng)的需求。
但這個(gè)例子中也有個(gè)比較嚴(yán)重的缺陷,玩家很難看到從上方來的敵人,尤其是當(dāng)拉斯坦已經(jīng)在窗體內(nèi)發(fā)生縱向移動(dòng)的時(shí)候會(huì)更難發(fā)現(xiàn)。并且在需要向左移動(dòng)時(shí),尤其是城堡那關(guān),由于窗體只留了很窄小的空間,會(huì)非常不舒服。
?
攝像機(jī)窗體(camera-window)
攝像機(jī)窗體的技術(shù)在新出的游戲中也還在用。再來看《菲斯》,橫向的窗體邊緣在空間旋轉(zhuǎn)時(shí)也保持不變,實(shí)際上,空間旋轉(zhuǎn)的軸心是經(jīng)過調(diào)整的以保證角色始終處于窗體內(nèi)。Fez的攝像機(jī)距離它默認(rèn)追隨物體的空間距離非常遠(yuǎn),對于它獨(dú)特的玩法而言是非常理想的解決方案,后面我們也會(huì)再解釋。
?
攝像機(jī)窗體(橫向)(camera-window horiz.)-空間變換時(shí)也持續(xù)作用位置鎖定(縱向)(position-locking vert.)線性插值緩沖(lerp-smoothing)區(qū)域性錨點(diǎn)(region-based-anchors)手動(dòng)操控(manual-control)-用右搖桿可以進(jìn)行手動(dòng)搖攝注:未加粗的術(shù)語下文會(huì)進(jìn)行講解
捕捉與吸附(Snapping)
攝像機(jī)在窗體內(nèi)的移動(dòng)修正
上文介紹了攝像機(jī)窗體的設(shè)計(jì)來減少相機(jī)的移動(dòng),但從《跳跳車》和《拉斯坦傳奇》的例子中不難看出,即使玩家在窗體內(nèi)進(jìn)行移動(dòng),也還有很多問題。現(xiàn)在就來討論幾種修正的方法。
《忍》應(yīng)該說是我最喜歡的經(jīng)典游戲之一了,游戲中有很多需要在不同平臺間進(jìn)行大跳的操作。設(shè)計(jì)師就想了個(gè)獨(dú)特的系統(tǒng):縱向上有很多需要玩家來回跳躍的平臺,所以《忍》就使用了一個(gè)縱向高度很大的攝像機(jī)窗體。和之前一樣碰到窗體邊緣時(shí)會(huì)立即推動(dòng)攝像機(jī)移動(dòng)。但問題在于這種縱向過高的窗體,當(dāng)玩家做了個(gè)小跳的時(shí)候很有可能被卡在一個(gè)相對于屏幕較高的位置,這時(shí)候頂部的視野就變得異常狹窄,就像《拉斯坦傳奇》中那樣。而《忍》卻通過一個(gè)簡單的方法,讓攝像機(jī)持續(xù)地緩慢地對準(zhǔn)忍者角色,讓畫面始終聚焦在移動(dòng)的主角上,并且也大大減少了需要頻繁的挪動(dòng)攝像機(jī)情況的出現(xiàn)率。
?
位置捕捉(縱向)(position-snapping vert.)-持續(xù)作用,減少攝像機(jī)在重新聚焦玩家時(shí)所造成的畫面抖動(dòng)攝像機(jī)窗體(縱向)(camera-window vert.)位置鎖定(橫向)(position-locking horiz.)靜態(tài)前置聚焦(static-forward-focus)
《超級馬里奧世界》運(yùn)用的機(jī)制更多,但有一點(diǎn)值得一提的是它的平臺捕捉。和其他攝像機(jī)窗體一樣,如果玩家沒有碰到窗體邊緣攝像機(jī)就始終保持靜止。但當(dāng)瑪麗奧落到不同的平臺上時(shí),攝像機(jī)也會(huì)立即開始吸附到瑪麗奧所在的位置。
?
區(qū)域性錨點(diǎn)(region-based-anchors)平臺吸附(platform-snapping)-攝像機(jī)只有在玩家落于某個(gè)平臺的表面上時(shí)才開始吸附攝像機(jī)窗體(縱向)(camera-window vert.)-視情況生效雙側(cè)前置聚焦(dual-forward-focus)-閾值觸發(fā)器手動(dòng)操控(橫向)(manual-contro horiz.)-使用控制器可以自主選擇額外的搖攝位置
(本文中第一次提到宮本茂,當(dāng)然后面會(huì)再講他的作品。真正優(yōu)秀的設(shè)計(jì)師能夠用心地注意到細(xì)節(jié)設(shè)計(jì),不止是在游戲玩法機(jī)制上耍小聰明。)
可以看到在最早的《雷曼》中也用了同樣的點(diǎn)子。屏幕的最頂端相當(dāng)于攝像機(jī)窗體的最上沿。可以看到攝像機(jī)在雷曼跳躍的時(shí)候并沒有移動(dòng),而在他落地后才平緩的吸附到他落地的位置。而攝像機(jī)窗體剛好比雷曼的跳躍高度稍高一點(diǎn)也是個(gè)很聰明的設(shè)計(jì),當(dāng)然也再次證明了攝像機(jī)系統(tǒng)是游戲設(shè)計(jì)中必不可少的一部分。
?
平臺吸附(platform-snapping)攝像機(jī)窗體(縱向)(camera-window vert.)區(qū)域性錨點(diǎn)(region-based-anchors)雙側(cè)前置聚焦(dual-forward-focus)線性插值緩沖(lerp-smoothing)均視情況生效
這個(gè)技巧在今天的游戲中也十分有效,允許設(shè)計(jì)師能夠在游戲角色跳躍時(shí)仍保持相機(jī)平滑穩(wěn)定的運(yùn)行,只有在完成跳躍或是角色推動(dòng)攝像機(jī)窗體之后再開始重新居中攝像機(jī)。注意一點(diǎn),平臺吸附只有在角色能夠確實(shí)的落到平臺時(shí)才會(huì)比較有效。在其他游戲中,像是《王牌英雄》這種有噴氣背包的角色,攝像機(jī)的移動(dòng)更多是靠玩家觸碰縱向的攝像機(jī)窗體來完成的。
?
攝像機(jī)窗體(縱向)(camera-window vert.)平臺吸附(platform-snapping)位置鎖定(橫向)(position-locking horiz.)
平滑與緩沖(Smoothing)
避免攝像機(jī)突然發(fā)生速度大小或速度方向上的改變
之前介紹了周圍視覺在視覺系統(tǒng)中所承擔(dān)的角色以及基于它的機(jī)理所帶來的影響。以前的游戲看起來像素點(diǎn)都很大,使得即使是很簡單的變換都會(huì)看起來非常跳躍,突兀。
?
假定我們只能使用設(shè)備原生網(wǎng)格上的像素時(shí),要怎么樣才能讓相機(jī)的移動(dòng)更加平滑呢?雖然當(dāng)下我們可以創(chuàng)作出各種精美的像素藝術(shù),但他們實(shí)際運(yùn)動(dòng)時(shí)像素位移的精度是要比看上去的像素畫的像素大小要精細(xì)的多的。如果你不想用完美像素處理技術(shù)(Pixel Perfect)的話,你甚至可以利用現(xiàn)代游戲引擎所提供的亞像素空間(sub-pixel space)。
利用物理特性(或偽物理特性)平滑移動(dòng)
偽物理特性也可以在平滑相機(jī)移動(dòng)上摻一腳,尤其是位置鎖定攝像機(jī)(當(dāng)然你可以認(rèn)為任何游戲引擎內(nèi)的物理系統(tǒng)實(shí)際上都是偽物理)。
有說法認(rèn)為《吃豆世界》是第一款現(xiàn)代平臺跳躍游戲。它所包含的多種玩法元素幫助人們確定了這種類型游戲的定義,例如需要跳到各種平臺上,還要躲開不同種類的敵人,最后撿起多種獎(jiǎng)勵(lì)道具。至于移動(dòng)的平滑方法,使攝像機(jī)的速度從0像素每幀開始逐漸加速,位移1像素每秒,2像素每秒,3像素每秒,直到最大速度,之后再減緩到0。由于攝像機(jī)是鎖定到玩家位置上的,所以呈現(xiàn)的畫面就變得清晰又平滑了。另外《吃豆世界》不需要縱向滾動(dòng),但其實(shí)縱向滾動(dòng)才是最難做的,因?yàn)槠鹛吐涞貢r(shí)加速和減速的變化非常快。
?
位置鎖定(position-locking)靜態(tài)前置聚焦(static-forward-focus)
宮本茂(Shigeru Miyamoto)
不過既然都說到這了,不得不致敬一下宮本茂了,順便展示一下他早期的作品。他對整個(gè)游戲產(chǎn)業(yè)的極大貢獻(xiàn),以及對游戲細(xì)節(jié)的極致設(shè)計(jì)都是非常寶貴的,毫不夸張。
早在1984年他開始實(shí)驗(yàn)性的研究屏幕滾動(dòng),并且用完全不同的滾動(dòng)模式設(shè)計(jì)出兩款游戲。這兩款游戲玩家操控對屏幕滾動(dòng)的控制比重很小,甚至沒有。更像是身處在一個(gè)背景會(huì)變化的房間中。
?
《越野機(jī)車》就和現(xiàn)代游戲的滾動(dòng)模式差不多,根據(jù)摩托車的速度來調(diào)整滾動(dòng)速度。運(yùn)動(dòng)起來也足夠平滑,但實(shí)際上并沒有在鏡頭上加其他的效果。
《惡魔世界》幾乎所有的玩法都和滾動(dòng)緊密相連。主角就和吃豆人一樣,玩家扮演一個(gè)基督小龍和惡魔對抗,惡魔是個(gè)負(fù)責(zé)調(diào)整屏幕滾動(dòng)方向的角色,試圖把玩家推向屏幕邊緣。也是由于使用了宗教相關(guān)的符號,這款游戲成為了唯一一款在北美遭遇禁售的宮本茂作品。當(dāng)然如果把他數(shù)十年的作品都對比列出的話,似乎這也算不上什么巨大損失了。不論怎樣,去看看這些現(xiàn)在被譽(yù)為天才的游戲設(shè)計(jì)師的早期或者不太成功的作品其實(shí)也很重要,也能夠時(shí)不時(shí)的得到些啟發(fā)。畢竟最偉大的藝術(shù)家的實(shí)驗(yàn)作品也經(jīng)常有失敗作。
把時(shí)間向前推進(jìn)1年,很難錯(cuò)過《超級馬里奧兄弟》的絕妙設(shè)計(jì)。游戲玩法本身就結(jié)合了最簡單的“從左到右”,水平方向上只有這一個(gè)方向。并且游戲不允許玩家返回至超出當(dāng)前屏幕的位置,很典型的平臺跳躍游戲特征(從技術(shù)上講,應(yīng)該被定義為單側(cè)的攝像機(jī)窗體)。
?
區(qū)內(nèi)加速(speedup-push-zone)-角色處于加速區(qū)內(nèi)時(shí),相機(jī)會(huì)逐漸加速直到追上玩家的速度攝像機(jī)窗體(camera-window)-單側(cè)檢測靜態(tài)前置聚焦(static-forward-focus)
所以,當(dāng)瑪麗奧一路向左走到頭,之后加速通過攝像機(jī)窗體邊緣時(shí),攝像機(jī)在1幀內(nèi)會(huì)從零速靜止?fàn)顟B(tài)直接變成滿速狀態(tài),與此同時(shí)背景速度大幅變化,不可避免得會(huì)造成玩家各種不適的癥狀。于是設(shè)計(jì)者想了個(gè)辦法,在偏移中心區(qū)域大約25%的位置加入了一個(gè)虛擬點(diǎn),角色通過時(shí)攝像機(jī)會(huì)進(jìn)行加速試圖追上瑪麗奧,所以當(dāng)瑪麗奧碰到攝像機(jī)窗體時(shí),攝像機(jī)的速度已經(jīng)和人物移動(dòng)速度相差無幾了。
《銀河戰(zhàn)士》也曾經(jīng)是一款突破性的游戲,創(chuàng)造了一個(gè)全新的游戲類型,平臺跳躍與探索相結(jié)合。(順便一提,它的“親兄弟”《惡魔城》使用的是非常基礎(chǔ)的方法,位置鎖定攝像機(jī)。)
《銀河戰(zhàn)士》進(jìn)行探索時(shí)有多個(gè)軸線,但不同時(shí)存在。它有另一套緩沖攝像機(jī)移動(dòng)的方法,允許玩家走出攝像機(jī)窗體,之后再使攝像機(jī)加速追上玩家。追蹤速度的快慢取決于玩家穿過窗體后的距離長短,最終也呈現(xiàn)出一個(gè)非常平滑的攝像機(jī)移動(dòng)模式。
?
攝像機(jī)窗體(橫向或縱向)(camera-window horiz./vert.)區(qū)外加速(speedup-pull-zone)-當(dāng)玩家穿過攝像機(jī)窗體時(shí)攝像機(jī)開始加速移動(dòng)以追上玩家
由于技術(shù)的不斷提升,設(shè)備有了更高像素的畫面和更強(qiáng)勁的處理器,也直接影響到攝像機(jī)系統(tǒng)設(shè)計(jì)。新技術(shù)允許攝像機(jī)更加自由的移動(dòng),而不用擔(dān)心攝像機(jī)移動(dòng)時(shí),特別是低速一幀一動(dòng)的情況下,因?yàn)榈头直媛蕦?dǎo)致畫面抖動(dòng)。
《大金剛國度》也有很多新穎的攝像機(jī)設(shè)計(jì),也是第一個(gè)使用線性插值做攝像機(jī)移動(dòng)緩沖的游戲,讓游戲在角色跳躍時(shí)的鏡頭追蹤或向前移動(dòng)時(shí)的聚焦前移都很順滑(畫面聚焦后文會(huì)繼續(xù)討論)。
?
線性插值緩沖(lerp-smoothing)-持續(xù)通過線性插值來減小攝像機(jī)與玩家角色間的距離位置鎖定(縱向)(position-locking vert.)區(qū)域性錨點(diǎn)(region-based-anchors)雙側(cè)前置聚焦(dual-forward-focus)
線性插值聽起來挺高大上的,但實(shí)際上已經(jīng)是個(gè)用來減緩攝像機(jī)速度變動(dòng)的標(biāo)準(zhǔn)工具了,尤其是攝像機(jī)在追蹤人物跳躍的時(shí)候。
float lerp(float a,float b,float t){return a+t*(b-a);}
它真的非常有效而且在平滑緩沖方面的用途很廣。像《超級食肉男孩》那種在移動(dòng)時(shí)忽快忽慢的角色,用線性插值做緩沖很好用。但有個(gè)缺點(diǎn),如果是體積比較大運(yùn)動(dòng)又極其快的角色,使用這種方法很容易在相機(jī)還沒追上角色前,角色就已經(jīng)移動(dòng)到屏幕邊上了,這樣在一段時(shí)間內(nèi)屏幕外即將遇到的敵人就對玩家不可見了。
?
線性插值緩沖(lerp-smoothing)位置鎖定(position-locking)
2014年一款非常精美的游戲《不再孤獨(dú)》面世了,游戲中的攝像系統(tǒng)用了很多不一樣的元素,后面會(huì)詳細(xì)講。它緩沖的技巧是將攝像機(jī)移動(dòng)速度考慮進(jìn)來,所以當(dāng)攝像機(jī)要發(fā)生移動(dòng)的時(shí)候,速度變化會(huì)稍慢一些,并且有可能超量移動(dòng),越過需要追蹤的目標(biāo)。最終呈現(xiàn)出一種將玩家運(yùn)動(dòng)與運(yùn)動(dòng)緩沖相結(jié)合的攝像機(jī)行為模式,不會(huì)因玩家反復(fù)的移動(dòng)變換而過度反應(yīng)。
?
模擬物理緩沖(physics-smoothing)-攝像機(jī)增加物理特性,持續(xù)靠近追蹤目標(biāo)位置均值(position-averaging)電影化路徑(cinematic-paths)區(qū)域性錨點(diǎn)(region-based-anchors)關(guān)鍵信息聚焦(cue-focus)
代碼的層面上講,如果線性插值是淡出(EaseOut)操作,那么模擬物理緩沖就是淡入加淡出(EaseInOut)。如果有條件的還可以研究一下平滑緩沖(SmoothDamp)的細(xì)節(jié),或者是你自己動(dòng)手實(shí)現(xiàn)一個(gè),別忘了把到目標(biāo)的距離、攝像機(jī)速度加入到系數(shù)當(dāng)中。
如果你只是單純的使用完美像素著色器(pixel-perfect shaders)的話,你有時(shí)候就會(huì)發(fā)現(xiàn)某個(gè)圖像和其他圖像或背景做對比時(shí),看起來偏移了1個(gè)像素,那是因?yàn)閿?shù)值劃分上不一致導(dǎo)致的。
盡管《光明旅者》畫面是低分辨率的像素風(fēng)的,但也很巧妙的做到了平滑滾動(dòng)。先在游戲原生完美像素畫布上預(yù)渲染一次,之后再將畫布變換到屏幕完美像素的大小,補(bǔ)充出變換后游戲原生畫布中有缺失位置的像素點(diǎn)。它還有很多有意思的攝像機(jī)設(shè)計(jì),我們后面再細(xì)講。
?
模擬物理緩沖(physics-smoothing)-游戲原生畫布分辨率480x720,而相機(jī)滾動(dòng)的畫布使用是全解析度區(qū)域性錨點(diǎn)(region-based-anchors)目標(biāo)聚焦(target-focus)關(guān)鍵信息聚焦(cue-focus)動(dòng)作聚焦(gesture-focus)譯者注:《光明旅者》已于2016年發(fā)售,故對原文進(jìn)行修正
畫面構(gòu)圖(Framing)
保證畫面細(xì)節(jié)的關(guān)鍵部分始終在框內(nèi)
雖然自動(dòng)滾動(dòng)從定義上講超出了今天的討論范圍,因?yàn)檫@種方式剝奪了玩家對屏幕滾動(dòng)的操控權(quán)。但與此同時(shí),因?yàn)樾枰獞?yīng)對前方接踵而來的敵人,并需要給隨時(shí)在后方出現(xiàn)的威脅留出反應(yīng)空間,因此,玩家需要在這兩者間權(quán)衡,也就間接暗示了場景中玩家的理想站位。
?
自動(dòng)滾動(dòng)(auto-scroll)-玩家對畫面滾動(dòng)幾乎沒有控制權(quán)(但玩家有調(diào)整自身對于畫面框體的相對站位的權(quán)利)
再回來看《吃豆世界》,如果你想通過把攝像機(jī)綁到玩家角色身上,使其直接控制攝像機(jī)移動(dòng)的話,你可以將攝像機(jī)聚焦區(qū)域從基于玩家的位置向前推。這樣給玩家留出足夠多的前方視野,并且也留有足夠讓他們留意后方事物的空間,這種設(shè)計(jì)也同樣暗示了玩家應(yīng)該朝哪個(gè)方向移動(dòng),因?yàn)槿藗兛傁胱屓宋锩橹嬅娴闹醒肱堋?/span>
?
位置鎖定(position-locking)靜態(tài)前置聚焦(static-forward-focus)-給主前進(jìn)方向留出額外的視野
把時(shí)間往回推,早在1981年一款飛行射擊游戲《防御者》進(jìn)入了我們的視線,后來它也陸續(xù)出了一系列的游戲。其畫面的特點(diǎn)在于使用了兩個(gè)方向上的前置聚焦,而聚焦區(qū)域幾乎都處于雷達(dá)圖示的下方。《防御者》始終將聚焦點(diǎn)放在飛船的前端的某個(gè)點(diǎn)上,該點(diǎn)到飛船的距離大約是屏幕整體寬度的25%。這種攝像機(jī)系統(tǒng)在快節(jié)奏的游戲中非常好用,尤其是當(dāng)大部分?jǐn)橙硕紡闹鹘钦鎭硪u時(shí)尤為明顯。
?
雙側(cè)前置聚焦(dual-forward-focus)-角色變換朝向時(shí),攝像機(jī)也變換至對應(yīng)側(cè)的前置聚焦點(diǎn),以給角色提供足夠的前方視野
1990年世嘉發(fā)行的《龍鳳神偷》是一款非常棒的橫板偷盜街機(jī)游戲。利用分屏功能,非常獨(dú)特的設(shè)計(jì)了雙人合作模式,因?yàn)橛螒蚓褪切值芏藚f(xié)力完成各種驚天劫案。
當(dāng)然,對于各種盜竊場景來講,給玩家前方一個(gè)良好的視野肯定是必須的,所以游戲也使用了雙向前置聚焦的設(shè)計(jì)。而且還讓攝像機(jī)在方向切換時(shí),有個(gè)緩慢加速后再追上新對焦點(diǎn)的過程,讓整體移動(dòng)效果在保證足夠視野的條件下仍然非常順滑。相機(jī)切換時(shí)的移動(dòng)速度大約是玩家的兩倍,而且它只有在玩家移動(dòng)的時(shí)候才會(huì)移動(dòng)。可以仔細(xì)地觀察下圖的紅色角色。
?
雙側(cè)前置聚焦(dual-forward-focus)-聚焦基于玩家的行走速度進(jìn)行變換
接下來要說的攝像機(jī)設(shè)計(jì)來自于《超級馬里奧世界》,應(yīng)該說是我最喜歡的2D攝像機(jī)設(shè)計(jì)之一了,以一種壓倒性的聚焦模式變換讓玩家關(guān)注到游戲中需要注意的細(xì)節(jié)。
?
區(qū)域性錨點(diǎn)(region-based-anchors)平臺吸附(platform-snapping)-攝像機(jī)只有在玩家落于某個(gè)平臺的表面上時(shí)才開始吸附攝像機(jī)窗體(縱向)(camera-window*vert.)-視情況生效雙側(cè)前置聚焦(dual-forward-focus)-閾值觸發(fā)器手動(dòng)操控(橫向)(manual-contro*horiz.)-使用控制器可以自主選擇額外的搖攝位置
另外,游戲設(shè)計(jì)了兩個(gè)錨點(diǎn),允許玩家無論朝哪個(gè)方向移動(dòng)都能有足夠?qū)挼囊曇啊I踔廉?dāng)玩家開始往反方向移動(dòng)時(shí)(《超級馬里奧世界》中經(jīng)場需要這樣),攝像機(jī)仍然根據(jù)之前移動(dòng)方向的聚焦模式而暫時(shí)保持靜止(譯者注:因?yàn)楦鶕?jù)窗體攝像機(jī)原理,當(dāng)時(shí)玩家沒有走到對應(yīng)側(cè)窗體邊緣,所以無需推進(jìn)攝像機(jī),這里大家可以仔細(xì)的看看動(dòng)圖,非常精妙),直到玩家碰到了另一個(gè)預(yù)設(shè)好的閾值邊界,攝像機(jī)這時(shí)才將聚焦點(diǎn)調(diào)整到反方向的錨點(diǎn)上。這個(gè)設(shè)計(jì)在《超級馬里奧世界》這種需要時(shí)不時(shí)向左或右轉(zhuǎn)身走兩步但又不需要持續(xù)朝反方向移動(dòng)的情況下非常好用。
回來看近些年的游戲,《洞窟物語》也使用了雙側(cè)前置聚焦,變換時(shí)根據(jù)人物移動(dòng)的速度以較為緩慢的速度的從一側(cè)對焦點(diǎn)挪到另一測,和之前《龍鳳神偷》的例子有些相似,只是在這個(gè)例子中攝像機(jī)是始終朝新的目標(biāo)錨點(diǎn)移動(dòng)的,只是會(huì)在玩家移動(dòng)時(shí)加速。
?
位置鎖定(縱向)(position-locking vert.)雙側(cè)前置聚焦(dual-forward-focus)模擬物理緩沖(physics-smoothing)手動(dòng)操控(manual-control)-使用控制器可以自主選擇額外的搖攝位置
早期EpicGames的《爵士兔子2》也是一款出色的平臺跳躍游戲。它有一個(gè)非常獨(dú)特的設(shè)計(jì)元素:根據(jù)玩家的控制輸入調(diào)整攝像機(jī)橫向或縱向地遠(yuǎn)離玩家所操控的角色。
它非常完美的詮釋了我提出的“目標(biāo)聚焦”設(shè)計(jì),玩家移動(dòng)是因?yàn)橄胍侥硞€(gè)地方或接近某個(gè)目標(biāo)位置,因此玩家的操作指令信息對攝像機(jī)也是一樣的,能讓攝像機(jī)知道應(yīng)該朝哪個(gè)方向移動(dòng)。因?yàn)楫?dāng)你朝左走時(shí),你肯定是想要看左邊的東西。而當(dāng)控制器上按鍵都被釋放時(shí),聚焦點(diǎn)就會(huì)移回玩家本身。
?
線性插值緩沖(縱向)(lerp-smoothing vert.)目標(biāo)聚焦(target-focus)-相機(jī)根據(jù)控制器輸入信息給出更多的目標(biāo)方向的視野由手柄搖桿或鼠標(biāo)位置將聚焦目標(biāo)點(diǎn)移向要去的方向手動(dòng)操控(manual-control)-可操控的縱向視野,可視為目標(biāo)聚焦的延申
目標(biāo)聚焦的設(shè)計(jì)可以從字面上解讀,衍生成畫面表現(xiàn)上的視覺目標(biāo),像很多靠鼠標(biāo)操作的游戲那樣。在《快照》中,可以使用鼠標(biāo)去截取場景中的某些物品再把他們放到其他位置來完成謎題。而這里的鼠標(biāo)某種意義上就是你當(dāng)前想要關(guān)注的點(diǎn),是一種視覺的延伸,而相機(jī)則聚焦在鼠標(biāo)和玩家間的中點(diǎn)位置。
?
?
《快照》("Snapshot")2012 Retro Affect
目標(biāo)聚焦(target-focus)-玩家與鼠標(biāo)位置間的中點(diǎn)線性插值緩沖(lerp-smoothing)
《易位者》有很多高級技巧,后面會(huì)細(xì)說。現(xiàn)在先集中討論目標(biāo)聚焦,克隆儀瞄準(zhǔn)目標(biāo)的過程某種程度上相當(dāng)于玩家視線的具象表現(xiàn),并且也做了非常好的視覺追蹤聚焦。當(dāng)游戲中有眾多獨(dú)立瞄準(zhǔn)性能的武器或裝置的情況下這種設(shè)計(jì)非常好用。玩家可以一邊向后退,一邊向前看,繼續(xù)瞄著他們想瞄的位置。是一種非常多變的攝像機(jī)行為模式,不過也需要有額外的控制系統(tǒng)來調(diào)節(jié)攝像機(jī)。
?
目標(biāo)聚焦(target-focus)模擬物理緩沖(physics-smoothing)區(qū)域性錨點(diǎn)(region-based-anchors)關(guān)鍵信息聚焦(cue-focus)電影化路徑(cinematic-paths)
《雷堤康的秘密》也有很多有意思的攝像機(jī)設(shè)計(jì),而基本構(gòu)圖方面,它使用了預(yù)估聚焦,根據(jù)玩家當(dāng)前所在的位置和當(dāng)前移動(dòng)速度進(jìn)行簡單的推論計(jì)算得出相機(jī)聚焦位置。
需要注意的是,這個(gè)方法在平臺跳躍游戲中表現(xiàn)并不好,尤其是縱向。因?yàn)榻巧奶S和落地都很難做好預(yù)估。
?
?
《雷堤康的秘密》("Secrets of R?tikon")2014 Broken Rules
預(yù)估聚焦(projected-focus)-手機(jī)游戲相機(jī)預(yù)估(推斷)的玩家位置并進(jìn)行追蹤模擬物理緩沖(physics-smoothing)關(guān)鍵信息聚焦(cue-focus)-根據(jù)引力場調(diào)整位置和放大倍數(shù)動(dòng)作聚焦(gesture-focus)-部分動(dòng)作會(huì)影響相機(jī)行為,例如:飛行時(shí)鏡頭會(huì)拉遠(yuǎn)電影化路徑(cinematic-paths)
《天空奇兵》吸收了多種優(yōu)秀的設(shè)計(jì)并且有非常有趣的組合:飛機(jī)當(dāng)前瞄準(zhǔn)的位置(目標(biāo)聚焦),和飛機(jī)實(shí)際飛行的方向(預(yù)估聚焦),其他的關(guān)鍵元素如水面,飛空戰(zhàn)艦,空中子彈等等都會(huì)在靠近機(jī)體時(shí)拉動(dòng)對焦點(diǎn)(關(guān)鍵信息聚焦)。
目標(biāo)聚焦/預(yù)估聚焦(target-focus/projected-focus)模擬物理緩沖(physics-smoothing)關(guān)鍵信息聚焦(cue-focus)
總結(jié)
以上是生活随笔為你收集整理的横版游戏的摄像机移动理论与实践(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手游特效太多怎么办?这里有一份性能优化方
- 下一篇: 搭载「光线追踪」技术的次时代主机会有怎样