淘新聞

Epic Games分享《Robo Recall》開發經驗:一款3A級的VR遊戲如何煉成?

12月15日,Epic Games趕在2016年年尾,舉辦了一場小型的Unreal VR DEV DAY。即便只有半天時間,還是有不少人為了《Robo Recall》這款遊戲而去。

鑒於其本身最為引擎公司的優勢,再加上與Oculus密切的合作關係,此前Epic Games推出了幾款不錯VR體驗,從《Showdown》,到根據《霍比特人2:史矛革荒漠》製作的VR體驗,以及《Bullet Train》,均得到不錯的反響,但這些還都只是停留在Demo階段。但在Oculus Connect 3大會上,他們宣佈將基於《Bullet Train》,為Oculus開發一款完整的獨佔遊戲《Robo Recall》。如果你曾體驗過《Bullet Train》的話(點擊可查看之前的體驗文章),想必聽到這個消息,會跟雷鋒網編輯一樣興奮。

15日的活動上,雷鋒網編輯體驗了《Robo Recall》遊戲的第一章節。與《Bullet Train》類似之處在於,進入遊戲後,會有一段教學環節,供玩家熟悉Touch手柄的操作功能等等。隨後,根據聲音指示,玩家進入一個城市,開始作戰。

首先,手柄的操作基本與之前一致。如槍的位置在下方,只需將胳膊向下伸,雙手中指按住Touch上的按鍵,便可獲取手槍。玩家同樣可以空手抓住敵人向你射擊而來的子彈,並扔回給敵人。其次,場景更豐富,體驗也更多樣性了。玩家身處在一個大的城市中,能來回自由移動,遊戲中有指引方向的箭頭,不必擔心迷失方向。而且,玩家可以移動到更高的建築物上面。

令雷鋒網編輯印象比較深刻的是,當玩家打敗大Boss後,玩家可以調到大Boss的肩上,並對它控制。這時,玩家的視角是站在大Boss肩上的視角,同時上下左右移動手柄,遊戲中大Boss的胳膊也會跟著移動。不過,可能由於太過緊張,拇指會不經意地碰倒Touch上的搖杆鍵,會導致突然發生位置傳送,有些影響體驗。

除了遊戲外,Epic Games遊戲開發團隊負責人Nick Whiting也來到現場,他向我們介紹了這款遊戲的由來,並且非常詳細地分享了《Robo Recall》的開發經驗。

右邊是Nick

據Nick介紹,當時Oculus把剛研發的Touch拿給他們,想讓他們做一款充分展示Touch功能的遊戲體驗。但那時候,他們只有兩個人,只有十周的時間去完成《Bullet Train》,以趕上在Oculus Connect 2大會上展示。當時,他們考慮的主要有以下幾點:

在Oculus推薦的硬體上,在更差的硬體上做到比《Showdown》更好的畫面效果;

時間緊,任務重;

充分表現控制器Touch的性能;

有效利用引擎,如渲染等功能。

後來,他們決定在《Bullet Train》基礎上,開發一款完整的遊戲。而這次距離Oculus Connect 3大會還有一年的時間,可以讓他們把之前未能實現的想法增加到遊戲中。此時他們考慮的事情主要有:

既要借鑒和吸取人們對《Bullet Train》的回饋,又要保持遊戲的有趣性;

在開發人員不多的情況下,用一年時間完成;

要提升畫面效果,比《Bullet Train》還要好。

實現玩家預期

Nick表示, 要知道讓玩家感到不爽的東西是什麼,最好的辦法就是讓他們玩遊戲,看看哪些地方讓他們失望。因為玩家並不會直接告訴你哪裡讓他們不爽了。

開發《Bullet Train》的時候,他們會站在玩家旁邊觀看的反應,哪裡與玩家的預期不同。這是整個Playtest(玩法測試)的迴圈,做完一個功能,讓一些人試玩測試,看看哪些地方滿足玩家的預期,哪些地方讓玩家失望。玩家不一定會說出來,但通過觀察表情、反應,會看出來,

在這個過程中,他們發現,他們想製作的是遊戲類似《Toybox》,只是要帶著槍。同時,讓玩家自己去探索發現,探索的過程是非常有趣的。

Nick講到,

“如果你在遊戲中設計了一個東西,就要想到玩家會想著與其交互,所以你要讓他們實現這樣的預期。例如,在《Bullet Train》的列車中有一個拉環,玩家會伸手想要交互,但發現無法實現,是會特別讓他們失望,後來我們就增加了交互,發現玩家會很開心。”

還有一個案例是,為了模擬真實的手雷,他們在遊戲中為手榴彈增加了拉環,這只是為了物理類比真實的手雷,實際上,並沒有什麼功能,直接把手雷扔出去就可以。玩家去拉這個拉環,發現沒有什麼用。

