MAGES引擎游戲資源提取方法指北

寫在前面
1.游戲解包屬于法律的灰色地帶,本文方法僅供交流學(xué)習(xí),獲取的資源請一定不要商用。
2.本文方法只直接適用于2015~2020年間使用MAGES引擎的PC版游戲,會有一些發(fā)散性內(nèi)容,但不討論其他游戲。如果您對這句話中除了專有名詞“MAGES引擎”以外的部分有疑問,請自行查閱詞典或搜索。
3.恕本人能力有限,本文主要研究游戲中視頻、音頻、圖片的提取,不研究封裝,不研究文本,也不討論漢化問題。
4.本文提及的工具軟件大多可以在github上找到,或可從指定網(wǎng)站免費(fèi)下載,恕不提供鏈接。
?
好了,先說完了難聽的話,下面開始正經(jīng)內(nèi)容。
MAGES是一家日本游戲公司,原名5pb,主要作品有科學(xué)ADV系列(命運(yùn)石之門)、秋之回憶系列。MAGES引擎是他們家的游戲所用引擎的稱呼(似乎不是官方稱呼)。這個引擎大約是在2012年左右開始使用,并不斷改進(jìn)使用至今。使用這個引擎的游戲已知有科學(xué)ADV系列的Steam版全部,YU-NO重置版,MO8,MO Historia等。我們研究如何提取資源主要是出于對游戲(waifu)的熱愛,能夠每天見到聽到她們的身形和聲音(以及迫害情強(qiáng)哥),僅此而已。那么我們開始吧。
1.確定游戲為MAGES引擎
首先,需要確定這個游戲是MAGES引擎的,不然全部的方法都沒有卵用。至于怎么確定……我只能說靠人生經(jīng)驗。沒想到第一個關(guān)鍵的問題竟然這么兒戲。
首先首先,這個游戲必須是MAGES開發(fā)發(fā),或者至少參與了開發(fā),不然不可能是人家的引擎。然后,MAGES的一些游戲在vndb上被注明了是用的“Kaleido ADV Workshop”引擎,比如可塑性記憶、五等分、超九,這些就不用想了,肯定不是。然后剩下的,基本上就是老牌的科A和秋回這兩個親生的了,以及志倉社長的偶像作YU-NO。
MAGES引擎的特點(diǎn)是在游戲根目錄下的USDIR目錄或data目錄能看到大量的mpk格式文件或cpk格式文件,文件名一般有bg、bgm、chara、mask、movie、script、se、shader、system、voice等,可能大寫也可能小寫。這些是裝有游戲資源的壓縮包。mpk為MAGES引擎獨(dú)有的格式,cpk是CRIware引擎的格式。MAGES引擎應(yīng)該是基于CRIware引擎開發(fā)的,直接用CRIware的格式也不奇怪。有時也能看到本該是壓縮包的文件以文件夾形式出現(xiàn),并出現(xiàn)一個同名的cls文件,也可能沒有,那么我們很幸運(yùn)省去了一個步驟。


這些名稱對應(yīng)的資源如下。
bg:游戲背景圖、事件CG等圖片資源。有時會分為bg1和bg2兩包。
bgm:就是BGM。游戲背景音樂。
chara:角色立繪。
face:角色立繪的臉部,用于補(bǔ)充表情。有時會有。
manual:游戲說明。
mask:應(yīng)該是畫面遮罩,用于制造光暈效果、煙霧效果等。沒什么用。
movie:游戲op等錄制成影片的內(nèi)容。PC版有時會有movie720和movie1080兩個包,分別是720p和1080p的畫面。
script:游戲文本。
se:游戲音效。
shader:不清楚。
system:游戲系統(tǒng)UI。一些游戲內(nèi)出現(xiàn)的小表情包可能會出現(xiàn)在這里。
voice:游戲內(nèi)角色語音。
2.解包mpk或cpk
我在網(wǎng)上找過很久,找到的要么是“What is it and how do I open it?”的廢話,要么是一些個人制作的小工具,需要手敲命令行,而且還不一定能用。
目前我在用的工具是GARbro,能完美支持mpk和cpk的解包,還能預(yù)覽其中的文件,甚至還附贈了一些轉(zhuǎn)碼功能。

