1. 程式人生 > 其它 >unreal和unity引擎比較與選擇

unreal和unity引擎比較與選擇

本文寫於2022年06月01日,閱讀時請注意時效。

本文主要針對初學者選擇遊戲引擎時遇到的困惑,摘錄了一些其他人的觀點,並給出了我自己的考慮和選擇以供參考。

參考連結

主要來自於兩個知乎問題:

  1. Unreal 和 Unity 3D 各有什麼特點?如何選擇?

  2. 遊戲引擎(Unity)和虛幻引擎(Unreal engine),哪一個比較容易上手呢?

兩個問題的回答都只有10+,其中有效回答就更少了。其中第一個問題比較早,有效回答都在2018以前;第二個問題比較新, 最早的回答是2022年的。

有效資訊摘錄

作者:愛擼大貓的工具人

時間:2022-02-26

重點:做demo、定製渲染管線、材質鏈、程式碼除錯

這個問題要分三個階段的團隊討論比較合理。
首先我覺得這2個都是非常優秀的遊戲引擎。但是它們確實對不同階段的開發者有不同的要求。
對於完全沒有遊戲開發經驗和沒有程式設計經驗的美術和策劃。虛幻是比較容易做出demo,但是也僅僅是demo,大型上線專案還是用c++開發效能有要求的模組然後用少量藍圖配置靈活配置的模組。虛幻的工具鏈比較完整可以給不會程式設計的美術和策劃提供比較方便的原型設計環境。
對於第二個階段就是有一定遊戲程式設計能力但是對大型軟體工程駕馭能力不算太強的團隊,unity要容易上手很多。因為它相對而言功能比較清晰不存在太多的使用的潛規則。你可以在一個比較純粹的乾淨的環境新增你的gameplay邏輯。對於美術同學和TA同學而言改材質預覽效果很方便。對圖形程式同學定製渲染管線也比較輕鬆,srp定製管線要比改虛幻的渲染管線方便很多。
但是專案大了以後美術工具鏈也會有一定的麻煩。因為它不是像虛幻的材質鏈那樣設計材質系統。有很多時候,npc,小兵,角色的頭髮材質,有很多共性的引數,如果我希望b在a的基礎上有一些引數變更。c又在b的基礎上有一點引數變更。但是如果改一下設計風格希望abc都一起改。這個在unity你要把abc都全部調一遍或者寫個工具處理。但是在虛幻裡面,你對母材質的修改可以同步給材質例項。隨著專案的美術資源的膨脹,這種設計上的差異會帶來巨大的團隊效率的差異。專案開發不只是程式的事,也要考慮一下美術同學的感受。
第三個階段的團隊就是總體技術美術實力都比較強的團隊。那麼虛幻引擎的起點和天花板都更高。我們知道如果相同的shader邏輯相同的輸入資源是不存在哪個引擎的畫面效果更牛逼一說。但是有好多高階功能unity是沒有需要自己整合和開發的。比如就動態場景載入和開放大世界場景,要做hlod和streaming level的話,unity要自己整了。然後對開發工程師而言,遇到一些棘手的難題,也是在源生的c++環境除錯和定位更舒服。比如遇到記憶體問題,我們可以稍微hack一下記憶體分配器的實現做一些追蹤。對分配記憶體後一直沒釋放的業務做呼叫堆疊資訊的收集和日誌。
而unity環境哪怕你用il2cpp把程式碼翻譯成c++打包了,翻譯出來的那種程式碼絕對不是除錯輕鬆可讀性好的程式碼。哪怕給你打呼叫資訊看到函式名大概猜到對應關係,可讀性也是很低的。因為翻譯的那種程式碼把一個普通的函式呼叫變為查methodinfo表,查type info表,把引數塞引數陣列,還有c方式的呼叫。(有興趣讀讀il2cpp機翻的程式碼)而源生c++或者c#寫的指令碼邏輯則可讀性好很多。這兩個的可讀性和可維護性是天壤之別。當然,不出事的時候,c#寫指令碼很舒服。出事以後,你啃那種程式碼找崩潰就罵娘。所以第三個階段的團隊,起點和天花板我認為虛幻都更高。
做個總結是虛幻對初級者和比較強的團隊更友好。unity對中間階段的團隊友好。


作者:韜韜同學VR(此答主是從業者)

時間:2022-02-04

重點:根據專案特點進行選擇,不應該追求快速入手

作為市面上最成功的兩款面向大眾的遊戲引擎,U3D和UE的使用學習都是非常容易的,追求更快速的上手應該具體分析自己對於前期階段性成果的預期。

