用Unity重現《空洞騎士》的苦痛之路(1):動作篇
大家好。
Team Cherry遊戲工作室開發的遊戲空洞騎士,以其流暢的動作,細膩的美術,豐富的內容,初上手便將我深深吸引。讓我這樣一個手殘玩家,能夠花104個小時以112%的完成度完成遊戲。可想這遊戲在我心中的地位。
遊戲中,蒼綠之徑的美術與音樂讓我流連忘返,而白色宮殿則是磨練技術變強的必經之路。而當我完成DLC苦痛之路的挑戰後,突然有種想將這款遊戲還原的衝動,於是便有了這一篇文章。
沒錯,今天這篇表面上是開發類文章,實質上卻有著安利文的精髓。
閒話不多說,下面就是簡單的當前專案進度的演示:https://zhuanlan.zhihu.com/p/57480128
素材獲取
主意打定之後,“如何獲取到原版遊戲素材”便是呈現在面前的第一個問題。
用工具來直接提取是最容易想到的。推薦AssetStudio這款工具。這裡必須說一句:提取到的資源都是隻是用來學習提高的,絕對不要用作商業用途!!!!!!
這樣我們就得到了遊戲內的美術與音樂資源,可是接下來卻讓我十足震驚。
在動手之前,我從來沒有想到遊戲在動作方面竟然全部都是使用的幀動畫來進行製作的。玩過的玩家都知道《空洞騎士》中無論是主角還是敵人,動作都是異常細膩豐富的。可想美術的工作量有多大。
然鵝,
巴特,
西卡西,
他們團隊只有3個人。
全家福
下面就是我使用提取出來的圖集(主角的單個動作圖集),在Unity中進行切割後的精靈圖(這裡純粹是一個體力活,瘋狂切圖)。大約有將近700張(僅僅是主角相關的動作序列幀就如此,不包含Boss以及NPC等動作)。
主角的部分動作序列幀
體力活過了,接下來就是苦力活了。
由於我們並不知道幀動畫的圖片替換順序,這個時候就需要對照著遊戲畫面,逐幀檢視並得到相應的動畫順序,然後在Unity中製作幀動畫。
可能有童鞋就要問了,哪裡需要這麼麻煩,直接看圖不就能夠看到是什麼動作了,根本不需要逐幀這麼麻煩。
下面是幾張空洞騎士使用到動作序列幀,如果你能夠分辨出他們是在什麼動作的時候使用的,那就不用逐幀對比了,直接上。
略有差異的序列幀
關於逐幀對比,一種笨但有效的方法是先錄製一段遊戲視訊,然後放在視訊剪輯軟體中逐幀播放,與Unity中切出來的動作序列幀進行對比,找到對應的圖片。
雖然沒有啥技術含量,但是這一步操作又需要大家來找茬式的眼力,又需要耐心,而且工作量巨大,是個苦力活(這步搞完眼睛都瞎了)。
動作分析
經過了上面的複雜,繁瑣,工作量又巨大的準備資源工作,接下來就是理清各個動作之間的關係,並構建好主角的動畫狀態機即可。下面是我理解的空洞騎士各個動作之間的聯絡,如有錯誤可直接在下面評論。
不需要的動作未新增
上面的關係圖是省略了一些動作切換後,返回的條件提示。接下就可以通過上圖理清的動作之間的關係,在Unity中製作主角使用的動畫狀態機了。大致如下圖:
看似動作不多,其實其餘的動作被整合到了單個的子狀態樹中
由於工(wo)作(yao)量(mo)巨(yu)大,上面並沒有把所有的動作一併製作進去,而是剔除了一些本做不需要使用的動作(劍技,法術,回血等)。有野心的童鞋可以考慮一下,全部動作都加入進去,完美重現。
結語
截至本篇文章完成,雖然工程中的角色已經能夠正常移動與攻擊,但由於現在的工程程式碼大部分都是測試程式碼,過於凌亂,不便於理解,於是沒有貼上。因此我會在接下來的系列文章中,專門寫一篇用於講解人物控制的文章。
接下來專案還需要完善人物動作的特效,並使動作之間的切換更加流暢,還需要加上場景等內容,來完善專案。如果不出意(mo)外(yu)的話,補上我們故意漏掉的,接下來大約還有人物控制,特效以及場景3篇系列文章。那麼我們下篇文章在見。
相關連結,很(mai)重(mai)要(mai)
空洞騎士購買連結:https://store.steampowered.com/app/367520/Hollow_Knight/
有線下學習遊戲開發打算的童鞋,歡迎訪問http://levelpp.com/。
線上課程的傳送門則如下:簡明易懂的C#入門指南-網易雲課堂study.163.com
另有專業開發交(gao)流(ji)群等待大家強勢插入:869551769
系列文章:
用Unity重現《空洞騎士》的苦痛之路(1):動作篇
用Unity重現《空洞騎士》的苦痛之路(2)——人物控制篇
用Unity重現《空洞騎士》的苦痛之路(3)——地圖篇
用Unity重現《空洞騎士》的苦痛之路(4)——特效篇
專欄地址:https://zhuanlan.zhihu.com/p/57480128
相關文章
- 用Unity重現《空洞騎士》的苦痛之路(4)——特效篇Unity特效
- 用Unity重現《空洞騎士》的苦痛之路(3)——地圖篇Unity地圖
- 用Unity重現《空洞騎士》的苦痛之路(2)——人物控制篇Unity
- Android 專案重構之路:實現篇Android
- 我的WebDesign之路--提高篇[1] (轉)Web
- Android 專案重構之路:介面篇Android
- Android 專案重構之路:架構篇Android架構
- [Unity3d]Animation播放動作未還原的BUG/動作播放異常Unity3D
- 用Unity實現彈反效果Unity
- PAINGATE 苦痛系AI
- Unity首款遊戲《Gigaya》劃重點!創作團隊親述創作歷程Unity遊戲
- 前端之路: 用github的webhooks實現專案自動化構建前端GithubWebHook
- 用unity製作簡單的太空遊戲(2)-簡單炮臺Unity遊戲
- unity製作刮刮樂效果Unity
- unity3d 移動與旋轉 1Unity3D
- 用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題Unity
- Unity製作遊戲中的場景Unity遊戲
- 嵌入式狗的JAVA之路 web應用 1JavaWeb
- windows作業系統重啟時自動啟用備庫日誌應用Windows作業系統
- 解Bug之路-dubbo應用無法重連zookeeper
- Vue2.0 探索之路——元件複用重複響應的研究Vue元件
- unity 實現輪盤方式的按鈕滾動效果Unity
- 使用Unity製作遊戲AIUnity遊戲AI
- 劍指offer刷題之路--1.陣列中重複的數字陣列
- 1、我的PHP之路PHP
- Unity應用架構設計(1)—— MVVM 模式的設計和實施(Part 1)Unity應用架構MVVM模式
- 用Unity做個遊戲(十) - 完結篇,內容補全Unity遊戲
- 如何在Unity中實現水體互動?Unity
- Seata RPC 模組的重構之路RPC
- Unity 中層的運用Unity
- Asp.Net MVC4 系列-- 進階篇之路由(1)ASP.NETMVC路由
- Unity製作一個小星球Unity
- Unity製作特寫鏡頭Unity
- Unity 2D遊戲製作Unity遊戲
- 如何用Unity GUI製作HUDUnityGUI
- Git之路--1Git
- 京喜前端自動化測試之路(小程式篇)前端
- 喵的Unity遊戲開發之路 - 推球:遊戲中的物理Unity遊戲開發