1. 程式人生 > >走進VR遊戲開發的世界

走進VR遊戲開發的世界

注: 原文2016年2月發表於公司內部社群, 最近才由同事轉載出來, 刪去了文中引用的一些內部文章和視訊. 在這裡我也只是把外網版本轉過來, 留做備份.

背景介紹

我們組在2014年下半年嘗試開發了一款 XboxOne 平臺的體感遊戲, 2015年上半年進行收尾工作的同時, 結合之前積累的體感互動經驗, 開始進行 VR 遊戲的預研工作. 在這近一年的時間裡, 一方面從外界感受到了一股虛擬現實快速發展的潮流, 另一方面也體會到身邊很多人對 VR 遊戲的瞭解非常有限. 現在我們自己的VR遊戲Demo已經完結, 技術上驗證了在當前的硬體條件下, 開發高畫質遊戲的可行性. 當然, 優質的VR遊戲需要大家共同的努力, 我們也希望更多的人蔘與進來. 在此把我們在開發過程中學習到的, 體會到的, 以及所期望的進行一下總結, 希望對大家有所幫助。
圖片為我們的VR Demo: Comet
VR硬體原理及現狀狹義上的“VR 硬體”, 特指具有沉浸感的頭戴顯示器。它有三個基本特徵:
  • 全3D的立體顯示: 附合人眼觀看現實物體的習慣, 能夠”以假亂真”
  • 完全虛擬的畫面: 需要遮蔽外界光線的干擾, 你所看到的都不是現實的東西. 有些人可能覺得”增強現實(AR)”更高大上一些, 但是對於遊戲, 我認為還是更傾向於 VR. 玄幻, 魔幻, 科幻, 一切皆為虛幻.
  • 不受限制的視角方向: 視角方向跟隨頭部轉動和移動, 不同於之前的頭戴式顯示器, 視野非常廣。當然, 僅僅是這樣的體驗, 並不能說是完美的”虛擬現實”, 這也是很多人說硬體不成熟的理由. 但是, 在保證體驗良好的的情況, 目前的硬體已經滿足做出高品質遊戲的條件. 下面對當前的硬體做一些技術分析:

VR顯示的基本原理首先, 我們來一下滿足上面提到的三個基本條件的最廉價產品, Google 的 Cardboard:
  • 插入手機做為顯示螢幕, 通過分屏的方式處理雙眼的畫面, 達成立體畫面顯示
  • 藉助紙殼遮蔽外界光線干擾, 通過透鏡就可以觀看到手機渲染的虛擬畫面
  • 依賴手機內建的陀螺儀, 可以模擬出頭部轉向時視角的變化. 另外, 凸透鏡在一定程度上增加了 FOV(Field Of View, 視場角)

Cardboad 以低廉的價格, 讓很多人提前感受到了 VR 的魅力, 並衍生出了很多塑料殼的版本. 不過從體驗上來說, Cardboard 並不能算是一個合格的 VR 硬體, 很多人在試玩過後, 就自然而然地以為“VR 就是那麼回事”, “目前硬體還差得遠”, “也就新鮮幾分鐘”等等, 從一定程度上誤導了很多人對 VR 的認知.
那 Cardboard 存在哪些問題呢?
  • 嚴重的畫面延遲: 手機陀螺儀模擬的轉向精度和響應速度都不滿足VR的要求, 造成渲染的畫面跟不上轉頭的速度, 加重了暈動症
  • 糟糕的畫面表現: 手機效能不足以支撐高畫質高幀率的3D畫面渲染, 只能呈現出一些簡單的卡通風格畫面, 達不到”以假亂真”的程度, 影響了沉浸感
  • 缺乏自然的互動: 由於手機的限制, 目前沒有配套的頭部和手部的定位方案, 從互動上很難做到讓人滿意的程度, 只能依賴藍芽手柄這樣的傳統輸入裝置

