手术
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。
请注意,部分内容可能尚未完成或存在错误。您也可以编辑页面帮助我们完善内容。
手术这个词是直译了国外社区里的“Surgery”的说法,其意为直接用文字编辑软件打开.rdlevel文件对代码进行操作。修改这些代码就可以改变谱面本身,其内核于直接使用编辑器操作殊途同归。
这东西其实八成是用不着的,但也不排除有因为特殊原因例如盲人不能对关卡编辑器进行操作这样,所以只能使用文本编辑器打开.rdlevel文件来编写关卡,考虑到这样的特殊情况,而且教程中既然有提到这种操作方式,那就一并在附录中收纳。
上面提到了,编写rdlevel和使用编辑器本身操作其实效果是完全一样的,那么也就是说,光靠编辑rdlevel文件,只要会写的话,也是可以写出非常精彩的关卡的,接下来就让我带领大家已我的理解,已一个完全新手的角度来看看rdlevel文件究竟是什么样的吧。
P.S.1:本人用文本编辑器也写了不少关卡了,但是要是真正提到对代码知识的专业了解的话可能还是0基础,所以,我可以带领大家一步一步进行关卡的编辑,但如果说非要让我解释代码寓意的话我可能还说不上来,只能说是告诉你这个是干啥用的,本节中我会带领大家写一个简单的关卡来告诉大家用文本编辑器来写关卡究竟是怎么一回事。
P.S.2:上面说过,我只是带领大家简单写一个关卡,简单认识一下用文本编辑器来编辑,但更具体的参数选项或者更高阶一些的用法还得大家自行学习,当然有空的话我会来更新一些内容的,不足之处也请其他朋友进行补充。
基础设置项
首先,在关卡编辑器里什么都不操作,直接保存一个rdlevel文件,用记事本或其他文本编辑器打开,你会看到如下内容:
"settings": { "version": 46, "artist": "", "song": "", "specialArtistType": "None", "artistPermission": "", "artistLinks": "", "author": "", "difficulty": "Medium", "seizureWarning": false, "previewImage": "", "syringeIcon": "", "previewSong": "", "previewSongStartTime": 0, "previewSongDuration": 10, "songNameHue": 0.1451763, "description": "", "tags": "", "separate2PLevelFilename": "", "canBePlayedOn": "OnePlayerOnly", "firstBeatBehavior": "RunNormally", "multiplayerAppearance": "HorizontalStrips", "levelVolume": 1, "rankMaxMistakes": [20, 15, 10, 5], "rankDescription": [ "你这个毫无希望的实习生!", "啊,你还可以做得更好", "嗯,勉强还成……", "咱们是黄金组合!", "你的表现真给力!", "惊艳绝伦的演出!!" ] },
接下来我来一一讲解。 因为rdlevel文件其实就是json文件,所以这里如果懂json语法的应该会特别熟悉
条目名称 | 具体含义 | 可选值 |
---|---|---|
"settings"
|
在此段落填写谱面的元数据(Metadata) | |
"version": 47,
|
编辑器的内部版本号,会随着更新而变动 | |
"artist": "",
|
填入音乐的艺术家或者歌曲的演唱者 | |
"song": "",
|
填入歌曲名称 | |
"specialArtistType": "None",
|
可填写:无,谱面作者和音乐作者为同一人,公开许可。后两种情况都是无需再专门进行作者许可和授权的。 | None, AuthorIsArtist, PublicLicense |
"artistPermission": "",
|
填入作者许可和授权 | |
"artistLinks": "",
|
填入歌曲链接或者作者的主页 | |
"author": "",
|
填入关卡作者的名字 | |
"difficulty": "Medium",
|
可填写:简单,正常,困难,噩梦。根据谱面实际情况进行填写。 | Easy, Medium, Hard, Nightmare |
"seizureWarning": false,
|
可填写:真,假。指是否给谱面加入癫痫警告 | true, false |
"previewImage": "",
|
填入预览图片,也就是选关界面图片的文件名 | |
"syringeIcon": "",
|
填入针管图标的图片文件名 | |
"previewSong": "",
|
填入预览音乐文件名,注:预览音乐必须是ogg格式 | |
"previewSongStartTime": 0,
|
填入预览音乐的开始时间(秒) | 整数 |
"previewSongDuration": 20,
|
填入预览音乐的持续时间(秒) | 整数 |
"songNameHue": 0.3972672,
|
填入选关界面针管上的颜色 | 七位小数,范围为0~1 |
"description": "",
|
填入关卡简介 | |
"tags": "",
|
填入关卡标签 | |
"separate2PLevelFilename": "",
|
如果你的双人模式需要使用另一个rdlevel文件就在这里填入文件名,例如2P.rdlevel | |
"canBePlayedOn": "OnePlayerOnly",
|
可填写:仅限单人,单双人皆可。指定关卡为仅单人模式或仅双人模式或单/双人模式 | OnePlayerOnly, TwoPlayerOnly, BothModes |
"firstBeatBehavior": "RunNormally",
|
可填写:正常,在关卡启动前运行事件。后者表示把第一小节第一拍的事件提前到关卡开始之前 | RunNormally, RunEventsOnPrebar |
"multiplayerAppearance": "HorizontalStrips",
|
控制某个物体是否显示,如果这个物体的颜色是透明,所以显示和不显示没有区别 | HorizontalStrips, Nothing |
"levelVolume": 1,
|
填入关卡的整体音量 | 两位小数,范围为0~1 |
"rankMaxMistakes": [20, 15, 10, 5],
|
填入各个评级所对应的失误次数 | 整数,范围为0~999 |
"rankDescription": [ "F级评语", "D级评语", "C级评语", "B级评语", "A级评语", "S级评语" ]
|
填入关卡评级的评语,共六个 |
轨道部分
“rows”: [ ], 默认情况下,这里是空的,这里其实就是设置轨道的地方,你这个轨道要用什么角色,什么轨道类型,是七拍还是单发拍子,这轨道又是交给谁操作的,都在这里决定,在关卡中的代码大概是这样的。
{ "character": "Samurai", "rowType": "Classic", "row": 0, "rooms": \[0\], "player": "P1", "pulseSound": "Stick", "pulseSoundVolume": 100, "pulseSoundPitch": 100, "pulseSoundPan": 0, "pulseSoundOffset": 0 },
“character”就是你这条轨道需要使用哪个角色,刚刚的示例中我填的是Samurai,也就是武士。
“rowType”是轨道类型,这里我填写的是七拍轨道”Classic”,如果是单发拍轨道的话,这里填的应该是”Oneshot”
“row”里填写的是你现在设定的这些作用于哪条轨道,0到15
“rooms”里填写的是房间编号
“player”里填写的是你要让谁操控这个轨道,可以是P1,P2,CPU,如果是CPU的话就是给电脑操作了。 下面这几个带有pulseSound的参数就是和音效有关了,它们分别是:
“pulseSound”: “音效文件名”,
“pulseSoundVolume”: 音效音量,
“pulseSoundPitch”: 音效音高,
“pulseSoundPan”: 音效声像,数值越小越往左,越大越往右,0是正中间。,
“pulseSoundOffset”: 音效偏移值 以后只要是和音频相关的代码都会接触到上面这几个参数。
特效部分
轨道也设置好了,接下来就是真正开始写关卡内容了,真正的关卡内容全都写在”events”底下,由于这是新人向,所以我会大概讲一下如何写一个七拍子以及如何写出正确规范的“ready get set go”二拍子。