Loading... 本教程不包含任何关于**好弟弟**的内容,仅介绍某款街机游戏自制谱的工作流。 ## 准备工作 在开始之前你需要准备: - UMIGURI / V1.0.1 - Margrete / V1.3.1.1 - 一份音频文件 - 一张封面 - ~~一个有耐心的音游痴~~ ## 设置语言 在这里可以调整制谱器语言:  ## 初始化工程 我不会日语,所以这篇教程就默认语言为英语来介绍了。前往 `File` -> `New` 以初始化一个新项目。 然后,点击 `File` -> `Save`,将这个文件夹保存到UMIGURI的数据文件夹下。UMIGURI中存放乐曲谱面相关数据的文件夹在 `data/music/[谱面大类]/[乐曲名]` 。以我为例,大类名为 `自制谱` ,乐曲名为 `ダレモ`,则新建相应文件夹保存这个谱面。 ### 设置乐曲的基本信息 完成上述步骤后,点击 `File` -> `Chart Propetry`。会看到窗口:  其中,`SongID`一般不需要编辑,`Title` 为乐曲标题,`Artist Name`为乐曲作者/乐队名。 `Chart` 一栏中,`Designer`为谱师名称,`Basic BPM`为乐曲节奏,这个务必填写准确,不清楚可以查询相关资料。  在 `BGM`一栏设置背景音乐,其中 `BGM Playback Offset`代表延迟播放的时间,默认为0。**如果你觉得原始音频文件前面的留白太多,请直接用Audacity等软件修剪音频,不要调整这个参数,否则在转谱时会遇到困难**。 `Display`一栏中,`Jacket Image`代表封面图,`Background Image / video` 则可以设置谱面的背景视频/图像。不过关于BGM、封面图和背景图的设置都只在UMIGURI内部生效,关于某街机音游客户端内部的配置后面再提。 然后,点击确定,保存这部分内容。在主界面中,确保光标(就是那条红色的线)指向开头处,点击 `Insert` -> `BPM Change Event`,设置为BGM的速度,例如此前我们填写了 `Basic BPM = 185.0`,则此处对应设置为185即可。 ## 制谱器基本操作介绍  在工具栏中的这三个控件,分别代表着 `放置` 、 `选择` 、 `删除` 这三个制谱器的基本功能。其中 `放置` 需要在第二栏中选择,才能放置指定的音符。 在放置几个音符之后,你可以选中它们,右键查看可用操作:  其中 `Select from ... to ...` 上下两个选项代表选择从 **光标处** 到头/到尾的全部音符。其余操作则不过多介绍,自行尝试即可。 ### 复制粘贴与翻转 关于复制粘贴,除了Ctrl+C/V的快捷键外,你还可以使用 `Ctrl+Shift+V` 以水平镜像的形式粘贴它们,这是一个很常用的功能,试试看吧。如果只是希望简单地翻转这个音符,你可以直接在选中它们后按 `H` 或 `V`,分别代表水平翻转和水平翻转。 ### Slide 关于Slide音符,你可以在希望插入的地方先放置好光标,然后按 `R` 调出 `Script SLIDE` 窗口:  Slide种类有很多,这里只介绍最基本的曲线。 小节数有三个选项,尽管看着有些复杂,但举个例就清楚了。 在Margerete中,像这样的一个区间(从142到143)称为一个 `小节`:  如例图中这样设为 `0:1/8` 的话,则会产出这样的Slide:  是的,这就是这个小节的八分之一,如果改为 `1:1/8` 的话,则会产出这样的Slide:  理解小节数参数的意义了吗? 然后,`SLIDE 幅` 则代表这个Slide的宽度,它可以被后期手工调整。`终点横位置` 和 `横移动` 分别代表终点和起点的位置。 余下参数不再赘述,自行摸索即可。 ### 导出 在完成制谱之后,你可以点击 `File` -> `Export` 导出谱面文件为 `.ugc` 格式。  有时,在导出时它会提示 `Export failed.`:  这是由于你的谱面包含不兼容(无法被UMIGURI和某街机音游兼容)的音符。按照下方 `Proofread` 的提示进行修改,例如本处它提示我这个 `ExTAP` 音符的宽度只能为特定宽度。如果找不到问题音符的位置,双击这一栏即可。 顺利导出后,启动UMIGURI,只要路径配置正确,它就能认到你的乐谱,你可以在游戏设置中更改流速等配置,以及可以启用AutoPlay。 ### 生成OPT 在开始之前,检查你的游戏文件,选择一个不与现有OPT冲突的OPT ID,例如 `A550` 。然后,为你的谱面选择一个ID。需要注意的是,你的谱面、OPT的ID**不能**与现有内容冲突,已知宴谱的ID范围在8000-8800,而其它谱的ID普遍在0-4000,为你的谱面选择一个合适的ID,例如 `7548` 。 所以,我们目前得到了: - OPT ID: A550 - Music ID: 7548 - cueFile ID: 7548 #### 转谱 显然,目前得到的谱面并不能在除模拟器外的其他地方被读取。要游玩它,你还需要进一步操作。 所以,我们需要对谱面文件进行进一步转换。确保你的谱面配置没有问题,然后打开这个网址进行[谱面转换](https://margrithm.girlsband.party/),导入你的 `.mgxc` 项目工程文件。如果工程没问题,则能正确产生 `.c2s` 格式的文件,下载保存即可。 #### 音频再封包 这款街机音游使用CriWare的专有音频格式,**不能**识读或播放常见的音频格式,所以我们需要对音频进行再封包操作。 在开始之前,请你: - 使用Audacity等音频剪辑软件,修剪你的音频,去掉你不希望加入谱面的地方 - 确保音频为16bit 48000Hz 双声道 PCM格式的WAV文件,如果没有,使用音频剪辑软件转换并导出 - 确保音量听起来恰到好处 ##### 通过网页操作 还是在刚刚那个网页,点击 `cueFile 创建` 一栏:  名称一栏填入cueFile ID,预览起始和结束代表当你游戏内选中这首谱的时候,播放的预览音频的范围,填入合适的值。 然后上传文件即可。 ##### 手动操作 这是我走的一条弯路,我确实花了很多时间去研究,这个方法不比通过网页操作快捷,不过我还是想写一下。如果你已经通过网页完成了cueFile创建,则不需要阅读本部分内容,直接跳到[下一部分](#生成谱面信息)即可。 感谢[DereTore](https://github.com/OpenCGSS/DereTore)和[VGAudio](https://github.com/Thealexbarney/VGAudio)项目提供的HCA文件加解密封包工具,尽管它们一开始并不能直接用于生成cueFile,在我进行部分修改后才能正常使用。 下载这些文件: - [VGAudioCli.zip](https://0x.c4a1.net/usr/uploads/2025/03/3820284957.zip) - [SonicAudioTools.zip](https://0x.c4a1.net/usr/uploads/2025/03/2081925270.zip) - [deretore-toolkit-v0.8.1.20250328-184738-alpha-release.zip](https://0x.c4a1.net/usr/uploads/2025/03/3458039198.zip) - [HxDSetup.zip](https://0x.c4a1.net/usr/uploads/2025/03/1288848993.zip) 我已经完成了对这些项目的代码的修改,使其能够用于生成这款街机音游的cueFile,把它们放置到一个合适的地方,我们后续会用到它。此外,你需要运行HxDSetup.zip中的安装程序。 你可以在其他地方获取到这款街机音游的OPT包,本处以删除曲补充包 `A300` 为例,你可以在 `A300/cueFile` 下看到一堆 `cueFileXXXXXX` 文件。随便选一个,把它复制出来。你应该看到 `CueFile.xml` 、 `musicXXXX.acb` 、 `musicXXXX.awb` 三个文件 现在打开存放SonicAudioTools的文件夹,以 `music0055.acb`为例:  将其拖动到 `AcbEditor.exe` 上方,如执行顺利,你将在这个目录下看到它创建的 `music0055` 文件夹,内含一个名为 `00000_streaming.hca` 的文件。 然后找到你准备好的音频文件,也拖放到这里。右键,选择 `在终端中打开` 或自行在cmd中切换到这个路径。然后使用VGAudioCli将其转换为明文 `.hca` 格式: ```powershell VGAudioCli.exe [音频文件] plain.hca ``` VGAudioCli.exe应被替换为你放置VGAudioCli的位置,例如我把它放在E:\VGAudioCli,则此处也应为E:\VGAudioCli,后续其它工具也以此类推。 如执行顺利,将生成一个 `plain.hca` 文件。然后使用DereTore将其加密,否则游戏客户端无法正常读取: ```powershell hcacc.exe plain.hca encrypted.hca -ot 56 -o1 ce264700 -o2 0074ff1f ``` 至于密钥是哪里来的嘛...问这个干什么呢,嘿嘿 如果执行顺利,它应该这样输出:  你可以使用 `certutil.exe` 工具额外校验 `plain.hca` 和 `enc.hca` 的哈希,确保其被正确加密处理。 然后,删除 `00000_streaming.hca` ,将 `encrypted.hca` 重命名为 `00000_streaming.hca` 。清理原始的 `.wav` 文件和所有中间过程产生的文件,只留下一个 `00000_streaming.hca` 。 确认无误后,退出到上一个目录,将 `musicXXXX` 文件夹整个拖动到 `AcbEditor.exe` 上方:  如执行顺利,你会看到musicXXXX.acb/.awb的修改日期更新了。 然后,将这两个文件重命名为此前确认的 `music[cueFile ID].acb/awb`,编辑 `CueFile.xml` ,也将其中原本的ID替换为新的ID。 然后,使用HxD打开 `.acb` 文件,使用 `Ctrl+F` 唤出搜索页面,搜索 `music` 关键字:  然后你可以找到:  将随后的 `0055`修改为此前确认的cueFile ID,然后保存退出。 HxD默认会保存一份.bak后缀的备份文件,删除它。 然后再删除 `music0055` 文件夹,我们就得到了一份完整的cueFile。 #### 生成谱面信息 前往[Music.xml 创建](https://margrithm.girlsband.party/music-xml),填入你的谱面的信息,然后下载Music.xml,保存。 #### 转换封面文件 前往[曲封DDS创建](https://margrithm.girlsband.party/dds-create),上传你的封面,然后下载保存。 #### 封包OPT 然后,随便找一处新建文件夹,文件夹名为我们此前确认的OPT ID,例如 `A550` 。然后在此文件夹下新建两个文件夹,名为 `music` 和 `cueFile` 。 ##### 设置cueFile 打开cueFile文件夹,新建 `cueFile00[cueFile ID]` 文件夹,例如 `cueFile007548` 。然后把此前获得的cueFile文件 `CueFile.xml` 、`musicXXXX.acb`、`musicXXXX.awb`共三个,复制到这个文件夹即可。 ##### 设置谱面信息 打开music文件夹,新建 `music[Music ID]` 文件夹,例如 `music7548` 。把此前获得的 `Music.xml`、封面文件、谱面文件(.c2s格式)放进去。 将封面文件重命名为 `[Music ID]_Jacket.dds` ,例如 `7548_Jacket.dds` 。将谱面重命名为 `[Music ID]_[难度].c2s`,例如 `7548_MASTER.c2s` 。 编辑Music.xml,找到 `fumens` 下对应难度的谱面,逐个修改 `file` -> `path` ,使之与我们之前命名的谱面文件名匹配。找到 `jacketFile` ,修改,使之与我们之前命名的封面文件匹配。找到 `cueFileName` ,修改,使之匹配我们此前设置的cueFile。 然后保存退出即可。 ### 完成 大功告成,后续分享这个OPT文件夹,或者自行将OPT文件夹安装到游戏中,即可在游戏中游玩谱面。 添加更多谱面时,不需要再次新建OPT,沿用一个即可。 Q.E.D. --- Mio 2025-03-30 00:22 提笔 2025-03-30 03:26 完稿 最后修改:2025 年 03 月 30 日 © 允许规范转载 赞 如果这对你有用,我乐意之至。