當然, 還有一些其它的小問題, 比如手機發熱, 起霧, 過重, 畫面變形等等, 這些雖然不是影響體驗的主要因素, 但在使用上也是挺煩人的. 接下來我們看看 Oculus 針對這些問題是怎麼解決的, 或許這也能解釋兩者之間的價格差異為什麼這麼大。
不受限制的視野如果需要達到逼真的視覺體驗, 視野必需儘量接近真實. 這需要滿足兩個條件: 一是接近人眼的 FOV, 二是跟隨頭部運動的視角.
上圖左很直觀地說明了人眼的 FOV 特點: 雙眼的覆蓋範圍是不同的, 兩隻眼睛加起來可以超過180度. 當然, 在平面的液晶屏上很難做到這種效果, 所以目前的主流 VR 硬體(不包括 Cardboard)大多是用凸透鏡做到了100~110度左右的 FOV, 雖然沒有達到自然視野的程度, 但相對於傳統 FPS 遊戲(FOV 50~60度)來說, 是個巨大的進步, 直接影響到 UI 設計, 互動, 效能, 場景設計, 鏡頭等方面. 為了解決近距離通過透鏡觀看畫面的變形問題, 我們需要對畫面進行反向的變形校正: 
下圖就是正常雙視口渲染的畫面, 經過 Barrel Distortion 變形後的效果(在很多 Cardboard遊戲上, 這一步是省略掉了的):圖片來我們的VRDemo: Comet
但是, FOV 越大, 光線的折射率也就越大, 光線的散射現象也就越明顯, 給人的感覺就是畫面邊緣的畫素出現了重影.
所以, 變形後還需要對色散問題進行校正, 即 Chromatic Aberration. 下圖中我們可以看出邊緣畫素的 RGB 三基色位置是錯開的, 這樣通過透鏡觀看時才不會出現色彩分離的奇怪現象:
圖片來自我們的 VRDemo: Comet
空間定位能力頭部的運動追蹤, Oculus 增加了一個外接的紅外攝像頭用於頭顯的空間定位, 它同時也可以用於雙手控制器(Oculus Touch)的定位.
當然, 這種定位方式也存在 FOV 的問題, 只適合桌前的小範圍運動. 對於大範圍的移動, HTC Vive的Lighthouse 技術更有優勢, 可以在 5x5m 的範圍內自由移動:
空間定位技術的引入, 直接改變了遊戲的操作方式, 從”指令式”操作逐漸變成類似”體感”操作的自然互動體驗, UI 也就不再拘泥於 2D, 開始向 3D UI 轉變.
主流 VR 硬體引數這裡有一張表格, 可以大體上說明2016年的主流VR硬體的引數(DK2和GearVR是很多人都體驗過的, 做為對比也加進來):
從中表格中提供的資料, 結合一些現場體驗可以分析出一些關鍵資訊:
  • 三家 VR 裝置的 FPS 和 FOV 差異並不大, 這方面在體驗上差距很小. PSVR 的 120FPS 是60幀插值出來的, 並不是實際的渲染幀數
  • 三家 VR 的控制器都趨於一致: 雙持手柄, 有空間定位能力, 可以模擬雙手操作. 這就為我們進行 VR 遊戲的互動設計提供了很好的指引, 引擎層面可以進行統一抽象, 不用再為每個裝置單獨設計
  • 解析度相對於 DK2都有改善, 但受限於 OLED 螢幕技術和硬體效能限制, 還達不到視網膜屏的程度, 畫素點肉眼仍然可見, 但已經不會影響遊戲畫面的觀看
  • PSVR 由於受限於 PS4 的機能限制, 無法在解析度上佔有優勢, 但是可以通過畫素排列和鏡片技術減少紗門效應(Screen Door Effect), 即畫素間空隙(Oculus DK2上非常明顯)
  • 每家的硬體都會依賴一個內容發行平臺, 與主機遊戲的運作思路很像, 這也決定了 VR 遊戲的設計思路

另外值得關注的是 GearVR, 算是最早商業化的平臺硬體, 提供了比 Cardboard 更好的體驗, 但同樣受到機能的限制. 預測手機 VR 方案几年後會推動 VR 裝置的普及, 畢竟手機是人人都有, 買個配件的成本還是可以被很多人接受的.Motion-To-Photon 延遲有一個引數是表中沒有的, 那就是延遲. 我們先來給出定義: 從使用者開始運動到看到螢幕上產生相應變化所需的時間:
從上圖可以看到, 從感測器採集, 經過線纜傳輸, 遊戲引擎處理, 驅動硬體渲染畫面, 液晶畫素顏色切換, 到人眼看到對應的畫面, 中間經過的每一個步驟都會產生延遲. 要想達到理想的狀況, 需要硬體和軟體優化的緊密配合. 目前公認的可以被多數人接受的 VR 延遲是20ms, 很多VR硬體只是感測器和液晶屏的時間就已經超出範圍了.
對於 VR 硬體來說, 低延遲才是核心競爭力. 但目前延遲缺少一個測試和評估標準, 所以很難通過公開的資料評估每個裝置的體驗效果. 如果以20ms 為一個臨界值, 可以說其它品牌的 VR 裝置大部分都不合格.
VR 體驗目前的主要問題VR 遊戲在當前的硬體條件下, 仍然存在一些問題. 我們做為開發者, 必須搞清楚每個問題產生的原因, 能夠解決的解決, 不能解決的迴避, 在此基礎上才能做出良好的體驗.
暈動症“暈”可能是第一次體驗 VR 的多數人最直接的感受, 就像暈車暈船般的感覺. 很多人可能只是因為這個原因就會放棄對 VR 遊戲的期待, 掉入“VR 目前不成熟”的圈子裡. 那為什麼VR遊戲那麼容易暈?
  • 你沒動, 畫面動了: VR 遊戲體驗者通常身體是靜止不動的, 如果遊戲中看到的是各種加速/旋轉/震動等, 正常人都會受不了, 跟暈車暈船的原理是一樣的
  • 你動了, 畫面沒跟上: 這就是上文提到的延遲, 很多時候, 硬體附合要求了, 遊戲卻幀數不夠, 同樣也會造成嚴重的延遲現象.
  • 體質原因: 比如有人有恐高症, 放到一個懸崖邊的虛擬場景裡, 也會觸發心理和身體的反應.

