虛幻4引擎開發使用感受
最近兩天下載了虛幻4的原始碼和編譯好的環境,稍微嘗試了下。沒有深入研究,只是運行了幾個Sample,看了看編輯器環境,甚至連c++程式碼都沒有多看。所以並沒有資格對這個世界上最先進的遊戲引擎品頭論足。不過由於不打算繼續深入研究了,所以表達一下感想。
雖然對Unity已經比較熟悉了,但是真正接觸虛幻4還是感覺力不從心。單單使用Unity的時候,感覺有很多坑,各種不爽,但是換了UE4,反而感覺Unity無論從編輯器介面還是程式碼框架設計都非常乾淨精簡。從某種程度上說,Unity入門容易,上手快,並不僅僅是一個噱頭。
虛幻4的編輯器功能選項很多,選單中也有各種看得懂和看不懂的功能。有點像是用3DMax一樣,熟悉而又陌生,要真正上手估計要一兩個月的時間。當然如果是之前接觸過UDK或者是有過虛幻引擎開發經驗的人或者是真正的大牛,上手會快一些。但是個人感覺,無論如何要比Unity難一些。
我準備業餘時間(短期內不會有太多時間)自己開發一個ARPG的,目標就是火炬之光手遊版本。所以選擇引擎的標準就是3D、酷炫、手遊、開發方便。試了試UE4感覺就是,UE4不花一些力氣是Hold不住的,而在Unity5已經非常好用的情況下,除非個人興趣,否則沒有必要多花力氣去搞定UE4。
下面是我的一些個人感想:
1、虛幻4開放了所有的原始碼,只要19美元一個月,就可以隨時獲得最新程式碼。網上也可以下到最新的程式碼和編譯好的環境。 開放原始碼,這個對於技術向的程式設計師應該非常有吸引力。因為所有人都會有這樣的想法,程式碼開放了,那我出了問題可以自己修改Bug,並且可以自己隨意擴充套件功能。不過使用Unity後的感受是,如果設計非常漂亮的話,即便不開放原始碼也可以自由的擴充套件引擎功能。雖然有無法擴充套件或修改的部分(也就是一些很不爽的敵方),但是這個也不是自己能隨意改的,因為很多東西牽一髮而動全身,結果自己能修改的部分還是一些外掛性質的內容。而這些東西Unity沒有開放程式碼也做到了。不知道為什麼會有人覺得不開放程式碼我們就會碰到搞不定的問題,而開放程式碼後一切都可以搞得定。感覺UE4開放程式碼更像是一個噱頭,或者是自己設計不足時的補救措施。
2、BluePrint
這個東西很強大,簡單說就是不寫一行程式碼就可以做出一個遊戲。Unity裡面也有很多類似的外掛,最出名的是PlayMaker。雖然我很讚賞這些工具讓策劃或者不是很擅長程式的人也可以做出一個漂亮的遊戲。但是我個人是很不習慣使用這些的,就像我很不習慣MecAnim中的狀態機編輯器一樣,我感覺使用程式碼和配置來維護狀態操作起來更加方便,很多時候也更加智慧。而且當專案複雜起來的時候,使用這些視覺化工具很容易陷入泥沼。當然能夠正確的使用他們的話,對專案還是非常有幫助的。比如關卡設計的時候開放一些功能給策劃去配置,這個就相當於一個視覺化的而且更加強大的關卡事件編輯器。
3、工作流程
引擎最重要的職能就是定義工作流程。程式碼可以自己摸索,功能可以自己實踐,但是正確的工作流程卻必須要在團隊中學習。Unity因為相對簡單,所以還可以自己摸索下,但是UE4的工作流程是什麼,怎麼做才能發揮這個最先進引擎的真正威力,這個都需要好好學習摸索。如果僅僅是把它像OGRE一樣去使用,反而會顯得憋手蹩腳。如果不能真正發揮引擎威力的話,那再先進的引擎也是浪費。
4、次世代的渲染效果
次世代一直在進化,比如UE4使用GPU粒子,可以渲染幾百萬個粒子(正常來說同屏幾千個粒子已經會拖慢速度了),使用曲面和物理光照可以實現更加真實的渲染效果。但是我的需求是一個手遊ARPG,我要表現的是一個酷炫的感覺,是否真實不在我的考慮範圍之內。至於GPU粒子就更不用說了,幾年內手機顯示卡估計都不會支援。所以說,很多高階特性給我們了也不能用,不敢用。 Unity5裡面的全域性光照我都持有懷疑態度,不知道是否真的不再需要LightingMap了,不知道手機上效能和相容性如何。所以單從渲染技術上說,UE4並不具備真正的優勢,很多U3做的遊戲非常炫,但是那個也需要美術給力才行。
5、c++程式碼
基本上說UE4開發就是c++程式碼和Blue Print相結合。雖然可以方便的嵌入lua什麼的指令碼語言,但是估計不會有特別的好處。雖然寫C++寫習慣了,不會感覺有很多坑。但是跟c#相比還是麻煩了一點。 Unity使用c#真是相當明智的選擇,一方面藉助c#解決了開發者難題,一方面藉助Mono實現了跨平臺,同時還能夠保證效率。至於遊戲執行效率,如果c#程式碼能夠成為效能瓶頸的話,那我感覺c++也不會好到哪裡去,這個時候更應該優化客戶端程式碼而不是抱怨語言效率。
6、程式碼熱載入,即寫即編譯
藉助於llvm,可以實現即時編譯,而Unity又可以實現動態庫的執行時熱載入,所以可以實現邊修改變檢視執行結果的效果。
7、很多實際功能不知道如何去解決
比如使用Unity,我已經知道了碰撞盒如何去加,物理如何設定,動畫如何處理,如何設計技能系統,UI怎麼做,光效怎麼編輯。而這些在UE4中都要重新去學習掌握,而UE4的文件教程並不是很多,很多時候也找不到具體功能如何去實現。 等UE4發展起來估計會好一些,不過UDK發展了這麼多年,也沒有起色,我很擔心UE4能夠有什麼改變。Unity能夠備受遊戲公司和獨立開發者推崇,在最近一兩年出了如此多Unity製作的賣好又賣座的精品遊戲,肯定有其理由。而這個優勢肯定不是開放個原始碼就可以彌補的。整個生態鏈的搭建沒有個一兩年是做不到的。除非它能夠放下身段去學習Unity,不過那樣的話虛幻就不是虛幻了。
8、沒有找到內嵌的效能分析工具
Unity自帶的Profiler功能強大而且簡單好用。這個不是說用個Intel GPA就可以替代的。執行時也不像Unity一樣可以直接檢視當前的效能引數,我不知道怎麼樣評估遊戲執行的效能。這個其實很重要。 同時,因為現在還幾乎沒有UE4(UE3的也不多)的成功遊戲,所以執行效能、發熱、相容性也都不能做任何保證。
其實不光是效能分析工具,像GUI編輯器之類的東西,貌似也要自己處理。且不說外掛商店之類的外圍設施,即便是編輯器和引擎核心的功能UE4也還有很多路要走。
總結就是:出於興趣玩一下UE4是可以的,但是除非是專業的引擎開發人員,或者有真正的專案需要,否則研究下去即不能用來做專案也學不到什麼東西。