Oculus Rift+LeapMotion VR遊戲項目總結 Featured

  • 26 七月 2018 |
  • Written by  Jeff


project201801

時間過得真快,一轉眼距離這個項目結案已經半年了,在沒有後續更新的情況下,這款VR音樂遊戲已經在台北多次展出,也在3月份跑去Apple總部的SXSX2018湊過熱鬧,上週跟夥伴們確認過1月份之後沒有更新過任何內容,趁著半年紀念,把之前整理的項目總結貼出來跟大家討論看看。前面是經過,沒時間仔細看的可以直接跳去結尾閱讀。

 

遊戲設定
玩家稱作宇宙飛船在太陽系的不同行星上與風情各異的外星人舉辦音樂派對,玩家用手去擊打飛來的音符演奏音樂,外星人則負責隨著音樂跳舞,一曲結束,則僅用擊中音符的數量計分,連擊數量則用來控制外星人的熱舞程度。

參與項目時的狀態
遊戲已有從地球出發前往三顆星球的導覽航行場景,三顆星球有待機和講話兩種狀態的外星人,配樂為RF的罐頭音樂

任務目標拆解
1、我:常規音樂遊戲的判定機制(不含“長按狀態”)、Leap Motion的手掌位置檢測機制、計分系統、三個星球的遊戲場景搭建、比贊手勢為開始遊戲、連續拍手兩次的手勢為重玩本關,音軌控制系統、音效設計、NGUI Layout、音符發射系統及粒子特效設計
2、一名2D概念美術:外星人造型設計、星球概念設定、UI方案、相關宣傳品繪製;
3、兩名3D美術:依照2D美術設定製作3D模型;
4、外包動畫師:為外星人設計舞蹈動作和熱舞動作;
5、外包音樂設計:三顆星球的主題音樂編曲與混音;
6、導覽場景主程:中、英、日三語系切換模塊;
7、對白策劃、翻譯與配音:部分加速后調高Pitch用於對話場景,部分調整音調之後用作伴唱音軌;

我的開發時程:
2017年11月:中旬開始設計遊戲機制,規劃出音軌方案后就寫了個按照功能劃分的系統,把音樂控制、動畫控制、UI控制、關卡控制、手勢識別,到12月中旬確認最終玩法時,一共改了3版,也因為模塊拆得有點多,使得每次改版結構的混亂度都會增加;

第一版音符為十字分佈,設想中希望讓中間的音符給玩家造成一點選擇上的困擾(自己選擇用左手去拍還是用右手去拍),但實測后發現受限於Leapmotion的感測範圍,下方的那個音符常出現在感應區之外,擺到跟左右位置高度相近時玩家則不用面對構想中的選擇問題,基本上一手放在左側/右側的擊打點,另一隻手負責三角區域的拍擊,遊戲變得略無聊,改;

第二版音符為梯形分佈,左右手都需要上下移動,即便強行用單手遊戲也會出現手掌無法夠到另一側下方音符的情況,迫使玩家主動伸出另一隻手來遊戲,狀況符合預期。此時星球一的音軌登場,發現目前所採用的“拍到無動作,漏掉開靜音0.3秒”的設計打擊感不好,改;

第三版給四個位置的音符分別添加了音效組,拍到就隨機播放該位置的音效,漏掉的音符也改為播放倒帶音效,不靜音以保持音樂的完整度,當無漏掉的情況下連續擊中14個音符外星人就進入熱舞狀態,BGM切換到高能版本,場景特效全開,高能狀態下漏掉音符則觸發音軌靜音0.3秒的狀態,並且切換回正常版的BGM,關閉場景特效,這時遊戲機制已成型。


2017年12月:
1、取得了手部模型的鋼鐵人版本,購買了ParticleV3包來挑選適合的音符、手臂、場景特效;
2、使用CurvedUI和TextMeshPro(這插件那時候還是收費版)按照2D美術的方案搭建UI;
3、做了比贊手勢和鼓掌手勢的識別,但LeapMotion原生的捏拿偵測響應速度遠慢於音游的響應速度,改換其他方案;
4、月末Unity升級,原本在2017.2里正常的插件突然不能用了,插件放出Git版升級補丁已經是1月9日的事了,且在參加TGS2018時,該插件的AssetStore版本都沒有正式升級,每次回想都感覺好危險啊;

2018年01月:
1、5日,休假歸來,開始搭建第二顆星球的場景,10日搭建第三顆星球的場景,過去兩個月也都有一半的時間在家遠程辦公,但unity升級棄用了Monodevelop之後,我轉投VS旗下,卻意外發現mac版Unity和Win版Unity在轉換時丟失代碼進度,時間緊迫,捨不得花時間確定問題是源自VS還是git,最後階段的開發都是每天從三峽前往內湖辦公室,每天通勤時間接近3小時,崩潰;
2、8日拿到另外兩顆星球的BGM,三顆星球BGM的BPM分別是97、119、125,儘管預留了BPM的參數,但定義音符發射序列頭大了一番,最後在Audacity里將全部音軌轉換成120bpm來抓發射時間點,用了2天半的時間順利完成;
3、14日的時候找來編曲老師現場調試,增加了舞蹈狀態下有掌聲的音軌,並且讓掌聲伴著普通BGM/高能BGM一直到本關結束,掌聲漸強,用來輔助提示本關進度,但音軌已有4軌,未壓縮(音軌未定案一直在微調),系統負荷大,加上掌聲在熱舞BGM里難以平衡,放棄;
4、參展前3天定案了三語言切換方案,展出前一天主程大人從下午開始,隔一個小時就讓我打包一次給他玩,直到第三次我才反應過來他這是在測試,可我還在debug排查最後一個問題啊,這三個多小時浪費得真是莫名其妙,到家的時候已經是夜裡12點半了;

 