從Oculus Connect 2到第二年GDC他們開始去修改,但發現按鍵有一些衝突。拉手雷拉環是用左手去拉,很多人會用右手操作扳機鍵,這是有問題的。在GDC前他們做了調整,不管玩家拉不把手環,或是直接扔出手雷,都是可以交互的。

槍與控制器的關係

Nick解釋說,這是款射擊遊戲,裡面會用到搶,但很多人可能沒有真的用過槍。看到用槍方式與實際使用,還是有一定區別的。剛開始,一些體驗的玩家,可能沒有真的用過槍,會模仿電影中用槍的方式,例如握槍的位置太朝下,因為手柄的關係。但那些真正用過槍的人,射擊的還是很准。

主要原因在於,手握控制器的位置與握槍的位置有一些差別。一開始,他們使用Oculus在《Toybox》中的方法,在VR中虛擬的手和真實的手保持完全一致。這個方法很簡單,通常也很連貫,但比較難以用在槍上,很難實現完全一致的交互。

於是,他們選擇讓槍與控制器的位置一致,儘管設置起來簡單了,但槍模型的樣子和Touch不同,還是要做細微的調整。

那麼什麼樣的對齊方式最好的?讓扳機鍵完全混合起來,還是讓握槍的地方與手柄方向完全一致?他們也還沒有定論,最後選擇折中的處理。槍的手柄和扳機鍵差不多可以對上,在Playtest時,有些玩家偏低,有些偏高,這是比較好的結果。

槍的設計

這其中要涉及到幾個方面:

一是物理特性包括有重量感,開槍有後坐力;

二是槍會帶給你各種回饋,聞到硝煙的味道,看到爆炸,身體反應等各種感受;

最後是槍帶給玩家的樂趣,像電影中一樣。

剛開始,他們直接使用Unreal 4引擎的Physics類比功能,後坐力也很容易設置。不過,Nick感到很奇怪的是,加上後坐力是非常非常棒的感覺,但不知道為什麼他看到其他帶設計的VR遊戲,都沒有後坐力。他猜測可能大家都在遵循Oculus的規則——讓真實的和虛擬的完全保持一致,但他建議,

加上後坐力其實會更好

後坐力還有一個好處是,跟其他物體碰撞,手柄給你的力回饋感都是自然反應。但問題是,槍可能會很大,如果卡在某一個地方,便會不停抖動,位置便脫離了控制器的控制,基本上會破壞使用物理的這個方式。這種情況下,需要自己去做類比,決定哪些地方需要,哪些不需要。

一般情況下,槍的設計通常會想到,讓槍的使用流暢起來,但實際上,

為了表現槍的重量感,他們會稍微加些延遲

。如果手到哪裡,槍就跟到哪裡,便會抖得很厲害。故意設計些延遲,讓槍感覺很有重量。雖然沒辦法讓玩家實際握的東西變重,但可以給玩家這樣的感受。

還有增加後坐力,其中涉及到Time Line功能。Nick解釋說,用到Time Line,主要是手受到後坐力後,肯定是想把槍壓下來,開始的時候速度比較快,後來比較慢,不是線性的過程,否則就太機械化了。Time Line能更好地控制後坐力的感覺。

他們會把所有的功能都設計到槍中,只不過槍不同,參數可能微調。小點的槍,速度快後坐力要小一些,大的槍後坐力要大一些。雙手持槍時,後坐力會增加。

抓取功能

他們以為抓取功能是最容易的,結果做好它卻用了六周時間。

起先,他們實現的抓取跟《Toybox》差不多。抓取的時候,會出現一個球體,大小與手掌差不多。按抓取鍵判斷球體與物體間有沒有發生關聯。但他們發現,人們很難抓取物體,要不就是距離很遠的時候便嘗試抓取,或者嘗試多次按下抓取鍵。

人們似乎心理上把伸出去胳膊去抓取,只歸結為一個抓取的動作。同時,抓取時常常會受到自光影、觸覺等影響,當你感受到物體,會自然地握緊手指。

於是,針對這些問題,

他們增加了觸覺回饋

。當手部碰倒其他物體,或有重合的部分時,控制器會有一些微小的震動。當你越來越接近抓取的物體時,震動感會由弱變強,你會知道你可以抓住物體了。

另外,

他們把玩家能抓到的物體變成高亮度的黃色

。即便這不是玩家想要的,可以把它扔掉。

同時,

他們還擴大了玩家抓取物體的範圍

。在這個範圍內,能抓取到任何東西。但是,當玩家彎腰時,會遮蔽掉Oculus的攝像頭,可能丟失位置追蹤。《Toybox》的方法是,如果物體掉到地方,就消失了。他們卻希望槍掉到地上,還可以撿起來。