如果前期的學習研發傾向於程式,Unity可以快速上手,並且利用一些封裝好的程式快速實現精巧的功能開發。如果希望快速學習打造出色的場景,那麼Unreal可以帶給初學者足夠的成就感,因為延遲渲染的特性打造高質量畫面會相對容易。

當然也要根據自己的積累去甄別選擇,如果之前有C++的基礎可以選擇Unreal,C#則自然而然選擇Unity;如果瞭解HDRP渲染管線的應用,Unity也可以快速打造高質量的畫面;如果對於程式的積累幾乎為零,那麼Unreal的藍圖相對要更好入手一些。

簡單瞭解的話,兩款引擎都十分出色,十分適用於初學者,有長期精研的打算,還是需要根據專案特點進行選擇,不應該追求快速入手


作者:討狐之猛將(此答主是從業者)

時間:2022-02-04

重點:ECS模式、C#、C++、crash定位、藍圖程式設計的複雜度、工具鏈

評論區其他人:似乎UE5也具有ECS了

首先這個問題很難一概而論,難度是根據使用者自身的條件以及目的來確定的,以下僅作為個人經驗供大家參考,如果存在事實性錯誤請不吝賜教。

首先,如果是一名從未接觸過遊戲引擎,剛剛入門遊戲開發的新人程式設計師的話,注意,是程式設計師。Unity是更容易學習的。Unity精巧的ECS模式以及C#語言本身的優雅都十分有助於程式設計師的學習,一個新手遊戲程式設計師只需要花費很少的精力便可以上手遊戲gameplay程式設計,而UE的gameplay框架更加複雜,使用者在缺乏經驗的情況下要寫出符合標準的程式碼更顯困難,UE本身沉重的歷史包袱也會讓這個過程更加曲折。

而對於經驗老道卻沒有參與過遊戲程式設計的程式設計師,個人認為反而UE更容易入門,因為UE的框架更加標準化,儘管沒有Unity那麼自由,標準化的框架卻可以方便從未接觸遊戲開發的程式設計師快速瞭解遊戲開發中常見的問題。並且可以直接閱讀引擎原始碼,使用Cpp的巨集來解決跨平臺問題而不依賴於虛擬機器,crash後更容易定位,對於一個經驗老道的程式設計師而言一定是一件令人愉悅的事情。

而對於一位獨立遊戲開發者而言,個人認為Unity和UE各有千秋,上手難度取決於使用者的目標,畢竟我們需要的“上手”往往只是學習開發我們的遊戲需要的知識,獨立遊戲開發者可以但不必要挖掘引擎的每個細節。

首先,Unity的gameplay程式設計比UE更加方便是事實。是,UE有藍圖化的程式設計,但藍圖是一門完善的語言,使用藍圖程式設計同樣遵守軟體開發中的各項約定,傳統程式設計的知識依然重要,過於低估藍圖程式設計的難度造就了各大視訊網站上大量遊戲demo而少有遊戲成品的結果,並不僅僅是因為製作者沒有時間,缺乏對大型軟體的維護經驗也是一個不可忽視的原因。

但UE對比Unity的顯著優勢就是完善的工具鏈,與其他遊戲開發工具的方便互動等,比如自帶的本地化工具,優秀的動畫控制系統等等,如果獨立遊戲開發者試圖開發一個3D ARPG,我認為UE更容易上手,開發的過程也會更少碰壁。而開發一個2D遊戲,如奧日與黑暗森林,Unity更容易上手。

很遺憾受限於個人能力與閱歷,無法對TA,美術等工種的使用習慣提出有價值的總結,但個人生活中,認識的的美術朋友認為UE容易上手的多,而TA和圖形程式設計師因為自身的堅實基礎,往往認為差不多。


某禁止轉載的答案

時間:2022-02-03

重點:藍圖無法用git管理


作者:powerking

時間:2018-02-21

重點:服務端方案、藍圖隔離業務邏輯和底層功能

u3d還比較初期,用來開發只有客戶端表現的單機遊戲是可以的

ue畢竟是老牌的遊戲引擎,有完整的服務端方案,而且開放原始碼,非常適合開發大型網遊

u3d其實也有服務端方案,但他的服務端方案就是再開一個u3d在服務端跑。。。。承載力非常的低,而且針對客戶端表現的開發模型非常不適合開發伺服器

語言層面,u3d首選c#,可以快速開發,但是效率肯定不如ue的c++

