unreal和unity引擎比較與選擇

unreal和unity引擎比較與選擇

本文寫(xiě)于2022年06月01日,閱讀時(shí)請(qǐng)注意時(shí)效。

本文主要針對(duì)初學(xué)者選擇游戲引擎時(shí)遇到的困惑,摘錄了一些其他人的觀點(diǎn),并給出了我自己的考慮和選擇以供參考。

參考鏈接

主要來(lái)自于兩個(gè)知乎問(wèn)題:

  1. Unreal 和 Unity 3D 各有什么特點(diǎn)?如何選擇?

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

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

有效信息摘錄

作者:愛(ài)擼大貓的工具人

時(shí)間:2022-02-26

重點(diǎn):做demo、定制渲染管線(xiàn)、材質(zhì)鏈、代碼調(diào)試

這個(gè)問(wèn)題要分三個(gè)階段的團(tuán)隊(duì)討論比較合理。 首先我覺(jué)得這2個(gè)都是非常優(yōu)秀的游戲引擎。但是它們確實(shí)對(duì)不同階段的開(kāi)發(fā)者有不同的要求。 對(duì)于完全沒(méi)有游戲開(kāi)發(fā)經(jīng)驗(yàn)和沒(méi)有編程經(jīng)驗(yàn)的美術(shù)和策劃。虛幻是比較容易做出demo,但是也僅僅是demo,大型上線(xiàn)項(xiàng)目還是用c++開(kāi)發(fā)性能有要求的模塊然后用少量藍(lán)圖配置靈活配置的模塊。虛幻的工具鏈比較完整可以給不會(huì)編程的美術(shù)和策劃提供比較方便的原型設(shè)計(jì)環(huán)境。 對(duì)于第二個(gè)階段就是有一定游戲編程能力但是對(duì)大型軟件工程駕馭能力不算太強(qiáng)的團(tuán)隊(duì),unity要容易上手很多。因?yàn)樗鄬?duì)而言功能比較清晰不存在太多的使用的潛規(guī)則。你可以在一個(gè)比較純粹的干凈的環(huán)境添加你的gameplay邏輯。對(duì)于美術(shù)同學(xué)和TA同學(xué)而言改材質(zhì)預(yù)覽效果很方便。對(duì)圖形程序同學(xué)定制渲染管線(xiàn)也比較輕松,srp定制管線(xiàn)要比改虛幻的渲染管線(xiàn)方便很多。 但是項(xiàng)目大了以后美術(shù)工具鏈也會(huì)有一定的麻煩。因?yàn)樗皇窍裉摶玫牟馁|(zhì)鏈那樣設(shè)計(jì)材質(zhì)系統(tǒng)。有很多時(shí)候,npc,小兵,角色的頭發(fā)材質(zhì),有很多共性的參數(shù),如果我希望b在a的基礎(chǔ)上有一些參數(shù)變更。c又在b的基礎(chǔ)上有一點(diǎn)參數(shù)變更。但是如果改一下設(shè)計(jì)風(fēng)格希望abc都一起改。這個(gè)在unity你要把a(bǔ)bc都全部調(diào)一遍或者寫(xiě)個(gè)工具處理。但是在虛幻里面,你對(duì)母材質(zhì)的修改可以同步給材質(zhì)實(shí)例。隨著項(xiàng)目的美術(shù)資源的膨脹,這種設(shè)計(jì)上的差異會(huì)帶來(lái)巨大的團(tuán)隊(duì)效率的差異。項(xiàng)目開(kāi)發(fā)不只是程序的事,也要考慮一下美術(shù)同學(xué)的感受。 第三個(gè)階段的團(tuán)隊(duì)就是總體技術(shù)美術(shù)實(shí)力都比較強(qiáng)的團(tuán)隊(duì)。那么虛幻引擎的起點(diǎn)和天花板都更高。我們知道如果相同的shader邏輯相同的輸入資源是不存在哪個(gè)引擎的畫(huà)面效果更牛逼一說(shuō)。但是有好多高級(jí)功能unity是沒(méi)有需要自己集成和開(kāi)發(fā)的。比如就動(dòng)態(tài)場(chǎng)景加載和開(kāi)放大世界場(chǎng)景,要做hlod和streaming level的話(huà),unity要自己整了。然后對(duì)開(kāi)發(fā)工程師而言,遇到一些棘手的難題,也是在源生的c++環(huán)境調(diào)試和定位更舒服。比如遇到內(nèi)存問(wèn)題,我們可以稍微hack一下內(nèi)存分配器的實(shí)現(xiàn)做一些追蹤。對(duì)分配內(nèi)存后一直沒(méi)釋放的業(yè)務(wù)做調(diào)用堆棧信息的收集和日志。 而unity環(huán)境哪怕你用il2cpp把代碼翻譯成c++打包了,翻譯出來(lái)的那種代碼絕對(duì)不是調(diào)試輕松可讀性好的代碼。哪怕給你打調(diào)用信息看到函數(shù)名大概猜到對(duì)應(yīng)關(guān)系,可讀性也是很低的。因?yàn)榉g的那種代碼把一個(gè)普通的函數(shù)調(diào)用變?yōu)椴閙ethodinfo表,查type info表,把參數(shù)塞參數(shù)數(shù)組,還有c方式的調(diào)用。(有興趣讀讀il2cpp機(jī)翻的代碼)而源生c++或者c#寫(xiě)的腳本邏輯則可讀性好很多。這兩個(gè)的可讀性和可維護(hù)性是天壤之別。當(dāng)然,不出事的時(shí)候,c#寫(xiě)腳本很舒服。出事以后,你啃那種代碼找崩潰就罵娘。所以第三個(gè)階段的團(tuán)隊(duì),起點(diǎn)和天花板我認(rèn)為虛幻都更高。 做個(gè)總結(jié)是虛幻對(duì)初級(jí)者和比較強(qiáng)的團(tuán)隊(duì)更友好。unity對(duì)中間階段的團(tuán)隊(duì)友好。