那麼支援的抓取範圍有多遠?經過測試,他們認為兩米是比較好。然而,支持的距離越遠,人們可能越不知道要抓取的物體是什麼。

這是因為,如果抓取的朝向按照手的朝向來做,當手的朝向往前,抓取的東西在下面,你可能會抓不到。如果你知道是因為手朝向的問題,那還能解決,但要是不知道,可能就無法抓取物體了。

接下來,他們又嘗試從眼神到手的向量,來計算抓取延伸的位置。眼睛手一條線抓東西是很准的。但是,如果手從側面拿東西,眼睛看到的東西往側面偏移,這時候又抓不到了。這種方法雖然好了很多,但可能會無法滿足玩家的預期。最終,他們的解決辦法是:取兩個朝向的平均值。

雖然現在的方案已經很好了,但他們希望還有更好的辦法,如眼球追蹤,玩家注視到哪裡,就能抓取哪裡的物體。

《Robo Recall》中我們能抓起機器人,但被抓起來後,機器人像死掉了一樣,沒有任何反抗。正常的動畫效果還不夠,必須讓機器人看起來有反抗的感覺。於是,他們加入物理動畫,一邊嘗試物理控制,一邊還在播放動畫。如果機器人被射中,除了正常的動畫,還有受物理衝擊以後的效果,兩者結合在一起。

怎樣觀察到子彈?

雷鋒網編輯覺得,能在激戰中看到射來的子彈,是非常酷的設計。Nick現場也解密了這是如何設計的。

玩家常常會瞄準目標,子彈飛出去很快,根本觀察不到子彈的樣子。遊戲設計師設計時,子彈離開槍管時速度降到四分之一,過了0.1秒後,速度提高到原速的1.25倍。子彈飛行過程中,玩家會注意到,子彈離開槍管後,自己跟隨子彈的軌跡打向目標。

有人會抱怨沒有擊中目標,實際上,沒有人注意到子彈速度的變化。但這個改變讓體驗好很多。開發者要潛在地幫助玩家,但也不要讓玩家覺得在幫助自己作弊。比如說,《Bullet Train》最後的大Boss會向玩家放導彈,本來可以抓住導彈,直接鬆手扔給大Boss。他們測試的時候,效果很好。

但一些玩家會把導彈直接砸到地上。玩家不知道鬆手就可以,而是抬起胳膊朝Boss扔導彈。所以,他們會幫助玩家扔導彈。

把玩家扔的軌跡記錄下來,平均計算出出手的位置,朝向可能不太對,但他們做了一些調整,讓導彈看起來是被你慢慢扔向前面。這樣一來,大部分人已經能扔中Boss。但有些玩家可能還是扔不中。這時,玩家每扔一次,他們會略微調整係數,自動瞄準,下一次扔的時候就會發現在慢慢修正,更接近擊中Boss。

最後,玩家扔的再爛,也能扔中Boss。但如果一開始就打開輔助系統,玩家會不爽,因為他明明覺得瞄的不准,怎麼就扔中了。

如何在VR中移動?

Oculus Touch手柄是有限制的。當在虛擬世界中,玩家是靜止的,並且與眼前的物體交互時,兩個追蹤攝像頭與頭顯和手柄間存在視角線。既然兩個手柄分離,他們便考慮傳送的移動方式。《Bullet Train》中通過傳送移動,玩家可以面向各個方向,但總會讓你回到位置的中心。

除了定點傳送,他們增加了

隱身傳送

,讓玩家可以瞬間傳送到敵人面前。這個機制讓玩家的行為一直發生在地圖中心,於是玩家總能面向最重要的地方。但還是會受到限制。《Bullet Train》的競技場可以讓玩家朝向中間,而《Robo Recall》場景在真實的城市中,玩家可自由走動,場景也較為複雜。這時,他們找到其他的方法。

這就是“

帶方向的傳送

”。瞄向的方向是玩家傳送的方向,但手指向的方向是玩家的朝向。這個傳送方法的基本點是,玩家可以選擇面向的方向,使他們能在環境中移動。其次,玩家能直接穿過地圖。傳送時,用弧線代替直線,讓其更易於控制,如高一些的位置。還有一些細節,傳送的目標點處有虛擬的頭盔和兩隻手,它們的朝向可以指示出追蹤的位置有多少偏差。

帶方向的傳送使玩家能在更大,更複雜的場景中自由移動,但依舊有限制因素。玩家依然會物理性地轉動頭部,丟失追蹤,所以必須借助UI讓玩家再轉回來;迷失方向也是一個問題,這時他們會用到閃爍和方向軌跡這些老的方法;同時,玩家對VR太不熟悉了。

此外,除了設計方面,Nick還分享了UE4上的一些渲染功能,讓現場的開發者們能更好地應用開發工具。