close
5月13日,Unite 2017開發者大會在上海舉辦,其中盛大遊戲技術總監徐崢進行瞭專題演講,闡述瞭他們十餘年開發過程中,在引擎使用技術方面沉淀下來的經驗總結,以及在引擎新技術上的探索和嘗試。
徐崢目前擔任盛大遊戲技術中心總監,擁有十餘年的端遊和手遊項目研發經驗,主導瞭《傳奇世界》、《零世界》、《超級地城之光》等多款端遊和手遊項目的研發,並作為技術項目經理主導瞭盛大遊戲內部遊戲研發平臺SGDP的研發工作。
以下為現場演講內容整理。
大傢好,我先簡單介紹一下我自己,我是盛大遊戲的技術總監徐崢。我今天想分享的主題是經典、現代、未來,盛大遊戲使用Unity引擎的三種方式。因為我們也做瞭很多Unity的項目,做的時候也發掘瞭不同的方式,希望能跟大傢分享一下。
經典——Unity傳統的前向渲染開發經驗
前向渲染標準畫質。
這也是當前移動遊戲市場最常用的一種渲染的方式。盛大遊戲有多款遊戲使用瞭Unity的標準前向渲染,例如已經上市的《龍之谷手遊》。前向渲染模式不會有太多的後處理,主要就是靠美術素材的質量。前向渲染比較容易或支持高分辨率,目前終端設備上跑1080P或者跑2K都沒有問題,這個畫面可以做的很精致。前向渲染對硬件要求比較低,經過優化,我們一般能夠支持市面上95%以上的設備,而且設備的耗電和發熱情況都比較可控。
綜合來說,前向渲染模式還是目前主流的一個遊戲渲染方式,能很好地兼顧效果、兼容性、耗電以及發熱等各方面。
場景性能優化。
我們都必須使用批次處理,如果不加控制的話,一個典型的場景,很容易達到500批次以上,而使用Batch,可能隻有一百批次上下。我們之前一款作品在使用Unity4的時候,發現使用靜態批次會導致場景儲存的空間大大增加,所以建議是使用動態的Batch,Unity5上這個問題得到很大的解決,但是總體來說,動態Batch的靈活性一些,場景Batch控制一下范圍,這樣在剪裁的時候,有更好的效果。
場景效果。
HDR的lightmap,這個在PC端可以正常使用,但是在Unity的時候,在移動版會失效,移動版的lightmap使用的顏色會失真,綠色會偏黃,所以我們修改lightmap在解壓版上的函數,使這個正確,對比度也更加明顯,使場景效果更加飽和。
而真實水面效果,大傢可以看到,就主要有三個技術方面,一個是擾動折射,Unity這個realistic比較費,是從內存到顯存,再從顯存到內存。高光來說就是使用法線貼圖的動畫,模擬水的移動。岸邊深度,如果使用Unity的CameraDepthTexture,需要將每一個場景不透明物件渲染2次,因此我們使用瞭自己的渲染管線,在渲染不透明物體的顏色buffer的同時得到一個自定義DepthTextuer,用於深度渲染。
同屏大量角色處理和角色特效。
這是我們經常遇到的問題。移動遊戲主要是使用CPO產品,所以帶動化的物體,定點數量還是需要控制的,另外角色的骨骼數大傢都知道,要控制。
此外有一些小竅門,比如說角色過多的時候,非主要角色可以以不要逐幀渲染,例如除瞭主角周圍的角色之外,離角色遠一點可以兩幀轉型一次,再遠一點可以三幀轉型一次,因為遠的角色看的並不是很清楚。
如果是斜45度,即所謂的2.5D的視角就不太合適,因為在邊緣的時候看到人一卡一卡也很難受。這個要擔心一點,如果是在動畫當中和邏輯計算相關聯的幀的話,不更新動畫可能會導致邏輯異常,會碰到這樣的問題。
特效的Drawcall很高,沒有策劃之前,這個Drawcall能達到兩千以上,這樣使高端設備和低端設備跑的速度一模一樣。因此我們想瞭一些辦法,就是比如說我們在特效李建兩個節點,一個結點下面掛的必須顯示的內容,另外一個節點是特效錦上添花的內容。可以關閉第二個節點下的特效,看主要特效就可以瞭。另外為瞭低配機考慮開發,根據機器配備的情況不同,開關不同的效果。
台中二手廚具收購
ETC。
下面是使用當中遇到的問題,就是安卓機都知道,必須使用ETC,Unity的ETC編碼器雖然速度比較快,但是效果真的很差。我們實際做瞭對比,和一些比較好的ETC做比較,Unity現在使用的ETC編碼器會產生大量的色接,清晰度也很差。我們很多時候發現UI的效果不好,最後發現都是轉成ETC的效果不好。特別是我們有的時候,模型感覺很好,已經做瞭很多,但是在遊戲裡面反而看不到這個感覺,最後發現也是轉成ETC的時候損失過大,這個後面可以說到。
如果有Unity源代碼的話還是替換掉當前使用的ETC編碼器,Unity使用編碼器是最早版本的編碼器,我不知道為什麼一直沒有升級。如果有可能的話,也可以考慮直接使用ETC2,或者ATC會好一些。
性能優化建議。
第一點就是避免使用Alphatest,這個大傢很清楚,盡量用模型來做,特別在低配的環境,這個消耗可能高很多。目前的手機分辨率很高,720P、1080P,因此可以適當考慮增加面數,減少後處理。現在主流手機其實對面數並不是很敏感。削減PS的指令數,部分計算轉移到VS,不透明的物體從前往後渲染,總是被遮擋的物體,渲染次序可以盡量排在後面。我們要註意前面提到的,動畫中聯動邏輯的問題,所以總體來說不是很建議在動畫當中打邏輯幀的操作方式。
內存優化建議。
第一個就是建議適當地削減采樣率,如果使用3D用單聲道就可以瞭。紋理之前說瞭,安卓ETC、IOS(PVRTC),安卓都是用ETC1。如果硬件要求,你這個項目不是要求跑在很低端的設備上的時候,可以考慮用ETC2,內存有很大的節省,這個不用直接PNG,在內存裡面會日方。使用對象池、內存回收池,這個也是常規內容。模型壓縮,這個省不瞭太多,動作壓縮,動作壓縮是很有效減少內存的方式。但是參數要反復試一下。有幾次動作壓縮之後,發現角色在原地抖,這個還是要小心一些。
現代——次世代延遲渲染管線嘗試 VR
下面介紹一下現代次世代延遲渲染管線嘗試,以及VR的一些嘗試。
為什麼盛大想投入VR研發,因為現在VR遊戲市場上即將進入高速發展。VR遊戲市場,相對的產業形態初具規模,產業鏈逐步完善,硬件也在逐漸普及,全球VR的業務也在逐步增加,預計到2020年,會在150億美元左右。在技術發展、用戶需求、媒體報道、資本認同等各種因素的共同作用下,VR可能會成為未來的一個趨勢。
我們為什麼選擇VR遊戲,因為目前VR遊戲還是網民最期待的VR內容,但老實說,我們並不認為這個調查完全客觀或者準確。我們判斷可能初期還是VR視頻或者VR直播成為一個短期的爆點。
所以我們做瞭這個項目《傳奇世界VR》,然後再現傳奇世界的熱血屠魔的經驗。這是HTC的版本,有3種武器,包括多種作戰技巧完整的教學環節,一個完整的藏經洞的關卡,同時支持中文和英文,最早的版本隻支持中文,上線被無數賣傢罵,評分直接被調整瞭。
下面簡單分析一下渲染管線的選擇。
前向渲染就是前面說最簡單無深度的模式,不能在真正意義上支持景深、3S之類,這裡嚴格意義來講還是有方式支持SSAO的,但是這個支持是近似的方式,不能算是完全正確的方式。延遲光照,渲染兩遍場景,批次大幅度增加,隻支持部分後處理效果。延遲著色,批次與延遲光照是比較接近的,但是能支持所有的處理效果。
但是它的問題就是基礎開銷比較大,因為要算貼圖,簡單效果下的渲染速度是低於前向渲染的,但是復雜後處理效果下的渲染效果是大大高於前向渲染的,所以大傢可以看出來,延遲光照沒有特別大的意義,所以我們一般的選擇,就是要不要前向渲染,要不要延遲著色。
渲染管線的決策。
PC平臺而言,硬件的瓶頸比較少,我們做HTC的平臺,所以當然選擇延遲渲染的模式。移動平臺不追求極限畫質,建議選擇前向渲染模式,在大部分中低配設備上快很多,也比較容易控制遊戲設備的熱量。移動平臺如果追求極端的,接近端遊的次世代畫質,建議選擇延遲渲染模式,在後處理較為復雜的情況,延遲渲染的效果要優於前向渲染。
要註意移動設備分辨率的影響,渲染分辨率對速度是線性影響,在低配機器跟不上的情況下,我們720P是比較現實的問題,不像前向渲染開2K在目前的主流機器上都能支持的。我們可以考慮使用720P做一些處理,然後UI能夠使用,比如1080P的高分辨率,大傢最終效果會感覺UI比較精致,畫面其實看不出特別明顯的區別。
另外建議給低配機寫一條前向渲染的管線,否則產品經理遲早要來找你,一旦上線之後,會發現有20%的設備不能支持,總是要找你再做開發。
移動平臺選擇延遲渲染還是可以做開發的,我們制作的《光明勇士》就是用的這種技術,這種自投影的感覺,全陰影的感覺,SSAO的感覺是一眼能看出區別。
《傳奇世界VR》這個遊戲因為選擇瞭HTC的PC平臺,所以也選擇的是延遲渲染,實現一種次世代的畫面表現,動態光源的數量可以體現,然後更好地展現場景氛圍,突出VR的場景感特點。
另外延遲渲染下是沒辦法開MXAA,是FXAA,這個效果差不多。
PBR。
PBR是現在延遲渲染的重要技術,PBR材質可以極大提審渲染對象的真實質感,極大改變早期次世代帶來的塑料皮的感覺。這是我們使用的一個實際效果圖,可以看第一版用的傳統次世代,就是感覺要不身上沒有反光,有反光是一個塑料皮,就用瞭現在的方式,會顯得真實很多。
PBR的一些TIPS。
並不是上瞭PBR會比之前的效果好,用不好,還不如以前的塑料皮,老板會問你花瞭那麼多外包費,做到那兒去瞭。PBR是光照的方式,但是要出好效果,還得程序和美術花時間調試,如果之前沒有做過這個流程,切到這個流程就多準備一些時間,讓美術和程序熟悉這個流程。
PBR需要調整美術的制作流程,需要說服美術師和外包團隊做這個蓋中,我們美術師很希望使用這個設備,但是我們的外包團隊並不會使用這個工具,所以最後實際上我們是美術設計師直接去外包公司做瞭很多的培訓。
PBR並不會大幅度增加硬件開銷,PC平臺上這種開銷可以忽略不計,移動平臺也是可以接受。Unity標準的PBR還是比較費的。
總體來說,PBR是成本不高,包括制作成本也沒有很高,但是質量提升很多的技術,還是建議大傢如果做新一代的,不管是端遊也好,手遊也好,可以考慮使用這個技術。
這是一個自投影的效果。
景深,主要是處理遠景和天空的一個融合,強調一下近景。
另外BehaviorTree可以實現復雜怪物AI邏輯,這個組件我們用下來還是比較方便,是一個Unity的第三方組件,價格很便宜,性價比還是很高的。
不像傳統遊戲,VR可以用控制器來攻擊對象,要用動畫表現結合的方式,通過玩傢真實反饋,來打擊。
我們發現在VR當中,其實講述故事的方式有很大的區別。在VR下要結合情景、語音、文字多維度滲透的講解故事背景,在VR下的話,玩傢的沉浸感的確會更高,有自己故事參與者的感覺。但是也要註意VR裡遊戲玩傢的註意力很容易分散。因此就要求劇情設計者盡量多緯度展開劇情,如果發現玩傢不在你看你希望看的東西,你要不斷提醒你,哪怕略微強硬的提醒,就是提醒玩傢現在在故事中,馬上把頭轉回來。
VR的引導其實也是,首先VR的引導UI要設置在遊戲世界中,VR中盡量不要使用屏幕固定端,引導UI不要隨著玩傢視角的移動而消失,原因和上面描述是一樣,玩傢的註意力很可能分散在你沒有註意的方向。引導多次沖陷,引導UI加入適當的動態,不斷提醒玩傢來看我,引導UI和場景分離要分離一些,不要做的很融入場景。
接下來是手臂,這個可能是VR遊戲的經典問題。為瞭更好地展現人物的代入感、沉浸感,肯定希望我是有手,因為我已經沒有身體,如果連手都沒有就太假,所以嘗試使用模擬關節,但是多次嘗試沒有得到很好的介入。
今年在剛剛舉行的美國GDC上,看瞭有一些公司做瞭VR當中模擬手臂的運算,他們的Demo實際演示出來效果還是不錯,但是實際操作的話,發現還是有很多問題,很多時候你會做出匪夷所思的動作出來。目前來看,由於傳感器太少,純粹隻靠手上的兩個傳感器模擬不出手臂動作,包括小臂、手腕效果都不好,目前大多考慮隻有一個手套,但這不是一個完美的解決方式。
這是一個小竅門,就是發揮VR設備的特點,讓玩傢多出點汗,VR位置追蹤器重新利用起來,讓玩傢閃避增加遊戲的多樣性,讓玩傢體驗VR遊戲不同的魅力。但是不要太過分,這個遊戲本來考慮讓玩傢跳躍躲避,但是最後發現,普遍感受不太好,女生說跳不起來。同時下蹲之類的操作,你偶爾來一下,讓用戶有新鮮感就可以瞭,每次都這樣打,就很困難。
體驗時間比較長的VR遊戲,是真正希望能夠賣出去體驗一個小時兩個小時的VR遊戲還是控制一下玩傢的緊張感,最終玩傢還是喜歡坐著玩遊戲,這一點PS遊戲還是很聰明,大部分PS遊戲還是坐著玩,現在主要遊戲都是坐著玩的模式。讓玩傢一直站著二三十分鐘其實已經很累瞭。
下面提到另一個問題就是真實打擊反饋,VR中玩傢可以從任何角度攻擊怪物,期望能夠使怪物正確的根據玩傢的打擊方向做出一個反應。我們初步嘗試就是使用Ragdoll系統,優點就是使用物理引擎跟玩傢的揮砍是很真實的反饋,缺點是雖然可能很真實,但是不好看,要調到既符合物理,又好看,可能要很多很多的積累。最後我們還是使用瞭多個角度,多個緯度的預設的手機動作,結合動作碰撞檢測實現的。實際的感受還是不錯的。
移動,這個是VR當中的一個經典問題,定點戰鬥玩傢會抱怨太枯燥瞭,就一直讓我定點在那兒,一旦移動戰鬥就有眩暈感。比如說我基本上不太暈,我可以接受比較快速的移動,但是在很多時候,我覺得移動的比較慢,沒有任何眩暈感的時候,給別的玩傢玩的時候有很強的嘔吐感。現在註意的事項就是穩定在90幀在PC平臺,移動平臺60幀,盡量動的慢一點。你可以遠景不動,可以近景不動,就是相對近一些,大傢可以看到現在有很多VR遊戲是使用載具模式,要保持近景不動,這樣的話眩暈感會少很多。
這是我們研發傳奇世界VR的一些收獲,就是VR遊戲不同於傳統遊戲,不要使用傳統的UI設計思路,要把UI放到3D世界中。謹記VR中的Camera不可控制的,玩傢的眼睛就是相機,不是你想看什麼就是什麼。VR遊戲對性能要求極高,性能分析要貫穿整個項目的開發周期。第四點也是和每個人討論下面反饋的點,我們經過測試是有道理,如果做不到穩定的90fps,可以考慮用60、45。大多數情況下,穩定的低FPS比不穩定的高FPS要好,如果隻能做低fps,那就老實一點做不移動的遊戲。
VR的敘事引導方式和普通遊戲有區別,還是多維度引導玩傢。最後一點也是在選開發題材的時候發現的問題,還是要選團隊擅長的路線與方法,因為現在做VR基本都是從以前從端遊,做手遊轉移過來,如果進入這個領域,覺得原來的是不適合VR,可能做一個新遊戲類型,這個時候一定慎重。進入一個不熟悉遊戲類型的市場,最終可能發現你花瞭80%的時間在做這種遊戲類型,而不是在做VR。
未來——使用Unity開發移動VR遊戲的嘗試
下面來提一下未來,就是使用Unity開發移動VR遊戲的一個嘗試。為什麼是移動VR遊戲?從PCVR到移動VR,谷歌一直推動VR的標準化,VR視頻直播日益成熟。谷二手餐飲設備買賣歌的Daydream平臺不管是軟件還是硬件都相對成熟,這也是一個標準。意味著三星HTC都會推出符合這個標準的硬件。
然後谷歌這個平臺是配置瞭標準的手柄,提供瞭更好的操作交互。以前三星是沒有標配手柄,要操作在眼鏡旁邊按鍵,這個沒法做遊戲,當時用眼睛的視點做選擇,這種方式隻能做解決,沒有辦法做重度的東西。
最後我們VR視頻預計成為殺手級的應用,大傢有興趣可以在三星的VR平臺上看NBA的VR轉播,現在機位有一些缺陷,但是效果很震撼,我們覺得VR視頻可能是一個殺手級的應用。
台中中古設備買賣
這是VR硬件的一個銷量預估,我們可以看到,移動VR這是美國的情況,移動VR是在2016年底在280萬臺左右,比整個加起來的量還很大,在中國這個差距更大,中國包括小米、華為、暴風影音VR眼鏡市場銷量很大,大傢在淘寶應該可以看到很多的VR眼鏡的廣告。
VR產品將在視頻應用的拉動下,隨用戶手機的換代而逐步成為主流。2017年移動VR市場增長比較快,三星宣佈瞭GearVR的量已經有500萬臺,觀看VR視頻超過100萬小時,HTC、三星、華為、小米等作為合作夥伴將陸續推出符合谷歌標準的VR手機。2018年移動VR市場將有更明顯的成長,形成一定規模。隨著用戶逐漸換手機之後,符合VR標準的手機裝機量將進一步提升。
使用符合VR標準手機的用戶在欣賞VR視頻之後,會形成一定的帶動效應,進一步加速移動VR遊戲的普及。特定類型的VR遊戲,我們認為是具備長期商業潛力的,通過HTCPSVR的實驗性產品驗證,可以總結出VR有一定魅力的。但是隻有一些特定類型的遊戲才能發揮VR的獨特魅力,並不是所有遊戲都有發展潛力的。
移動VR和PCVR的一個對比。移動VR的價格很便宜,可能兩三百塊錢可以獲得,更容易普及,當前的裝機量高很多。但是移動VR的性能較弱,對優化要求更高。移動VR設備目前沒有這種RoomScale的動作追蹤器,遊戲模式和Pcvr還是有差別,移動VR輸入設備有限,對玩傢的限制比較多,這個手柄隻有少量按鍵。
大傢玩過HTC的手柄,有很多按鍵,實際開發過程當中,真正能用的按鍵其實很少,有很多按鍵你如果設計出來,玩傢會覺得是反人類設計,要不根本按不到,要不就是很容易誤觸。
移動VR的探索,渲染管線的選擇,這個和之前討論的其實差不多,就結論來看,目前移動VR市場可能你隻能選擇前向渲染,延遲渲染在目前的最高端手機隻能跑720P左右,做移動VR是不現實的。
移動VR的性能指標和桌面VR相比還是有很大的差距。當前移動VR設備,維持以下的規格一般可以達到比較高的幀數,就是同屏面數100K面以下,同屏的DrawCall維持在100以下,使用較為簡單的Shader,避免使用負責的後處理效果,避免使用實時攝影。控制總面數,避免使用較為復雜的模型,盡量LOD,如果要繪制一個實時的角色陰影,建議使用一個簡化的模型。
比如Unity自帶的PBR材質性能開銷還是很大,建議謹慎使用,用一個簡化版比較少,也要註意簡化掉不需要的計算流程。
就是基本上Unity的標準材質,雖然都能實現這個效果,但是畢竟是一個通用的處理流程,需要根據你自己項目的需求去簡化。直接使用的話,性能都有一些問題,盡量使用統一的Shader合並貼圖,避免使用額外的後處理。
後處理過多消耗很大,後處理成本和分辨率成正比,目前如果你使用2K屏,後處理成本很大,所以要盡量減少後處理的復雜度,這是一個權衡,如果要上後處理,隻有降分辨率,但是大傢知道VR屏幕離玩傢的眼睛很近,現在甚至在2K屏幕上都能明顯看到,所以對VR來說,高分辨率還是很有必要。
Unity自帶的PBR在移動平臺開銷還是很大的,不要到處都使用,就是地表之類的大面積物體要謹慎使用。
水面就是基於Unity自帶的面進行修改。但是我發現,之前給移動遊戲寫好的水面算法在VR是有問題,要根據VR的模式重新做水面反射的功能。波浪效果,機遇深度的透明度調整,對於近海和遠海對天空顏色反射比例不同,要分別控制,比較符合美術的需求。
移動平臺上的一個景深實現,景深效果在移動VR上消化是比較大的,因為畢竟是移動VR用的前向渲染,每一個物體,要寫如Depthtexture要增加很大的開銷。你要考慮嚴格控制寫入這個物體數量,以最小的性能開銷實現效果,效果雖然有些損失,但是開銷小很大,這也是看遊戲類型的。如果你是一個遠景比較確定,不存在太多中景的遊戲類型的話,比較適合,如果希望拉開這個距離,效果不一定會很好。
移動平臺的性能挑戰,發熱一個很重要的問題谷歌的pixel真的好燙,降頻無法避免,谷歌會比華為、小米好一點,能支持半個小時左右的全水平或者高水平的運行,但是也半小時,隻能做一些動態的效果調整,就是發現降頻就主動降效果,或者更徹底就過熱瞭就降效果。要畫質還是要流暢度,這個隻能做一個動態平衡,團隊內部有多次的辯論,其實這方面。最後還是建議在開發初期追求高畫質,硬件是不斷發展,從高往下減,總比從低往上增容易。
不要覺得做當前畫質是過度追求畫質表面,可能老板說,我們按照市面上的去做就可以瞭,主流發瞭哪一款遊戲,做到這個水平就行瞭,但是發現往往不是這樣的。我們一款很有希望的主流作品,開發過程當中,畫面效果提升瞭3個世代,事實上老板的要求是不斷提高,這個也導致開發周期和成本的不斷提升,還是在項目立項的時候就把畫面的標準定的高一點。
移動VR的研發方向,就是目前來看,還是積累適合VR的相關技術,等到硬件逐步發展成熟。目前的移動VR市場還不成熟,但也是一個藍海市場。先進入其中遊遊泳,才能在高潮的時候沖在峰頂,目前不建議做大規模的投入,在現在情況下很難賺大錢,不斷是移動VR還是PRVR,要靠發行賺回成本其實很困難的。
探索適合移動VR的遊戲方式,PCVR、PSVR提供很多成功案例,特別PSVR上面有很多Demo有很多借鑒意義,PSVR還是一個成功的商業平臺,大傢可以考慮玩玩,有很多很不錯的小遊戲。
與傳統手遊產生互動和共鳴,雙端研發是目前比較好的主意,這樣比較能處理前期團隊的成本問題。如果做雙端考慮VR鏡頭FOV的問題。大傢知道是110是很廣角的,我們普通是用在35到45的樣子。簡單轉化到非VR環境,不做處理可能有一些問題。這是我今天希望分享給大傢的內容,進行近期做瞭很多遊戲,就是VR上的嘗試,希望能分享給大傢,做一個引導吧。因為時間不早瞭,如果大傢有問題,就臺下私下交流吧,謝謝大傢。
全站熱搜
留言列表