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

更新於 2024/10/16閱讀時間約 8 分鐘

開始製作遊戲了,首先我想談一下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
1會員
3內容數
哈囉,我是Yukio,興趣是看電影和3D美術,目前正在學習UE遊戲開發中,會不定時更新遊戲開發日誌,有興趣的換歡迎閱讀交流。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Yukio的沙龍 的其他內容
這篇文章主要是我的Unreal Engine遊戲開發計劃,將會是一款全程使用免費素材的角色扮演遊戲。會簡單談到遊戲開發的核心要素,包括角色建模、角色動畫和劇情設計,並一一評估是否可行。未來的幾篇文章將進一步探討開發過程中的問題和成果。
這篇文章主要是我的Unreal Engine遊戲開發計劃,將會是一款全程使用免費素材的角色扮演遊戲。會簡單談到遊戲開發的核心要素,包括角色建模、角色動畫和劇情設計,並一一評估是否可行。未來的幾篇文章將進一步探討開發過程中的問題和成果。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
Thumbnail
Steam上的遊戲製作工具那麼多,到底哪個比較好用呢? 我只能說,每個人的能力和想製作的遊戲類型都不同,適合的工具當然也不會一樣,只能你自己去選擇最適合的。 雖然沒有辦法推薦最適合你的,但可以告訴你避開地雷工具的訣竅!
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
Thumbnail
Steam上的遊戲製作工具那麼多,到底哪個比較好用呢? 我只能說,每個人的能力和想製作的遊戲類型都不同,適合的工具當然也不會一樣,只能你自己去選擇最適合的。 雖然沒有辦法推薦最適合你的,但可以告訴你避開地雷工具的訣竅!
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護