天天看點

遊戲引擎Unity, Unreal, CryEngine的比較和掃雷

碰到遊戲開發,一定會要面臨在這3個引擎裡面的選擇。網上一搜,不管中英文,找到的比較文章浮于表面,不觸及雷區,根本無法幫助開發者進行選擇。

是以,自己親自使用了3個引擎後,來幫大家掃雷,少走彎路。

先說結論:Unnreal最友善,最完善,已經成為超越Unity的全平台首選。包括騰訊,網易在内,越來越多的公司選擇用unreal開發手遊,Unity最近有被大公司逐漸淘汰的趨勢。

遊戲引擎的需求,一般來說有如下幾個:平台支援,渲染效果,編輯器易用性,文檔完善程度,程式設計難度,第三方包數量,引擎收費方式。

我們一個個來看。

1. 平台

unity和unreal如今都是全平台,包括手機。在手機上,unreal效果還比unity好。

cryEngine目前還是不支援手機,但從官方論壇看,似乎正在開發對手機的支援。

2. 渲染效果

Unity從v5.x開始,支援GI(全局光照),到2018,把GI+PBR提升到了标準流程。

從GI的實作方式看,Unity和Unreal采用了一模一樣的方式:用非實時的光線追蹤渲染器,花長時間,對場景進行GI渲染,并把GI進行bake,儲存下來。這樣,實時遊戲時,不再計算,直接用bake好的。

是以,我們看到的Unity和Unreal的GI效果,其實是光線追蹤渲染器,花長時間渲染出來的照片級效果。再有遊戲主播說遊戲畫面多麼好的時候,你可以去笑話他了,因為這畫面根本就不是實時渲染的。

這種方式,隻能用于靜态物體,靜态光源,也就是,物體和光源不能動。那動态物體怎麼辦?

方法是:在bake的時候,把空間每個點,不管有沒有物體,每個點的光照資訊,也都bake到資料結構中。動态物體,實際上不能反射GI,但是能接收這些儲存過的GI,進而達到還算不錯的效果。

unity和unreal采用了完全一樣的GI實作方式,于是,也就有了完全一樣的GI渲染效果。

unity隻提供bake的這一種方式,而unreal還提供無需bake的實時GI。但是,unreal的實時GI,效果非常差,絕對不會有人去用,是以不提也罷。

CryEngine則非常猛,它不是bake,而是真的實時GI。它不需要bake,真正做到了所見即所得。它的GI,叫做Voxel-Based GI,和這兩年,NVIDIA到處宣傳、示範的實時GI,是一樣的實作方式,都是基于同樣的論文實作的。這在2018年底的今天來看,也是真正的次世代引擎。

視覺效果上,VB GI也有局限,和Baked GI一樣,VB GI隻計算靜态物體,動态物體不反射GI,但接受GI。是以畫面效果上,它和Unreal,Unity3D的效果,其實是一模一樣的。

VB GI的好處是,它不需要bake,開發者永遠不用面對bake後效果不如意,反複調整,反複bake的尴尬局面。這種尴尬,在unity和unreal很常見。

也就是說,VB GI效果其實并沒有提升,但是制作效率得到提高。

對玩家來說,VB GI有2個短闆:

 - 對電腦性能要求更高。

 - 當鏡頭從一處,不移動,直接跳到另一處時,光線可能要花約2秒重新計算才能達到準确。現象是,鏡頭跳過去瞬間,畫面全亮,約2秒内逐漸回到正常亮度。

而手機平台上,GI是不用想了,手機性能跟不上。不過,GI還是可以bake到貼圖上的。在這種情況下,Unreal的渲染效果,明顯比unity好得多,這是衆多公司改用unreal開發手機遊戲的一個重要原因。

3. 編輯器易用性

Unreal完勝,近乎碾壓級别的勝利。最能一眼看出差別的,就是材質系統。

Unreal擁有最直覺,最友善,最強大的節點式材質,其材質選項,也完全基于PBR(基于實體的渲染)。不管是設計人員,還是開發者,都能很舒服的上手,很舒服的使用和調整。

遊戲引擎Unity, Unreal, CryEngine的比較和掃雷

Unity則簡陋的讓人意外,尤其是作為一個熱門遊戲引擎。整個材質體系都給人感覺是業餘的設計。尤其是對于用過3dmax, maya, c4d的3D人士來說,Unity的材質體系,有點看不下去。

遊戲引擎Unity, Unreal, CryEngine的比較和掃雷

功能強大方面,Unreal提供了你能想到的幾乎所有功能。而Unity自身,很多功能都是缺失的,但是都能在市場買到,如果你有預算的話。這個部分,可以往後看“第三方包”的環節了解詳情。