作者:韜韜同學(xué)VR(此答主是從業(yè)者)

時(shí)間:2022-02-04

重點(diǎn):根據(jù)項(xiàng)目特點(diǎn)進(jìn)行選擇,不應(yīng)該追求快速入手

作為市面上最成功的兩款面向大眾的游戲引擎,U3D和UE的使用學(xué)習(xí)都是非常容易的,追求更快速的上手應(yīng)該具體分析自己對(duì)于前期階段性成果的預(yù)期。

如果前期的學(xué)習(xí)研發(fā)傾向于程序,Unity可以快速上手,并且利用一些封裝好的程序快速實(shí)現(xiàn)精巧的功能開(kāi)發(fā)。如果希望快速學(xué)習(xí)打造出色的場(chǎng)景,那么Unreal可以帶給初學(xué)者足夠的成就感,因?yàn)檠舆t渲染的特性打造高質(zhì)量畫(huà)面會(huì)相對(duì)容易。

當(dāng)然也要根據(jù)自己的積累去甄別選擇,如果之前有C++的基礎(chǔ)可以選擇Unreal,C#則自然而然選擇Unity;如果了解HDRP渲染管線(xiàn)的應(yīng)用,Unity也可以快速打造高質(zhì)量的畫(huà)面;如果對(duì)于程序的積累幾乎為零,那么Unreal的藍(lán)圖相對(duì)要更好入手一些。

簡(jiǎn)單了解的話(huà),兩款引擎都十分出色,十分適用于初學(xué)者,有長(zhǎng)期精研的打算,還是需要根據(jù)項(xiàng)目特點(diǎn)進(jìn)行選擇,不應(yīng)該追求快速入手。


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

時(shí)間:2022-02-04

重點(diǎn):ECS模式、C#、C++、crash定位、藍(lán)圖編程的復(fù)雜度、工具鏈

評(píng)論區(qū)其他人:似乎UE5也具有ECS了

首先這個(gè)問(wèn)題很難一概而論,難度是根據(jù)使用者自身的條件以及目的來(lái)確定的,以下僅作為個(gè)人經(jīng)驗(yàn)供大家參考,如果存在事實(shí)性錯(cuò)誤請(qǐng)不吝賜教。

首先,如果是一名從未接觸過(guò)游戲引擎,剛剛?cè)腴T(mén)游戲開(kāi)發(fā)的新人程序員的話(huà),注意,是程序員。Unity是更容易學(xué)習(xí)的。Unity精巧的ECS模式以及C#語(yǔ)言本身的優(yōu)雅都十分有助于程序員的學(xué)習(xí),一個(gè)新手游戲程序員只需要花費(fèi)很少的精力便可以上手游戲gameplay編程,而UE的gameplay框架更加復(fù)雜,使用者在缺乏經(jīng)驗(yàn)的情況下要寫(xiě)出符合標(biāo)準(zhǔn)的代碼更顯困難,UE本身沉重的歷史包袱也會(huì)讓這個(gè)過(guò)程更加曲折。

而對(duì)于經(jīng)驗(yàn)老道卻沒(méi)有參與過(guò)游戲編程的程序員,個(gè)人認(rèn)為反而UE更容易入門(mén),因?yàn)閁E的框架更加標(biāo)準(zhǔn)化,盡管沒(méi)有Unity那么自由,標(biāo)準(zhǔn)化的框架卻可以方便從未接觸游戲開(kāi)發(fā)的程序員快速了解游戲開(kāi)發(fā)中常見(jiàn)的問(wèn)題。并且可以直接閱讀引擎源碼,使用Cpp的宏來(lái)解決跨平臺(tái)問(wèn)題而不依賴(lài)于虛擬機(jī),crash后更容易定位,對(duì)于一個(gè)經(jīng)驗(yàn)老道的程序員而言一定是一件令人愉悅的事情。

而對(duì)于一位獨(dú)立游戲開(kāi)發(fā)者而言,個(gè)人認(rèn)為Unity和UE各有千秋,上手難度取決于使用者的目標(biāo),畢竟我們需要的“上手”往往只是學(xué)習(xí)開(kāi)發(fā)我們的游戲需要的知識(shí),獨(dú)立游戲開(kāi)發(fā)者可以但不必要挖掘引擎的每個(gè)細(xì)節(jié)。

首先,Unity的gameplay編程比UE更加方便是事實(shí)。是,UE有藍(lán)圖化的編程,但藍(lán)圖是一門(mén)完善的語(yǔ)言,使用藍(lán)圖編程同樣遵守軟件開(kāi)發(fā)中的各項(xiàng)約定,傳統(tǒng)編程的知識(shí)依然重要,過(guò)于低估藍(lán)圖編程的難度造就了各大視頻網(wǎng)站上大量游戲demo而少有游戲成品的結(jié)果,并不僅僅是因?yàn)橹谱髡邲](méi)有時(shí)間,缺乏對(duì)大型軟件的維護(hù)經(jīng)驗(yàn)也是一個(gè)不可忽視的原因。

但UE對(duì)比Unity的顯著優(yōu)勢(shì)就是完善的工具鏈,與其他游戲開(kāi)發(fā)工具的方便交互等,比如自帶的本地化工具,優(yōu)秀的動(dòng)畫(huà)控制系統(tǒng)等等,如果獨(dú)立游戲開(kāi)發(fā)者試圖開(kāi)發(fā)一個(gè)3D ARPG,我認(rèn)為UE更容易上手,開(kāi)發(fā)的過(guò)程也會(huì)更少碰壁。而開(kāi)發(fā)一個(gè)2D游戲,如奧日與黑暗森林,Unity更容易上手。