c++效率高但是不適合快速開發,ue其實是提供了比較好的封裝,讓你能方便的用c++

至於藍圖,你做小型遊戲用c#自己寫當然沒問題

當製作大型遊戲,尤其是MMORPG時,用藍圖隔離業務邏輯和底層功能是非常需要的。

想象一下在幾百人的大團隊裡,每個人都到你的底層程式碼里加幾行,那是相當的酸爽,完全沒法控制設計架構,會亂套的。

ue是針對大型團隊開發模式做的,策劃只能接觸到藍圖這一層,只能用底層模組組合搭建業務邏輯應用,

程式設計師負責實現底層模組,控制程式碼結構,互不干擾,才能夠保持架構穩定


作者:嶽振(此答主是從業者)

時間:2015-08-11

重點:盡在掌握的感覺、都是工具而已

兩個都用過,現在在用unity。

工具鏈而言,unreal3/4要更好,更全面。unity更適合小團隊使用,團隊協作,資源管理,工具的不完整以及不得不提的效能問題都使其不太適合大型專案或團隊的開發。

如果團隊中有一兩個能駕馭unreal的程式設計師,而且不急著出產品的話,建議用unreal。

沒有,且是小團隊,專案規模不大,建議unity,更快上手。不過不開源不方便一些底層優化和定製。C#的一些高階特性在遊戲開發中不見得是好事。mono的效能問題也多被吐槽。

作為遊戲程式設計師,我想說的是,還是喜歡"一切盡在掌握中的感覺"

但一切還是看專案需要。

都是工具而已。


作者:陶仁賢(此答主是從業者且經常釋出虛幻商城免費素材的文章)

時間:2015-08-11

重點:外掛 VS. 完整流程、原始碼是否公開

就研究之後大概可以這麼分吧

  1. Unity,引擎本身只做主幹部分,很多功能自身並不重點開發,比如材質,大部分都依靠Sharder Forge之類得第三方外掛完成,Unity5的燈光是Enlighten的外掛。 而UE4更多的是自身有一個完整的流程。

  2. 獲取方式,UE4公開所有原始碼,任何人都可以免費下載,就算開發過程中遇到坑也可以自己走出來。 Unity個人可以下載使用,但是原始碼不公開,遇到坑就需要等別人了,或者自己花10W一年買服務。

  3. 遊戲釋出,兩個引擎基本都可以釋出到現在的所有主流平臺,不過是因為Unity在手遊平臺上有過一些不錯的第三方作品,所以大家可能會認為它只能坐手遊輕量級遊戲,UE因為PC和遊戲機大作比較多,大家可能會認為它只適合做大型遊戲。

主要區別在於,如果你想做遊戲,用Unity,你可以幾乎買到所有資源,抄一抄,省事。但是第三方有可能存在相容性隱患。

用UE4,你可以不需要程式設計師,只要腦子邏輯清晰,一樣可以完成獨立遊戲作品,不依賴第三方工具,不怕第三方工具相容性問題。可以比較容易做出高品質遊戲

結論

結合一些從youtube視訊中看到的資訊,總的來說,兩款引擎對於新手入門來說功能差別不大。不過在bilibili搜尋時,以unity為關鍵字的搜尋結果粗略看起來是要多餘unreal的。

對我自己而言。從技術角度,我看C++是比C#順眼的,學起來會更開心,同時學習兩門語言的話也比較消耗精力,容易導致都只學到了皮毛而不能深入。而且C#也有C#的難點。

從心態角度,“只是工具而已”這句話提醒了我,學習引擎的目的是為了更好的創作內容,而不是為了學習引擎而學習引擎。即使在初學階段選擇了一個引擎進行學習,學習深入之後,當自己能夠發現另一個引擎的優秀之處時,也仍然可以進行學習。

另外我之前一直抱著一種“渴望被公司選中”“尋找最優解”的狀態去選擇,因為unity“簡單”“使用者多”“招聘崗位多”就想要學unity,結果強迫自己的學習過程很痛苦,現在想想只是初學狀態即使放飛自我其實也不會“跑偏”到哪裡去的,而且好心情還能提高學習效率。

對於初學者,如何做選擇這件事大約是無解的,因為不瞭解所以難以做選擇,即使看了他人的回答也很難有切身的感受。而初學者走過的“彎路”其實就是成為高手的“經驗”,我這樣相信。

綜上,最後我決定先學習unreal,unity先放一放。也希望讀者能夠找到合適自己的選擇。