CryEngine難用的讓人吐血。因為它所有的資産/素材,都沒有預覽圖,隻有檔案名清單。當點選到某個資産時,是有預覽視窗的,也就是說,你要一個個去點選,看哪個素材是你要的,而不能從預覽圖清單一眼看出來。

這種強大和便利方面的差異,展現在3個引擎的各處。

Unreal的編輯器易用性,也是越來越多公司選擇unreal做手遊,而不選擇unity的一個重要原因。

4. 文檔完善程度

unreal和unity的文檔完善程度,可以說不分上下,都很完善,不管是跟着向導走的新手,還是老手速查,都沒有任何困難。

在新手引導方面,unity做的更好一點。因為unreal一上來,就以大型遊戲的需求舉例,提供的入門項目,也比unity的入門項目,更複雜一些。

而CryEngine的文檔,可以用嚴重不足來形容。cryEngine做出了次世代的引擎,卻因為沒有文檔,沒人會用,公司直接破産了一次,你敢信。幸好亞馬遜把它買了,不然它就消失了。

cryEngine的文檔存在2個問題:

(1)文檔版本跟不上軟體版本:

    cryEngine 在v5開始,編輯器經曆推倒重寫,現在是v5.5,重寫基本完成,文檔手冊跟上了,但教程還沒跟上

    現在,官網教程 和 最新版編輯器對不上。而最新版的視訊教程,其實放在官方youtube裡,卻沒放在官網上

    是以,對于不知道的人,會覺得CryEngine上手好難,教程和自己軟體上看到的,根本不是一回事

(2)程式設計文檔極度匮乏:

    cryEngine的大部分文檔,都是 編輯器 和 無代碼的節點式程式設計 的。而C#/C++文檔,極度匮乏。教你怎麼建立腳本,怎麼編譯之後,直接就是API手冊!

    獲得常用api的唯一方法,是檢視官方提供的遊戲模闆項目的源碼。

5. 程式設計難度

unreal隻支援C++;unity主用C#;CryEngine從v5之後,C#和C++是同等待遇。

在遊戲程式設計方面,C++其實并不比C#複雜多少,但是,unreal的C++ 代碼,卻總是給人一種不太易讀的感覺。對比後,發現差異在于api和變量命名。Unity的api命名更加簡潔,而unreal的,不管是api還是示例代碼,變量命名都特别長。

這種過長的命名,以及C++本身複雜性的名聲在外,吓住了不少其實應該選擇Unreal的使用者。

是以,有時候不太了解,unreal為什麼不像CryEngine那樣,官方支援C#。就算unreal一直在說,它的C++其實并不複雜,但C++險惡的名聲,不是Unreal能改變的。

6. 第三方包

unity壓倒性的多,其他兩個都不能比。

但unreal編輯器壓倒性的強大,做遊戲的大部分功能,unreal都想到并提供了。

比如,流式地圖加載(玩家邊跑邊加載地圖,進而能無縫體驗無限大的地圖),unreal本身就提供了,unity本身沒有,但市場有賣,價格50美金。

這樣看,或許unreal包不如unity多,但是遊戲需要的功能,unreal編輯器一般都提供了,于是反而省了不少錢。

CryEngine包就很少了,不過,官方很舍得給免費素材。一上來,就先給你4G免費素材庫。然後,應用商店,再來一堆免費素材庫。基本上,制作野外地圖,你不再需要另找任何素材。但是,城市場景,它就沒多少素材了。

7. 引擎收費

unity是收軟體月費/年費,成本有上限。

unreal是收5%的遊戲利潤。

CryEngine有段時間是靠随意捐款,現在也改成了收5%的遊戲利潤。

結論:

CryEngine完全出局,文檔不全、且不支援手機,找不到任何使用的理由。

Unreal在強大、性能、編輯器易用等方面,都是超過unity的,平台支援兩者一樣。越來越多的公司已經在抛棄Unity,換用Unreal。

但是,近期,依然有些公司在比較Unreal和Unity後,毅然選擇Unity。主要是産品、系列已經固定的小公司。原因在于:

  • 系列産品已經固定,已經明确知道下一個産品收入也不會高,不舍得被unreal抽成
  • C++的開發人員工資,比C#要貴。

基本上,如今要在unreal和unity做選擇的小公司裡,有個趨勢:越是覺得自己收入少的公司,越是會選擇unity。而越是覺得自己收入高的公司,越是會選擇unreal。

比如,網絡遊戲更願意選擇unreal;單機+内購+DLC的遊戲,更願意選擇unity。手機和PC平台都是這樣。因為,網絡遊戲營運更久,開發商會預計自己收入更高。

背後的邏輯是,如果開發商掙錢多,被引擎抽5%也能承受;如果開發商本來就掙錢不多,還被抽5%,或許就很難接受了。

版權聲明:本文為CSDN部落客「weixin_34415923」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34415923/article/details/92619453