如何用遊戲設計「欺騙玩家眼睛」?開發者談遊戲中的「障眼法」

2020-02-11   GameRes遊資網

作者Jerish

電子遊戲從上世紀誕生以來,已經從簡陋粗糙的2D畫面成長到如今以假亂真的3D效果,交互上也從原來幾個簡單按鈕進化到各種VR體感類型的可穿戴設備,遊戲玩法和複雜度上更是上升到一門足夠深入探討的科學與藝術。



雖然電子設備的性能每年都在不斷攀升,但是CPU與內存等資源還是供不應求。為了提高效率或者節省資源,幾乎所有遊戲都會採取各種非常取巧的方式來達到某種表現效果,導致遊戲實現的方式可能與玩家的認知大相逕庭。這篇文章,就從開發者的角度給大家扒一扒這些「遊戲障眼法」。


「障眼法」數不勝數,種類繁多,這裡面大體上分為下面幾類。


1.巧妙利用玩家視角


簡單來說,就是「保證玩家看到的內容沒有bug」,我們只關注玩家能看到的內容,而看不到的無論有多麼簡陋與不堪,開發者都完全不去理會。這是遊戲中最為常用的手段,具體的實現方式與技巧也說是五花八門,只有你想不到,沒有開發者玩不了。


例子1:


cs中的角色,我們每次拿著一把衝鋒鎗奮勇殺敵的時候,螢幕中心都是這樣的第一人稱視角。



隨著我們利用精湛的槍法不斷地擊殺敵人,心中的自己一定是這樣的,



或者這樣



再不濟也就是這樣了。



但其實真相卻是......


這樣



沒錯,其實你只有一雙手和一把槍,早期的CS甚至連腳都看不到。



那你不禁要問,這是為什麼???


答案當然是——為了省事。沒錯,就是為了省事,做一個完整的模型加動畫可是要耗費不少時間和投入呢。反正玩家第一視角又看不到,做那麼多不是浪費麼?(老闆:3D模型師一個月要不少工資呢,能省則省啊)


當然,還有第二個原因,就是第一人稱視角下做一個完整的模型並應用進去效果其實是很差的,遊戲中第一人稱視角下最合適的比例與實際生活中是有差異的。假如我們做了一個完整的第三人稱角色與換槍的動畫,在第一視角下總會出現模型被遮擋甚至是穿模的問題,因此所有的第一人稱動畫與第三人稱的動畫就完全分開來做。


對於一些喜歡深究的同學,可能還有抱有一絲疑問,為什麼我看到別的玩家就是正常的角色模型呢?


這涉及到網遊的一些常識,你看到的確實是一個普通的第三人稱的模型,但是這是在你的電腦上面,你的電腦上只有自己是一雙手,其他的角色都是完整的,這是遊戲開發者對網絡遊戲視覺同步的一種手段。



例子2:


關卡與場景範圍。當我沉浸在《神秘海域》《巫師》《戰神》等3A大作的時候,當我們眺望遠處看著波瀾壯闊的場景而感慨人生無常的時候,你一定不由得讚嘆開發者竟能做出如此廣袤又充滿細節的場景。



但你一定沒有想到,當你再次把攝像機從玩家的視角向遠方移動的時候,所見之處的外面會是這個樣子,到處是空蕩蕩的場景,遠處白茫茫一片什麼都沒有。



雖然有點失望,但事實就是這樣,為了性能我們不得不刪點哪些玩家看不太到的東西。簡單科普一點遊戲開發常識,場景中的所有物體都是需要占用電腦內存空間的,同時場景裡面的物物體越多,對渲染的壓力也就越大。對於玩家看不到的場景,確實沒有必要去做任何處理。



神秘海域裡面,在火車戰鬥的那個關卡中,經常會把玩家的視角鎖定在一個很小的密閉空間裡,而這個時候很可能是場景在進行切換而並不想讓你發現。


例子3:


2D遊戲中的視覺誤差。其實我們都知道2D遊戲角色都是一張「紙片」,但是有的時候這個紙看起來好像還有點立體。比如下面這個版本的熱血足球,裡面的角色還真是一張張「立體的紙」。這種手法在遊戲裡面也是數不勝數。



其實寬泛一點說,電影、電視劇等也都是如此,而且相比遊戲有過之而無不及,因為很多遊戲中玩家都可以隨意的調整視角,所見所聽也就更為自由,而電影裡面你只能看到「導演想讓你看到的」場景。


2.隱藏與替換


遊戲中常用的手段之二,當然大部分情況也是為了性能。


例子1:


超級瑪麗中的草和雲,玩了這麼多年估計還沒有多少玩家發現他們其實是一個圖片,只不過是換了個顏色。早期的紅白機裡面,機器的性能與可利用的資源少得可憐,都是儘可能的利用好每一個像素的。



例子2:


巫師的分屍,我們看到像巫師這類的遊戲有碎屍的效果。但是給模型按照刀砍的方向去分離又保證屍體的效果其實是比較困難的,同時如果各種屍體都是不同的模型對遊戲性能造成一定影響,所以在玩家砍中的一瞬間會被替換成一個通用的血人模型。


例子3:


還有很多遊戲裡面的AOE的範圍攻擊(包括魔獸、dota等),很多遊戲裡面傷害監測並不是視覺上上的那個特效,而是隱藏在場景裡面的一個物理碰撞盒。這裡以英雄聯盟女槍為例,當開啟大招的時候,其實生成一個不可視的碰撞球,然後把這個球體不斷的推向前方,這個過程中可能會擴大,達到錐形的效果。



例子4:


最後一個例子是FPS中的子彈,很多射擊遊戲的槍都是沒有子彈的。你開槍的瞬間,立刻就用「射線檢測」到是否打到對方,打到就立刻計算傷害,這個過程中不存在任何實體子彈。


在FPS遊戲中,槍有兩種,一種是hitcan射線槍,一種叫projectile實彈槍。如果你能看到子彈的飛行過程,同時有一定延遲和受到重力產生的向下偏移,那麼這種情況下才是實彈槍,戰地裡面的槍就是projectile的。


3.其他技巧


例子1:


地震效果,基本上都是攝像機在震動,而不會去真正的改變場景中物體的位置。


例子2:


某些動態關卡,是整個場景在動,而玩家其實根本沒有產生位移,我當年和同學做的第一款跑酷手游就是如此(下圖)。我還記得騰訊的面試官問我為什麼這樣設計,我當時竟然沒有回答出來???簡單來說,可以節省關卡設計的複雜性,節省關卡占用的內存資源,對於與玩家相關的物理等處理也比較方便。



例子3:


遊戲的水面真的只是個「水面」。遊戲裡面真正的水只是上面波動的那一層,下面其實什麼都沒有,你覺得潛入水中有水的效果其實只是加了個後處理(可以理解為濾鏡)。


而水面看起來水錶面看起來波光粼粼,其實可能只是給他貼了個特殊的2D圖片(法線貼圖),只不過這個圖片自帶陰影效果,造成視覺錯覺。當然,想實現逼真的水面效果還需要非常多的技術與技巧,由於渲染這塊涉及到的內容比較複雜,就不詳細描述了。



總的來說,類似的「障眼法」還有很多很多,知乎上有一個問題就是專門討論這個的,有興趣的朋友可以進一步查看。


https://www.zhihu.com/question/41720683/answer/92652575