unreal和unity引擎比較與選擇
本文寫于2022年06月01日斥季,閱讀時(shí)請(qǐng)注意時(shí)效否过。
本文主要針對(duì)初學(xué)者選擇游戲引擎時(shí)遇到的困惑买猖,摘錄了一些其他人的觀點(diǎn)刁笙,并給出了我自己的考慮和選擇以供參考破花。
參考鏈接
主要來自于兩個(gè)知乎問題:
兩個(gè)問題的回答都只有10+摘悴,其中有效回答就更少了峭梳。其中第一個(gè)問題比較早,有效回答都在2018以前蹂喻;第二個(gè)問題比較新葱椭, 最早的回答是2022年的。
有效信息摘錄
作者:愛擼大貓的工具人
時(shí)間:2022-02-26
重點(diǎn):做demo口四、定制渲染管線孵运、材質(zhì)鏈、代碼調(diào)試
這個(gè)問題要分三個(gè)階段的團(tuán)隊(duì)討論比較合理蔓彩。 首先我覺得這2個(gè)都是非常優(yōu)秀的游戲引擎治笨。但是它們確實(shí)對(duì)不同階段的開發(fā)者有不同的要求。 對(duì)于完全沒有游戲開發(fā)經(jīng)驗(yàn)和沒有編程經(jīng)驗(yàn)的美術(shù)和策劃赤嚼。虛幻是比較容易做出demo,但是也僅僅是demo旷赖,大型上線項(xiàng)目還是用c++開發(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é)定制渲染管線也比較輕松上枕,srp定制管線要比改虛幻的渲染管線方便很多绳瘟。 但是項(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)一遍或者寫個(gè)工具處理并扇。但是在虛幻里面,你對(duì)母材質(zhì)的修改可以同步給材質(zhì)實(shí)例抡诞。隨著項(xiàng)目的美術(shù)資源的膨脹穷蛹,這種設(shè)計(jì)上的差異會(huì)帶來巨大的團(tuán)隊(duì)效率的差異。項(xiàng)目開發(fā)不只是程序的事昼汗,也要考慮一下美術(shù)同學(xué)的感受肴熏。 第三個(gè)階段的團(tuán)隊(duì)就是總體技術(shù)美術(shù)實(shí)力都比較強(qiáng)的團(tuán)隊(duì)。那么虛幻引擎的起點(diǎn)和天花板都更高顷窒。我們知道如果相同的shader邏輯相同的輸入資源是不存在哪個(gè)引擎的畫面效果更牛逼一說蛙吏。但是有好多高級(jí)功能unity是沒有需要自己集成和開發(fā)的。比如就動(dòng)態(tài)場(chǎng)景加載和開放大世界場(chǎng)景鞋吉,要做hlod和streaming level的話鸦做,unity要自己整了。然后對(duì)開發(fā)工程師而言谓着,遇到一些棘手的難題泼诱,也是在源生的c++環(huán)境調(diào)試和定位更舒服。比如遇到內(nèi)存問題赊锚,我們可以稍微hack一下內(nèi)存分配器的實(shí)現(xiàn)做一些追蹤治筒。對(duì)分配內(nèi)存后一直沒釋放的業(yè)務(wù)做調(diào)用堆棧信息的收集和日志。 而unity環(huán)境哪怕你用il2cpp把代碼翻譯成c++打包了改抡,翻譯出來的那種代碼絕對(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#寫的腳本邏輯則可讀性好很多骗绕。這兩個(gè)的可讀性和可維護(hù)性是天壤之別藐窄。當(dāng)然,不出事的時(shí)候酬土,c#寫腳本很舒服荆忍。出事以后,你啃那種代碼找崩潰就罵娘。所以第三個(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)精巧的功能開發(fā)凄敢。如果希望快速學(xué)習(xí)打造出色的場(chǎng)景,那么Unreal可以帶給初學(xué)者足夠的成就感棺耍,因?yàn)檠舆t渲染的特性打造高質(zhì)量畫面會(huì)相對(duì)容易贡未。
當(dāng)然也要根據(jù)自己的積累去甄別選擇,如果之前有C++的基礎(chǔ)可以選擇Unreal蒙袍,C#則自然而然選擇Unity俊卤;如果了解HDRP渲染管線的應(yīng)用,Unity也可以快速打造高質(zhì)量的畫面害幅;如果對(duì)于程序的積累幾乎為零消恍,那么Unreal的藍(lán)圖相對(duì)要更好入手一些。
簡(jiǎn)單了解的話以现,兩款引擎都十分出色狠怨,十分適用于初學(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è)問題很難一概而論,難度是根據(jù)使用者自身的條件以及目的來確定的碾盟,以下僅作為個(gè)人經(jīng)驗(yàn)供大家參考棚辽,如果存在事實(shí)性錯(cuò)誤請(qǐng)不吝賜教。
首先冰肴,如果是一名從未接觸過游戲引擎屈藐,剛剛?cè)腴T游戲開發(fā)的新人程序員的話榔组,注意,是程序員联逻。Unity是更容易學(xué)習(xí)的瓷患。Unity精巧的ECS模式以及C#語言本身的優(yōu)雅都十分有助于程序員的學(xué)習(xí),一個(gè)新手游戲程序員只需要花費(fèi)很少的精力便可以上手游戲gameplay編程遣妥,而UE的gameplay框架更加復(fù)雜擅编,使用者在缺乏經(jīng)驗(yàn)的情況下要寫出符合標(biāo)準(zhǔn)的代碼更顯困難,UE本身沉重的歷史包袱也會(huì)讓這個(gè)過程更加曲折箫踩。
而對(duì)于經(jīng)驗(yàn)老道卻沒有參與過游戲編程的程序員爱态,個(gè)人認(rèn)為反而UE更容易入門,因?yàn)閁E的框架更加標(biāo)準(zhǔn)化境钟,盡管沒有Unity那么自由锦担,標(biāo)準(zhǔn)化的框架卻可以方便從未接觸游戲開發(fā)的程序員快速了解游戲開發(fā)中常見的問題。并且可以直接閱讀引擎源碼慨削,使用Cpp的宏來解決跨平臺(tái)問題而不依賴于虛擬機(jī)洞渔,crash后更容易定位,對(duì)于一個(gè)經(jīng)驗(yàn)老道的程序員而言一定是一件令人愉悅的事情缚态。
而對(duì)于一位獨(dú)立游戲開發(fā)者而言磁椒,個(gè)人認(rèn)為Unity和UE各有千秋,上手難度取決于使用者的目標(biāo)玫芦,畢竟我們需要的“上手”往往只是學(xué)習(xí)開發(fā)我們的游戲需要的知識(shí)浆熔,獨(dú)立游戲開發(fā)者可以但不必要挖掘引擎的每個(gè)細(xì)節(jié)。
首先桥帆,Unity的gameplay編程比UE更加方便是事實(shí)医增。是,UE有藍(lán)圖化的編程老虫,但藍(lán)圖是一門完善的語言叶骨,使用藍(lán)圖編程同樣遵守軟件開發(fā)中的各項(xiàng)約定,傳統(tǒng)編程的知識(shí)依然重要祈匙,過于低估藍(lán)圖編程的難度造就了各大視頻網(wǎng)站上大量游戲demo而少有游戲成品的結(jié)果忽刽,并不僅僅是因?yàn)橹谱髡邲]有時(shí)間,缺乏對(duì)大型軟件的維護(hù)經(jīng)驗(yàn)也是一個(gè)不可忽視的原因菊卷。
但UE對(duì)比Unity的顯著優(yōu)勢(shì)就是完善的工具鏈缔恳,與其他游戲開發(fā)工具的方便交互等宝剖,比如自帶的本地化工具洁闰,優(yōu)秀的動(dòng)畫控制系統(tǒng)等等,如果獨(dú)立游戲開發(fā)者試圖開發(fā)一個(gè)3D ARPG万细,我認(rèn)為UE更容易上手扑眉,開發(fā)的過程也會(huì)更少碰壁纸泄。而開發(fā)一個(gè)2D游戲,如奧日與黑暗森林腰素,Unity更容易上手聘裁。
很遺憾受限于個(gè)人能力與閱歷,無法對(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)圖無法用git管理
作者:powerking
時(shí)間:2018-02-21
重點(diǎn):服務(wù)端方案姻政、藍(lán)圖隔離業(yè)務(wù)邏輯和底層功能
u3d還比較初期呆抑,用來開發(fā)只有客戶端表現(xiàn)的單機(jī)游戲是可以的
ue畢竟是老牌的游戲引擎,有完整的服務(wù)端方案汁展,而且開放源碼鹊碍,非常適合開發(fā)大型網(wǎng)游
u3d其實(shí)也有服務(wù)端方案,但他的服務(wù)端方案就是再開一個(gè)u3d在服務(wù)端跑食绿。侈咕。。器紧。承載力非常的低乎完,而且針對(duì)客戶端表現(xiàn)的開發(fā)模型非常不適合開發(fā)服務(wù)器
語言層面,u3d首選c#品洛,可以快速開發(fā)树姨,但是效率肯定不如ue的c++
c++效率高但是不適合快速開發(fā),ue其實(shí)是提供了比較好的封裝桥状,讓你能方便的用c++
至于藍(lán)圖帽揪,你做小型游戲用c#自己寫當(dāng)然沒問題
當(dāng)制作大型游戲,尤其是MMORPG時(shí)辅斟,用藍(lán)圖隔離業(yè)務(wù)邏輯和底層功能是非常需要的转晰。
想象一下在幾百人的大團(tuán)隊(duì)里,每個(gè)人都到你的底層代碼里加幾行士飒,那是相當(dāng)?shù)乃崴樾希耆珱]法控制設(shè)計(jì)架構(gòu),會(huì)亂套的酵幕。
ue是針對(duì)大型團(tuán)隊(duì)開發(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):盡在掌握的感覺芥备、都是工具而已
兩個(gè)都用過冬耿,現(xiàn)在在用unity。
工具鏈而言萌壳,unreal3/4要更好亦镶,更全面。unity更適合小團(tuán)隊(duì)使用袱瓮,團(tuán)隊(duì)協(xié)作染乌,資源管理,工具的不完整以及不得不提的性能問題都使其不太適合大型項(xiàng)目或團(tuán)隊(duì)的開發(fā)懂讯。
如果團(tuán)隊(duì)中有一兩個(gè)能駕馭unreal的程序員荷憋,而且不急著出產(chǎn)品的話,建議用unreal褐望。
沒有勒庄,且是小團(tuán)隊(duì)徒仓,項(xiàng)目規(guī)模不大涨颜,建議unity,更快上手荡澎。不過不開源不方便一些底層優(yōu)化和定制谨读。C#的一些高級(jí)特性在游戲開發(fā)中不見得是好事局装。mono的性能問題也多被吐槽。
作為游戲程序員劳殖,我想說的是铐尚,還是喜歡"一切盡在掌握中的感覺"
但一切還是看項(xiàng)目需要。
都是工具而已哆姻。
作者:陶仁賢(此答主是從業(yè)者且經(jīng)常發(fā)布虛幻商城免費(fèi)素材的文章)
時(shí)間:2015-08-11
重點(diǎn):插件 VS. 完整流程宣增、源碼是否公開
就研究之后大概可以這么分吧
- Unity,引擎本身只做主干部分矛缨,很多功能自身并不重點(diǎn)開發(fā)爹脾,比如材質(zhì),大部分都依靠Sharder Forge之類得第三方插件完成箕昭,Unity5的燈光是Enlighten的插件灵妨。 而UE4更多的是自身有一個(gè)完整的流程。
- 獲取方式落竹,UE4公開所有源代碼泌霍,任何人都可以免費(fèi)下載,就算開發(fā)過程中遇到坑也可以自己走出來筋量。 Unity個(gè)人可以下載使用烹吵,但是源代碼不公開,遇到坑就需要等別人了桨武,或者自己花10W一年買服務(wù)肋拔。
- 游戲發(fā)布,兩個(gè)引擎基本都可以發(fā)布到現(xiàn)在的所有主流平臺(tái)呀酸,不過是因?yàn)閁nity在手游平臺(tái)上有過一些不錯(cuò)的第三方作品凉蜂,所以大家可能會(huì)認(rèn)為它只能坐手游輕量級(jí)游戲,UE因?yàn)镻C和游戲機(jī)大作比較多性誉,大家可能會(huì)認(rèn)為它只適合做大型游戲窿吩。
主要區(qū)別在于,如果你想做游戲错览,用Unity纫雁,你可以幾乎買到所有資源,抄一抄倾哺,省事轧邪。但是第三方有可能存在兼容性隱患。
用UE4羞海,你可以不需要程序員忌愚,只要腦子邏輯清晰,一樣可以完成獨(dú)立游戲作品却邓,不依賴第三方工具硕糊,不怕第三方工具兼容性問題±搬悖可以比較容易做出高品質(zhì)游戲
結(jié)論
結(jié)合一些從youtube視頻中看到的信息简十,總的來說,兩款引擎對(duì)于新手入門來說功能差別不大撬腾。不過在bilibili搜索時(shí)勺远,以u(píng)nity為關(guān)鍵字的搜索結(jié)果粗略看起來是要多余unreal的。
對(duì)我自己而言时鸵。從技術(shù)角度胶逢,我看C++是比C#順眼的,學(xué)起來會(huì)更開心饰潜,同時(shí)學(xué)習(xí)兩門語言的話也比較消耗精力初坠,容易導(dǎo)致都只學(xué)到了皮毛而不能深入。而且C#也有C#的難點(diǎn)彭雾。
從心態(tài)角度碟刺,“只是工具而已”這句話提醒了我,學(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)單”“用戶多”“招聘崗位多”就想要學(xué)unity占哟,結(jié)果強(qiáng)迫自己的學(xué)習(xí)過程很痛苦心墅,現(xiàn)在想想只是初學(xué)狀態(tài)即使放飛自我其實(shí)也不會(huì)“跑偏”到哪里去的,而且好心情還能提高學(xué)習(xí)效率榨乎。
對(duì)于初學(xué)者怎燥,如何做選擇這件事大約是無解的,因?yàn)椴涣私馑噪y以做選擇蜜暑,即使看了他人的回答也很難有切身的感受铐姚。而初學(xué)者走過的“彎路”其實(shí)就是成為高手的“經(jīng)驗(yàn)”,我這樣相信肛捍。
綜上谦屑,最后我決定先學(xué)習(xí)unreal,unity先放一放篇梭。也希望讀者能夠找到合適自己的選擇氢橙。