GARbro也支持很多其他的游戲。試過幾個其他游戲的解包后,你就會發(fā)現(xiàn)這個mpk/cpk格式簡直太友善了,沒有密碼,而且很久沒有更新壓縮方法,最后更新在19年的GARbro到現(xiàn)在還能用。
根據(jù)軟件說明,使用GARbro需要安裝.NET Framework v4.6或更高版本。
3.圖片部分
PC版的主要好處就在于圖片格式基本都是常見格式,比如png和jpg。偶爾會見到dds之類的罕見格式,GARbro的轉(zhuǎn)碼功能也能解決,基本沒什么問題。
背景圖、事件CG基本都在bg.mpk里,一般命名規(guī)律是bg***、ev_***、ibg***、z_*等。
bg+數(shù)字+字母是背景圖。ev開頭的是事件CG,一般是ev_+女主名+數(shù)字,最后一位的字母表示一張cg的不同版本。ibg一般是一些過場圖和小物件。z_開頭的是啟動游戲時的廠標(biāo)。另外老游戲可能會有ev_sp開頭的特典圖。
*不知為什么,YU-NO的CG等內(nèi)容被統(tǒng)一放在了chara.cpk里,是個特例。
然后是manual.mpk和mask.mpk,這兩個目錄里的東西一般意義不大,略過。
system.mpk,系統(tǒng)UI的圖片素材。游戲啟動頁面和CG瀏覽模式時側(cè)邊的立繪會放在這里。

最后是重頭戲,真正的立繪,chara.mpk。大約從混沌之子開始,角色立繪被添加了加密。打開chara.mpk可以看到一系列圖片,以及一個同文件名的腳本。圖片大概長這樣,明顯是進(jìn)行了一定程度的加密。文件名的規(guī)律是角色名+字母。

好在已經(jīng)有大佬做好了工具,ChaosChildPCTools。雖然用法比較原始,但也算是比較簡單了。
提取出png和lay文件一起擺在工具的目錄里(如圖4),按圖123運(yùn)行,就會出現(xiàn)圖4的文件夾,內(nèi)容見圖5。





可以看出,原先一張圖解出了數(shù)十張有微小差別的立繪。
另有一些游戲的腳本是mvl格式的,解出來后是一些散件和一個index.json,如果按照json把散件拼起來就和上面的一樣,但ChaosChildPCTools提供的拼裝工具似乎不能用。

這個工具不止適用于CC,還適用于之后的其他作品。運(yùn)行這個工具需要python3以上版本,我個人建議安裝開發(fā)環(huán)境。另外運(yùn)行前還需要安裝python的PIL運(yùn)行庫,請自行搜索。
4.音樂部分
根據(jù)我多次解包的結(jié)果,游戲內(nèi)音樂資源的比特率都在96~240kbps之間,各個游戲有所不同,但都遠(yuǎn)低于無損,也低于標(biāo)準(zhǔn)有損封裝的320kbps,有些甚至低于x抑云免登錄播放的128kbps。游戲為了控制體積而壓縮文件也算是常規(guī)操作了。MAGES作為一家音樂公司(確信),旗下游戲大多會發(fā)售OST,如果只是為了聽歌建議去找游戲的OST。

首先是bgm.mpk內(nèi)的內(nèi)容。PC版的游戲內(nèi)音樂一般是ogg格式,一般的播放器就能播放。另有一些游戲的是hca格式,這是CRIware的音頻封裝格式,在GARbro中可以播放。直接提取后,除了MPC-HC播放器外大多數(shù)播放器都無法識別。當(dāng)然我的MPC-HC播放器還配置了K-Lite Codec Pack,可能需要它來解碼。foobar2000播放器在添加了vgmstream plugin后也能播放。如果想把hca格式轉(zhuǎn)為一般格式,沒有太好的方法,要么用有損編碼被壓縮,要么用無損編碼被拉伸到超級大。GARbro自帶的轉(zhuǎn)碼功能會把hca格式的文件強(qiáng)行拉伸到4000kbps,實(shí)在是有點(diǎn)過于離譜,略。foobar2000+vgmstream plugin可以提供多種轉(zhuǎn)碼方案,但也都不能原樣放出,但同樣的WAV無損轉(zhuǎn)碼后比特率只有1536kbps,相對正常一點(diǎn),我目前選擇這種方案。
se.mpk是一些音效,意義不大,格式同上,略。
voice.mpk是角色語音,內(nèi)容超多,而且大多很短。不過這些內(nèi)容想研究只能靠提取。提取方法和上面基本相同。
有時可能會見到adx格式和at9格式的音頻,adx格式也是CRIware的音頻封裝格式,方法同hca。at9是索尼的音頻格式,下文會提及,GARbro無法播放,但MPC-HC和foobar2000可以播放。
在尋找hca和adx的轉(zhuǎn)碼方案時,看到有說要用VGMToolbox解碼、密鑰之類的,但實(shí)際沒有用到,估計是加密等級比較低吧。
寫文的時候又翻到一個工具VGAudio,也能解碼以上三種音頻格式,但需要手敲命令行。
以上三個軟件均沒有提及需要的運(yùn)行環(huán)境。如果你想用foobar2000轉(zhuǎn)碼成MP3格式的音頻,還需要下載Lame編碼器,請自行搜索。
5.視頻部分
關(guān)于視頻部分,需要提前了解的知識很多,建議參考下文自行學(xué)習(xí)。
[VCB-Studio 科普教程 3] 視頻格式基礎(chǔ)知識
簡單地說,我們常說的MP4、MKV等格式是視頻封裝格式,其中封裝了視頻流、音頻流等,還可能有字幕、分節(jié)信息等。常見的視頻流編碼格式有H264-AVC、H265-HEVC,偶爾還能見到VP8、VP9、MPEG-Video等編碼,還有用于無損封裝的remux。常見的音頻流編碼格式有AAC、AC3、Opus等,無損的主要是FLAC,此外還偶爾能見到ogg-vorbis、mp3、MPEG-Audio、DTS等格式。我們要做的事情是將游戲中提取出的視頻文件轉(zhuǎn)碼成常見的編碼格式,再封裝成常見的視頻封裝格式。
游戲內(nèi)用到的視頻主要有OP動畫和ED動畫,可能還有一些過場演出。這些內(nèi)容都在movie.mpk中。然后打開一看,要么是.bk2,要么是.usm,根本看不懂。說好的PC版常用常見格式呢?
首先來講usm格式。usm格式是CRIware的視頻封裝格式,在VGMToolbox中稱為USM (CRI Movie 2)。可用VGMToolbox中的Stream Tools/Video Demultiplexer解封裝。記得在右邊的下拉單里選擇USM,選項選擇解壓音頻和視頻,然后把usm文件拖進(jìn)來就解完了。