很遺憾受限于個(gè)人能力與閱歷,無(wú)法對(duì)TA,美術(shù)等工種的使用習(xí)慣提出有價(jià)值的總結(jié),但個(gè)人生活中,認(rèn)識(shí)的的美術(shù)朋友認(rèn)為UE容易上手的多,而TA和圖形程序員因?yàn)樽陨淼膱?jiān)實(shí)基礎(chǔ),往往認(rèn)為差不多。


某禁止轉(zhuǎn)載的答案

時(shí)間:2022-02-03

重點(diǎn):藍(lán)圖無(wú)法用git管理


作者:powerking

時(shí)間:2018-02-21

重點(diǎn):服務(wù)端方案、藍(lán)圖隔離業(yè)務(wù)邏輯和底層功能

u3d還比較初期,用來(lái)開(kāi)發(fā)只有客戶(hù)端表現(xiàn)的單機(jī)游戲是可以的

ue畢竟是老牌的游戲引擎,有完整的服務(wù)端方案,而且開(kāi)放源碼,非常適合開(kāi)發(fā)大型網(wǎng)游

u3d其實(shí)也有服務(wù)端方案,但他的服務(wù)端方案就是再開(kāi)一個(gè)u3d在服務(wù)端跑。。。。承載力非常的低,而且針對(duì)客戶(hù)端表現(xiàn)的開(kāi)發(fā)模型非常不適合開(kāi)發(fā)服務(wù)器

語(yǔ)言層面,u3d首選c#,可以快速開(kāi)發(fā),但是效率肯定不如ue的c++

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

至于藍(lán)圖,你做小型游戲用c#自己寫(xiě)當(dāng)然沒(méi)問(wèn)題

當(dāng)制作大型游戲,尤其是MMORPG時(shí),用藍(lán)圖隔離業(yè)務(wù)邏輯和底層功能是非常需要的。

想象一下在幾百人的大團(tuán)隊(duì)里,每個(gè)人都到你的底層代碼里加幾行,那是相當(dāng)?shù)乃崴?,完全沒(méi)法控制設(shè)計(jì)架構(gòu),會(huì)亂套的。

ue是針對(duì)大型團(tuán)隊(duì)開(kāi)發(fā)模式做的,策劃只能接觸到藍(lán)圖這一層,只能用底層模塊組合搭建業(yè)務(wù)邏輯應(yīng)用,

程序員負(fù)責(zé)實(shí)現(xiàn)底層模塊,控制代碼結(jié)構(gòu),互不干擾,才能夠保持架構(gòu)穩(wěn)定


作者:岳振(此答主是從業(yè)者)

時(shí)間:2015-08-11

重點(diǎn):盡在掌握的感覺(jué)、都是工具而已

兩個(gè)都用過(guò),現(xiàn)在在用unity。

工具鏈而言,unreal3/4要更好,更全面。unity更適合小團(tuán)隊(duì)使用,團(tuán)隊(duì)協(xié)作,資源管理,工具的不完整以及不得不提的性能問(wèn)題都使其不太適合大型項(xiàng)目或團(tuán)隊(duì)的開(kāi)發(fā)。

如果團(tuán)隊(duì)中有一兩個(gè)能駕馭unreal的程序員,而且不急著出產(chǎn)品的話(huà),建議用unreal。

沒(méi)有,且是小團(tuán)隊(duì),項(xiàng)目規(guī)模不大,建議unity,更快上手。不過(guò)不開(kāi)源不方便一些底層優(yōu)化和定制。C#的一些高級(jí)特性在游戲開(kāi)發(fā)中不見(jiàn)得是好事。mono的性能問(wèn)題也多被吐槽。

作為游戲程序員,我想說(shuō)的是,還是喜歡"一切盡在掌握中的感覺(jué)"

但一切還是看項(xiàng)目需要。

都是工具而已。


作者:陶仁賢(此答主是從業(yè)者且經(jīng)常發(fā)布虛幻商城免費(fèi)素材的文章)

時(shí)間:2015-08-11

重點(diǎn):插件 VS. 完整流程、源碼是否公開(kāi)

