【免費素材遊戲開發】日誌 EP 1

更新私密發佈閱讀 5 分鐘

開始製作遊戲了,首先我想談一下UE的開發方式,主要分為C++和Blueprint兩種 。

C++

優點:

  • UE的核心語言,提供了更高的控制權與性能調優的能力。
  • 適合處理複雜的遊戲邏輯和自訂行為。
  • 可以直接操作底層引擎,擁有強大的擴展性。

缺點:

  • 編譯速度較慢,調試過程需要更多時間。

Blueprint

優點:

  • 一種視覺化編程工具,無須撰寫程式,可以通過拖放節點來創建遊戲邏輯。
  • 快速迭代,適合做遊戲原型或進行設計測試。

缺點:

  • 隨著項目規模變大,藍圖會變得繁雜,不如代碼易於維護。
  • 性能可能不如 C++ 高效,尤其是在複雜的邏輯處理上。


兩種方式都有顯著的優缺點,如果詢問多數的開發者該使用哪種開發方式,得到的答案幾乎都是混著用,我們可以用C++處理底層邏輯,並在Blueprint中進行高層次的設計和快速調整,這種方式結合性能和靈活性,劃清兩者扮演的角色


那麼問題來了,實際上哪些部份該用C++,哪些該用Blueprint呢?我的規劃是,所有基礎Class和底層邏輯都用C++撰寫,讓Blueprint繼承這些Class來扮演實例化、賦值和呼叫涵式的角色,其他高層次的素材和系統也都交給Blueprint,例如動畫系統、音效、特效等等。


舉個例子,在C++中創建AMyCharacter這個Class,在裡面定義所有相關變數和函式,並用Blueprint繼承AMyCharacter來賦予Stats、Mesh、Animation Blueprint等等相關變數,又例如在射擊系統中,C++負責武器數值宣告和射擊邏輯運算,Blueprint負責武器配置、音效特效等操作。


角色動畫

Motion Matching

上篇文章有提到本遊戲其中一個要點是擬真的角色動畫系統,而Motion Matching(以下簡稱MM)能讓角色動畫系統有大幅的提升,MM 通過從龐大的動畫資料庫中根據角色當前的移動狀態,動態選擇最適合的動畫片段。這樣可以在不依賴繁複的動畫轉換設定下,實現更自然、連貫的角色動作過渡,使角色在移動和動作中看起來更加逼真。

UE官方在5.4版本提供了非常棒的MM範例檔案,不僅有高品質的Locomotion,還包括流暢的Traversal動畫,讓我驚艷不已,並毅然決然將它整合到我的遊戲中。 (雖然尚未具備蹲下和衝刺的動畫,但之後5.5版本會陸續新增)

首先遇到的問題是該MM動畫使用的是UEFN骨架, 而其我的動畫資源基本上都是Mannequin,Mannequin的相容性也比專給Fortnite來的好,因此只能想辦法將MM動畫Retarget到Mannequin,雖然能夠逐個Retarget,但要重新設置Database、Chooser Table和Anim Blueprint會變得非常麻煩,因此我先暫時使用Real Time Retargeting的方法,在遊戲進行的同時獲取一個Mesh上的動畫,並在另一個Mesh上Retarget並重現,實際方法就是創造一個虛擬的Mesh來執行MM動畫,在真實Mesh的Anim Blueprint中獲取該動畫並執行其他動作,如此一來就能將MM和其他動畫系統分開開發。

Real-Time  Retargeting

Real-Time Retargeting



問題狀況:Root Motion

不幸的是目前Traversal動畫有Root Motion的問題(只有在主Mesh撥放的動畫可以影響Root Motion,虛擬Mesh沒辦法),可能要把Traversal動畫Retarget到Mannequin並改在主要Anim Blueprint播放,可能也需要更動或重新撰寫邏輯,這部份未來解決了會再和大家分享。



Armed Locomotion

有了基礎Locomotion後,其他狀態(例如持槍)該怎麼辦呢?雖然可以直接用其他動畫取代,但非MM和MM動畫的操作和流暢度有著相當大的落差,玩家肯定不會想要拿個槍整個角色動作就不一樣,因此我嘗試了一個點子,在持槍時,讓下半身保持MM,上半身用持槍動畫混合,這樣就可以在維持角色流暢度的情況下,實現持槍動畫。

UE的Lyra Starter Game是個蠻龐大的第三人稱射擊範例,如果細探程式碼和結構會發現相當的複雜,但同時可用資源也很豐富,我嘗試將Lyra的射擊動畫整合進遊戲中,並實作持槍的Locomotion系統。

以類似原檔案的方式,在State Machine中使用Linked Layer來根據不同武器執行不同動畫,這樣能夠保持擴充性,未來有其他動畫也能加入。由於著重於上半身,拿掉了一些用不著的功能(像Stride Warping和Orientation Warping等對下半身影響的功能),並嘗試不同動畫和MM混合的效果,來決定要使用哪些動畫才看起來最順暢。

Armed State Machine

Armed State Machine


Full Animation Blueprint

接下來介紹目前的動畫系統,主要就是將持槍Locomotion和MM混合,並設置不同的Slate和混合條件來建構出完整的動畫系統,以下會一一簡單描述。

  1. 將MM和Armed Locomotion混合,例如持步槍時是上半身混合,而瞄準時因為看不到下半身,所以直接用全身持槍動畫效果比較好,順帶一題瞄準時的動畫為了動作穩定性,跟Lyra相比會盡量減少前後左右的動作差別和Start、Pivot等狀態。
raw-image
  1. 右手混合是用來給手電筒等只需要混合單手的動作,並搭配上Aim offset來瞄準照亮方向,實際效果會寫之後的篇章提到。上半身的Additive和Slot是給裝備武器、裝彈和射擊等等動畫使用。
raw-image
  1. 接著加上武器的Aim Offset和受傷等額外動畫。
raw-image
  1. 持步槍等的時候就需要左手IK貼到步槍位置,然後是腳貼地的IK與全身Slot動畫,像是格鬥等全身Montage就會在這裡撥放,以上就是目前的動畫系統架構。
raw-image


Demo影片

動畫上仍有許多需要調整的地方,步槍和霰彈槍的跑姿相當不自然,拿槍和收槍的動畫也不太符合本遊戲,之後會找其他動畫取代掉,本次日誌就寫到這邊,基本上就是統整一下腦袋想法和審視進度,詳細技術和遇到的問題實在沒辦法一一寫出來,如果你有興趣或是想一起討論的話,歡迎留言或是私訊我,感謝你的閱讀!




留言
avatar-img
Yukio的沙龍
1會員
1內容數
哈囉,我是Yukio,興趣是看電影和3D美術,目前正在學習UE遊戲開發中,會不定時更新遊戲開發日誌,有興趣的換歡迎閱讀交流。
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News