原因1可以從遊戲設計上進行迴避, 但是目前來說很多需要跑步和跳躍的遊戲受限比較大.
原因2的話, 主流硬體在延遲上都是滿足要求的, 做為開發者更多的是需要做好效能優化. 
原因3, 從我們組的幾個人感受來看, 隨著體驗次數的增加, 症狀會越來越輕, 這表明人的身體是可以適應的. 而且, 適當地增加一些讓身體有所反應的遊戲場景, 也不失為一種樂趣.缺乏好的互動方式VR 頭戴顯示器看以看作是一個顯示輸出裝置, 那對於遊戲來說, 還有另外一種重要的硬體: 輸入裝置. 在 VR 遊戲中, 鍵鼠的操作方式首先就可以放棄了, 因為看不到, 只能盲操作. 遊戲手柄的話算是一種折衷方式, 但並不能發揮出 VR 的潛力. 理想的輸入裝置其實是雙手, 這也是最自然的方式. 遺憾的是, 不管是 Kinect, 還是 LeapMotion, 都無法完美地支援雙手互動的精度. 所以, 目前主流的 VR 控制器還是以雙持手柄為主, 預計要2016下半年才開始上市. 在拿到 Oculus Touch 之前, 我們嘗試了基於 Kinect 體感的 VR 互動方式, 雖然並不完美, 但已經能夠看出未來的互動設計雛形了.

