我日,不写变速会死啊。——YuzukiY
(相关资料图)
参考文章:
1. osumania sv制作建议(绿线篇1 严格可读sv)CV3727959
2. sv制作建议(绿线篇2 可玩性较高的非严格可读sv)CV3730333
3. sv制作建议(绿线篇3 进阶杂谈)CV3833063
4. 关于Malody谱面的effect CV8257852
5. 目前发现的effect类型 CV11899295
前言
本人已经在Malody制作变速谱面两年,与其让这些东西烂在自己脑子里,不如把知识分享给真正愿意学习变速的谱师。
本文主要为本人的主观观点,且本人知识水平尚浅,如有疏漏,欢迎在评论区指出。本文内容较长且内容之间相关联较多,请尽量不要跳过任何一部分。
本文使用的谱面编辑器为Malody ,不建议使用Malody V,主要内容为变速原理及较基础的变速设计。
阅读本文内容前请尽可能保证接受过完整的九年制义务教育,或掌握与其同等的数学和物理知识水平。(无恶意)
音乐游戏的变速已经诞生二十年有余,此处的变速泛指一切能改变谱面播放速度(以下简称谱面流速)的效果,包含谱面BPM(Beats Per Minute,每分钟节拍数,在音乐中用于衡量一首歌曲的节奏快慢)的变化。起初改变谱面BPM的目的是为了更方便谱师完成谱面设计的“对音”部分(即谱面BPM与音乐BPM保持一致)。而几乎所有早期的音乐游戏谱面流速都与谱面的BPM成正比,随着谱师对谱面理解更加深入,就诞生了“通过改变谱面流速,进而更好地呈现音乐的谱面”,这类谱面如今统称为变速谱面,或简称SV谱(Speed Variation)。
上文的目的是为了说明变速在谱面中起到的作用,即相对于没有变速的情况下,能更好地表达音乐的内容,本质上是在谱面的设计与表达音乐中寻找一个更优解。如今变速已经成为下落式谱面中不可或缺的一部分,但对于其表现方式在某些社区依旧存在争议,本文对此不作探讨。
Malody变速原理
一、BPM变速(红线变速)
注:Malody的BPM变速依然存在相当多的bug,不建议大量使用复杂BPM变速。
在osu!mania编辑器中此类变速节点在时间轴上显示为一根红线,所以简称为红线变速。这类变速几乎在任何音游中都存在,其原理是利用谱面流速与谱面BPM成正比的特性,通过修改BPM来实现谱面流速的变化,例如提高或降低BPM可以相对于基准BPM按一定倍率改变谱面流速。不同音乐游戏的的基准BPM计算方法不一致,在Malody中基准BPM为占谱面长度最长的部分的BPM值,即该BPM占谱面的beat最多,注意谱面总长度并非所有beat的长度,而是第一个note到最后一个note之间经过的beat数的总距离。
beat(节拍)即计量一首歌曲节拍数量的单位,一般情况下1个beat所经过的时间为60000/当前BPM(单位:ms),而1个beat经过的距离即谱面中经过一个beat的时间所通过的距离,理解这几个概念对于阅读本文来说至关重要。
如何确定谱面的长度:
以无人区为例,歌曲总长如图所示为(分.秒.毫秒),而第一个note位于处。
最后一个note位于处,则谱面长度为这两时间点之间经过的beat数,即448个beat。
将时间点如下图移动至需要添加BPM变化的位置,打开右侧BPM list即可添加或删除一个BPM值。
注意,若选中BPM并修改其值会出现无法取消选中的bug,例如选中上图中406 BPM并修改为300 BPM后,若继续添加新的BPM值,则会被视为修改该300 BPM的值。唯一解决方法是删除该BPM值,新建一个BPM。
关于要怎么更好地理解BPM变速的原理,首先要理解三个要素:BPM,时间(单位:ms),谱面长度(单位:beat)。
BPM在歌曲中用于衡量节奏快慢,能比较直观地反映一首歌的听感,例如无人区的BPM是203而NceS的Burn仅只有148 BPM,二者让玩家感受到的的节奏感截然不同(无人区听上去节奏明显更快)。Malody播放谱面时会以该谱面的基准BPM作为基准流速(note在屏幕中的实际下落速度),而决定基准流速的因素则只有mod设置里对音符速度的调节,以及你所使用的皮肤。
引入基准流速的概念就能够解释“为什么谱面BPM不一致,却在游玩时流速相同“,因为在没有变速的情况下任何谱面的播放速度均是基准流速。你也不会希望看到666的note真的以极高的速冲向判定线。
所以如果你写了BPM变速效果,它就会以相对于基准BPM的倍率改变基准流速。例如我写了如下BPM变速:
由上文可知,谱面长度占比最多的BPM为203,那么谱面目前的基准BPM即203,而从第3拍的开头开始(即上图判定线所在位置),至第4拍的结尾结束,BPM为406,那么这一段的谱面流速就会变成2倍(406/203)。
但是如果我们删除掉BPM list中最后的那个203 BPM,效果并不是从第3拍开始谱面变为2倍速,而是:
因为谱面基准BPM已经变成了406,则203 BPM的区域相应的流速就变成了倍(203/406)
理解了BPM变速的实际原理后,变速还有很重要的一点原则是在添加或删改变速效果后要保证对音依然正确。
举例如下图:
如果我希望上图谱面中的三个note的流速加速到倍速,后面恢复1倍速,那么应该如何做?
如图,直接修改某一部分的BPM是最常见的错误,因为修改BPM不仅改变了谱面的流速,也改变了后面note的时间点
假设BPM是速度,谱面长度是距离。在距离不变的情况下,将速度修改至倍,则会对时间产生变化。
举一个简单的例子,一辆公交车依次经过10个站台,到达每个站台均花费1分钟,那么到达第四站需要4分钟,第五站需要5分钟,以此类推。如果公交车在前3站以倍速度行驶,到达第三站后恢复原速度,那么仅需要40秒便可到第一站,2分钟即可到第三站,到达后面的站点的时间点与之前相比全都发生了变化。而我们需要做的是将站点往后移,使得公交车最终依然以1分钟的时间到达第一站。也就是说,设计BPM变速时要保证note的时间点不变,谱面长度与BPM成正比变化。
因为经过了加速,原本间隔2/4的note变成了3/4间隔,同时这段时间内经过的谱面长度也拉长至倍,后面的所有note也全部向后移动了3/4。但是所有note所处的时间点均与加添加BPM前一致。
删除BPM后同理。
因为BPM变速可实现的效果绝大部分可以被effect代替,且编辑较为繁琐,笔者不建议大量使用此类变速。bug还多。
二、effect变速(绿线变速)
注1:Malody的effect变速,不完全等同与osu的绿线变速,此处绿线仅为泛称。
注2:Malody的effect系统尚不成熟,依然存在一些未知bug,在使用effect前请做好谱面可能崩溃的心理准备。
effect是Malody内置的一套谱面效果,目前仅可通过编辑谱面文件实现,而不能通过Malody内置编辑器直接编辑。移动端想要编辑effect十分繁琐,笔者建议使用PC端,下文对effect的补充说明也均使用PC端演示。
首先想要编辑effect,就要找到对应的谱面文件:
Malody所有谱面均存放于Malody/beatmap目录下,以文件夹形式存放。
如果是从游戏内商店中下载的谱面,则文件夹统一使用“_song_xxxx(谱面对应的sid)”命名。并且文件夹内存在一额外目录用于区分不同模式的谱面:
如果是从外部渠道导入,则会创建与导入文件同名的文件夹存放谱面。
一个合格的谱面文件夹应含有三个部分:谱面文件(.mc)、歌曲文件(.ogg)、背景图片文件(.jpg)。
注:实际上Malody可以读取大部分音游的不同格式的谱面,同样的,歌曲文件和背景图片也可使用其他格式。此处mc文件仅指使用Malody内置编辑器生成的Key模式谱面文件,ogg和jpg文件也仅指mc文件支持的默认文件格式。
其中谱面文件即mc文件,本质是一个文本文档,可选择使用记事本打开并编辑。
由于谱面编辑器本质上也是修改文件中的文本来修改谱面,所以直接修改谱面文件也有同样的效果。
修改谱面信息时请保证谱面语法正确,谱面中所有标点均为半角符号(即英文输入法所使用的符号),关键词、引用文件、标点符号等均要求格式正确,否则谱面无法在游戏中读取。
下面将依次说明谱面文件中各部分关键文本的作用。
第一部分为谱面的信息:
creator:谱师名称
background:背景图片
version:谱面难度名
preview:预览时间
id:此处为谱面cid,若未上传至Malody官网则无该值
mode:0指key模式谱面
time:创建时间(无实际作用)
song:歌曲信息,title指歌曲标题,artist指艺术家,此处id指歌曲sid(该栏中若有titleorg和artistorg则指歌曲原名和艺术家原名)
"mode_ext":{"column":4}:该Key模式谱面有4条轨道
time:谱面的BPM值,每个大括号内确认一个BPM,格式为{"beat":[A,B,C],"bpm":X},相互用逗号隔开,其中前半部分"beat":[A,B,C]确定BPM值的位置,后半部分为BPM的值。例如图中{"beat":[0,0,1],"bpm":}意思是从谱面第1个beat的0/1处(即第1拍开头)开始,BPM为192。
如{"beat":[99,1,3],"bpm":}则指从第100 beat的1/3处开始BPM为100
游戏内只允许使用~1000的BPM值,而实际上通过修改该栏可添加大于0的任意BPM(若谱面长度超过50000beat则谱面编辑器容易崩溃,请谨慎使用),若添加BPM小于等于0,产生的后果自负。
下一部分为effect栏和note栏
effect栏默认为空,且不可被Malody内置编辑器编辑,具体如何在谱面中使用effect将在下文详细描述。
note栏即存放谱面中note的部分,游玩时Malody通过读取谱面文本依次生成note。一个note的格式为{"beat":[A,B,C],"column":X},其中beat确定note的位置,与BPM值类似,此处不再赘述,column则确定note所在轨道,填写0~3则对应1~4轨道。
Long Note(长条、面条、hold,下文简称LN)格式为{"beat":[A,B1,C1],"endbeat":[A,B2,C2],"column":X},endbeat用于确定LN尾部的位置,其余属性与beat相同。
note栏末尾为引用的音频,若谱面内没有引用Key音(Key sound),则应当仅存在一项:
sound即引用的音源,若没有Key音,则sound引用的文件即创作谱面所用的歌曲(.ogg),上图中引用的文件即与mc文件同目录下的文件,"beat":[0,0,1]表示歌曲从开头播放
vol:音频音量
offset:谱面偏移,与谱面编辑器中相同
事实上,以上提到的所有内容的值,在语法允许的范围内均可修改。
note栏后面的部分,请勿随意更改。
在分析谱面构成后,可得知正确插入effect效果的位置。
目前已知的effect种类仅三种,分别为scroll、jump、sign,其中因sign不涉及变速效果且泛用性较低,本文不提及sign。
如果玩家打开mod中的const游玩谱面,那么谱面流速将恒定为1倍,不受BPM与scroll的影响,但是jump依然生效。
scroll的效果就是将谱面流速变为X倍(X可取有理数范围内的任意值)
注意,与BPM变速不同,scroll并不改变note的时间点,也就是说由于时间不变,谱面流速由于effect效果变为2倍,则相应的谱面长度也会变成两倍。相当于在游玩时不仅流速加倍,note之间的间距也变成两倍,整个谱面的长度增长了(但是谱面编辑器内看不到effect对谱面长度的影响,只能在游玩过程观察到)。
例如,甲与乙之间相距10米,甲以1m/s的速度走向乙,若在这一过程中施加scroll=2,则甲会以2m/s的速度向乙走去,但同时甲和乙之间的距离变成了20m。
同样的,甲与乙之间相距10米,甲以1m/s的速度走向乙,若在前5米施加scroll=-1,后5米scroll=1,则整个过程会变为甲乙一开始处于同一点,甲向后退5米后,继续前进5米,再次于一相遇。
若scroll=0,则甲乙一开始便处于同一点且甲保持不动。
也就是说,无论甲乙之间添加何种scroll,甲到乙的时间总是10s,和无scroll时一致。
scroll相对于BPM变速的优势在于其不影响note的时间点,无论填写何种数值的scroll均无需考虑对谱面本身及编辑谱面的影响,只需考虑其产生的视觉效果变化即可。
而且scroll比BPM的bug少得多。
若谱面中无scroll,则默认谱面scroll始终等于1。
jump的作用较难理解,我个人倾向的解释是谱面跳过一段原本不存在的距离继续播放。
依然用上文的甲乙举例,若在甲到乙之间5米处设置一个1米的jump,则甲和乙之间的距离就变成11米,在甲走到第5米时,会从第5米一瞬间(可视为未消耗时间)跳跃到第6米,继续从第6米走到第11米(jump依然不改变该过程所需的总时间(10s),这一点与scroll一致)。
而如果在甲到乙之间5米处设置一个-1米的jump,则甲走到第5米时会往回跳1米到第4米,同时,总路程也将变为9米。
或者也可以将jump近似理解为在一段无限接近0的时间内添加一个极大的scroll,使得一瞬间飞跃一段距离,类似于“闪现”或者“传送”,具体以哪种为例更容易理解,请读者自行判断。
上文已经提过effect的插入位置,而effect的格式与note的格式也类似,scroll和jump格式分别为{"beat":[A,B,C],"scroll":X}和{"beat":[A,B,C],"jump":X},如下图插入effect栏:
如果在谱面中输入多余的空格或换行,不影响谱面正常游玩。但在谱面编辑器内保存后,所有空格或换行将被清除。
effect书写方式与note相同,每个effect效果间用逗号隔开(最后一个effect后不要写逗号)。
上图中scroll的值为2,即流速变为两倍。jump的值为200,此处200指200ms,如果要知道jump实际跳过多少距离,则需要公式计算:
jump的距离(beat)=jump的值×当前位置scroll的值×当前位置的BPM/60000
要注意的一点是,当jump和scroll或note或BPM变化在同一位置时,谱面会优先触发jump,然后触发其它效果,也就是说此时jump的距离计算应当乘该位置之前的BPM和scroll的值,而不是同一位置的scroll。
以上图的例子来说,此处及之前的BPM均是192,则:
jump的距离=200×2×192/60000=(beat)
同样的,如果jump距离为2个beat,则反向计算可得:
jump的值=(jump的距离×60000/当前位置scroll的值)/当前位置的BPM
=(2×60000/2)/192
=
注意,当任何一物件(note,LN头,LN尾)与effect处于同一位置,尤其是effect数值极大(具体触发条件未知,请密切注意)的情况下,有可能出现物件消失的bug(实际存在但游玩时看不到,LN表现为整体消失),在使用时可以使物件与effect位置稍微错位以避免此类问题,如下图所示:
原本note与effect均处于"beat":[1,0,2]处,若此时note出现了消失的bug,则可按上图中方法将effect错位1/200 beat处理。但是错位量不宜过小,由于Malody最小的时间计量单位是1ms(本人推测),所以错位的时间不足1ms,二者会被视为依然处于同一位置。
变速的基础设计与应用
以对玩家读谱的影响分类,scroll变速大致可分为严格可读变速和非严格可读变速
一、严格可读变速
严格可读变速即在添加变速后不影响玩家读谱,直观地讲,就是加了一组变速之后,两个note之间的距离和无变速时是一样的。前面提到过的BPM与effect变速均会改变note的视觉位置,下文将阐述几种严格可读变速。
1、bump与inverse bump
bump,即在击打note之前一段距离内(一般较短)谱面先减速后加速,inverse bump与之相反,为谱面先加速后减速。这是两种最基础且最常见的变速类型,因为其简单易懂并且在几乎任何音游内都可以实现。
从视觉方面的角度来说,一个速度更快的note展现出的“冲击力”比正常的note更大,其打击感也更强,更 能强调这一位置note的强度。
为了增强打击感,上图33 beat开始至3/4处BPM为285即倍速,根据之前提到的BPM变速,此处实际上加速了1/2 beat的时间,那么根据以下式子可算出后1/4的距离内形成严格可读变速的BPM:
① (前一部分距离占比×基准BPM/前一部分BPM)+(后一部分距离占比×基准BPM/后一部分BPM)=1
或:
② (前一部分时间占比×前一部分BPM/基准BPM)+(后一部分时间占比×后一部分BPM/基准BPM)=1
二者都是由速率公式v=s/t推导而来,此处不做过多论证。
对于上图,若已知前半部分加速的时间占比(1/2)和流速倍率(285/190),要求后半部分BPM,则将数据代入②可得:
(1/2×285/190)+[(1-1/2)×X/190]=1
计算易得X=95,即上图中后一部分的BPM。
由于该过程中仅有两次变速,所以只要同时规定任一部分的BPM与距离占比/时间占比,就可推导出另一部分的BPM值。
依然以本谱面该部分为例,若在前7/8部分添加的BPM为760,则利用上述公式可计算剩余1/8的BPM。
利用公式①可得:
(7/8×190/760)+(1/8×190/X)=1
X=
bump的计算也是同理:
而通过effect实现bump与inverse bump则简单得多。
以上图中的bump为例,因为effect不对时间点产生影响,所以只需要考虑每一部分速度倍率变化即可。
同时该过程也符合公式②:
(前一部分时间占比×前一部分BPM/基准BPM)+(后一部分时间占比×后一部分BPM/基准BPM)=1
易得其函数图像如下图所示,其中规定4Key下落式谱面的note从出现位置到判定线的方向为速度v的正方向,时间t规定为一首四四拍歌曲中一拍所经过的时间为一个单位时间,单位为beat,后文描述的函数图象均以此规定。
鼠标画的,别骂我
bump和inverse bump给予玩家的感觉是截然不同的,即使二者连数值都一样的情况下。正如上图中bump所示,在第33 beat开始时谱面会进入减速,由于严格可读的性质,note依然在原本距离,这就使得玩家在此处屏幕上可观察到的note数量相比于没有bump更少,并且这种效果bump的距离呈正比,与bump的强度(bump过程中,最大流速倍率越高,强度越大)呈正相关。如果接下来的物量很大,或者键型突然变化,会造成很大的读谱压力。运用bump变速时,要感受一下这一过程后的谱面配置会不会太难,如果太难,则你需要调整强度、削减接下来一部分的谱面难度或者修改变速类型。与bump相比,inverse bump则不会有这个问题,时间特别长但强度不是特别高的inverse bump,玩家可以重新调整读谱状态,紧盯减速的note到达判定区来击打的,而特别长的bump往往只能靠节奏感。总之,请比使用inverse bump更谨慎地使用bump。
以上提到的都是较常用得bump数值,在实际操作中,bump的速率变化和时间占比均为可控的变量,而当bump中较低的速率接近0,而较高的速率极大(一般为超过10倍)时,就可归类为瞬移和停滞的范畴,与加减速不同的是,无论瞬移还是停滞都会大大增加读谱压力。瞬移会减少玩家对谱面的反应时间。而停滞则会影响玩家对note击打时机的判断,如果note在画面中几乎静止不动,玩家会更难判断接下来谱面的流速变化。在添加停滞之前,请确保玩家拥有足够的时间并给予玩家一定引导,至于具体数值填写多少合适,请自行摸索。
2、加减速bump(reverse bump)
上述的bump公式无论①还是②,其等式右侧均为1,因为我们严格保持bump后的谱面的长度不变,平均速率为原速率。
实际上我们并不一定需要bump的平均速率严格等于1,不等于1的时候理论上会影响读谱难度,我们可以反向利用这一点,故意制造平均速率不为1的bump来增加谱面的难度。
譬如故意添加连续相同的、平均速率倍的inverse bump,少量的减速并不过分影响读谱,依然近似属于严格可读的范畴,在重复性和节奏感强的段落能够更有效的抓取玩家的注意力,同时提高击打note的节奏感。
3、平衡BPM变化产生的流速变化
某些臭名昭著的有大量BPM复杂变化的歌曲,如Aleph-0、混乱少女♥そふらんちゃん!!、ANU、冥等,在游玩过程中若不希望流速随其BPM变化而改变,可选择在相应位置添加scroll使流速倍率平衡为1。
可选择在110 BPM的部分添加scroll=(240/110),其他BPM不为240也可执行相同操作,保证在游玩过程中流速始终近似等于1即可。Malody v3段位也使用了该方法平衡流速。
4、平滑过渡的scroll及用速率关于时间的函数描述更复杂的运动
如果你没有学过加速度及微积分,可以跳过这一段,直接到第5点。
由于scroll不影响时间点,所以我们可以轻松地画出scroll运动过程中的v-t图象,更容易描述其运动过程,而通过设计v-t图象,我们可以反过来制作一些平滑的scroll运动。譬如前面提到的inverse bump,我们可以作出其图象:
显而易见图中仅有2个变速点,即0和 beat时。
事实上这一过程可等效于如下图象:
上述两种变速运动表现出来唯一的区别是后者过渡更平滑,但相对于前者强度没那么高。
但是effect的格式注定了我们无法做到斜率和不等于零的函数图象一模一样,但是我们可以将该函数分割为无限多个矩形
类似上图中的第三张图。也就是说只要把该函数图象分割为足够多的宽度相等、高度近似等于当前函数值的矩形,即可近似达成该函数图象的效果。
例如一组非平滑的inverse bump,其scroll如下,关键作用部分为下图中蓝色部分
按上述方法分割这一过程,可得
从左到右依次取21个点的函数值作为scroll的值。
该过程通过的位移量为{ ∑( i = 1 , 21 ) [ - × ( i - 1) ] } / 21 = 1
所以分割后该过程通过的位移量与分割前完全相等,证明二者可相互替换,且后者变速过程更加平滑。
利用该分割方法,可以通过scroll使note做出更复杂的运动,例如以下三角函数v-t图象描绘的运动:
如图,函数表达式为v = sin( 2 π t ) + 1
通过Excel表格取21个点计算相应函数值可得下表
则将该函数图象按该分割方法均分为21份并填入scroll值如下:
如图,该函数均分为21份后,该过程通过的位移量:
{ ∑ ( i = 1 , 21 ) [ sin( 2 π i / 21 ) + 1 ] } / 21 = 1
该过程通过的位移量依然为1,证明该组scroll可以使note近似模拟上述三角函数描绘的运动。
注意,因为该函数图象在定义域内有中心对称点,所以均等分的份数需为奇数(例如上文例子中的21份,也可以切分成51份、101份),若函数图象为轴对称则无需考虑。实际上你不遵守这条也行,因为实际误差一般不大。
以上情况都是已知函数的情况下求得变速值组,而有些时候我们规定函数后并不能立刻得知函数表达式,例如下图:
缺少函数表达式,则无法取点分割,此时需要利用已知条件求得原函数。
如图已规定二次函数经过两点(0,2)和(1,),设二次函数表达式为v = a(t^2) + bt + c,则可列方程组:
① ∫ (0→1) v dt = 1 ② 2 = a×(0^2) + b×0 + c ③ = a×(1^2) + b×1 + c
解得:a = 3/2,b = -3,c = 2,则求得函数表达式:v = 3(t^2)/2 - 3t + 2
之后即可执行分割法操作。
通过微积分方程和求和公式几乎可以使用任何类型的函数描述note的运动速度状态,类似于Re:PhiEdit中用于描述判定线运动速度状态的“缓动类型”。
上述函数的图象均位于第一象限,即谱面流速始终为正,读者不妨自己尝试探索流速为负的情况,或许有更多收获。
5、掉帧
掉帧实际是由大量的时间短且均匀、强度大的bump与inverse bump堆叠而成(鉴于对玩家读谱的影响,通常采用inverse bump),利用inverse bump对谱面流速的影响(主要是流速低的那部分,流速接近0为宜,一般直接设置为0),营造谱面卡顿的效果。具体掉帧效果的程度由流速为0的部分占比时间决定,一般占比1/2为宜,如下图所示:
至于这种inverse bump在一个beat内到底要进行几组为宜,本人一般倾向于4~5组,如果歌曲BPM越高(大于200)且堆叠的inverse bump越多(超过10组),则掉帧的效果越不明显。而堆叠的inverse bump越少,则掉帧强度越大,对读谱影响也越大。具体作用效果如何,读者可自行探究。
事实上,即使是严格可读变速,如果其变速强度够高依然会影响一定可读性,使用时请尽可能保证歌曲该段落节奏足够明朗、容易抓,对于节奏型复杂或不常见的情况下不建议使用强度高的bump与inverse bump。
二、非严格可读变速
1、持续时间较长加速与减速
此处加减速指的是一个速度变化的过程,而非简单地以一个高或低流速通过某一段(譬如Arcaea自制谱师经常会将谱面休息段整体流速调至)。这一过程中速度通常是均匀变化的,这就意味着note的间距这这一过程中一直在改变(匀加速过程则note间距越来越大,匀减速则越来越小)
如图,note从第1拍倍速开始加速,至第8拍开始加速至1倍速,具体效果请读者自行体会。
需要注意的是。Malody播放谱面时的起点并非第1拍,而是在约-4拍位置(可能远不止这么长),所以实际上可以这样写:
在进入第1 beat加速时会更平滑。
减速则是与之相反的过程。人眼对速度变化的抓取是很敏锐的,几乎倍的速率变化都能够察觉到,使用时请注意好速度的变化量。
事实上,上述例子中加速差值过大(~1倍)会对读谱造成相当大的压力。通常可接受的长距离加减速范围为~倍速(极端情况下可以是~甚至更大),超过这个阈值后读谱的压力会骤增,具体如何控制,效果如何,请读者自行摸索探究。
2、闪现入场
在屏幕上未出现note前,接下来的note以极高的速度出现在屏幕中间比较合适的位置然后再相对正常地掉落(不一定是落到靠近判定线的位置)。为保证note在出现之前不被看见,通常闪现入场的短时间内scroll值极大,以保证其位移的距离足够长。
注意note出现后尽可能预留一定时间给玩家做出反应,正常人对视野范围中突然出现的物体反应时间基本是200ms,而反应后再到击打note依然需要一定时间,请自行判断预留给玩家的反应时间及其增加的读谱压力。
3、倒流
前面提到过,scroll的值可以为负,当谱面流速呈负值时,note朝正向速度的反方向下落,在下落式谱面中表现为由判定线向note生成点移动。
以Phigros中Mobilys IN 14为例,其谱面开头第一个note处即使用了先倒流后流速回正的做法,其大致v-t函数图像如下:
显而易见,这一段过程中总位移是0,也就意味着平均速率为0,视觉表现出来就是:note在开始倒流前已经到达判定线位置,此时note倒流1/2 beat的时间,并减速至停止于中间某一位置,接下来1/2 beat从0加速,至1倍速时到达判定线被击打。
如果这里平均速率不为0,那么就不会有倒流前到达判定线位置的效果。
所以设计谱面倒流时,要确保平均速率的正确,才能达到准确达到想要的效果。
以Glitch Character 4K SC (c50851)为例,其中有以下effect,第一个note位于第14 beat
不难看出这是一个开头谱面倒流的效果,而且流速为-20,倒流给人感觉力度非常强。但是一开始谱师就将流速设置为20000倍,正向位移量远大于负向,这就意味着谱师给凭空谱面增加了长度。而实际上因为上图中前3个scroll过程均没有note,所以凭空增加的这一段不影响所要达成的效果,这样写是可行的。
而倒流的使用方式远不止上文所说的内容,读者可以自行发挥。
三、jump
jump是Malody特有的一种效果,前文已经分析过其原理。
前面提到过,jump可以等效地被极短时间内值极大的scroll代替,但一般不建议使用后者。
1、闪烁
由于jump是一个事件而非过程,所以jump不具备过程性,这也是其不可被scroll代替的原因。
而如果使用jump在谱面正常播放note时跳跃到其他的位置,短暂停留后跳跃回原本的位置(正向跳跃与反向跳跃无特殊情况下jump数值理应相同),谱面中就类似突然闪出另一个画面。
2、抽帧
区别于前面提到的掉帧效果,抽帧是类似在视觉上“删去”画面中的物件而造成卡顿效果。
“删去”画面的物件,就是利用闪烁,将闪出的画面定为无物件的谱面位置,造成谱面中出现一瞬间物件全部消失。
与掉帧效果类似,如果把jump跳跃到无note位置再跳跃回来称为一组,大量的这种闪烁堆叠而成就是抽帧效果:
jump数值此处方便演示均为-9999与9999,即往回跳跃到相应位置(距离公式在上文已经给出,具体跳跃至何处可自行计算,一般情况下-9999是不会出现问题的),实际使用中需要根据情况判断数值。
抽帧过程中闪烁无物件画面时间越长,对读谱影响越大,而如果一组闪烁时间过短(小于15ms),则效果会变得不明显。
3、LN闪烁
首先要说明一下Malody LN的形成方式,一个完整的LN由头、身、尾三部分组成,谱面文件记录的是头与尾所在的位置,在游玩过程中,LN头与尾的位置分别调用皮肤中的贴图,而在两贴图之间填充LN身的贴图(具体填充方式由皮肤决定)。而在击打过程中,LN头部分在按下后保持位置不动,直至与LN尾贴图接触,LN被视为结束,不再调用皮肤贴图。
也就是说只要保证LN头尾不接触,这个LN在视觉上就不会消失(某些皮肤的原理与此不同,但表现效果差别不大)。同样的,若LN头尾提前接触,则LN提前在视觉上消失,但实际依然存在。
利用该特性,可以在按住LN时通过控制LN速度变化,进而改变LN运动呈现的视觉效果(伸长、缩短等等)。
以Tojita Sekai 4K Phantasmagoria (c125448)为例:
主要讲解[656,1,30]到[659,28,30]这一段,如果你亲自打过这张谱的这一部分,就能明白这一长串的jump效果是什么。本段设计原理是:当玩家已经按住LN后,一次jump跳跃至接近LN尾的位置(直接跳跃至LN尾会导致头尾相碰,LN消失,且这一瞬间谱面流速依然为1倍,所以距离LN尾请预留一定距离),此时屏幕中LN看起来像是整个消失(实际是LN尾缩短至接近判定线位置),经过一极短的时间,jump跳跃回此时LN在正常流速下到达的位置,表现出的效果为一瞬间LN恢复成原状,这个过程即完成了一次闪烁。上图中从[656,1,30]开始执行1/30正向跳跃与1/30反向跳跃的过程(不是从[656,0,30]开始是因为该位置有note,不宜与jump共存,同时考虑到该过程的对称性,削去了原本[656,29,30]的一个jump),重复这一过程,便能完成LN闪烁这一过程。
同样的在谱面经过LN这一过程中,也可使用scroll控制LN长度,不过效果如何,可自行摸索。
4、叠加谱面
由于大部分显示设备已支持120Hz甚至更高的刷新率,也就意味着屏幕每秒钟可播放至少120帧游戏画面。如果第一帧画面播放某位置的谱面,第二帧播放另一位置谱面,第三帧切回原本的谱面,如此往复,最后可得到一个持续闪烁并且看起来由两个的谱面重合得到的的谱面,由于一秒经过120帧,此处极短的闪烁对读谱几乎无影响。
也就是说,我们可以将完全不同的两组物件的画面叠加在一起,但实际只有第一组在原本位置的物件可被击打,第二组物件仅作观赏效果用。
而如果在画面切到第二个位置的谱面时,用scroll更改其速率,那么我们就能得到两个速度不同的谱面重合得到的的谱面。但此效果仅是本人设想,并未具体实践过,可行性如何还是未知数。
关于变速谱面设计
变速谱,最主要的目的是表达音乐与服务玩家,这一点与普通谱面并无区别。我们之所以创作变速,是因为变速能表达出note的排列表达不出的内涵,即更好地。之所以写严格可读变速,是为了在更好地表达音乐同时,不破坏难度曲线的平衡,使玩打起来更舒服,即服务玩家。一张优秀的变速谱,其表达音乐和服务玩家,二者应该是高度统一的。
在创作变速谱面时,要时刻把握谱面的定位。这张谱面变速多还是少?严格可读还是牺牲可读性换取表现力?牺牲可读性后会不会严重影响到难度曲线?这些都应该是在设计谱面的过程中需要理清的问题。某些谱师仅仅是按自己的想法随心所欲添加变速,缺乏逻辑性,甚至可能破坏谱面思路的连贯性。也有某些谱师整张谱面仅仅在谱面刚开始或某些衔接处添加几个强度不大的变速,这种做法且不论是否能增色谱面整体的表现力,玩家打完一整张谱甚至都不一定记得变速的效果。明确定位谱面,有助于架构整张谱面的变速逻辑。
排列与变速设计之间要避免产生冲突,二者实际上是相辅相成的。有时由于变速强度过高等原因,排列需要给变速让步,削减排列难度来保证整体难度曲线平衡。有时变速也需要让步于排列,当排列的表现力已经足够时,就需要考虑变速的加入是否还合适,又回到了思考谱面类型定位的问题上。
构建变速逻辑,即谱面的变速整体效果应该如何设计。某些谱面的变速单拎出某一段效果不差,但是从谱面整体角度来看是不合适的。譬如仅仅在谱面一开始塞入大量变速,开头的变速表现力确实很足,给玩家的惊喜的感受,但正因此,玩家就会在接下来的部分期待更有意思、表现力更强的内容。如果打到最后玩家都没有发现更好的段落,那么反而会引起玩家无聊、厌倦,这就是变速谱弄巧成拙的一例。
同样地,变速的滥用会导致想要突出表达的部分被弱化,如果你整张谱面从头到尾都充斥着大量变速,甚至大部分都是重复的效果,玩家从头打到尾都是一个样,自然会觉得很无聊。也不要把变速当作万能的手段,碰到某些音乐中有特殊变化就立马想用变速表现出来,最后只会捡了芝麻丢了西瓜。
正确的变速逻辑,应当是明确谱面中要用变速强调什么,要怎么引导玩家,提高玩家对谱面的期待。譬如谱面结尾要提高表现力,那么在结尾之前可以不出现任何变速,而仅在结尾添加,更容易给玩家留下印象。另一典型的例子便是谱面true DJ MAG top ranker's song Zenpen (katagiri Remix),其一开始就是几处相当难打的非严格可读变速,给玩家一个信号:这个谱面会以非严格可读变速为主,且后面还会有更难读的变速,而事实的确如此,从头到尾极难读的变速充分调动了玩家的注意力。
高难度变速谱的设计主要是:在音乐节奏感强、谱面排列不是很难的部分插入相对易背的难读或不可读变速,让玩家在练习与游玩的过程中更集中注意力用耳朵去感受、分析音乐中的元素,抓好节奏,而不是仅仅靠目押。这其实更贴合音游的初衷,即理想的演奏感。不应当是“我看到这个note掉下来,所以我才按”,而是“我觉得这个时候应该按下去,所以我才按”。至于如何把握好插入变速的强度与方式,不至于欠缺表现力,也不至于太难而直接吓退玩家,这就需要读者自己去探究了。
sv是门艺术,可能你不同意,但至少,sv是常规定轨下落谱面中最具艺术性的内容。在做sv为核心的谱时,请大胆发挥想象力去创造,融入你对音乐的个人理解,暂且不用理会条条框框。按这样去天马行空地种,然后再细心地考虑多方面的因素,慢慢调整,很可能需要整段remap也不用灰心,创造力是最重要的。大胆尝试,细心完善,小心定稿。——大头家
本文提及的全部内容,均为本人在Malody摸索创作变速谱面的过程中归纳总结得出。变速谱面的设计上限远不仅仅是本文提到的部分,还有更多的优秀的变速设计,碍于篇幅原因不再赘述。希望读到这里的读者能够秉持对谱面的探索学习精神,自己亲自动手试一试文中提到的效果,努力创作出属于自己的优秀的变速谱面。
感谢认真读到这里的你。
关键词: