forked from Monika-After-Story/MonikaModDev
-
Notifications
You must be signed in to change notification settings - Fork 0
Adding Custom Piano Songs
MTR-Static edited this page May 28, 2020
·
2 revisions
0.8.4版增加了对迷你钢琴游戏中自定义钢琴歌曲的支持。
所有钢琴歌曲都以JSON格式存储在文本文件中。 这是一个如何用JSON标记(很短的)钢琴歌曲的示例:
{
"name": "Song name",
"verse_list": [0, 5, 10, 23],
"pnm_list": [
{
"text": "This is a song lyric",
"style": "monika_credits_text",
"notes": [
"D5",
"C5SH",
"B4",
"F4SH",
"B4",
"C5SH",
"D5",
"E5",
"D5",
"C5SH",
"B4",
"A4",
"G4",
"D5",
"E5"
],
"express": "1eub",
"postexpress": "1eua",
"vis_timeout": 2.0,
"verse": 0,
"posttext": true
},
{
"text": "This is the another song lyric",
"style": "monika_credits_text",
"notes": [
"D5",
"A4",
"D5",
"A4",
"D5",
"A4",
"D5",
"E5",
"C5SH"
],
"postnotes": [
"D5",
"C5SH"
],
"express": "1eub",
"postexpress": "1eua",
"ev_timeout": 1.0
}
]
}-
name: (string) 歌曲名称- 必须是唯一的
- 这也会在钢琴歌曲菜单中显示给玩家
-
verse_list: (list) 索引清单 (int) 诗句的开头- 诗句就像检查点。这就是为什么您在犯错时不必从头开始的原因。
- 索引应该是 "pnm_list"中代表诗句开头的注音组的位置。
- 这使用0索引
-
pnm_list: (list) 音符组列表 (object)- 每个音符组是一个对象,名称/值对如下所述
-
_comment: 被忽略的字段,用于添加音符
name, verse_list, 和 pnm_list 都是 必须的。
还有其他一些参数,仅供内部使用或尚未准备好发布。有关这些的更多信息,请参见zz_pianokeys的顶部。
-
text: (string) 在这组笔记中,莫妮卡会说的 -
style: (string) 应用于文本的样式-
monika_credits_text是库存歌曲中使用的一种。你可以使用其他风格,但这可能是最好的风格。(没看懂
-
-
notes: (list) 此组的音符列表- 请参阅下面的音符信息
-
postnotes: (list) 可以在notes之后播放的可选音符列表- 这些用于确保从一个音符组到另一个音符组的平稳过渡
- 请参阅下面的音符信息
-
express: (string) 在此音符组中显示的精灵代码 -仅在当 那个音符被演奏时 显示 -
postexpress: (string) 当成功播放音符组时显示的精灵代码- 在演奏音符后显示
- 播放后记时也会显示
-
ev_timeout: (float) 超时输入之前等待的秒数(假设缺少音符)/重置韵律- 主要用于设置更大的计时窗口,以供用户输入此音符组
- 如果未提供,则使用默认超时(1.0(无歌曲)或3.0(歌曲期间))
-
vis_timeout: (float) 重置莫妮卡的表情/删除视觉歌词之前要等待的秒数- 主要用于在视觉重置之前将Monika的表达或视觉歌词扩展一段时间
- 如果玩家开始输入下一个组,这不会扩展到下一个音符组
- 如果未提供,则使用默认超时值2.5(无歌曲)或4.0(歌曲期间)
-
verse: (int) 该音符组所属的诗句索引- 这个必须匹配
verse_list中的一个数字
- 这个必须匹配
-
posttext: (bool) true表示音符组完成后,视觉歌词仍然可见- 默认行为(false)是在音符组完成后立即隐藏歌词。
- 尊重vis_timeout设置
-
_comment: 被忽略的字段,用于添加注 释
text, style, 和notes都是必填项。
还有其他一些参数,仅供内部使用或尚未准备好发布。有关这些的更多信息,请参见zz_pianokeys的顶部。
音符只是字符串。以下是可用的音符:(它们对应于实际的钢琴音符)
| 音符String | 默认键 |
|---|---|
| F4 | q |
| F4SH | 2 |
| G4 | w |
| G4SH | 3 |
| A4 | e |
| A4SH | 4 |
| B4 | r |
| C5 | t |
| C5SH | 6 |
| D5 | y |
| D5SH | 7 |
| E5 | u |
| F5 | i |
| F5SH | 9 |
| G5 | o |
| G5SH | 0 |
| A5 | p |
| A5SH | - |
| B5 | [ |
| C6 | ] |
自定义钢琴歌曲应以“songname.json”命名并存储在“piano_songs /”中。
钢琴JSON中的警告和错误记录到文件“pnm.txt”中。日志记录是描述性的,应该足以解决问题。不保证在游戏过程中记录日志。检查文件的最佳方法是先启动然后退出。
即使您的钢琴JSON无效,MAS(和迷你钢琴游戏)仍将运行。
无法正确加载的歌曲将被忽略。
有关Win/Pass/Fail的歌曲数据在内部存储,并按歌曲名称组织。一旦您传递了具有特定名称的歌曲,该歌曲将始终出现在播放歌曲中,即使**基础JSON不相同。**我们不打算修复此问题,因为它可能需要重写存储数据的方式。
演唱了Monika演唱时用的歌吗?
请按照以下说明进行提交。请注意,我们很可能不会正式添加歌曲,但我们将编译JSON并将其发布在钢琴包中。 (类似于spritepacks)。
提交钢琴曲:
- 发表Issues
- 将JSON附加到问题。如果文件太大,请将其链接到问题。
- 在Issues提到Issue
#3765。
您也可以只提交音符,但这会延迟将其包含在钢琴音符包中。