GPU 效能不足Barrel Distortion 變形後帶來一個問題: 中心區域畫素解析度的損失, 也就是說中心區域的畫素被放大了, 邊緣區域的畫素被壓縮了. 但是人眼對於視野中心的畫素清晰度非常敏感, 為了保證清晰度, 需要把原始渲染解析度提高, 以保證變形後的畫面能夠達到液晶屏的畫素密度.
圖片來自我們的VRDemo: Comet
以 Oculus Rift 為例, 螢幕解析度為2160x1200, 渲染解析度需要長寬各提高到140%, 即3024x1680, 再加上90FPS 的幀率要求, 每秒需要渲染的畫素達到了4.5億個, 相當於當代主機(XboxOne, PS4)遊戲的7倍, 與4k解析度遊戲所需要的硬體差不多. 為了保證體驗, 他們規定了一個最低配置, 叫做Oculus Ready的標準: CPU i5 4590, 記憶體 8G, 顯示卡 GTX970.
雖然 PS4 的渲染效能遠遠達不到 GTX970 的程度, 但是相對於 PC 來說, 它可以提供一致的體驗, 這對 VR 來說非常重要. 畢竟就算你的遊戲畫面再好, 如果一玩就暈得想吐, 那也不會是一個好遊戲. 不過好在離 VR 普及還有一段時間, 足夠讓 Oculus Ready 的 PC 成為大眾配置了.
佩戴舒適度很多近視玩家會擔心不能使用, 其實主流的顯示裝置都可以戴眼鏡觀看. 至於戴著舒不舒服, 那需要在工業設計上進行迭代優化. 就目前來看, SONY 家的頭顯最舒服, Oculus 家的手柄最舒服, HTC 家的功能最強. 除了平臺獨佔的VR遊戲, 多數會同時相容三家的裝置, 所以從體驗上來說, 差別不會太大.
VR 遊戲與傳統 3D 遊戲的開發差異VR 遊戲在開發製作上的差異, 遠遠沒有很多人想象的那麼大, 更多的是設計上的思路轉變. 所以, 想要開發 VR 遊戲, 前提是能夠開發一個3D遊戲, 核心還是遊戲本身, VR 只是體驗上的增強. 如果要寫一個“VR 遊戲開發教程”, 那麼其中90%的東西, 與 VR 並沒有直接關係. 但是, 這10%的差異, 卻是 VR 的核心競爭力, 因為它可以帶給你“前所未有”的體驗, 為我們進行遊戲玩法創新提供了非常大的發揮空間.
玩法與主機遊戲類似, 注重核心體驗, 即 Camera, Control, Character. 可能很多人會覺得 VR 遊戲只適合做 FPS, 其實並不是這樣. 只要保證沉浸感良好, 什麼型別的都可以做, RTS, MOBA, AVG, MMOG 等等都可以. 需要關注的核心點是 Camera 和 Control, 這直接關係到玩起來暈不暈, 能夠玩多長時間. 只有保證操作體驗和沉浸感過關, 遊戲的玩法才有意義.
當然, VR 給我們也提供了一些新的特性, 可以用於玩法設計中:
  • 由於頭部運動追蹤的存在, 點頭和搖頭的操作是可以被識別的, 這就意味著很多 Yes/No 的操作可以直接通過頭顯輸入
  • 頭部的朝向可以靈活變化, 當你”盯”著某個物體看時, 可以針對這個行為做出相應指令, 具體可以參考 GearVR 上的 Land’s End
  • 由於360度視角方向不受限制, 我們可以在背後做一些場景改變, 讓每次轉頭看到的場景都不一樣, 既能做成驚喜, 也能做成驚嚇
  • 頭部不僅僅可以轉動, 還可以配合身體小範圍移動, 比如 Summer Lesson 中湊近 NPC, NPC 會害羞……Vive 的一個上帝視角 Demo 可以蹲下看到地底下打地道的小兵
  • VR 渲染可以調整 WorldScale, 即世界單位縮放, 相當於動態調整自身相對於場景的比例, 既可以做成巨人的視角, 也能做成蟻人的視角
  • 因為 VR 世界中的單位可以與現實不一樣, 那麼一些類似”縮地術”的功能也變成現實, 通過身體小範圍的移動, 達到虛擬世界中的大範圍移動效果
  • 雙手控制器的存在可以模擬一些抓, 扔, 摸, 打等的操作, 撿起一個道具上下左右仔細看也是很有意思的一件事, 可以把迷題設計在道具的隱藏角落裡
  • VR 中有了雙手的存在, 很多解迷機關就不再是簡單的按一個鍵, 各種零件組合, 機械, 繪畫等對於雙手控制器來說都是很棒的操作體驗
  • 控制器的握持感, 非常接近於遊戲中的手持武器, 比如槍械, 比如刀劍, 這比握著一個滑鼠或者手柄的感覺強多了. 得益於高精度的感測器, 做出具有競技性的操作玩法也不是不可能
  • 雙手具有天然的空間感, 一些建造類的玩法也非常適合, 比如 MineCraft, 比如 Besiege 等, UE4 甚至嘗試了在 VR 中進行場景編輯
  • 由於3D 音效的加強(下面會提到), “聽音辨位”就可以做得更真實, 各種潛入類玩法非常適合
  • 另外, 由於沉浸感的增強, 恐怖遊戲和XX遊戲帶給人的感官刺激會放大, 這就不用展開了, 試過就知道

圖形如果以 Oculus Ready 的硬體標準, 基本上可以預期的畫面表現力差不多相當於上代主機的畫面, 即 Xbox360 和 PS3 後期的水平. 我們試做的 VR 遊戲 Demo, 在專案啟動時的規格比較高, GTX970+Oculus DK2 的硬體下, 經過優化可以流暢執行, 下面是最終版的技術選型, 給大家做參考:
圖片來自我們的 VRDemo: Comet

  • Physically Based Material: 物理光照材質算是主流技術了, 但是相應的效能開銷也會大一些
  • Sphere Reflection Capture: 反射效果和各種高光材質就靠Cubemap了
  • Baked Static Lighting + Baked Ambient Occlusion: 即能用靜態光照就用靜態的
  • Global Dynamic Shadow Maps: 僅僅是主角和大件遮擋物
  • Instanced Static Mesh: 對於效能的提升非常明顯, 大量的優化是基於Instanced技術
  • Bloom + Color Grading: 多數的後期鏡頭效果在 VR 中並不適用, 因為是通過雙眼直接觀看, 並不像傳統遊戲那樣通過”攝像機鏡頭”觀看. 而且, 為了效能, 能關的都關了…
  • FXAA: 理論上來說 TemporalAA 更適合消除遠處的 Specular Aliasing, 但是會導致近處 HUD 的文字和紋路受到影響, 解決之前先用 FXAA 代替.
  • 當然, 如果具有足夠的優化功力和場景設計技巧, 也不排除 GTX970+Oculus Rift 流暢執行的可能, 但這並不適合多數的團隊.

