rd.rdlevel.cn/pages/moreclassicbeats.md

243 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 普通拍的衍生节奏型
## 分解为自由时长节拍
所谓分解为自由时长节拍,也就是可以随意定义拍子的节奏。有的时候我们为了契合音乐,或者实在是把剧情模式已有节奏打到审美疲劳了,就会想要利用自由拍在节奏机制上引入一些新花样。这个功能非常强大,但是对玩家的挑战也同样很大,如果没用充裕的节奏提示,那么对玩家来说势必就是一次初见杀。
我们把一个普通的普通拍子分解为自由时长节拍后,可以看到它变成了一个大的`1`和六个小的`>`
```rdview 8 2
eb.AddFreeTimeBeat 1 0[pulse=1];
eb.PulseFreeTimeBeat 2 0[pulse=9];
eb.PulseFreeTimeBeat 3 0[pulse=9];
eb.PulseFreeTimeBeat 4 0[pulse=9];
eb.PulseFreeTimeBeat 5 0[pulse=9];
eb.PulseFreeTimeBeat 6 0[pulse=9];
eb.PulseFreeTimeBeat 7 0[pulse=9];
```
我们选中数字1对应的节拍发现这个是设置起始脉冲位置的。你甚至可以将它改为第七拍然后把六个小的`>`删掉,这样就没有任何节拍提示。如果你设计的关卡是一个和节奏医生没什么关联的创意谱(梦幻联动?),且按键密度很大,则可以考虑这样使用。相比于工作区里面重叠摆放一大堆普通普通拍子,这样会看上去更清爽。但如果你设计的就是节奏医生,**请不要在完全无节奏提示的情况下直接响起第七拍**。
![](../images/moreclassicbeats-endpulse.png)
剩下的大于号`>`即意味着心跳向右移动一格数到7的时候则需要按拍。点选之后把它改成 `<`,心跳还能向左移动一格;点击自定义,还可以任意指定到第几个节拍。每一组自由拍**必须使用较大的节拍作为开头**,较小的则数量不限,直到数到第七拍为止。
```rdview 10 2
eb.AddFreeTimeBeat 1 0[pulse=1];
eb.PulseFreeTimeBeat 2 0[pulse=9];
eb.PulseFreeTimeBeat 2.75 0[pulse=9];
eb.PulseFreeTimeBeat 3.5 0[pulse=9];
eb.PulseFreeTimeBeat 4 0[pulse=9];
eb.PulseFreeTimeBeat 4.5 0[pulse=9];
eb.PulseFreeTimeBeat 5 0[pulse=9];
eb.AddFreeTimeBeat 5 0[pulse=1];
eb.PulseFreeTimeBeat 6 0[pulse=9];
eb.PulseFreeTimeBeat 6.75 0[pulse=9];
eb.PulseFreeTimeBeat 7.5 0[pulse=9];
eb.PulseFreeTimeBeat 8 0[pulse=9];
eb.PulseFreeTimeBeat 8.5 0[pulse=9];
eb.PulseFreeTimeBeat 9 0[pulse=9];
```
如果你想让一串自由节拍最后不需要按拍,而是节奏直接消失,就把这一组自由节拍的最后一个点选**垃圾桶**符号。
> 如果你设计了一段无法数到第七拍的节奏且不放置垃圾桶,那么心电图就会一直停在轨道中间。这很诡异。
接下来介绍一些社区机制。社区玩家们通过合理设计自由拍,并加以适当的提示,创造出了一些全新的节奏类型。其中一些节奏被广泛使用,并在社区中形成共识,从而延续下来。使用这些机制制作自定义关卡无需额外设计教学环节。当然如果你担心玩家不了解社区,或是你有其它自己的想法,也可以为这些节奏类型自行设计节奏提示的方法,唯一的宗旨是保证提示恰当准确。
> 学习使用社区机制之前建议先掌握[播放音效](../pages/audiodesign.md#播放音效)事件和[轨道涂色](../pages/rowfx.md#轨道涂色)事件。下文使用的所有自定义音效可以在<a href="/resources/sounds.zip">这里</a>下载。
## 切分音Syncopation
切分音的概念不难理解拍子的数量仍然为七个但是最后一个拍子响起的时间是在6.5拍的时候,即提早了半拍。这少的半拍时间是可以发生在任意相邻两拍之间的。早期版本的编辑器需要使用自由拍来制作切分音,现在在**切换为X字拍子设置**里,点亮激活拍子下方的`> > >`符号,就会将这一拍的时间缩短一半并自动添加提示音。每个轨道最多只能设置一个切分音位置。
![](../images/moreclassicbeats-syn.png)
添加完后会发现多了几个选项,各个选项效果如下:
**摇摆**:设置切分后的按拍点距离原来的提前了(拍长*摇摆)拍。
**音量&音高**:设置提示音的音量和音高。
**样式**:设置提示音的样式,鸣声是剧情模式里用到的,嘟声则是社区创造的,用哪种都可以。
**修饰拍子出现/消失音效**:只在使用鸣声样式才会有,用来提示切分音的出现和消失,嘟声则不需要。
需要额外注意的是,无论拍子之中是否有`X`,切分出现/消失和切分后第一拍的音效必须保留,只有剩下的音效是可以自行选择放置与否的。
## 八拍子8 Beats
八拍子就更好理解了,我们直接额外增加一个节拍,让按拍的时机在第八拍响起的时候。但是轨道上是只能显示七个拍子的,所以我们依然要依赖**分解成自由拍**,以`2 1 2 3 4 5 6 7`的形式响起节拍。设置的方法如下图所示:
```rdview 10 3
eb.AddClassicBeat 1 0[tick=6];
eb.AddFreeTimeBeat 1 1[pulse=2];
eb.PulseFreeTimeBeat 2 1[pulse=8];
eb.PulseFreeTimeBeat 3 1[pulse=9];
eb.PulseFreeTimeBeat 4 1[pulse=9];
eb.PulseFreeTimeBeat 5 1[pulse=9];
eb.PulseFreeTimeBeat 6 1[pulse=9];
eb.PulseFreeTimeBeat 7 1[pulse=9];
eb.PulseFreeTimeBeat 8 1[pulse=9];
```
**如何提示**
> 1. 将轨道边缘染成红色(参考颜色: `#FF0000FF`
> 2. 在第1拍使用 `beep_mid.ogg` 自定义音效
也可以使用内置的 `sndBeepMid` 音效。
八拍子也可以是摇摆拍,只需要将所有偶数拍选择并拖动即可变成摇摆拍:
```rdview 10 3
eb.AddClassicBeat 1 0[tick=6,swing=0.5];
eb.AddFreeTimeBeat 1 1[pulse=2];
eb.PulseFreeTimeBeat 2.5 1[pulse=8];
eb.PulseFreeTimeBeat 3 1[pulse=9];
eb.PulseFreeTimeBeat 4.5 1[pulse=9];
eb.PulseFreeTimeBeat 5 1[pulse=9];
eb.PulseFreeTimeBeat 6.5 1[pulse=9];
eb.PulseFreeTimeBeat 7 1[pulse=9];
eb.PulseFreeTimeBeat 8.5 1[pulse=9];
```
在八拍子中,**激活拍子**与八拍子的对应关系如下图所示。不要给第1拍和第3拍设置X拍子这样做它就相当于变回普通拍了。
![](../images/moreclassicbeats-8beat.png)
## 附点变速拍Temporal Shift
如果普通拍中间存在变速,则要使用变速普通拍,而其中的附点变速拍可以实现整拍长和附点拍长之间的转换。
整拍以4拍为基准时长加之它们对半分下去的拍子如0.250.5124拍。
附点拍整数拍时长加上其本身一半时长构成对应的附点拍如0.3750.751.53拍。
整数拍和附点拍是交错排列的,即`0.25<->0.375<->0.5<->0.75<->1<->1.5<->2<->3<->4`。附点变速拍可以将整拍长变成附点拍长,也可以反过来,但只能变化到排列里它**相邻**的拍长上。
```rdview 9 3
eb.AddFreeTimeBeat 1 0;
eb.PulseFreeTimeBeat 2 0[pulse=9];
eb.PulseFreeTimeBeat 3 0[pulse=9];
eb.PulseFreeTimeBeat 4 0[pulse=9];
g 4 0 0.5 1 #08f[offset=0 0 #08f0]{
eb.PulseFreeTimeBeat 1 0[pulse=9];
g 1 0 0.5 1 #000[offset=0 0 #0000]{
g 0 0 0 0 #0000[offset=0.25]{
eb.PulseFreeTimeBeat 0.75 0[pulse=9,offset=0.25];
g 0.75 0 0.5 1 #0000[offset=0.25]{
eb.PulseFreeTimeBeat 0.75 0[pulse=9];
g -1.75 0 3 1 #0000{};
};
};
};
};
eb.AddFreeTimeBeat 1 1;
eb.PulseFreeTimeBeat 2 1[pulse=9];
eb.PulseFreeTimeBeat 3 1[pulse=9];
eb.PulseFreeTimeBeat 4 1[pulse=9];
g 4 1 0.5 1 #80f[offset=0 0 #08f0]{
eb.PulseFreeTimeBeat 1 0[pulse=9];
g 1 0 0.5 1 #000[offset=0 0 #0000]{
g 0 0 0 0 #0000[offset=-0.5]{
eb.PulseFreeTimeBeat 1.5 0[pulse=9];
g 1.5 0 0.5 1 #0000[offset=-0.5]{
eb.PulseFreeTimeBeat 1.5 0[pulse=9];
g -2.5 0 4.5 1 #0000{};
};
};
};
};
```
**如何提示**
> 1. 在原节奏的即将换速的前一拍将轨道边缘染色,加速时染成`#0083FFFF`,减速时染成`#5C00FFFF`并播放自定义音效加快时播放click_mid_amp.ogg减慢时播放click_high_amp.ogg
> 2. 在新节奏的第一拍取消轨道边缘染色并播放自定义音效加快时播放click_high_amp.ogg减慢时播放click_mid_amp.ogg
<!--
具体的染色颜色和自定义音效请参考下表:
|速度变化|前一拍颜色|前一拍音效|后一拍音效|
|:--:|:--:|:--:|:--:|
|慢->快|#0083FFFF|click_mid_amp.ogg|click_high_amp.ogg|
|快->慢|#5C00FFFF|click_high_amp.ogg|click_mid_amp.ogg|
-->
## 倍速变速拍Arrow Clicks
变速普通拍的另一种形式是倍速变速拍,变速是拍长翻倍或减半,注意与附点变速拍区分。
```rdview 11 3
eb.AddFreeTimeBeat 1 0;
eb.PulseFreeTimeBeat 2 0[pulse=9];
eb.PulseFreeTimeBeat 3 0[pulse=9];
eb.PulseFreeTimeBeat 4 0[pulse=9];
g 4 0 0.5 1 #08f[offset=0 0 #08f0]{
eb.PulseFreeTimeBeat 1 0[pulse=9];
g 1 0 0.5 1 #000[offset=0 0 #0000]{
g 0 0 0 0 #0000[offset=0.5]{
eb.PulseFreeTimeBeat 0.5 0[pulse=9];
g 0.5 0 0.5 1 #0000[offset=0.5]{
eb.PulseFreeTimeBeat 0.5 0[pulse=9];
g -1.75 0 3 1 #0000{};
};
};
};
};
eb.AddFreeTimeBeat 1 1;
eb.PulseFreeTimeBeat 2 1[pulse=9];
eb.PulseFreeTimeBeat 3 1[pulse=9];
eb.PulseFreeTimeBeat 4 1[pulse=9];
g 4 1 0.5 1 #08f[offset=0 0 #08f0]{
eb.PulseFreeTimeBeat 1 0[pulse=9];
g 1 0 0.5 1 #000[offset=0 0 #0000]{
g 0 0 0 0 #0000[offset=-1]{
eb.PulseFreeTimeBeat 2 0[pulse=9];
g 2 0 0.5 1 #0000[offset=-1]{
eb.PulseFreeTimeBeat 2 0[pulse=9];
g -2.5 0 4.5 1 #0000{};
};
};
};
};
```
**如何提示**
> 1. 在变速前一拍的地方播放音效加快时播放arrow_up.ogg减慢时播放arrow_down.ogg
> 2. 使用“切换为X字拍子设置”将变速前1拍设置为箭头右键点击对应的位置如果由慢到快则为上箭头由快到慢则为下箭头
## 自创机制
对于超出社区机制之外的,完全由你自己创造的机制,一般而言都会使用电脑演示,演示几遍之后再切换给玩家游玩。在时间轴里是可以随时将轨道切换为玩家和电脑的,使用到的是紫色版块的**切换玩家轨道**事件。
界面也非常直观,这个并不需要过多介绍。只需要注意,在蓝色版块添加人物时也有这样一个功能,设置的是初始状态下人物由玩家还是电脑操作。
**什么时候需要引入自创机制**
> 1. 新机制的重复度高,即反复次数足够多
> 2. 易于采音
> 3. 简短易记,令人印象深刻
如果你想引入的机制在关卡中只有适合插入一两次,那就没有太大的必要强加机制。改为用其他采音或者干脆放弃这段采音,不要给玩家增加无谓的负担。
如果你想引入的机制连介绍起来都过于复杂,以至于玩家还没能在游戏中理解你的机制,就进入游玩环节了,那就要考虑考虑这个机制的合计是否合理了。
**引入机制需要注意什么**
> 1. 避免一个关卡内自创机制类型太多
> 2. 以玩家的游戏体验为基础
> 3. 节奏提示充足
机制过剩的核心概念就是,玩家所预期的机制种类越多,相对应玩家的游戏负担也就越重,同时关卡本身的节奏设计也会越发混乱。通常情况下一个关卡引入一到两个新机制就足够了。
当玩家打开编辑器的时候,就不能再是玩家了。这句话高度概括了节奏设计的思路。当你以谱师的身份打开编辑器,而非单纯的一个音乐/游戏分享者时,绝不可仅仅为了自己的“爽”而做谱,而是要为了真正玩到这个谱,甚至是初见这个谱的玩家来做谱。玩家会不会明白这里节奏的采音或者是节奏,能不能反应过来这里节奏的变化……这都是需要考虑的因素。
至于节奏的提示,除了电脑演示之外,还可以有一些画面和音乐方向的额外设计。画面提示,依然是以简单为基本,最好能清晰明了简单易懂。例如八拍子的提示仅仅是一个轨道涂色,但是清楚地提示了节奏的变化。声音提示,这对于一个机制来说是最重要的。八拍子亦如此,有着一个哔声。对于节奏医生来说,显然声音上的提示与画面上的提示同样重要,这也是无障碍设计的基础,因此不容小觑。
## 视频介绍
<div class="bv"><iframe src="https://player.bilibili.com/player.html?aid=449199899&page=1&autoplay=0" title="BPM 与偏移的校对教程" width="100%" height="100%" scrolling="no" frameborder="no" framespacing="0" allowfullscreen="true"></iframe></div>