【Gamystery】EP19 | 從零開始到專業輸出:Unreal Engine如何改變我的開發模式
- 彥澤 廖
- 1月20日
- 讀畢需時 5 分鐘
已更新:1月22日
2025新年首篇的文章,將分享學生時期與現在,在開發層面的轉變,同時分享Unreal Engine的專案開發的優劣勢給在觀望的讀者。
新版的文章作了以下兩點改動
一. 未來將明確區分兩大類內容:
1.Unreal 入門: 這系列將介紹,分享我在Unreal Engine上的開發經驗、學習路徑...等內容,多是以學生、其他3D軟體的使用者為主要對象。
2.Unreal 專題: 會專注在分常細節的技術經驗、使用過程、障礙排除,舉例來說,包括GoogleXR的部署過程與問題解決,某些AI SaaS服務的限制等。
目前採取交錯主題的方式撰寫,所以如果是喜歡深入主題的讀者,可以期待下一篇。
二. 中英雙版本:
在AI工具如此方便的當下,若僅提供中文內容,將會錯失更多的機會。
為了增加與AI的接觸與應用機會,我將加入英文翻譯,拓展讀者群體。。
最後,祝大家農曆新年快樂!
站在巨人的肩膀上
這篇文章寫給正在煩惱大學或碩士專題的讀者,或是那些工作之餘對開發充滿熱情、想嘗試Side Project的夥伴。
如果你剛好是上述的,也許可以考慮「基於Unreal Engine開發」的開發模式。
整理這種模式的三個優勢和三個劣勢。。
優勢:
跨平台
開發最終的結果,可以支援Window / Linux / IOS / Android,雖然不同平台之間,不是無痛轉移,但Uneal Engine的打包功能(package) 處理了大量跨平台的問題,有效的增加開發效率。
豐富的資源
Fab有大量的資源,包含美術、程式、音效...等等。這些資源為專案開發者,提供了豐富的選項,善用這些資源,讓開發人員能更聚焦在重要、有熱忱的技術項目。
這些內容,大大提升專案的上限。隨著開發的變動,過程中,想朝向更品質產出,就能以相對有效率的方式達成。由於許多內容,都是專業級的創作上傳,我們也能夠過下載這些內容,學習專業級的設計、成果。
貼近業界的開發流程
與前一點有關,在擁有豐富的資源後,如何有效利用?肯定是一項重要的技能。不管是哪個產業,效率是只要在時間的追趕下,同時追求高品質,所得出必然的結果。研究、挑選適合的專案起點,會大幅影響你後續所需要的開發時間,如何在有限的時間,達成目標,仰賴「尋找」、「利用」資源的技能,不管深處何種階段,都應該具有在巨人的肩膀上的思維,避免從零做起。
劣勢:
SaaS型服務 若本身想實踐的功能,與網頁型的軟體服務更貼近,例如Netflix, ChatGPT...等等 。那這樣的開發模式就不是個好選擇( 應該說完全做不到 ),除了受限開發框架外,網頁端能使用的效能有限( Unreal Engine5 已不支援 WebGL, 一種網站進行3D渲染、運行的框架)。如果讀者對雲端串流技術有興趣,例如:GeForceNow,則可以參考PixelSteaming或是GoogleXR的兩個專案。
Google XR - Autos Demo Google XR - Spaces Demo 深度學習的訓練:
如果專案的內容,以"訓練"的AI模型為主,Unreal Engine本身能提供的幫助就降低很多。首要能產實際幫助的,應該是解決UI方面的建構的需求。雖然Unreal Engine中有Python相關的資源,但如僅是在訓練階段,可說大可不必使用unreal端的python。
如果方向涉及AI的‘應用’,那麼這樣的開發模式非常合適。從技術面,可支援,C++與python兩大開發語言,友善的UI建構方式、效能追蹤。後期,能夠打包上架到Fab全球型的網站,與全球的開發者分享,作為不錯的專案經驗。
硬體設備需求:
在所有開發環中,Unreal Engine需要的硬體資源可說是最為吃中重,除了龐大的Unreal Engine本體( 一個版本,約80GB ),若要使用Nanite, Ray Tracing可說是需要高階的電腦配置。雖然,具體需的配置需要看開發功能而定,若是使用到C++編譯環境,intel -i5,在基礎的專案下也需要5分鐘左右的開啟時間。
Unreal 推荐使用的硬體設備(寫得相當保守? Unreal 推荐硬體性能(這才對嗎
開發思維的轉變
在工作將近四年的時間後,學生時期的我採取的開發方式,要是僅能用一個形容詞形容那必然是-「魯莽」。
魯莽的原因:
缺乏有經驗的人指導
在校內缺乏有經驗的人帶領專案,同儕間的不說,也無法寄予教授、研究生厚望,除了多半這些人,有部分是缺乏團隊的開發的經驗,或是受限於一對多的管理方式,能給出的指導非常有限。這些角色,對於專案的成果,大多也無須負起任何責任。
過度聚焦功能
技術掌握度不高時,開發人員多半會聚焦在功能的實踐方法,然額正是因為過度關注實作方式,而容易忽視了部屬、可利用資源、開發週期...等其他層面。在校內或非商業運作的開發上,未必會衍伸出太多的問題,而且普遍會將這些視為一種「學習」,造就與職場銜接的斷層。
整理學生時期,我最缺乏的三種能力:
研究能力
這裡並非指「學術研究」的能力,而是如何開啟、決定一個專案,該如何著手、分析問題、找到適當的解決方案技能。
學生時期的自身實際經歷是,在前述問題之下,為了應付課堂作業、大學專題,於是急於尋找可以完成的方法,只要確定功能能完成,就會直接執行,缺乏( 或者該說不需要 )進行的分析、比較方法間的差異。
完整/長遠規劃
何謂「完整」,開發者應該要顧及非自身專業或所負責的單一工作職務縮需要的基礎知識。這樣的目的,有助完善整個專案最終的結果,畢竟,在業界工作就算是Junior 級別的技術從業者,也需要與其他職務的人合作。
「按照需求書建置規格」、「撰寫產品公開文件」、「質疑需求的真實或可行性」,以上是我認為我在學生時期,因為過度"專注",所忽略掉卻相當重要的技能。
傾聽與解釋
「傾聽」傾聽與「解釋」是我認為最難學習,也最看人的技能,它相輔相成的影響了整個工作的流暢度。
學生時期最容易遇到低效率的團隊合作,就算是在同一組,溝通的品質也差強人意。大家各做各的,在期限將臨之際才努力整合。在AI功能發達的現在,學生的練習題,能夠輕鬆被完成,讓我認為更該中視人與人之間合作的軟實力。
現在,我能實際體會,過去在新聞上看見批評新鮮人與社會脫節的原因。這些現實問題在我第一次參與團隊時尤為明顯,名義上是公司在‘教新人’,但實際上是銜接上的困難(最後需要加班至晚上9點,並持續了一個月左右)。
若想提前準備為參源對做準備,不彷向身邊有經驗的人,向他分享你的開發模式,聽聽看他們的建議。或是評估「基於Unreal Engine開發」能否增進的上限、效率。