徐化:4人團隊 從零開始做虛幻遊戲《幻》

據報道/ 6月5日,2015年第三期據開放日‧虛幻引擎專場活動在上海正式舉行,此次活動由Epic Games與據聯合主辦。

以往開發虛擬遊戲的團隊是什麼樣的?大傢普遍認為用虛幻引擎做遊戲的團隊都是大團隊,隻有大團才有這樣的技術積累和精力,做出高品質的遊戲。但令人驚訝的是,《幻》作為一款虛幻沙盒遊戲,它的開發團隊隻有4個人。此次活動,《幻》團隊的創始人徐化作瞭《幻-從零開始制作經驗》的主題演講。

《幻》 創始人 徐化

徐化作為一名編劇,在沒有任何遊戲開發經驗的情況,為何會選擇用UE4虛幻引擎去開發遊戲呢?徐化現活動現場說道:“我們的團隊組合有點奇葩,就我個人而言,我是個編劇,沒有任何遊戲開發的經驗,相當於是從零開始。虛幻引擎提供較好的技術支持,如果用戶不是特別會編程,也可以使用。即使一個人完全不懂怎麼開發遊戲,那麼隻有UE4完全可以幫助你做到。對於“幻”團隊來講,我們要做的就是一切從零開始,直達最高點。”

在技術支持上,幻團隊的程序、美術各自分享瞭在研發過程中遇到的難題,以及如何利用UE4技術支持解決問題。

以下是演講實錄:

選擇虛幻引擎開發遊戲的前提 :開源、藍圖、持續進化

徐化:幻是一個4人團隊,我們是在用UE4做一個全平臺太空探索的沙盒遊戲。近幾年中國手遊市場的狀態是:渠道商、硬件商占的比例很高,但沒有高質量的遊戲內容推出,因此我們希望做中國最高質量的單機遊戲,同時網絡對戰也是支持的。

為什麼選擇虛幻引擎來開發這個項目呢?其實說起來,我們的團隊組合有點奇葩。就我個人而言,我是個編劇,沒有任何遊戲開發的經驗,相當於是從零開始。虛幻引擎提供較好的技術支持,如果用戶不是特別會編程,也可以使用。即使一個人完全不懂怎麼開發遊戲,那麼隻有UE4完全可以幫助你做到。對於“幻”團隊來講,我們要做的就是一切從零開始,直達最高點。

huan2

對於遊戲開發者來講,都知道虛幻引擎有什麼優點?在我學習開發的過程中發現瞭它的三個殺手鐧:一是引擎開源。“《幻》從零開始”遊戲是完全虛擬太陽系的,其中的每個星球都是等比大小,如果想要把引擎改到這種程度,必須要有引擎開源作為支持。第二個殺手鐧是藍圖,它是可視化編成,即使沒有學過程序,也可以編寫基本的邏輯和菜單裡面的內容。還有第三點版本持續進化,當中有很多新的功能被添加進UE4裡,就如同尋找寶藏的孩子,可以不斷通過開啟新地圖,得到想要的獎品。

實現大世界:做隨機地貌 無縫切換

程序 李威我很有幸參與《幻》這個項目,並在團隊裡負責《幻》的“大世界實現”部分和“擴張生成”部分的開發。《幻》想達到的一個“大世界”目標,就是整個太陽系所有的星球。太陽系內的星球上有各種各樣的地貌,類似於火星這種的星球,它本身的元素導致它星球本身就具有紅色的色彩。那麼大傢所熟知的月球呢?就是各種環形山的地貌,地球是大傢很熟悉的每天生活的地方。因為可能很多人一輩子都無法登上太陽系內其它星球,所以如何將頭腦中設計的內容在遊戲中表達出來?這是我們要的結果。但在這個遊戲裡,我們可以模擬出類似的環境,讓玩傢可以體驗到可能是後幾代人才能體驗到的內容。

當初在設計“大世界”的時候遇到很多問題,首先一個在於地球本身。做科學研究方面的人士知道,地球本身的數據量是比較大的,一個10米和100米精度范圍的高度和紋理數據就有20G。UE4的單位是1cm,如果再往下放幾個單位的話,就會發現這個數據量對於一個遊戲來說是無法承載的內容。我們可以這麼想,地球顯然不是太陽系裡最大的星球,但是地球的半徑超過6000公裡,也就是說可以達到10^8數量級,一般來講浮點數的精度范圍是10^7到10^8這個數量級,接近32位浮點數的精度極限。

huan3

在實際的開發過程中,如果對這個數量級強制進行渲染,首先造成的後果就是會超出虛幻世界地圖范圍的極限,光感可能會發現問題。UE4早期 的是50萬個單位(相當於5公裡左右),新的版本改到200萬個單位(相當於20公裡左右),但對於描述超過6000公裡半徑的地球是遠遠不夠用的。強制渲染還存在一個問題:渲染的過程最後到瞭地表,會很明顯的發現地球畫面不斷抖動,所有的頂點和紋理會不斷抖動,因為你超出瞭虛幻的范圍,這樣的導致的結果就是上下步之間的誤差會很大。

