研發實戰:將Oculus Go遊戲《Tsuro》移植到Oculus Rift
查看引用和消息源請點擊:映維網
將Go遊戲移植到Rift
(映維網 2019年06月19日)Thunderbox Entertainment的丹·泰勒(Dan Taylor)是一位遊戲領域的資深從業者,曾參與過《榮譽勳章》,《殺手》和《古墓麗影》等熱門內容的製作。他早前曾向我們分享過他們團隊在開發移動VR內容時的經驗與教訓。
延伸閱讀:《Tsuro》實戰分享:移動VR內容開發經驗與教訓
現在,他再次向我們介紹了將Oculus Go遊戲移植到Rift平台時需要注意的事項。以下是映維網的具體整理:
要了確保我們首款主要的VR內容能夠流暢地支持Oculus Go,我們進行了大量的研究:你可能已經看過Unity分享的關於如何為移動硬體優化遊戲的文章,或者看過將Rift遊戲移植到Quest的視頻介紹。我們Thunderbox Entertainment總是在嘗試與眾不同的道路,所以這篇文章感覺有點像是「倒過來」。
要將一款專為移動設備開發的VR體驗升級成支持PC,這其中有多麼困難呢?實際上並不難,前提是你知道自己在做什麼,並且專註於以最小的成本實現最大的價值。
我們的遊戲《Tsuro:The Game of The Path》是基於同名的桌面遊戲,所以核心玩法大致相同:玩家輪流將棋子放在棋盤,然後棋子將沿著棋盤路徑行進。如果路徑把它們引導到邊緣,則棋子剔除。獲勝者是最後一位仍在遊戲中的玩家。《Tsuro》的虛擬版本要大70倍,背景則設置成古老的日本寺廟。由於遊戲玩法十分簡單,所以我們專註於提高沉浸感和環境保真度。
如下所示,《Tsuro》採用了低多邊形風格,這在Go中看起來非常優秀。今天我們將概述使得遊戲配得上Oculus Rift的額外性能的步驟。
1. 六自由度和Touch
我們首先解決的問題是六自由度頭部追蹤和Oculus Touch控制器。我們是通過PC開發《Tsuro》,而為了加速迭代時間,我們已經實現了其中的大部分,但遊戲需要進行最後的潤色修改。由於我們的環境存在坡度,我們編寫了一個簡單的高度調整腳本,這樣用戶就可以在屋頂和坡道周圍走動。由於《Tsuro》的Go版本設計為支持單個控制器,我們同時必須確保玩家可以輕鬆地切換左手控制器和右手控制,同時能夠選擇將Oculus Touch控制器用於Rift或Rift S。
最終,控制器更新中的最關鍵一點是添加合適的觸覺反饋。對於下面的動圖,你實際感受時會更加炫酷。
利用現有的音頻文件來驅動控制器觸覺非常簡單,但我們發現更為誇張的波形會更加合適,所以我們使用了一個狀態機來直接控制振動,並且我們的補間系統動態生成波形(上面的爆炸動圖如下所示)。這使得我們能夠以更快的迭代時間精確控制控制力。如果你希望進一步了解有關自定義補間系統,請參閱我之前分享的博文。
我不知道應該如何強調優秀的觸覺反饋對於一款遊戲的重要性:當我們實現了這一點後,一切都感覺更為「真實」。
另外,在這個時候你的遊戲版本應該非常適合Oculus Quest,所以你可以進行相應的擴展。
2. PBR著色器
現在是時候利用高端的圖形性能力了。為了提升圖形質量,我們用高級的PBR著色器替換了所有移動著色器。PBR著色器的鏡面高光確實可以提升環境的逼真度和沉浸感。
簡單嗎?不簡單。照明響應的改動意味著我們的UI變得完全不可讀。為了令其再次可讀,我們需要小心翼翼地調整照明,選擇UI材質,並且重新為大部分界面上色。一旦UI恢復,我們調整特定元素的材質屬性,並且將用稍微更高端的著色器來替換Mobile Water Shader。請留意水體:要支持VR,反射和折射需要對著色器進行專門的調整。
3. 調整照明和陰影
移植過程中最苦難的一點可能是照明。對於移動端,為了平衡性能和畫面,我們堅持下面的標準:
環境是單個對象
環境未點亮,照明提前烘培
只有主要的遊玩區域有陰影
一次只為少數物品提供陰影
陰影比較生硬和低解析度
沒有環境照明
對於PC,我們可以推翻上述標準:
我們可以分割環境並允許更高解析度的照明貼圖
採用混合的環境照明,大部分仍然主要是烘培,但…
陰影貼圖允許我們為整個場景體提供動態陰影
每個動態對象都可以投射實時陰影
陰影比較柔和和高解析度
天空和點亮環境
為了令烘焙照明看起來儘可能出彩,我們進行了大量的實驗,如調整環境照明和紋理密度。Unity中的烘焙照明是一種黑魔法,我強烈推薦這個優秀的YouTube視頻教程 。重要提示:當迭代烘焙照明時,使用超低解析度進行快速讀取,然後當對結果感到滿意時,你就可以加碼,並在它計算更為詳細的版本時出去享用午飯。高解析度的貼圖可能需要一段時間進行烘烤,但最終的結果絕對值得。
既然你擁有這些高級的著色器,你可以通過添加動態照明來進一步利用它們。Oculus建議最多使用3個動態照明,但由於我們的環境針對移動設備進行了優化,所以我們可以使用更多的動態照明。我們將其用於火炬效果,並使遊戲對象自行發光。我們嘗試了正向渲染和延遲渲染,但都沒有發現有太大的性能差異。
4. 視覺效果與顏色分級
現在照明效果已經調整完畢,接下來我們升級FX。
我們將移動天空盒改為動態生成的天空盒,其中包含漂移的雲朵,一個位於正確照明位置的太陽,以及一個可調節的漸變曲線。然後,我們將大部分的低多邊形無照明效果換成更為精細的著色器(最明顯的是花瓣,塵埃和坩堝)。
最後,你可以使用圖像後期處理。設置起來非常簡單,並且可以令遊戲畫面大為改觀。需要強調的是,這裡的訣竅是凡事不可過量:很多效果在VR中看起來非常糟糕(如景深),但我們採用了細緻的顏色分級和微妙的Bloom效果,從而令《Tsuro》為Rift帶來更為夢幻的氛圍。
5. 高保真度音頻
在將遊戲移植到Rift時,音效的差異令我們感到十分驚訝。儘管我們沒有時間研究Oculus的聲音整合,但《Tsuro》的Go版本包含一個非常動態的音景,可為逼真感提供微妙的混響。對於PC版本,為了提高聲音衰減的逼真度,我們發現幾乎每個聲音發生器都需要重新調整。請注意:在Unity中,包含對數衰減的聲音永遠不會是完全無聲(請參閱下面的曲線)。我們沒有在Go版本中發現到這一點,但隨著Rift保真度的提高,這個細節會非常明顯。
6. 提交前的測試
如果你已經為Go發行過遊戲,你應該非常熟悉Oculus的VRC測試。對於幫助VR生態系統保持高質量的內容,這項測試十分重要。值得注意的是,Rift版本的測試存在微妙的差異。主要是當你摘下頭顯時,你必須暫停遊戲並禁用控制。請務必查閱官方的檢查表,並使用自動驗證工具來快速過一遍需要注意的地方。
Oculus Debugging Tool非常便於在開玩遊戲時顯示性能數據。奇怪的是,我們發現通過Oculus菜單啟動內容會更加流暢,而不是直接運行.exe更加流暢。
一旦你確定遊戲能夠達到90FPS,接下來就是最後的調整。
7. 額外的細節
一切看起來都華麗,而且幀率非常流暢,但還沒有達到要求。這時你還可以做什麼呢? 《Tsuro》的Go版本有一個似乎人人都非常喜歡的細節:一隻隨機出現的小狐狸在寺廟中閑逛。對於Rift版本,我們決定給它提供一定的夥伴:池塘里的錦鯉,籬笆上的雀鳥,以及一隻嗡嗡作響的大黃蜂。
作為添頭,這個增強版動物園可以通過一定的優化支持Go版本。
最後,我們花費了一點時間來為Oculus Home開發Custom Items。我們利用Boxshot將標準FBX格轉換為可以在本地進行測試的GLB文件,然後再上傳到Oculus Dash。我們將物品與一些酷炫的成就關聯起來,而玩家現在可以解鎖Tsuro棋盤遊戲,並通過可愛的日式立體模型來裝飾自己的虛擬空間。
如果你希望直接贈送給玩家,你可以將其作為Entitlements並分配給遊戲。
8. 是時候發行了
六自由度運動,觸覺反饋,PBR著色器,精心設計的照明,增強的視覺效果,重新平衡的音效,VRC合規性,以及一點額外的元素,《Tsuro》感覺比以往更加身臨其境。通過額外的細節和細緻的潤色,畫面看起來非常出色……
我們很高興能《The Path of the Path》能夠登陸Rift,並希望這款優化的體驗能夠吸引更多的遊戲玩家。
※Antilatency發售線下VR追蹤方案ALT,支持200人同時娛樂
※Spark Connected為AR/VR發布高性能線充電解決方案The Griffin
TAG:映維VR |