美術製作方面, 有些資料會說 Normal Mapping 和 Billboard Particle 不再適合 VR 渲染, 其實並不是這樣的. 這些效果只是在近距離觀看時才會發現很假, 遠處隨便用, 不用擔心在製作上與傳統3D遊戲的差異. 近距離的話, 只能使用 Parallax Mapping 和 Mesh Particle 之類保證不穿幫, 但是極少數情況需要這樣, 跟場景和特效設計有關係. 總體上來說, 美術的製作與傳統 3D 遊戲差異並不大, 除了UI.
圖片來自 EIPC 的 Showdown Demo
互動
 
由於目前主流的 VR 操作裝置已經趨於統一, 大家都有這麼幾個特徵:
  • 可以模擬雙手的空間位置和旋轉
  • 通過手柄上的按鈕觸發指令型操作, 如抓住, 發射等
  • 仍然保留傳統的”搖桿”, 但比較少用到
  • 這裡有一個 Oculus Toybox Demo 的演示視訊, 能夠很好地說明VR下的人機互動是什麼樣子的:

圖片來自 Oculus 的 Toybox Demo
視訊演示: Toybox Demo for Oculus Touch Toybox Demo for Oculus Touch - Inside Look

可以預見到, 基於雙手的物理互動會越來越多, 也就意味著物理模擬在VR遊戲中的應用會更普遍一些.
同樣的, UI 的設計已經不再推薦 2D 平面化, 更加傾向於 3D 的效果, 如科幻風格的全息投影, 或者使用實體模型. 或許, 以後 VR 遊戲中的”UI”改由 3D 美術來製作了.
圖片來自網路
音效傳統的 3D 遊戲音效, 一般是通過音量變化判斷距離遠近, 通過頻率變化判斷相對移動. 以空間定位為例:
  • 左右: 通過左右聲道的音量差異區分
  • 前後: 通過多聲道的衛星音箱或多聲道耳機區分(不適大多數人)
  • 距離: 通過音量的衰減判斷
  • 高低: 冒似沒什麼好辦法…

在 VR 中立體聲耳機是可以隨著頭部轉動的, 這就意味著, 我們可以通過兩個聲道配合轉頭來判定上下左右前後
圖片來自 OculusConnect_Introduction_to_Audio_in_VR.pdf
同樣的, 頭部除了轉動之外, 還可以小範圍移動, 不用通過走動就能判定聲音的遠近. 以前相當於背景音的環境音效, 現在也能分辨出大概的方位
圖片來自 OculusConnect_Introduction_to_Audio_in_VR.pdf
因此, 在VR 遊戲中, 3D 音效會被越來越多的人重視起來, 甚至發展出新的玩法, 比如 Pastoral 這個遊戲VR 遊戲後續發展期望主機平臺現在有一類遊戲, 以高畫質劇情體驗為主, 操作非常簡單, 俗稱”遊戲電影化”. 目前VR圈也有很大一部分人在嘗試VR電影的製作, 但是基於360度視訊的拍攝手法在VR的沉浸感並不是很好, 而且傳統的電影拍攝手法也不適合 VR 視訊製作. 所以, 電腦製作的 3D 動畫類電影在 VR 化方面具有先天優勢, 再結合 VR 頭顯的一些輸入特性, 甚至會產生”電影遊戲化”的產品. 另一方面, 以 UE4 為代表的遊戲引擎, 實時渲染的畫面效果已經達到了 CG 級別, 在技術上具備了製作實時渲染電影的能力. 可以預見到, 未來的 VR 互動電影與 VR 遊戲, 它們之間的邊界會變得十分模糊.
EPIC’s Infiltrator TechDemo
下面這個是國外的 VR 主題公園 THE VOID, 相信不久的將來, 這種體驗可以像電影院一樣普及
隨著技術的進步和成本的下降, VR 和 AR 會跟智慧手機一樣進入我們生活的方方面面. 對於 VR 遊戲來說, 很多人也跟我有一樣的夢想, 希望在有生之年, 可以把它變成現實:
圖片來自 Sword Art Online