橫版遊戲的攝像機移動理論與實踐(上)
譯者注:本文原作者Itay Keren(Untame工作室創始人,《Mushroom 11》作者),文章釋出於GAMASUTRA。是其於2015年遊戲開發者大會(GDC)上《How Cameras in Side-Scrollers Work》演講稿件的修改補充版。
原文地址:《Scroll Back:The Theory and Practice of Cameras in Side-Scrollers》
原視訊:《How Cameras in Side-Scrollers Work》
本文較長並有大量動圖,請注意流量使用情況。
概述(Overview)
《蘑菇11》("Mushroom 11")2015 Untame
上圖是開發中的《Mushroom 11》,開發中遇到很多設計和技術難題。遊戲角色形狀的動態變化或是頂點動畫帶來的種種問題,起初沒期待能直接找到參考案例。然而縱觀三十多年的遊戲歷史,卻很驚訝的發現遊戲攝像機的運用方法卻幾乎沒什麼人討論。
於是我決定從2D遊戲的歷史發展上一步一步看過來,整理他們當時所面臨的挑戰,並逐步分析方案的演化過程。由於沒有專業術語能夠直接將這些方案闡述出來,我就在蒐集過程中試著按類歸納,用自己的詞彙描述出來(方便日後進行檢索)。
滾動(Scrolling)
滾動或平移,當試圖展現的場景在單螢幕下容納不下時的表現手法。其實有很多潛在問題需要在滾動中解決,比如:選擇哪些是必須要展現給玩家看的;作為設計者希望玩家去關注什麼;解決問題的同時如何帶給玩家流暢而舒適的感受。
雖然今天討論的內容都是2D攝像機系統,但很多理念在3D的設計上也是共通的。
神經學背景(Neural Background)
在討論遊戲之前,先來接觸一些神經學的背景知識,以便我們能夠更好的瞭解我們的視覺和感知系統。也就能夠理解有些滾動為什麼設計的不好了。
中心窩是眼球內部的接收器,負責視覺中最清晰的部分。視覺中的第二、三條紐帶分別是副中心窩和近中心窩,負責減輕視覺中影象的偏移,善於捕捉影象的位置變換,並且能夠很迅速的察覺到危險形狀的物體以及他們的速度和方向。
這些視覺輸入通過一些高速的神經通道直達腦部的杏仁體,允許我們在大腦視覺皮質層解析視覺輸入前做出更快的反應。只需要花點時間訓練一下,就能將某些視覺資訊和相應的反應操作捆綁在一起,這在遊戲設計中也十分有用。
前庭系統位於內耳,負責維持身體平衡和方向感。大腦接收來自前庭系統的神經訊號就可以幫助我們維持身體的平衡,並且能夠輔助我們的視覺系統,使我們集中注意力到想要觀看的細節上。有些人,比如我這種,喜歡在車內看書,但這時車身加速度不斷變化,而視覺上接收到相應的輔助反饋又很少,就有很可能引起頭暈噁心。
反之亦然:中心窩接收到視覺上背景物體的變化,於是等待前庭系統相應的反饋訊號。然而什麼神經反饋都沒有(因為這時玩家正老老實實的坐在電腦前面),帶來的負面效果是一樣的。
儘管在3D場景中(尤其是VR)感官訊號之間(視覺上和聽覺上)衝突所引發的不適和眩暈感表現更為明顯,但在2D遊戲中所帶來的影響也是不可忽視的。
注意力,互動感與舒適度(Attention,Interaction and Comfort)
我將攝像機滾動所帶來的種種需要解決的問題與挑戰分成了以下三類,以便我們更好的理解:
注意力:利用攝像機提供有效的遊戲資訊顯示和反饋(玩家需要看到些什麼)
互動感:把玩家所作的操作清晰的反饋出來,讓背景變化變得可預測,並且與操作緊密相連(玩家想要看到些什麼)
舒適度:根據背景變化的前後關係進行調整或減緩背景的變化速率(如何讓攝像機平穩舒適的移動以滿足視覺上的需求)
經典滾動設計(Scrolling Nostalgia)
那麼就從80年代開始我們的旅程吧。有很多設計師,即使是30年後的今天再回頭看,也很難想象他們是如何在技術有限的情況下克服重重困難,在那個年代就發明瞭如此多的獨創設計方案的。
文章裡也會提到很多近10年的獨立遊戲,這些獨立製作者有很多相當有創意的表現方式,並且在注意力的把控上也做得很好,而且攝像機的運作方式也截然不同。
運動追蹤(Follow The Action)
把所有的注意力都放在你所控制的物體上
先從最基礎的說起。大部分遊戲中,玩家對主角有著絕對的控制權。也就意味著,所有的注意力都應當直接引向玩家所控制的角色,而攝像機也應當緊緊的跟隨著角色運動。
在80年代早期,實現滾動還是個很難的事。儘管開發者需要面對CPU、記憶體容量與分配等等限制所帶來種種問題,仍然有很多非常傑出的滾動方案誕生,並且也克服了這些硬體、軟體上的限制。當然那個時代的案例中,運動還很簡單,而且遊戲解析度也比較低。
值得一提的是早在1980年,類似《拉力賽車》這種作品,已經能夠解決技術限制,並且在畫面展示上實現了真正意義上的雙軸攝像機。通過對指定位置的鎖定機制,讓賽車始終鎖定在攝像機正中央,隨之產生的鏡頭運動也都在玩家的意料之中。
《拉力賽車》("Rally-X")1980 Namco
位置鎖定(position-locking)-鎖定玩家所操控的角色注:本文中的攝像機分類是我參考多種資料和作品後自創的。如果您覺得還算有用,發現有可以改進的地方歡迎聯絡我(譯者注:此處指聯絡Itay Keren)。
關於位置鎖定攝像機還有另一個例子,由西山隆志設計的《功夫》。西山隆志也是《月球巡邏車》的設計者,後來還製作了《街頭霸王》。
《功夫》還使用了另一個機制,邊界捕捉,把攝像機的移動範圍限制在當前關卡內,這種設計可以允許角色離開攝像機追蹤錨點繼續移動。
《功夫》("Kung-Fu Master")1984 Irem
位置鎖定(position-locking)邊界限位(edge-snapping)-設定一個攝像機調整位置的邊界限制。邊界限位的機制幾乎在每個遊戲中都有,下文再遇到就暫且不標出來了
位置鎖定雖然是很基礎的手法但確實很實用。製作類似《泰拉瑞亞》這樣的冒險遊戲時,角色相對於整塊螢幕的比例很小,而且跳躍幅度也不大,動起來的效果很好,各個方向也都留有足夠的視野。
《泰拉瑞亞》("Terraria")2011 Re-Logic
位置鎖定(position-locking)攝像機運動約束(Curb Camera Motion)
避免不必要的或預料之外的抖動
如果不是必須要移動攝像機,如何能避免它的移動呢?早在30年前,攝像機滾動還存在很多問題:非常耗費CPU,螢幕上很多東西都需要重新整理顯示。就算能夠成功動起來,單位時間內移動大量的畫素點也會導致運動不連貫。所以最好的方法是將滾動的需求降到最低。比如讓角色在螢幕有限的範圍內移動,只有當角色碰到邊緣時才運動攝像機。
很多人認為《跳跳車》是歷史上第一個平臺跳躍遊戲,雖然嚴格意義上講,玩家只是不斷的自動跳躍,能做的操作也因為受到跳躍機制的限制而只有向左或向右移動而已。當時大部分遊戲攝像機都是自動移動的,促使玩家在避開障礙的同時,要不斷跟上攝像機的視野。
《跳跳車》("Jump Bug")1981 Hoei/Coreland(Alpha Denshi)
攝像機窗體(camera-window)-當玩家碰到窗體邊界時推動攝像機
儘管是為了解決運動層面上的問題才使用攝像機窗體,但實際上它還同樣解決了另外一個很多設計者本身都沒意識到的問題,而它所帶來的設計標準,也致使後來數不清的平臺跳躍遊戲都沿用這種設計。不過攝像機窗體技術也帶來了新的難題,例如玩家在朝著窗體邊緣移動時,視野很小,玩家很難判斷之後會遇到什麼。
另一款我非常喜歡的遊戲,《拉斯坦傳奇》,有雙軸移動並且還有多個路線可選。它也是第一款將攝像機和遊戲機制間的關係帶來革命性變化的作品。攝像機窗體的高度和人物跳躍高度一致,因此只要人物在窗體內進行普通跳躍就不會造成攝像機縱向的移動。實現了消除攝像機抖動的需求。
但這個例子中也有個比較嚴重的缺陷,玩家很難看到從上方來的敵人,尤其是當拉斯坦已經在窗體內發生縱向移動的時候會更難發現。並且在需要向左移動時,尤其是城堡那關,由於窗體只留了很窄小的空間,會非常不舒服。
《拉斯坦傳奇》("Rastan Saga")1987 Taito
攝像機窗體(camera-window)
攝像機窗體的技術在新出的遊戲中也還在用。再來看《菲斯》,橫向的窗體邊緣在空間旋轉時也保持不變,實際上,空間旋轉的軸心是經過調整的以保證角色始終處於窗體內。Fez的攝像機距離它預設追隨物體的空間距離非常遠,對於它獨特的玩法而言是非常理想的解決方案,後面我們也會再解釋。
《菲斯》("Fez")2012 Polytron Corporation
攝像機窗體(橫向)(camera-window horiz.)-空間變換時也持續作用位置鎖定(縱向)(position-locking vert.)線性插值緩衝(lerp-smoothing)區域性錨點(region-based-anchors)手動操控(manual-control)-用右搖桿可以進行手動搖攝注:未加粗的術語下文會進行講解
捕捉與吸附(Snapping)
攝像機在窗體內的移動修正
上文介紹了攝像機窗體的設計來減少相機的移動,但從《跳跳車》和《拉斯坦傳奇》的例子中不難看出,即使玩家在窗體內進行移動,也還有很多問題。現在就來討論幾種修正的方法。
《忍》應該說是我最喜歡的經典遊戲之一了,遊戲中有很多需要在不同平臺間進行大跳的操作。設計師就想了個獨特的系統:縱向上有很多需要玩家來回跳躍的平臺,所以《忍》就使用了一個縱向高度很大的攝像機窗體。和之前一樣碰到窗體邊緣時會立即推動攝像機移動。但問題在於這種縱向過高的窗體,當玩家做了個小跳的時候很有可能被卡在一個相對於螢幕較高的位置,這時候頂部的視野就變得異常狹窄,就像《拉斯坦傳奇》中那樣。而《忍》卻通過一個簡單的方法,讓攝像機持續地緩慢地對準忍者角色,讓畫面始終聚焦在移動的主角上,並且也大大減少了需要頻繁的挪動攝像機情況的出現率。
《忍》("Shinobi")1987 Sega
位置捕捉(縱向)(position-snapping vert.)-持續作用,減少攝像機在重新聚焦玩家時所造成的畫面抖動攝像機窗體(縱向)(camera-window vert.)位置鎖定(橫向)(position-locking horiz.)靜態前置聚焦(static-forward-focus)
《超級馬里奧世界》運用的機制更多,但有一點值得一提的是它的平臺捕捉。和其他攝像機窗體一樣,如果玩家沒有碰到窗體邊緣攝像機就始終保持靜止。但當瑪麗奧落到不同的平臺上時,攝像機也會立即開始吸附到瑪麗奧所在的位置。
《超級馬里奧世界》("Super Mario World")1990 Nintendo
區域性錨點(region-based-anchors)平臺吸附(platform-snapping)-攝像機只有在玩家落於某個平臺的表面上時才開始吸附攝像機窗體(縱向)(camera-window vert.)-視情況生效雙側前置聚焦(dual-forward-focus)-閾值觸發器手動操控(橫向)(manual-contro horiz.)-使用控制器可以自主選擇額外的搖攝位置
(本文中第一次提到宮本茂,當然後面會再講他的作品。真正優秀的設計師能夠用心地注意到細節設計,不止是在遊戲玩法機制上耍小聰明。)
可以看到在最早的《雷曼》中也用了同樣的點子。螢幕的最頂端相當於攝像機窗體的最上沿。可以看到攝像機在雷曼跳躍的時候並沒有移動,而在他落地後才平緩的吸附到他落地的位置。而攝像機窗體剛好比雷曼的跳躍高度稍高一點也是個很聰明的設計,當然也再次證明了攝像機系統是遊戲設計中必不可少的一部分。
《雷曼》("Rayman")1995 Ubisoft
平臺吸附(platform-snapping)攝像機窗體(縱向)(camera-window vert.)區域性錨點(region-based-anchors)雙側前置聚焦(dual-forward-focus)線性插值緩衝(lerp-smoothing)均視情況生效
這個技巧在今天的遊戲中也十分有效,允許設計師能夠在遊戲角色跳躍時仍保持相機平滑穩定的執行,只有在完成跳躍或是角色推動攝像機窗體之後再開始重新居中攝像機。注意一點,平臺吸附只有在角色能夠確實的落到平臺時才會比較有效。在其他遊戲中,像是《王牌英雄》這種有噴氣揹包的角色,攝像機的移動更多是靠玩家觸碰縱向的攝像機窗體來完成的。
《王牌英雄》("Awesomenauts")2012 Ronimo Games
攝像機窗體(縱向)(camera-window vert.)平臺吸附(platform-snapping)位置鎖定(橫向)(position-locking horiz.)
平滑與緩衝(Smoothing)
避免攝像機突然發生速度大小或速度方向上的改變
之前介紹了周圍視覺在視覺系統中所承擔的角色以及基於它的機理所帶來的影響。以前的遊戲看起來畫素點都很大,使得即使是很簡單的變換都會看起來非常跳躍,突兀。
80年代的畫素(“紅白機”NES解析度:256x240)
邏輯相對畫素(包含有多個螢幕畫素點)
假定我們只能使用裝置原生網格上的畫素時,要怎麼樣才能讓相機的移動更加平滑呢?雖然當下我們可以創作出各種精美的畫素藝術,但他們實際運動時畫素位移的精度是要比看上去的畫素畫的畫素大小要精細的多的。如果你不想用完美畫素處理技術(Pixel Perfect)的話,你甚至可以利用現代遊戲引擎所提供的亞畫素空間(sub-pixel space)。
利用物理特性(或偽物理特性)平滑移動
偽物理特性也可以在平滑相機移動上摻一腳,尤其是位置鎖定攝像機(當然你可以認為任何遊戲引擎內的物理系統實際上都是偽物理)。
有說法認為《吃豆世界》是第一款現代平臺跳躍遊戲。它所包含的多種玩法元素幫助人們確定了這種型別遊戲的定義,例如需要跳到各種平臺上,還要躲開不同種類的敵人,最後撿起多種獎勵道具。至於移動的平滑方法,使攝像機的速度從0畫素每幀開始逐漸加速,位移1畫素每秒,2畫素每秒,3畫素每秒,直到最大速度,之後再減緩到0。由於攝像機是鎖定到玩家位置上的,所以呈現的畫面就變得清晰又平滑了。另外《吃豆世界》不需要縱向滾動,但其實縱向滾動才是最難做的,因為起跳和落地時加速和減速的變化非常快。
《吃豆世界》("Pac-Land")1984 Namco
位置鎖定(position-locking)靜態前置聚焦(static-forward-focus)
宮本茂(Shigeru Miyamoto)
不過既然都說到這了,不得不致敬一下宮本茂了,順便展示一下他早期的作品。他對整個遊戲產業的極大貢獻,以及對遊戲細節的極致設計都是非常寶貴的,毫不誇張。
早在1984年他開始實驗性的研究螢幕滾動,並且用完全不同的滾動模式設計出兩款遊戲。這兩款遊戲玩家操控對螢幕滾動的控制比重很小,甚至沒有。更像是身處在一個背景會變化的房間中。
《越野機車》("Excitebike")1984 Nintendo
《惡魔世界》("Devil World")1984 Nintendo(未在北美髮售)
《越野機車》就和現代遊戲的滾動模式差不多,根據摩托車的速度來調整滾動速度。運動起來也足夠平滑,但實際上並沒有在鏡頭上加其他的效果。
《惡魔世界》幾乎所有的玩法都和滾動緊密相連。主角就和吃豆人一樣,玩家扮演一個基督小龍和惡魔對抗,惡魔是個負責調整螢幕滾動方向的角色,試圖把玩家推向螢幕邊緣。也是由於使用了宗教相關的符號,這款遊戲成為了唯一一款在北美遭遇禁售的宮本茂作品。當然如果把他數十年的作品都對比列出的話,似乎這也算不上什麼巨大損失了。不論怎樣,去看看這些現在被譽為天才的遊戲設計師的早期或者不太成功的作品其實也很重要,也能夠時不時的得到些啟發。畢竟最偉大的藝術家的實驗作品也經常有失敗作。
把時間向前推進1年,很難錯過《超級馬里奧兄弟》的絕妙設計。遊戲玩法本身就結合了最簡單的“從左到右”,水平方向上只有這一個方向。並且遊戲不允許玩家返回至超出當前螢幕的位置,很典型的平臺跳躍遊戲特徵(從技術上講,應該被定義為單側的攝像機窗體)。
《超級馬里奧兄弟》("Super Mario Bros.")1985 Nintendo
區內加速(speedup-push-zone)-角色處於加速區內時,相機會逐漸加速直到追上玩家的速度攝像機窗體(camera-window)-單側檢測靜態前置聚焦(static-forward-focus)
所以,當瑪麗奧一路向左走到頭,之後加速通過攝像機窗體邊緣時,攝像機在1幀內會從零速靜止狀態直接變成滿速狀態,與此同時背景速度大幅變化,不可避免得會造成玩家各種不適的症狀。於是設計者想了個辦法,在偏移中心區域大約25%的位置加入了一個虛擬點,角色通過時攝像機會進行加速試圖追上瑪麗奧,所以當瑪麗奧碰到攝像機窗體時,攝像機的速度已經和人物移動速度相差無幾了。
《銀河戰士》也曾經是一款突破性的遊戲,創造了一個全新的遊戲型別,平臺跳躍與探索相結合。(順便一提,它的“親兄弟”《惡魔城》使用的是非常基礎的方法,位置鎖定攝像機。)
《銀河戰士》進行探索時有多個軸線,但不同時存在。它有另一套緩衝攝像機移動的方法,允許玩家走出攝像機窗體,之後再使攝像機加速追上玩家。追蹤速度的快慢取決於玩家穿過窗體後的距離長短,最終也呈現出一個非常平滑的攝像機移動模式。
《銀河戰士》("Metroid")1986 Nintendo
攝像機窗體(橫向或縱向)(camera-window horiz./vert.)區外加速(speedup-pull-zone)-當玩家穿過攝像機窗體時攝像機開始加速移動以追上玩家
由於技術的不斷提升,裝置有了更高畫素的畫面和更強勁的處理器,也直接影響到攝像機系統設計。新技術允許攝像機更加自由的移動,而不用擔心攝像機移動時,特別是低速一幀一動的情況下,因為低解析度導致畫面抖動。
《大金剛國度》也有很多新穎的攝像機設計,也是第一個使用線性插值做攝像機移動緩衝的遊戲,讓遊戲在角色跳躍時的鏡頭追蹤或向前移動時的聚焦前移都很順滑(畫面聚焦後文會繼續討論)。
《大金剛國度》("Donkey Kong Country")1994 Nintendo(Rare Ltd)
線性插值緩衝(lerp-smoothing)-持續通過線性插值來減小攝像機與玩家角色間的距離位置鎖定(縱向)(position-locking vert.)區域性錨點(region-based-anchors)雙側前置聚焦(dual-forward-focus)
線性插值聽起來挺高大上的,但實際上已經是個用來減緩攝像機速度變動的標準工具了,尤其是攝像機在追蹤人物跳躍的時候。
float lerp(float a,float b,float t){return a+t*(b-a);}
它真的非常有效而且在平滑緩衝方面的用途很廣。像《超級食肉男孩》那種在移動時忽快忽慢的角色,用線性插值做緩衝很好用。但有個缺點,如果是體積比較大運動又極其快的角色,使用這種方法很容易在相機還沒追上角色前,角色就已經移動到螢幕邊上了,這樣在一段時間內螢幕外即將遇到的敵人就對玩家不可見了。
《超級食肉男孩》("Super Meat Boy")2010 Team Meat
線性插值緩衝(lerp-smoothing)位置鎖定(position-locking)
2014年一款非常精美的遊戲《不再孤獨》面世了,遊戲中的攝像系統用了很多不一樣的元素,後面會詳細講。它緩衝的技巧是將攝像機移動速度考慮進來,所以當攝像機要發生移動的時候,速度變化會稍慢一些,並且有可能超量移動,越過需要追蹤的目標。最終呈現出一種將玩家運動與運動緩衝相結合的攝像機行為模式,不會因玩家反覆的移動變換而過度反應。
《不再孤獨》("Never Alone")2014 Upper One Games
模擬物理緩衝(physics-smoothing)-攝像機增加物理特性,持續靠近追蹤目標位置均值(position-averaging)電影化路徑(cinematic-paths)區域性錨點(region-based-anchors)關鍵資訊聚焦(cue-focus)
程式碼的層面上講,如果線性插值是淡出(EaseOut)操作,那麼模擬物理緩衝就是淡入加淡出(EaseInOut)。如果有條件的還可以研究一下平滑緩衝(SmoothDamp)的細節,或者是你自己動手實現一個,別忘了把到目標的距離、攝像機速度加入到係數當中。
如果你只是單純的使用完美畫素著色器(pixel-perfect shaders)的話,你有時候就會發現某個影象和其他影象或背景做對比時,看起來偏移了1個畫素,那是因為數值劃分上不一致導致的。
儘管《光明旅者》畫面是低解析度的畫素風的,但也很巧妙的做到了平滑滾動。先在遊戲原生完美畫素畫布上預渲染一次,之後再將畫布變換到螢幕完美畫素的大小,補充出變換後遊戲原生畫布中有缺失位置的畫素點。它還有很多有意思的攝像機設計,我們後面再細講。
《光明旅者》("Hyper Light Drifter")2016 Heart Machine
模擬物理緩衝(physics-smoothing)-遊戲原生畫布解析度480x720,而相機滾動的畫布使用是全解析度區域性錨點(region-based-anchors)目標聚焦(target-focus)關鍵資訊聚焦(cue-focus)動作聚焦(gesture-focus)譯者注:《光明旅者》已於2016年發售,故對原文進行修正
畫面構圖(Framing)
保證畫面細節的關鍵部分始終在框內
雖然自動滾動從定義上講超出了今天的討論範圍,因為這種方式剝奪了玩家對螢幕滾動的操控權。但與此同時,因為需要應對前方接踵而來的敵人,並需要給隨時在後方出現的威脅留出反應空間,因此,玩家需要在這兩者間權衡,也就間接暗示了場景中玩家的理想站位。
《緊急起飛》("Scramble")1981 Konami
自動滾動(auto-scroll)-玩家對畫面滾動幾乎沒有控制權(但玩家有調整自身對於畫面框體的相對站位的權利)
再回來看《吃豆世界》,如果你想通過把攝像機綁到玩家角色身上,使其直接控制攝像機移動的話,你可以將攝像機聚焦區域從基於玩家的位置向前推。這樣給玩家留出足夠多的前方視野,並且也留有足夠讓他們留意後方事物的空間,這種設計也同樣暗示了玩家應該朝哪個方向移動,因為人們總想讓人物瞄著畫面的中央跑。
《吃豆世界》("Pac-Land")1984 Namco
位置鎖定(position-locking)靜態前置聚焦(static-forward-focus)-給主前進方向留出額外的視野
把時間往回推,早在1981年一款飛行射擊遊戲《防禦者》進入了我們的視線,後來它也陸續出了一系列的遊戲。其畫面的特點在於使用了兩個方向上的前置聚焦,而聚焦區域幾乎都處於雷達圖示的下方。《防禦者》始終將聚焦點放在飛船的前端的某個點上,該點到飛船的距離大約是螢幕整體寬度的25%。這種攝像機系統在快節奏的遊戲中非常好用,尤其是當大部分敵人都從主角正面來襲時尤為明顯。
《防禦者》("Defender")1981 Williams Electronics
雙側前置聚焦(dual-forward-focus)-角色變換朝向時,攝像機也變換至對應側的前置聚焦點,以給角色提供足夠的前方視野
1990年世嘉發行的《龍鳳神偷》是一款非常棒的橫板偷盜街機遊戲。利用分屏功能,非常獨特的設計了雙人合作模式,因為遊戲就是兄弟二人協力完成各種驚天劫案。
當然,對於各種盜竊場景來講,給玩家前方一個良好的視野肯定是必須的,所以遊戲也使用了雙向前置聚焦的設計。而且還讓攝像機在方向切換時,有個緩慢加速後再追上新對焦點的過程,讓整體移動效果在保證足夠視野的條件下仍然非常順滑。相機切換時的移動速度大約是玩家的兩倍,而且它只有在玩家移動的時候才會移動。可以仔細地觀察下圖的紅色角色。
《龍鳳神偷》("Bonanza Bros.")1990 Sega
雙側前置聚焦(dual-forward-focus)-聚焦基於玩家的行走速度進行變換
接下來要說的攝像機設計來自於《超級馬里奧世界》,應該說是我最喜歡的2D攝像機設計之一了,以一種壓倒性的聚焦模式變換讓玩家關注到遊戲中需要注意的細節。
《超級馬里奧世界》("Super Mario World")1990 Nintendo
區域性錨點(region-based-anchors)平臺吸附(platform-snapping)-攝像機只有在玩家落於某個平臺的表面上時才開始吸附攝像機窗體(縱向)(camera-window*vert.)-視情況生效雙側前置聚焦(dual-forward-focus)-閾值觸發器手動操控(橫向)(manual-contro*horiz.)-使用控制器可以自主選擇額外的搖攝位置
另外,遊戲設計了兩個錨點,允許玩家無論朝哪個方向移動都能有足夠寬的視野。甚至當玩家開始往反方向移動時(《超級馬里奧世界》中經場需要這樣),攝像機仍然根據之前移動方向的聚焦模式而暫時保持靜止(譯者注:因為根據窗體攝像機原理,當時玩家沒有走到對應側窗體邊緣,所以無需推進攝像機,這裡大家可以仔細的看看動圖,非常精妙),直到玩家碰到了另一個預設好的閾值邊界,攝像機這時才將聚焦點調整到反方向的錨點上。這個設計在《超級馬里奧世界》這種需要時不時向左或右轉身走兩步但又不需要持續朝反方向移動的情況下非常好用。
回來看近些年的遊戲,《洞窟物語》也使用了雙側前置聚焦,變換時根據人物移動的速度以較為緩慢的速度的從一側對焦點挪到另一測,和之前《龍鳳神偷》的例子有些相似,只是在這個例子中攝像機是始終朝新的目標錨點移動的,只是會在玩家移動時加速。
《洞窟物語》("Cave Story")2004 Studio Pixel
位置鎖定(縱向)(position-locking vert.)雙側前置聚焦(dual-forward-focus)模擬物理緩衝(physics-smoothing)手動操控(manual-control)-使用控制器可以自主選擇額外的搖攝位置
早期EpicGames的《爵士兔子2》也是一款出色的平臺跳躍遊戲。它有一個非常獨特的設計元素:根據玩家的控制輸入調整攝像機橫向或縱向地遠離玩家所操控的角色。
它非常完美的詮釋了我提出的“目標聚焦”設計,玩家移動是因為想要到某個地方或接近某個目標位置,因此玩家的操作指令資訊對攝像機也是一樣的,能讓攝像機知道應該朝哪個方向移動。因為當你朝左走時,你肯定是想要看左邊的東西。而當控制器上按鍵都被釋放時,聚焦點就會移回玩家本身。
《爵士兔子2》("Jazz Jackrabbit 2")1998 Epic Games
線性插值緩衝(縱向)(lerp-smoothing vert.)目標聚焦(target-focus)-相機根據控制器輸入資訊給出更多的目標方向的視野由手柄搖桿或滑鼠位置將聚焦目標點移向要去的方向手動操控(manual-control)-可操控的縱向視野,可視為目標聚焦的延申
目標聚焦的設計可以從字面上解讀,衍生成畫面表現上的視覺目標,像很多靠滑鼠操作的遊戲那樣。在《快照》中,可以使用滑鼠去擷取場景中的某些物品再把他們放到其他位置來完成謎題。而這裡的滑鼠某種意義上就是你當前想要關注的點,是一種視覺的延伸,而相機則聚焦在滑鼠和玩家間的中點位置。
《快照》("Snapshot")2012 Retro Affect
目標聚焦(target-focus)-玩家與滑鼠位置間的中點線性插值緩衝(lerp-smoothing)
《易位者》有很多高階技巧,後面會細說。現在先集中討論目標聚焦,克隆儀瞄準目標的過程某種程度上相當於玩家視線的具象表現,並且也做了非常好的視覺追蹤聚焦。當遊戲中有眾多獨立瞄準效能的武器或裝置的情況下這種設計非常好用。玩家可以一邊向後退,一邊向前看,繼續瞄著他們想瞄的位置。是一種非常多變的攝像機行為模式,不過也需要有額外的控制系統來調節攝像機。
《易位者》("The Swapper")2013 Facepalm Games
目標聚焦(target-focus)模擬物理緩衝(physics-smoothing)區域性錨點(region-based-anchors)關鍵資訊聚焦(cue-focus)電影化路徑(cinematic-paths)
《雷堤康的祕密》也有很多有意思的攝像機設計,而基本構圖方面,它使用了預估聚焦,根據玩家當前所在的位置和當前移動速度進行簡單的推論計算得出相機聚焦位置。
需要注意的是,這個方法在平臺跳躍遊戲中表現並不好,尤其是縱向。因為角色的跳躍和落地都很難做好預估。
《雷堤康的祕密》("Secrets of Rætikon")2014 Broken Rules
預估聚焦(projected-focus)-相機預估(推斷)的玩家位置並進行追蹤模擬物理緩衝(physics-smoothing)關鍵資訊聚焦(cue-focus)-根據引力場調整位置和放大倍數動作聚焦(gesture-focus)-部分動作會影響相機行為,例如:飛行時鏡頭會拉遠電影化路徑(cinematic-paths)
《天空奇兵》吸收了多種優秀的設計並且有非常有趣的組合:飛機當前瞄準的位置(目標聚焦),和飛機實際飛行的方向(預估聚焦),其他的關鍵元素如水面,飛空戰艦,空中子彈等等都會在靠近機體時拉動對焦點(關鍵資訊聚焦)。
《天空奇兵》("Luftrausers")2014 Vlambeer
目標聚焦/預估聚焦(target-focus/projected-focus)模擬物理緩衝(physics-smoothing)關鍵資訊聚焦(cue-focus)
下文:橫版遊戲的攝像機移動理論與實踐(下)
作者:奇詭故事販賣機
來源:機核
原地址:https://www.gcores.com/articles/111493
相關文章
- three.js 利用滑鼠移動攝像機JS
- 談理論與實踐
- https理論與實踐HTTP
- 一次實踐:給自己的手機攝像頭進行相機標定
- js正則理論與實踐JS
- 理解RESTful:理論與最佳實踐REST
- 機器學習基礎篇:支援向量機(SVM)理論與實踐機器學習
- 攝像機控制軟體CaptureGRID更好的幫您管理攝像機APT
- Java 理論與實踐: 關於異常的爭論Java
- 區塊鏈驅動金融創新的理論與實踐分析區塊鏈
- Golang實時GC的理論與實踐總結GolangGC
- 三層架構--理論與實踐架構
- Java 執行緒池的理論與實踐Java執行緒
- Java 理論與實踐: 用動態代理進行修飾Java
- 喵的Unity遊戲開發之路 - 軌道攝像機Unity遊戲開發
- 橫版動作經典遊戲IP與肉鴿戰棋的全新碰撞遊戲
- Node直出理論與實踐總結
- Java 理論與實踐: 併發集合類Java
- 深入解析Rivest Cipher 4:理論與實踐
- 密碼學與密碼安全:理論與實踐密碼學
- 論移動裝置內容的橫向滾動和豎向滾動
- Lighthouse與Google的移動端最佳實踐Go
- 理論+實踐解析“IT治理”之模式與原則模式
- 【軟體工程理論與實踐】Homework(四.1)軟體工程
- MediaPost:移動遊戲上的廣告機遇正在顯現遊戲
- 【智慧製造】首鋼智造的理論探索與實踐
- 決策樹在機器學習的理論學習與實踐機器學習
- 手機攝像頭改裝手機攝像頭監控移動到頂部或者底部USB外接鎖屏錄影後臺錄影教程軟體
- unity3d--攝像機Unity3D
- unity3d攝像機Unity3D
- 想用手機拍攝虛擬現實影片? 看看Teleport智慧攝像頭
- 3D遊戲引擎之遊戲攝像機的使用 公開課直播視訊3D遊戲引擎
- 從Monolith到微服務:理論與實踐 - Kent BeckMono微服務
- 淺入淺出深度學習理論與實踐深度學習
- 圖書 "ERP理論 方法與實踐" 目錄
- Oracle10g Data Guard (Standby) 理論與實踐Oracle
- 理論指導實踐薦
- 嚴建兵 | 玉米基因組育種的理論與實踐