TAKANA³使用说明书 - 一文集合版

TAKANA³ 使用说明书

0.2.2 更新内容:

  • 添加了打击音
  • 添加了镜像以及镜像复制的功能
  • 添加了设置默认曲线族的功能
  • 轨道信息在只选中一条轨道时将占满整个编辑面板
  • 部分 bug 修复和 UI 改动

另请见二.4 三.6

一. 项目结构

1. 谱面工程

一个完整的谱面工程文件夹具备如下文件:

  1. music.mp3 - 音源文件。
  2. cover.jpg - 在编辑器中展示的背景图片。
  3. 难度.dlf - 谱面文件。其中难度的取值为{1, 2, 3, 4, 5},对应 Normal - Ravage。
  4. Takana_Data 文件夹,其内容如下:
    1. AutoSave 文件夹,用于存放自动保存的谱面文件。
    2. song.json,存储信息面板中记录的信息,如乐曲名、等级等。
    3. setting.json,存储编辑器中的部分设置,如 bpm、格线等。

谱面工程文件夹可以放在任何位置,只要在打开时选中对应路径即可。

一个新的谱面工程文件夹内最少仅需 music.mp3 一个文件,此时会采用默认背景,而其他文件将由编辑器自动生成。

2. 全局设置

TAKANA³.exe 所在文件夹 /TAKANA³_Data/StreamingAssets 中有如下文件:

  1. music.json - 存储游玩相关设置,如音频偏移,目前尚不确定(?)有没有用。
  2. global.json - 存储编辑器中一些全局设置,如自动保存的时间间隔等。
  3. Logs 文件夹,下存有编辑器捕获到异常时输出的日志。当遇到“出现未处理异常,请将日志汇报给作者”的提示时,建议保存谱面,并在该文件夹中找到对应的日志(根据日期找到对应文件,再根据[time]词条找到对应内容),将触发方式以及日志内容发送给作者或在 Github 上提出 Issue(目前最简单的触发方式是在还没加载谱面工程时向信息面板的文本框里输入内容,这个就不要汇报了)

3. 值得说明的内容

  • 该编辑器中所有的时间均为以毫秒为单位的整数。
  • 预览界面的正中心横坐标为 0 ,界面边界横坐标为 ±5 ,游戏边界线横坐标为 ±4.5

二. UI

main-ui.png

1. 顶部栏

  1. 切换点选方式:有单选和多选两种方式。单选方式下一次点击仅选中一个元件,如果元件存在重叠,多次点击可以切换选择不同的元件。多选方式下会选中全部在点选范围内的元件。
  2. 流速:目前没有与本家对应。
  3. 偏移:offset,仅可为非负数。
  4. 时间

