基于某街機音樂游戲的Unity游戲修改心得分享
0x00 寫在前面
赫赫adx玩家太多了,所以寫了這篇。本文基于1.35.00。不要找我要好弟弟、最新最熱opt等,不要問我如何啟動游戲。
本文章僅供Unity游戲修改相關的學習參考,使用本文章內(nèi)容所構成的侵權行為與作者無關。
開始本教程前,建議你做以下準備:
下載Visual Studio Code作為文本編輯器,并安裝HexEditor插件以修改二進制文件。
了解如何使用命令行工具。

0x01 文件結構
首先這邊建議把魔改相關單獨放到一個opt文件夾里(如F099)。不知道怎么裝opt的可以參考segatools.ini里的提示,指定option文件夾。option文件夾里每個opt文件夾的內(nèi)容相當于會在運行時覆蓋替換原本游戲中A000文件夾中的內(nèi)容(不會實際修改A000中的文件)。別改A000里的東西了求你了
你的option文件夾應該差不多長這樣,放在你指定的option目錄下。如果想裝自制,序號越大越好。接下來我會分別說明這里的東西怎么加。


0x02?添加一個自制頁簽
這步不需要每次加一個新譜都做,只是單獨劃出來一個地方放自制譜。需要添加的文件至少有兩個:
musicGenre\MusicGenreSort.xml
musicGenre\musicgenre000107\MusicGenre.xml
把A000里的對應文件復制出來改改。這兩個文件的genre id要對上。music文件夾里面那倆不加也無所謂。



0x03?添加譜面
每次加一個新譜,先給曲子隨便取一個曲目id,最好在2000~9999之間,我這里曲目id是2001。然后算個固定6位的譜面id,如果是dx譜,譜面id就是10000+曲目id,st譜就是曲目id。后面很多地方填的id都要么是譜面id要么是曲目id,有時還需要在前面補0至6位,自己看著辦吧。相關文件至少有兩個:
music\music012001\012001_03.ma2
music\music012001\Music.xml
先把你的譜轉(zhuǎn)成ma2格式。simai(majdata)那個txt轉(zhuǎn)ma2的工具嘛我找到的沒有一個能用,要不你自己找個能用的吧。
貼倆鏈接,一個SLL跟SLR轉(zhuǎn)反了,一個我沒研究明白。截至本文這倆都暫不支持fes。
https://github.com/Neskol/MaichartConverter
https://github.com/donmai-me/MaiConverter

然后Music.xml隨便復制一個出來,填下曲目基礎信息。genreName填剛才的genre?id。

最后填譜面信息。有些注意事項:
notesData里是所有譜面的列表,按順序分別對應綠黃紅紫白宴譜。某些難度可以沒譜,但那個位置一定要填上,按圖里綠框填,isEnable改成false就行。level和levelDecimal對應定數(shù),比如圖里是14.0。musicLevelID是難度id,1~7對應1~7級,8對應7+級,9對應8級,以此類推直到23對應15級。(不是譜面的框,某些神秘教程給我看的腦溢血)


0x04?添加音頻
有個特別牛逼的軟件叫ACE。雖然很牛逼但是有bug。這邊建議用我魔改的修了bug并且加了maimai支持的版本。
原項目地址:https://github.com/LazyBone152/ACE
舞臺醬牌魔改版:https://github.com/iamgqr/XV2-Tools/releases/
隨便復制一個acb和一個同名awb文件出來,用ace打開(Load)acb文件。點第一個cue,右鍵下面的track,點replace,然后選擇你的音頻。點另存為(Save As),然后輸入文件名(我這里是music002001.acb)。注意不能保存之后重命名,必須另存為然后輸入對的文件名。把你保存的acb和awb文件放進SoundData就能用了。
這么做生成的acb里,游戲內(nèi)選取界面的預覽還是原本的時間段。如果想改音頻的預覽時間,用vscode的hexeditor打開你保存生成的acb。算一下想要的預覽時間的毫秒數(shù)轉(zhuǎn)成16進制(windows計算器-程序員模式),去TrackEvent表附近,改下這倆command的字節(jié)。找不到可以文件內(nèi)搜索16進制“03E704”和“07D104”,他們后面的就是。


0x05?添加bga
不加bga也行,但是你打歌的時候背景就是一只1p熊(らん)的臉,非常難看。
usm編碼工具:https://github.com/donmai-me/WannaCRI
先準備個視頻,把它轉(zhuǎn)成ivf格式。方法請谷歌或使用萬能的ffmpeg。然后用工具轉(zhuǎn)成usm格式,最后重命名成.dat格式放在MovieData就行了。用工具需要你填key參數(shù),你游的cri key是多少請github搜索。(base64:MHg3RjQ1NTE0OTlERjU1RTY4)
只有圖懶得搞視頻?我教你一招:

0x06?添加封面
(某些神秘教程給我看的腦溢血。jacket_s是選曲和結算界面的封面,jacket才是游戲中準備時和副屏上的封面)
UABEA:https://github.com/nesrak1/UABEA
先復制幾個文件出來:
AssetBundleImages\jacket\ui_jacket_002001.ab
AssetBundleImages\jacket_s\ui_jacket_002001_s.ab
AssetBundleImages\AssetBundleImages
假如你原本文件是ui_jacket_000021.ab吧,先給新文件重命名成ui_jacket_002001.ab。uabea打開ui_jacket_002001.ab,如果他叫你解壓你就解壓到新文件(選file),關掉uabea,把舊文件刪了,把解壓出來的文件重命名為原文件名,然后uabea打開這個文件就行了。之后都用這個解壓出來的文件就行,游戲也能讀。
打開ab文件之后,Info,選Texture2D那個,Plugins-Edit texture-OK。里面Load,選個正方形png文件(大小其實無所謂),然后Save,Save,Save,關閉。

vscode啟動,hexeditor打開這個.ab文件,把里面000021全都查找替換成002001。然后把文件里“CAB-xxxxxxxx”這坨東西后面的十六進制隨便改成一串別的十六進制。保存。
改完ab之后改AssetBundleImages。uabea打開,如果需要解壓還是按之前的操作。Info,選那個AssetBundleManifest,Export Dump,找個地方存下。uabea別關,vscode打開那個txt,在這加兩行,序號按順序就行。最后改下數(shù)組大小。


保存。uabea Import Dump選這個txt文件,Save,Save,關閉。

0x07?Enjoy