《幻》大世界的這方面內容,是拿網上的一個開源項目作為參考。大概的思路是把球面理解為6個平面的拼接,用一個立方體描述球體,在分界地方構成三個平面。當我們的視角接近星球的時候,就會把這個面進行細分,距離視角越近的面就會被越多細分出來,如果接近到面的位置,再把視角拉回來,線光打上去,就可以看到那幾個地方的密度高於其他部分。

地球本身的數據量很大,如果放在遊戲中去用,玩傢需要下載一個20G的自然量,你會發現這根本不切實際。實際上,就算是開發者也會認為這是不可能做到的事。因為開發者需要安排這20G的數據,還要讓玩傢覺得這一切看起來很簡單。我們想到用一種隨機生成的方式,對新產生的平面進行隨機數計算,使用多個相幹噪聲的算法疊加。

說起來這種方式在國外已經研究瞭很長一段時間,最早的論文出現在上世紀80年代左右,論文中就提到怎樣讓隨機生成出來的地貌更加接近真實自然界的地貌?舉個例子,比如world machine是虛幻官方推薦的生成大地形的方案,這是把相關技術集大成的一個作品。

huan4

隨機生成的地貌會節省開發者很大精力,而結果也不會太差。基於此,我們可以讓他先讓它生成大塊的內容,然後再去首發一些細節的,這也是遊戲最後可能會用到的方案。前期,我們做出來的效果並不是很好,試圖模擬出山脈的走勢,有點類似於梯田的感覺,還包括像千針石林一樣的大堆石頭山。

虛幻引擎本身的材質以及藍圖都是用的節點編輯方式,有些內容在虛幻編輯器裡是看不到的,需要自己專門開發,因此有許多工作需要我們自己來完成。在這裡不得不提到的一點是,虛幻3與虛幻4的節點編輯器是完全不一樣的,如果需要用虛幻4開發遊戲需要重新學習。但是學習的過程不需要很長時間就能上手,所以我們會發現虛幻引擎相當於一個巨人,開發者能夠踩在巨人的肩膀上發現很多精彩的世界,也可以事先自己的的想法,一方面在學習的過程中提升自己能力,另一方面可以更完美開發遊戲。

實現大世界,要解決浮點精度問題

大世界的實現裡有一個浮點精度問題,這也是最大的問題。如果直接是有Float,在大星球進入厘米級別的時候,整個畫面會隨著相機的運動而抖動,因為此時細分面的初始位置已經在浮點精度之外瞭。星球之後是整個太陽系,太陽系就用Double來描述,精度控制范圍不能超過一個Double。如果這樣會帶來一個問題:虛幻內部很多都是用Float32來做的,甚至有些Sharder場合都是用Float16,這就牽扯到精度轉換的問題,怎麼做呢?

huan5

經過研究,我們把每個星球和每個細分面的位置用一個Double來描述它,在運算的過程中,攝像機推進到哪兒,就把星球和攝像機的Double的位置先做一個運算,將它映射到一個Float空間裡。因為特別遠的事物眼睛是看不見的,這樣就相當於把沒有精度的剔除,剩下的就可以在Float空間裡囊括,這樣能很快的解決問題,這對以後的升級或是其他過程也不會產生影響。

UE4在美術制作具有很好的可控性

遊戲美工 王勇赫在《幻》的團隊裡,我主要負責模型、貼圖,以及材質和關卡搭建。《幻》的遊戲美術風格比較接近電影,包括到目前為止開發出來的內容。在開發過程中會用到一些工具,比方說用DDO做一個兩層小瓷娃娃,用時1h左右。後續的過程中會先做一些材質,將材質做好再快速抹在上面,最後在引擎中大概看一下實現的情況,再細化它的效果。

huan6

《幻》當中VR演示模型要做到的是讓它四季變換,在UE4中可以看到雪已經將整個山都覆蓋瞭,還包括山體有一定的量,也可以實時的觀察到。運算方法可以根據山體的高度、斜面來算不同的問路和走向,設計的高山、山谷一類的材質可以運用到各個產品上。隻要準備好相應的方程,隻要在虛幻強大的材質系統中將它們結合在一起,就可以得到一個非常完美的效果。

UE4對動畫、特效方面技術支持較好

概念美術:我在《幻》團隊中主要負責設定一塊的內容,動畫和特效之類的。

第一點,做動畫的美術,對於骨骼的數量比較在意,我也是。我們做過一個模型,一共914個骨骼,2830幀動畫,UE4能夠完美的導入而且效果很好,這也是《幻》決定使用它的一個重要原因。

huan8

第二點,是關於外部物理屬性的導入。在刷權重的時候能看到相當恐怖的面數,遊戲中的佈料就是這樣做出來的,也就是說UE4對於外部的物理導入也是非常支持的。

huan9

第三點,傳統的表情插件Blend  shape,在UE4裡面能夠看到金屬生成的整個過程,而且是完完全全地識別。如果用傳統的Blend  shape也可以做出來,但是如果放到UE4裡,需要做出很多的模型來控制形變,最後隻需要導入一個模型就可以。

huan10

徐化:VR是我們的第一次嘗試,在北京我們展示瞭一下效果特別好。我希望《幻》能開發出中國最好的遊戲,給玩傢一種全新的體驗,謝謝。

Comments are closed.