[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土


3樓貓 發佈時間:2024-05-04 22:19:03 作者:RedstoneT Language

嗨,這一期我們不講怪獵生態,和大家聊聊最近這幾天折騰的事情,前後有很多烏龍還挺有意思,想到了就和大家聊一下,前半部分做一些科普後半部分分享故事。

最近玩的時候發現這遊戲質量出乎意料的高,劇情和人物設定都很不錯,伴生的角色

小仙姑許鳴雌也受到了我的喜歡。

遊戲內是自帶一個桌寵系統的,觸摸互動和文案都挺不錯,但礙於開啟桌寵必須開啟遊戲有一段很長的動畫,並且一直開著引起電腦負擔(同時被好友發現玩黃油),我便由此萌生了提取Live2D單獨作為桌寵的想法。

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第0張

遊戲自帶的桌寵過於複雜增加負擔

獲取遊戲資源,必然會涉及到解包,而解包作為灰色地帶一旦失當便會涉及法律,但僅作為學習用處交流不作為商業用途一般不會被追究,我們這裡只是單純提取遊戲內的Live2D不作商業用途(疊甲),同時筆者並不鼓勵大家無下限的深挖一些熱門遊戲,容易涉及糾紛引火燒身。

解包遊戲數據並不困難,第一步是要找到製作遊戲的引擎,從而對症下藥,一部分遊戲在開場時就會有遊戲引擎的logo,比如寒霜引擎、虛幻引擎等等,大部分小體量獨立遊戲都是由Unity3D製作的,具體情況可以從遊戲根目錄瞭解~

比如Unity3D在遊戲根目錄都會有一個“UnityCrashHandler32.exe”文件(字面意思,正是處理崩潰的程序),《原神》、最近很火的《餓殍:明末千里行》也是由Unity製作的~

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第1張

本遊戲就是由unity製作的

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第2張

餓殍:明末千里行

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

原神文件稍有不同但也能找到Unityplayer

包括廣為使用的UE虛幻引擎也是比較有特色的,一般啟動便有圖標、畫面光影華麗;

具體可以度娘一搜,一般都是有答案的,如果是獨立小遊戲可以翻找根目錄尋找線索~

雖說其他的引擎做的遊戲一般不包含Live2D等要素,這裡只是做一個簡單的科普,可以解包別的東西,包括但不限於音頻、圖片(立繪等)、模型(2D/3D)等等

都聊到這裡了我們不妨簡單看一看遊戲目錄包含的那些信息(不影響後文可以跳過);

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

《雙修》的data目錄

Plugins(插件):同於add-ons,本質上就是一個unity的“DLC”,用來達到某些unity本體無法達到的功能,(橫向比較就類似於Python中的Import模塊,比如導入了math模塊就可以使用三角函數、圓周率等原本沒有的功能)比如我們可以明顯的看到製作者使用的是Live2DCubism製作的桌寵(排除了同樣可以實現桌寵功能的Spine插件),這是最直接確定開發人員使用插件的地方,當然之後的文件類型也會間接引導我們指向特定軟件!

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

Plugins下的子文件

Resources:如其名“資源”,Resources文件夾下的文件是用於動態加載的,並且在製作時這個文件夾所有文件都會被打包出去,所以一般來說一級目錄的resources並不會特別大,當然,具體情況具體分析。

《雙修》的目錄裡只有一個文件,直譯便可瞭解其文件意義——“不履行的資源”,可以認為這個的文件是棄置的,非特別情況不用特別注意。

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

一個文件

StreamingAssets:如其名“流資源”,相當於一個不加密的resources文件夾;

il2cpp_data:il2cpp是一種編譯器,能夠使輸出文件體量更小,在這個遊戲中僅佔13mb。

data.unity3D:最重要的一個文件,包含了大量的遊戲模型音樂等資源,是運行的必須文件。

————————————————————————————————

說完文件我們就要開始解包了!

由於得知了遊戲的引擎是unity,對症下藥應該採用AssetStudio來進行翻錄解包(類似的解包軟件還有quickbms、umodel、noesisv等等,用來解包不同遊戲引擎的遊戲)

這裡也用AS來演示~

進入後會見到如此一個面板

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

左邊是一個數據庫,右邊是一個檢視預覽窗口,可以讀取圖片、視頻、音頻,可以檢視內部文件信息

首先點擊File-LoadFolder導入遊戲根目錄(注意是根目錄steamapps/common/遊戲名),得以瞥見所有可解包的遊戲資源,我們從Scene Hierarchy(場景層次結構)轉向Asset List(資源目錄),可見文件非常非常多,手下這個遊戲就有28693個文件,自尋無覓該怎起手?

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

隨便翻閱下筆者發現製作者在製作時進行了明確的分類,大部分關鍵內容都有劃分,所以我猜測Live2D相關的資源也包含在其中,不妨點擊Container(容器)進行倒序,發現有Live2D的分類

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

根據翻閱,找到了很多角色的live2D,但大部分都是初步人物設定而非名字,初步可以判斷遊戲中的許鳴雌的原始設定是“占星師”

到了這裡我喜出望外,便一股腦【全部導出】細細找尋,卻沒料到這一導使得提取進程耽誤了近十個小時。

導出得到如下目錄:

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

導出的目錄

這裡也很有必要解釋一下每一個文件夾的含義;

Animator: 由Adobe Animate製作的動畫文件,翻閱後發現很多.fbx文件

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

二級母目錄

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

只有一個.fbx文件

筆者自學過blender,意識到.fbx也可能包括模型,但blender導入後並沒有文件,一無所獲;

雖然沒有得到什麼重要的文件,但是根據[許鳴雌.fbx]和[占星師.fbx]文件大小相同,可以確定許鳴雌和占星師指代的是同一個人~

AudioClip:音頻文件夾,裡面包含了很多遊戲音頻

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

的確有很多音頻

Font:字體文件夾,沒什麼特別需要注意的

Mesh:直譯為“網格",blender中的基礎幾何體一般都用網格創建,所以知道一般的建模本質都是網格類型的,簡單看了一下並沒有發現特別大的文件,都是簡單的模型。

MonoBehaviour: 最關鍵的一部分,腳本交互,包括遊戲內所有的互動等等的重要事件,顯然與桌寵的互動也算是其中一部分,我嘗試性的搜索了live2D、許鳴雌、占星師都沒有得到結果,到這我就發現有些不對,裡面所有的json文件都是同樣的格式;【此處有伏筆】

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

都是一樣的格式 大小為1kb

Shader:材質,用於渲染的內容,目前一般用不到;

Sprite:很難直譯,經過查看是圖片文件,所有遊戲內出現的圖片文件都出現在其中,包括加載按鈕、立繪、CG、頭像等等

Texture2D:2D紋理,內容和sprite沒有區別,也都是遊戲中出現的圖片

TextAsset:最開始發現的那些live2D文件都在其中,我想應該是可以提取出來了

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

自以為輕舟已過萬重山的我又遇到了難題,我把【占星師】相關的文件都拿了出來,在model3文件中得到了如下信息:

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

.modle

根據信息素養,這應當是一個相對路徑的引用指引,相應的我找到了分散在多處的.png文件、.physics3、.cdi3、.motion3文件,根據model3中的信息,我建立了如下文件夾,並且修改了.json後綴使其符合指導文件格式;

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

但難題還是出現了,最重要的.moc3文件憑空消失了,根據資料顯示,這個文件包含了所有的模型內容,所以理應是很大的文件,且完全不可能由手中的文件反推。

並且還有一個問題,.motion3中其他角色的前幾個字母我可以理解,LS=老師、XSM=小師妹,但為什麼許鳴雌的不是【ZXS】而是【DS】呢?【伏筆2】

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

導出文件夾最大的文件不過1mb

我查閱了上萬個文件,沒有任何一個文件符合我的要求,只得暫時放棄。

第二天我再次搜尋時無意間發現到了一個非常奇怪的現象:

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

AS中的畫面

AS中最大的文件有整整28,000,000Byte(約26MB),且隸屬於live2D、是MonoBehaviour類型,我連忙在導出文件夾的MonoBehaviour尋找這個名為”長角妖族“的文件;

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

僅僅1KB,沒錯,他導出後只有僅僅1KB,疑惑中的我注意到了AS中的一串小字

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

"Error while read type,read 44 bytes but expected 28023536 bytes"

讀取出錯,讀取到44B文件,但預期有28023536B大小

到這一切就明瞭了——

”AS的默認導出只導出可讀內容“

這解釋了為什麼導出的所有.json只有1kb並且內容格式完全相同!!!

恍然大悟的我找到了”占星師“這個文件,選擇Export(導出)-Raw(未加工的)-selected assets(所選的資源),得到了一個”占星師.bat“的文件,我興高采烈的將其改名為”占星師.moc3“,用cubismviewer打開,但現實澆我了一盆冷水:

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

無法用記事本打開,我似乎又遭遇了瓶頸,直到我在B站找到了如下解決辦法:

”使用十六進制打開,刪除前三行“

當時的我滿臉問號

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

用十六進制打開看到ASIC字符中的.MOC3的我頓時釋懷,按照教程刪除前三行後修改結尾,我終於得到了這個想念已久的”占星師.moc3“。

至此,Live2D所有相關素材解包提取完畢!

.......嗎?

購買live2dEX後進入了編輯模式......

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

Live2DViewerEX著名的live2d桌寵軟件

接著出現瞭如下現象:

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

不是哥們!手怎麼反了!!!!

很難想象當時我的心情多麼崩潰,怎會如此!但更崩潰的還在後面,當我運行motion3文件時,有整整六個都發生了無端抽搐,只有一個Head_motion3.json的文件可以運行;【伏筆3】

於是我得出瞭如下結論:1.模型文件沒有問題,因為有一個文件可以運行;2.motion或者貼圖存在問題,但不可能是導出的問題,因為有一個可以運行;

不論我怎麼導出,怎麼帶入,得到的結果都一樣,只有1/7的成功運行,一籌莫展之際我又來到了AS,搜索DS希望能再用raw的辦法再導出一次,於是我發現瞭如下情況:

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

驚奇的我發現有兩套一模一樣的文件!都是以DS_Default_xxxx.motion3.json存在的,我連忙對比Size,發現導出的有六個都是【大蛇】而非【占星師】容器下的動作腳本!!!

之前的伏筆終於在此回收,我提取出來的DS前綴指代的是”大蛇“!!!是因為製作組偷懶沒有修改名字,才導致出現了兩套名字一模一樣的文件才導致了導出的混亂!

至此,我終於成功拿到了所有的文件,包括貼圖、物理、模型、動作

嗎?

沒錯,一切到這還沒有結束!

還有一套完整的.json等我去編輯,如下

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

手動錄入所有互動對話文本

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

尋找觸摸區域並且將其關聯

編輯過程中的優先度屬實令我十分難受,高優先度的行為後面不能連接低優先度,否則難以觸發,填寫文本不能選擇語言zhs,否則行為不能運行;

如果你親自實操過一次live2D的製作可能就會理解這一套流程有多麼複雜。V1.0還原了遊戲中的對話,V1.1修正了很多優先度才得到勉強能用的程度(1.0的互動沒有後文)。

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

比如有一次我測試文件時發現小仙姑一直在說”嘻嘻。“,不管怎麼樣都停不下來,文本框關也關不掉,就這麼”嘻嘻“了十分鐘,我才發現是把點擊時動作寫成了進入時動作所以鼠標一移動到模型身上就會觸發摸頭動作和文本而至於為什麼只有嘻嘻是因為摸頭的另外兩句語音路徑寫錯了,達成了這場非常荒謬的嘻嘻鬧劇(太氣人了!!!我焦頭爛額她在那傻樂呵!!!)。

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

經過整整四天的Debug和修正我總算也是把遊戲中桌寵的互動還原了90%以上,如今不僅可以完成遊戲中的待機文本、互動,甚至我手動錄入了總計109個觀音靈籤的籤面來完成了抽籤功能。

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

待機文本 隸屬於Tick類型文件

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

抽籤示例(點擊兩邊穗子就可以)

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

V1.2已經上傳(G+)

現在我也把最新的1.2版本放在了創意工坊!如果感興趣可以去看看喲~

至此我的許鳴雌桌寵也算告一段落,最初的願望得以實現,一切也都完成了!

嗎?

或許在之後可以加入更多內容,包括手部捕捉,麥克風識別,人臉皮套識別,可玩度也不僅之於觸摸文本,甚至可以衍生還原有立繪的約會劇情......

這些在短時間內很難實現,雖然完美還原的確很有成就感,但是翻找上萬字的資料同樣令人勞累,但是我想為了愛好等等付出精力和時間正是人生快樂的所在,這四天學到的東西或許並不會經常為以後的我所用,但從零開始的這次流程至少能讓我在live2D方面學的更深一點罷。

最後送給大家一張Texture2D中特別可愛的CG原畫來結束這篇文章~

[硬核]我把遊戲角色變成桌寵的曲折故事:解包Live2D入門到入土-第3張

好可愛的貓貓小仙姑!

我相信很少有人會把這個文章看到最後哈哈哈哈,不過無妨,倘若你看到這裡不妨點個贊吧~


© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com