經驗教訓:

1、現有插件運作正常的情況下,如果不是unity自身必要的升級,不要輕易升級Unity(必要升級是指類似於新版本整合了你要的功能,如TextMesh Pro、最新版Vuforia、new Prefab、ARKit更新兼容性插件這種)

2、不要一開始就拿著需求寫系統,最初的需求可能很多方面都是臆想的,快速迭代升級才是對的,至於牽扯範圍多大在我個人這裡還是抓經驗值,有更好方案的夥伴歡迎分享經驗;

3、注意GC機制,合理使用Static物件;

4、音軌要壓縮,體積小比格式重要,必要時引入Adaptive Music,可節省很多很多系統資源(這就是4月份我專門研究Fmod的原因,詳見這篇文章),必要時是什麼樣的情況呢?如果BGM有多個近似的音軌同步播放且要用snapshot頻繁切換,請盡早導入FMOD之類的動態音樂方案;

5、VR遊戲場景切換時不要使用2D平面圖片,轉頭時圖片刷新的滯後導致的切圖觀感體驗很糟糕,甚至不如黑屏的體驗;

6、粒子系統要合理使用,最好有專人負責VFX/SFX的設計;

7、場景搭建也跟3D建模畫貼圖類似,要遠看有形,近看有細節,VR視角中,遠看就有的細節對注意力是干擾,場景光線充足更要仔細平衡與取捨;

8、專業的領域讓專業的來,慢工出細活,舒服的熱舞動作跟4倍速的舞蹈動作觀感上的差別還是相當大的;

9、體感雖然看著新鮮,但很難做出《Beat Saber》那樣的打擊感,缺少回饋的部分一定要用音效或視覺來補強;

10、如果你的同事不愛講話,那遇到你覺得莫名其妙的狀況時一定要主動確認清楚其真實需求,以免再遭遇前面那種尷尬。

11、原畫如果不是給了整體方案,而是分批提需求/分批單獨交付了星球、外星人、UI,那麼整體性會變得很差,在素材、模型都成型了之後,場景搭建環節對於整體性的提升效果真的有限,這也是為什麼老闆後來砸錢把平面美術從outsource砸成了inhouse,後來他們的新項目整體性已經大幅提高了。

 


項目後續開發與畫質提升、性能優化的思考

畫質篇:

1、UI與遊戲場景整體風格的統一,降低場景亮度,突出手勢感測的交互;

2、減少高光粒子的數量,讓視域多些喘息的空間;

3、漆黑星球為起初外包製作,因為使用了LOD方案,並且搭配PBR材質表現優秀;另外兩顆星球的建模與貼圖要朝向這個方面提升,將美食星球的誘人感做出來,也讓月兔廣寒宮能夠表現出恰當的氛圍。

4、把規劃中的HDR效果的轉場特效做完,改善現有的切邊狀況;

5、音符風格改換與場景匹配的設計;

6、增加長按或手勢音符(改動音符發射系統,工程較大,慎用)

7、繼續增加其他星球的遊戲場景;

性能篇:

1、改換定位機制,把目前的場景追蹤玩家位置反過來,然玩家依照場景重定位,以便將更多物件static化;

2、將擊打特效放到對象池中,減低GC損耗;

3、熱舞狀態下啟用AutomaticCulling,降低drawcall,排除偶爾的卡頓或假死狀況;

4、壓縮音軌,啟用動態音樂控制,以便騰出更多系統資源實現3D場域音效反饋;

5、引入unity2018.3版的粒子功能,啟用UI粒子特效和粒子力場,降低目前版本的高Drawcall消耗;

6、接上條,用mesh particle替代現有的星雲背景,理論上能夠節省相當大的資源(原本是購買的星雲模擬asset,消耗蠻大的)

7、多個自帶骨架動畫的低面數外星人與當前同個模型縮放拉伸性能消耗的對比,擇優使用;


以上,下一篇估計是在8月下旬,為采用ARkit為中研院90週年慶開發的iPad地標和影片展示方案做個總結,上面第7項的優化思路就是最近新發現還沒做對比的內容,原以為Prefab物件的低消耗特性居然會因縮放模型而消抵,目前新版Prefab剛剛引入unity2018.2,還沒見到有人做過這方面的定量對比分析,持續留意該話題中。

Last modified on 週三, 08 八月 2018 05:31
Rate this item
(0 votes)
Login to post comments
back to top