解封裝后得到了一個m2v文件和一個hca文件。hca文件是音頻流,按上文音頻部分處理即可。有時候音頻流會是adx格式,也一樣。m2v文件是視頻流,目前我解過的都是AVC編碼,理論上能直接播放,但實(shí)際上還是只有MPC-HC能直接播放,還不能拉進(jìn)度條。封裝后所有播放器應(yīng)該都可以正常播放。PC版游戲一般會有兩個清晰度的影片,分別在以清晰度命名的目錄下。如果只有一個那應(yīng)該是1080p的版本。

然后講一下bk2格式。bk2格式是Bink Video的視頻封裝格式。對于bk2格式,目前沒什么好辦法,VGMToolbox解封裝選項中有一個BIK格式選項,是針對的Bink Video的一代視頻,對二代無效。目前我找到一個軟件RADVideo(可能是BinkVideo的官方軟件),能直接播放bk2格式的視頻,但沒有解封裝選項。有個轉(zhuǎn)碼功能,把視頻轉(zhuǎn)碼成AVI并輸出能把5分鐘300MB的視頻轉(zhuǎn)到4GB,花了30分鐘,實(shí)在太嚇人,而且那個4GB的視頻在我的電腦上根本跑不起來,只能看到第一幀,我只能暫且算它不能用了。寫文的時候看了一下RADVideo的更新,有新版本,用新版的轉(zhuǎn)換選項,默認(rèn)轉(zhuǎn)成MP4,同一個視頻只花了三分多鐘,轉(zhuǎn)換后體積也只有不到400MB,沒有看出明顯的畫質(zhì)損失,音頻被壓到了192kbps。如果在轉(zhuǎn)換時只轉(zhuǎn)換音頻則默認(rèn)是wav格式1536kbps。就算它是一步到位吧。
最后講視頻封裝。(RADVideo的更新導(dǎo)致我這一條擺在后面好像很多余啊,尷尬)usm格式解封裝后,再把音頻流轉(zhuǎn)碼成PCM編碼的wav格式,就可以準(zhǔn)備封裝了。封裝可以用MKVToolNix封裝成MKV格式,也可以選擇其他封裝工具。MKVToolNix的封裝功能很簡單明確,選擇混流器,把m2v文件拖進(jìn)去,再把wav文件也拖進(jìn)去,拖第二個文件時選擇“作為輸入文件添加到當(dāng)前混流設(shè)置”,然后點(diǎn)擊開始混流就可以了。開始前記得確認(rèn)一下軌道一欄是一個視頻軌和一個音頻軌。我個人習(xí)慣把視頻軌放在第一位。由于我們這兩個文件原本就是在同一個視頻里的,所以不用特地去調(diào)右側(cè)的屬性。我比較懶,直接把wav文件封進(jìn)視頻里了,如果追求更好的兼容性,建議把音頻部分先轉(zhuǎn)碼成AAC格式再封裝。然后輸出的就是一個看起來很普通、很正常的MKV格式視頻文件了。