2. 底部栏

  1. 撤销/重做按钮:也可 Ctrl+Z/Ctrl+Y
  2. 横向格线
  3. 纵向格线:间隔为两个格线之间的宽度,偏移为中心格线的位置,当偏移为 0 时,中心格线即在预览界面的正中心。
  4. 创建类型:也可按 ` 键切换。
  5. 图层:详细说明见 三.4 图层
  6. 音乐速度

3. 时间块

当开启横向格线时,在预览界面右侧的右侧白色区域内会出现与格线绑定的小方块,其即为时间块。当鼠标移动到某个时间块上时,其会变宽,此时单击,有以下两种功能:

  1. 将对应的时间复制到剪贴板。该功能可在设置面板中关闭。
  2. 如果在点击之前正在选中任意表示时间的输入框,则点击后会将对应的时间填入该输入框内,并完成编辑。

4. 右侧面板

  1. 信息面板:点击选择文件夹按钮以打开谱面工程,点击保存工程按钮或 Ctrl+S 以保存谱面和设置,点击难度名称切换不同难度,其余输入框目前仅有展示作用。
  2. 编辑面板:展示选中的轨道或者 note 的信息。具体内容在下一部分进行介绍。
  3. 音乐面板:调节音乐音量、音效音量,以及编辑 bpm 列表。
  4. 设置面板:关于轨道初始长度的设置项:当打开该项时,创建的新的轨道的初始时间长度即为对应的数值。否则,新的轨道将默认在乐曲末尾结束。

三. 谱面编辑

使用 Q/Space 切换播放状态。如果开启了左键暂停播放的设置,则在预览界面左键时会强制暂停播放。

1. Note

当仅选中一条轨道时, 右键 即可在对应时间放置一个 Note。如果是 Hold,其时间长度默认为相邻两格线的间隔。

Shift+左键 选中 Note,若同时按住 Ctrl ,则为多选状态,选中新的 Note 时将不会取消选中之前选中的 Note(注意与点选方式中的“多选”不同)。之后可以在右侧编辑栏中修改 Note 的时间,也可以通过快捷键来操作:

W/↑ S/↓ :以 10ms 为单位调整 Note 的判定时间

Shift+W/↑ Shift+S/↓ :将 Note 判定时间吸附到上下最近的格线上。

对于上述操作,如果在进行的同时按住 Alt ,则将以这种方式修改选中的 Hold 的结束时间。

2. 轨道

Shift+右键 生成一个新的轨道。当纵向格线开启时,轨道的左右两边默认位置为点击位置两边的格线位置,当纵向格线未开启时,默认宽度为 2

左键 选中轨道。若同时按住 Ctrl ,则为多选状态,选中新的轨道时将不会取消选中之前选中的轨道(注意与点选方式中的“多选”不同)。被选中的轨道的信息会显示在右侧编辑面板中,如下所示:

edit-track-content.png

运动列表中的每一项记为元组(time, x, curve),表示 time 时该边界的位置为 x,到下一个时间点的运动曲线为 curve。运动列表至少应有两项,因此开始和结束的项不得被删除。

在该编辑面板内,可以以两种方式修改曲线类型:输入缓动名称缩写、输入缓动名称编号。关于具体的缩写与编号内容,请见 五.1 缓动名称-缩写-编号对照表

实际上编辑器更希望用户可以完全用不上这个编辑面板,仅靠可视化编辑即可以完成这里面的所有功能。

3. 结点

当仅选中一条轨道时,会显示该轨道的运动轨迹,上面会有圆环,称为结点。每个结点即对应运动列表中的每一项。

Alt+右键 可以放置一个新的结点,即生成运动列表中新的一项。结点在左边界还是右边界取决于点击的位置。新结点默认曲线为 u 型曲线。

Alt+左键 可以选中一个结点,点击结点对应的曲线或结点本身都可以选中。若同时按住 Ctrl,则为多选状态,选中新的结点时将不会取消选中之前选中的结点。

Tab 键可以切换选中的结点对应的曲线的类型,仅会在当前曲线所在的曲线族内切换。

每个曲线族包括六种缓动方式,分别为 [Unmove, Linear, xxxIn, xxxOut, xxxInOut, xxxOutIn] 。每当按 Tab 键时,会将选中的曲线切换为其对应的下一个曲线。例如,选中的曲线为 SineIn ,则按 Tab 后切换为 SineOut ,选中的曲线为 BackOutIn ,则按 Tab 后切换为 Unmove

可以在设置面板选择启动制谱器时默认选择的曲线族。可以按 0-9 数字键 切换当前使用的曲线族。同时,如果当前有选中的结点,按数字键也会将该曲线切换到对应的曲线族。

可以按住 - 键查看数字与曲线族的对应关系以及当前使用的曲线族。

结点在时间轴上的移动与 Note 类似。特别的,如果对开始或结束的结点进行移动,会同时修改轨道的开始时间或结束时间。

结点在横坐标轴上的移动可通过以下快捷键来实现:

A/← D/→ :将结点向左或右移动 0.1 的距离。

Shift+A/← Shift+D/→ :将结点位置吸附到左右最近的格线上。

4. 图层

每个轨道都属于一个图层,若选中的图层并非某轨道的图层,则该轨道将不会显示,也不能被选中,但其上的 Note 仍然会显示。

创建轨道时,该轨道的图层将被初始化为当前选中的图层。

在底部栏的图层功能中,可以切换轨道图层。初始预设有三个图层:默认装饰基础

  • 默认 :选中该图层时,所有的轨道都会显示。如果一个轨道属于该图层,则选中任意图层时,该轨道都会显示。
  • 装饰 :具备 Note 的轨道将不能被设置为该图层。如果一个轨道属于该图层,则该轨道将不能放置 Note。
  • 基础 :预设的一个普通图层,与新建的图层效果相同。

可以点击底部栏图层功能上的“+”按钮来新建一个图层。新图层的名称不能为空或与先前的图层名称相同。新建图层后将默认选中该图层。

若希望给某一图层改名或删除某一图层,请在对应的谱面文件中操作。关于如何在谱面文件中修改图层,请见 四.1 全局设置

5. 复制粘贴

Ctrl + X 进行剪切, Ctrl + C 进行复制,Ctrl + V 进行普通粘贴, Ctrl + Shift + V 进行原位粘贴。剪切或复制的内容将会存入剪贴板中,单按 V 键查看剪贴板内容。

特别的,对 Hold 和轨道的复制,如果在复制之后修改了二者的状态,则粘贴时将会粘贴修改后的内容,即实际上剪贴板中存放的是对对应元件的引用

支持对 Note、轨道、结点进行普通粘贴和原位粘贴。注意,无论是哪种粘贴方式,都是将复制的内容中时间最早的元件的时间与当前鼠标位置对应时间对齐进行粘贴。

  • Note

普通粘贴:需在有且仅有一个轨道被选中的情况下进行,将会把剪贴板中的 Note 根据时间粘贴到该轨道上。

原位粘贴:需在没有轨道被选中的情况下进行,将会把剪贴板中的 Note 粘贴到其原来所属的轨道上。

  • 轨道

普通粘贴:除了时间改变外,还将根据粘贴时鼠标所处的水平位置对轨道进行平移,该水平平移的效果是当纵向格线开启时,将轨道的第一个左结点吸附到鼠标所处位置左边的第一条纵向格线,否则为鼠标所处位置

原位粘贴:仅改变时间,不改变水平位置。

实际使用中除了时间很短的轨道外,不建议使用轨道的复制粘贴,而应更多考虑能否使用结点的复制粘贴。

  • 结点

普通粘贴:会根据选中的轨道在鼠标所处时间的位置对结点位置进行水平平移,适用于在不同的轨道间复制运动效果。

原位粘贴:不进行水平平移,适用于在同一个轨道上重复某一运动效果。

6. 镜像

在选中轨道或结点时使用 Ctrl + M 将其镜像。

对轨道,还可以使用 Ctrl + Shift + M 进行镜像复制,即生成一个新的与原轨道镜像的轨道,而保留原轨道。

7. 其他

每个轨道或 Note 都有一个唯一的 ID,目前仅有标识的作用。随着谱面的更新,每次重新打开谱面时,ID 都可能会发生变化。

四. 谱面格式

谱面读取逻辑是根据正则表达式依次读取每行的内容,因此不能将多个语句放在一行中。

谱面由两部分组成:全局设置和谱面元件,二者之间用一行任意数量的“-”分隔。

除此之外,可以像常见的代码注释一样用//开头引入行注释。

1. 全局设置

  1. Offset

    1
    offset(time);
  2. 图层名称

    1
    layername(layerid1, layername1, layerid2, layername2, ...);

    即参数为正整数与字符串交替,每个正整数为图层的 id,其后的字符串为该图层的名称。 注意图层 id 至少从 3 开始 ,而 0, 1, 2 分别对应预设的默认、装饰、基础。图层 id 可以不必严格地按 1 递增,例如可以在缺失 id 为 5 的图层的情况下声明 id 为 6 的图层,但在编辑器中保存谱面时还是会将其恢复到按 1 递增的形式。

    在该语句中修改任意 layername 即修改图层名称。删除任意正整数字符串对即删除了某一图层。请保证删除后语句格式仍然正确。

  3. 图层顺序

    1
    layerorder(track1layerid, track2layerid, track3layerid, ...);

    按照谱面文件中 track 行的顺序为每个轨道赋予其图层。注意若用到了新建的图层,则该语句的上方必须有 layername 语句且声明了对应图层,否则对应轨道的图层将被设为默认。若参数数小于轨道数,则未设置图层的轨道的图层将被设为默认;若参数数大于轨道数,则多余的参数将被忽略。

    如果以后扩展出游玩模拟器的话,上述两个语句在游玩时将没有作用,可以删除。

  4. 自定义信息

    除此之外,可以自制想要存储的信息,格式为

    1
    key: value;

    读取谱面时会把这些内容存储起来,不过目前并没有什么用。

2. 谱面元件

  1. 轨道

    1
    track(timeStart, timeEnd, leftPosEnd, rightPosEnd);

    包含轨道的开始时间,结束时间,左边界的结束位置,右边界的结束位置。

  2. 位置信息

    1
    2
    lpos(time1, x1, curve1, time2, x2, curve2, ...timeEnd, xEnd, curveEnd);
    rpos(time1, x1, curve1, time2, x2, curve2, ...timeEnd, xEnd, curveEnd);

    分别为轨道的左边界和右边界的运动信息。该二者为绑定关系,必须同时出现于 track 行的下两行或不出现。括号中的内容为运动列表的每一项依序列出。要求必须在轨道的时间范围内,且时间单调非减。尽管可以有相同时间的两项,但在逻辑实现时容易因为排序导致二者前后关系发生变化,因此不建议这么做。

    time1 大于轨道的开始时间,则在一开始的这段时间区间内,边界的位置保持为 x1 。若 timeEnd 小于轨道的结束时间,则在结尾的这段时间区间内,边界将会以 curveEndxEnd 移动到 track 行中记录的 leftPosEnd / rightPosEnd

  3. Note

    1
    2
    3
    tap(time);
    slide(time);
    hold(timeStart, timeEnd);

    读取到任意 note 行时,会将该 note 分配至其上方最近的一个 track 行对应的轨道上。

五. 附录

1. 缓动名称-缩写-编号对照表

UnmoveLinear ,其余缓动的缩写均由两个字符构成,前一个字符表示缓动类型,后一个字符表示缓动方式。四种缓动方式的缩写对应关系为 In - iOut - oInOut - aOutIn - b 。一般似乎提到缓动时并不常有”OutIn”这种说法,但作者认为实际写谱时也挺经常用到的,所以默认加上了。

每种缓动类型还对应一个编号,按数字键可以根据该编号切换使用的曲线族,而把该编号作为十位数,把缓动方式对应的数字作为个位数In - 2Out - 3InOut - 4OutIn - 5 ),即得到该缓动对应的编号。

编号速记:缓动类型根据Easing Functions Cheat Sheet (easings.net)上的顺序依次与 1 - 0 对应,并且 2- 5 刚好是 Quad - Quint。缓动方式对应的编号即为其在曲线族数组里的下标。

类型 Sine Quad Cubic Quart Quint
缩写 s 2 3 4 5
编号 1 2 3 4 5
类型 Expo Circ Back Elastic Bounce
缩写 e c b l w
编号 6 7 8 9 0

实际使用时也许你会觉得这 In、Out 怎么跟我想象的是反过来的?那你也许是对的。实际运动确实与编辑器中对应的名称是反过来的,这是为了与 Arcaea 里的 In、Out 从视觉上相符。如果你不了解 Arcaea 对 arc 的命名,可以选择在设置里勾选“反转编辑器界面的缓动名称”。

编辑器还提供了 RPE 风格的编号,即为 RPE 内编号对应地加上 100 。对于 RPE 内没有的曲线类型,则简单地顺延编号。

RPE 风格编号仅是为熟练 RPE 的人提供一个方便的途径。如果你没有用过 RPE 或不能熟练记得 RPE 编号与曲线的对应关系,建议使用 TAKANA³ 风格编号。

以下是完整的对照表。

曲线名称 曲线缩写 TAKANA³ 风格编号 RPE 风格编号
Unmove u x0 (x=0,1,2,3,4,5,6,7,8,9) 100
Linear s x1 (x=0,1,2,3,4,5,6,7,8,9) 101
SineIn si 12 103
SineOut so 13 102
SineInOut sa 14 106
SineOutIn sb 15 132
QuadIn 2i 22 105
QuadOut 2o 23 104
QuadInOut 2a 24 107
QuadOutIn 2b 25 133
CubicIn 3i 32 109
CubicOut 3o 33 108
CubicInOut 3a 34 112
CubicOutIn 3b 35 134
QuartIn 4i 42 111
QuartOut 4o 43 110
QuartInOut 4a 44 113
QuartOutIn 4b 45 135
QuintIn 5i 52 115
QuintOut 5o 53 114
QuintInOut 5a 54 130
QuintOutIn 5b 55 136
ExpoIn ei 62 117
ExpoOut eo 63 116
ExpoInOut ea 64 131
ExpoOutIn eb 65 137
CircIn ci 72 119
CircOut co 73 118
CircInOut ca 74 122
CircOutIn cb 75 138
BackIn bi 82 121
BackOut bo 83 120
BackInOut ba 84 123
BackOutIn bb 85 139
ElasticIn li 92 125
ElasticOut lo 93 124
ElasticInOut la 94 129
ElasticOutIn lb 95 140
BounceIn wi 02 127
BounceOut wo 03 126
BounceInOut wa 04 128
BounceOutIn wb 05 141