就研究之后大概可以這么分吧

  1. Unity,引擎本身只做主干部分,很多功能自身并不重點(diǎn)開(kāi)發(fā),比如材質(zhì),大部分都依靠Sharder Forge之類(lèi)得第三方插件完成,Unity5的燈光是Enlighten的插件。 而UE4更多的是自身有一個(gè)完整的流程。
  1. 獲取方式,UE4公開(kāi)所有源代碼,任何人都可以免費(fèi)下載,就算開(kāi)發(fā)過(guò)程中遇到坑也可以自己走出來(lái)。 Unity個(gè)人可以下載使用,但是源代碼不公開(kāi),遇到坑就需要等別人了,或者自己花10W一年買(mǎi)服務(wù)。
  1. 游戲發(fā)布,兩個(gè)引擎基本都可以發(fā)布到現(xiàn)在的所有主流平臺(tái),不過(guò)是因?yàn)閁nity在手游平臺(tái)上有過(guò)一些不錯(cuò)的第三方作品,所以大家可能會(huì)認(rèn)為它只能坐手游輕量級(jí)游戲,UE因?yàn)镻C和游戲機(jī)大作比較多,大家可能會(huì)認(rèn)為它只適合做大型游戲。

主要區(qū)別在于,如果你想做游戲,用Unity,你可以幾乎買(mǎi)到所有資源,抄一抄,省事。但是第三方有可能存在兼容性隱患。

用UE4,你可以不需要程序員,只要腦子邏輯清晰,一樣可以完成獨(dú)立游戲作品,不依賴(lài)第三方工具,不怕第三方工具兼容性問(wèn)題??梢员容^容易做出高品質(zhì)游戲

結(jié)論

結(jié)合一些從youtube視頻中看到的信息,總的來(lái)說(shuō),兩款引擎對(duì)于新手入門(mén)來(lái)說(shuō)功能差別不大。不過(guò)在bilibili搜索時(shí),以u(píng)nity為關(guān)鍵字的搜索結(jié)果粗略看起來(lái)是要多余unreal的。

對(duì)我自己而言。從技術(shù)角度,我看C++是比C#順眼的,學(xué)起來(lái)會(huì)更開(kāi)心,同時(shí)學(xué)習(xí)兩門(mén)語(yǔ)言的話(huà)也比較消耗精力,容易導(dǎo)致都只學(xué)到了皮毛而不能深入。而且C#也有C#的難點(diǎn)。

從心態(tài)角度,“只是工具而已”這句話(huà)提醒了我,學(xué)習(xí)引擎的目的是為了更好的創(chuàng)作內(nèi)容,而不是為了學(xué)習(xí)引擎而學(xué)習(xí)引擎。即使在初學(xué)階段選擇了一個(gè)引擎進(jìn)行學(xué)習(xí),學(xué)習(xí)深入之后,當(dāng)自己能夠發(fā)現(xiàn)另一個(gè)引擎的優(yōu)秀之處時(shí),也仍然可以進(jìn)行學(xué)習(xí)。

另外我之前一直抱著一種“渴望被公司選中”“尋找最優(yōu)解”的狀態(tài)去選擇,因?yàn)閡nity“簡(jiǎn)單”“用戶(hù)多”“招聘崗位多”就想要學(xué)unity,結(jié)果強(qiáng)迫自己的學(xué)習(xí)過(guò)程很痛苦,現(xiàn)在想想只是初學(xué)狀態(tài)即使放飛自我其實(shí)也不會(huì)“跑偏”到哪里去的,而且好心情還能提高學(xué)習(xí)效率。

對(duì)于初學(xué)者,如何做選擇這件事大約是無(wú)解的,因?yàn)椴涣私馑噪y以做選擇,即使看了他人的回答也很難有切身的感受。而初學(xué)者走過(guò)的“彎路”其實(shí)就是成為高手的“經(jīng)驗(yàn)”,我這樣相信。

綜上,最后我決定先學(xué)習(xí)unreal,unity先放一放。也希望讀者能夠找到合適自己的選擇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容