以上軟件也沒有提及所需運(yùn)行環(huán)境。
6.發(fā)散內(nèi)容:主機(jī)版
眾所周知,MAGES是一個狂熱的主機(jī)獨(dú)占愛好者,所有作品都是在主機(jī)端首發(fā)。雖然現(xiàn)在不獨(dú)占了,但首發(fā)還是在主機(jī)上。如果要獲取最新游戲的資源,就要找主機(jī)端。主機(jī)端和PC最明顯的區(qū)別之一就在于你正常使用的話根本看不到游戲的資源目錄,想看到只能破解后把資源導(dǎo)出到電腦上,或直接找盜版資源。而且主機(jī)版游戲為了適應(yīng)主機(jī)的操作系統(tǒng),可能還會使用一些更奇怪的文件格式,讓資源提取更加困難。
6.1 軟系主機(jī):xbox360、xbox one
沒解過,不知道。
6.2 索系主機(jī):PS2
沒解過,不知道。
6.3 索系主機(jī):PSP
說實(shí)話,我很懷疑PSP上的到底是不是MAGES引擎……作為民間漢化非常活躍的平臺,PSP版的內(nèi)容應(yīng)該都可解,但都已經(jīng)年代久遠(yuǎn),我沒能找到相關(guān)的工具。而且PSP的畫質(zhì)不高,沒有太大的意義,我也沒有深入研究。如果想研究建議去問當(dāng)年的漢化組大佬。
6.4 索系主機(jī):PS3
解過兩個游戲,RN和MO7,分別是13年和14年的,比較久遠(yuǎn)。安裝包是個普通的壓縮包,解壓后的文件結(jié)構(gòu)和PC版沒什么區(qū)別。圖片文件沒有格式后綴名,我也不知道該怎么辦,就放棄了。音頻也全部沒有格式后綴名,無法識別。MO7的視頻是usm格式,可以提取。RN的視頻是sfd格式,也是CRIware的視頻封裝格式,在VGMToolbox中選擇sfd格式解封裝,后續(xù)操作同usm格式。
6.5 索系主機(jī):PSV
解過兩個游戲,RNE和MO8,分別發(fā)布于14年和18年。兩者的區(qū)別很大,RNE的包為vpk格式,MO8則是一般壓縮包,被標(biāo)注為mai包。不清楚是不是PSV的兩種破解后游戲?qū)敕绞讲煌瑢?dǎo)致的還是年代差太多引擎更新導(dǎo)致的。RNE的圖片情況基本同PS3。其中有部分圖片格式有.gxt格式的后綴名,GARbro能直接查看和轉(zhuǎn)碼,但只有非常小的一部分。另外的圖片即使標(biāo)注為gxt格式也仍然無法查看。音頻為aa9格式,只有MPC-HC可以播放,轉(zhuǎn)碼方法未測試。視頻為usm格式。MO8圖片為gxt格式,但和RNE不同,GARbro無法預(yù)覽。ChaosChildPCTools中有一個gxt.py,可以解碼圖片為png格式。但是這個腳本又不能解RNE中的gxt圖片,疑惑。音頻為at9格式,是一種索尼的音頻格式,上文已提及,可用MPC-HC和foobar2000播放。視頻竟然非常良心的直接是mp4/AVC/AAC,一切正常,直接就能播。
6.6 索系主機(jī):PS4
只解過一個CCLCC。資源分享者直接發(fā)了文件夾,沒看到安裝包層。內(nèi)部結(jié)構(gòu)也是和PC版差不多。圖片竟然直接就是png格式,很令我驚訝,不清楚是不是特例。音頻為at9格式,參考前文。視頻也直接是mp4/AVC/AAC,直接就能播。
6.7 新世代主機(jī):XSX、PS5
賣雞社笑話.png和任地獄笑話.png
6.8 任系主機(jī):Switch
長篇大論環(huán)節(jié)。詳細(xì)寫能再寫幾千字。所以這里只寫主要步驟。
1.將NSP或NSZ格式的安裝包轉(zhuǎn)換為XCI格式。所用工具為NSCBuilder。如果直接是XCI格式可以略過這一步。
2.用XCI-Explorer打開xci,在Partitions選項卡下root/secure目錄下找到四個nca文件(也可能更多),找到最大的一個,解壓出來。這一過程也可以使用Xci-Extractor解壓出全部的文件,再慢慢找。
3.用SwitchExplorer打開nca文件就可以看到和PC版類似的一系列cpk文件或文件夾了。
NS版的文件格式基本都是前文講過的,不再贅述??傮w來說NS版雖然麻煩,但后續(xù)操作難度不大。
這里提到的四個軟件都需要NS密鑰才能運(yùn)行,請自行獲取。密鑰存放位置也不同,請分別參考github上給出的說明正確存放。
7.發(fā)散內(nèi)容:未來展望
未來會發(fā)生什么,沒人知道。如果MAGES大更引擎,甚至只是小改一下,全文都可能立即作廢。但我相信,到時候一定還會有大佬出來研究,帶來新的工具,和新的驚喜。
(完)
