项目作者:硫酸铜
项目来源:github.com/qwedc001/pyrd
此处为了介绍的更为简明化,部分计算机术语被替代,可以前往我的github项目查找原文档(有人能帮我写一下文档就好了,文档苦手伤不起)
项目介绍:PyRD,又名Python Rhythm Doctor,旨在使用代码创建Rhythm Doctor的自定义关卡,这个项目发起的本心是为了方便节奏医生的视障玩家(如卢毅)去制作优质的谱面,而不是对着一个冗长的JSON文件发愁。
后来经过节奏医生官方开发huantian的建议,将原有的Python写代码转换成了学习成本更低的YAML标记格式,引出github分支yaml,文档上方提供的下载就是用于翻译yaml为rdlevel的解释器(我并没有做检查语法功能,有大佬会写可以来提交pr)
此处文档以介绍分支yaml为主,在此分支下,解释器解释的文件后缀为.sprd(Simple RD)
如果你想直接使用python写rdlevel,你可以直接git clone以后将pyrd.py引入项目,然后根据里面提供的函数进行编写。
先通俗的解释一下.sprd文件的构造,建议配合文档末尾提供的示例对比学习。
.sprd文件主要分为三大块,分别是metadata(关卡信息),角色和小节具体内容。
在每一块内,每一句是通过换行来分隔的,且在开头有1个空格,比如:
metadata:
艺术家 硫酸铜
歌曲 SimpleRD
难度 简单
癫痫 关
以上四句话分占四行,在中间有空格,空格前为参数,空格后为内容
metadata可以填写的参数有:
metadata:
艺术家:艺术家名称
歌曲:歌曲名称
作者:作者名称
描述:描述
癫痫:是/否
难度:简单/普通/困难/噩梦
标签:标签
rank所需错误数:[20,15,10,5]
rank描述:["F","D","C","B","A","S"]
当然,如果你选择全空着也不是不行,所有metadata此时都会填空。
角色是一行一个角色,角色只有参数,中间用英文逗号分割。 角色一共有十个参数,其中有五个参数是必填的,剩下五个是你想要填才填,不想填可以不填的。 如果你想要填一个,空一个,再填一个,那么要空过去的那个参数用英文句号.代替。
角色的五个必填参数按照顺序是: 角色名(不想写可以填无),节拍类型(七拍/二拍),角色在第几个房间,角色在第几个轨道,角色节拍音效(还没有写对照表,后期补上)
角色的五个选填参数按照顺序是: 在开始时隐藏轨道,节拍音量,节拍音调高低,节拍声象,节拍偏移,比如:
- [武士,七拍,0,1,Stick]
- [科尔,二拍,0,2,Kick]
针对于节拍部分,从第三块开始,接下来每一个小节都标上对应的数字,在之后的内容前再加上一个空格。比如:
1:
- [播放音乐,1,sndOrientalTechno,100,0]
这里的语法是:- [内容,参数],内容之间/参数和内容之间用英文逗号分隔。
几个已经支持的语法:(带星号为可选参数,并且最后有一个“条件”参数,这个参数因为所有语法都支持所以不单独列出)
- [播放音乐,事件在当前小节第几拍,音乐名,BPM,偏移,*音乐音量,*音乐音高,*音乐音像]
- [七拍,事件在当前小节第几拍,事件在第几轨道,七拍长度,摇摆拍设置]
- [二拍,事件在当前小节第几拍,事件在第几轨道,二拍长度,*二拍循环,*是否跳过此拍,*冰冻拍间隔,*二拍类型,*是否播放方块音]
- [设置静音,事件在当前小节第几拍,事件在第几轨道,静音模式(由6个字符组成,-代表正常,x代表静音),切分音拍,切分音摇摆]
- [长按拍,事件在当前小节第几拍,事件在第几轨道,长按拍长度,长按拍摇摆,长按拍按住长度,长按拍X模式]
- [自由拍开始,事件在当前小节第几拍,事件在第几轨道]
- [自由拍脉冲,事件在当前小节第几拍,事件在第几轨道,脉冲行为,自定义脉冲]
- [设置护士音效,事件在当前小节第几拍,说的内容是什么,*是谁的声音,*要提示的二拍拍长,*音量]
- [设置BPM,事件在当前小节第几拍,bpm]
- [播放音效,事件在当前小节第几拍,音效文件,*音量,*音高,*音像,*偏移,*是否为自定义音效]
- [设置数拍音效,事件在当前小节第几拍,事件在第几轨道,*数拍音效声音,*是否开启,*音量]
- [朗读轨道,事件在当前小节第几拍,事件在第几轨道,信息种类,轨道自定义X,*是否跳过朗读"紊乱",*只发出声音,*朗读X拍]
- [朗读说明,事件在当前小节第几拍,朗读文本,*说明分类]
- [显示对话,事件在当前小节第几拍,对话文字,对话速度,*立绘位置,*播放音效]
详细的参数类型可以在pyrd.py中找到,更详细的docs需要等到有时间再进行维护,或者你们谁维护了给我提交个pull request也行。 编写完成后,请执行python compiler.py 你的sprd文件名
(进阶)VFX语法(由群内0x4D2提供):
- [预设特效,事件在当前小节第几拍,事件在第几轨道,特效名称,*是否激活,*属性]
只有个别特效具有 属性 参数。
-
对于 落雨/JPEG失真/马赛克/海底波浪/电影噪点/暴风雪/素描/色像差/模糊/径向模糊/色调偏移:强度,缓速时长,缓速
-
对于 自定义屏幕块/自定义滚屏:x/y
-
对于 高光:阈值,强度,颜色,缓速时长,缓速
- [设置背景,事件在当前小节第几拍,事件在第几轨道,模式,*颜色,*图片,*fps,*填充模式,*过滤器]
-
模式: 颜色/图片
-
对于 平铺 填充模式,有额外的参数:速度x,速度y,时长,缓速
- [轨道涂色,事件在当前小节第几拍,事件在第几轨道,*受影响的轨道编号,*边框样式,*边框颜色,*边框透明度,*是否启动电击效果,*透明度,*是否填充,*填充颜色,*填充透明度]
-
受影响的轨道编号 如果为-1或"全部",则全部轨道均受影响,
-
边框样式 无边框/轮廓/发光
-
透明度最大为100(不透明)
- [闪烁,事件在当前小节第几拍,事件在第几轨道,时长]
- 时长 短/中/长
- [注释,事件在当前小节第几拍,事件在第几轨道,注释文字,*播放时是否显示注释,*注释颜色]
metadata:
艺术家: 节奏医生
歌曲: 1-1
作者: 卢毅
难度: 简单
癫痫: 关
描述: 这是一个关卡。
角色:
- [武士,七拍,0,1,Stick]
- [科尔,二拍,0,2,Kick]
小节:
1:
- [PlayMusic,1,sndOrientalTechno,100,0]
- [预设特效,1,0,落雨,开]
- [设置背景,1,1,颜色,626262FF]
- [轨道涂色,1,2,全部,发光]
- [七拍,1,1,1,0]
2:
- [七拍,1,1,1,0]
3:
- [七拍,1,1,1,0]
4:
- [七拍,1,1,1,0]
- [设置护士音效,5,SayReaDyGetSetGoNew,.,1,100]
5:
- [二拍,1,2,1]
- [二拍,3,2,1]
- [二拍,5,2,1]
- [二拍,7,2,1]
- [设置护士音效,8,JustSayStop,.,1,100]
- [闪烁,1,0,长]
- [闪烁,5,0,长]
- [注释,1,1,插入两个闪光,动作,开]