Files
ichni_Creator_Studio/Document/ichni编辑器指南.md
2025-06-21 23:09:34 +08:00

306 lines
15 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.
# ichni编辑器指南
## 前言
和 arcaderpe 等制谱器相比ichni Editor 是十分复杂的~~建模软件~~制谱器。如果您是新手建议在Editor内~~玩玩~~上手。如果您发现有本教程中不完善的部分,请向 sls 反馈,我们会尽快(存疑)补充相关内容。
## 进入程序 新建项目
~~如果有一般的写谱经验那么大概都可以知道是做什么的~~
Project name项目名字即这张谱面的名字建议的是 “曲名” +“ ”+“难度名称”
Creator你的名字/谱师马甲
BPM节拍由于ichni是按照秒数存储谱面而有变bpm的曲子少之又少所以是固定bpm
不知道bpm是什么的[歌曲bpm是什么 - 搜索](https://cn.bing.com/search?q=%e6%ad%8c%e6%9b%b2bpm%e6%98%af%e4%bb%80%e4%b9%88&FORM=QSRE1)
bpm测试器[歌曲调性和BPM查找器 - 多功能音乐分析器](https://vocalremover.org/zh/key-bpm-finder)
Delay这里的Delay只是单纯的调整谱面开始的时间调为负数可以在歌曲开始前开始谱面如果有偏移offset的需求建议剪一下曲子
Song Location歌曲路径导入后歌曲存储在编辑器内与原路径的文件无关
**<mark>Theme Bundle Selection</mark>**:选择主题包,~~之后写~~
## 快捷键
注意颇多的快捷键都是在要鼠标在对应UI下才能触发的
### **场景操作**
1. **W**:向前移动场景相机。
2. **S**:向后移动场景相机。
3. **A**:向左移动场景相机。
4. **D**:向右移动场景相机。
5. **E**:向上移动场景相机。
6. **Q**:向下移动场景相机。
7. **鼠标右键**:按下时开始旋转场景相机,释放时停止旋转。
---
### **音乐播放器操作**
1. **Space**:播放或暂停音乐。
2. **右Alt**:临时播放音乐,松开后回到按下之前的位置
---
### **轨道操作**
1. **Alt + P**:显示或隐藏所有路径节点。
2. **Alt + D**:启用或隐藏所有轨道路径显示。
---
### **保存与导出**
1. **Ctrl + S**:保存项目。
2. **Ctrl + E**:导出项目。
---
### **复制、粘贴与删除**
1. **Ctrl + C**:复制选中的游戏元素(目前仅支持单选)。
2. **Ctrl + V**:粘贴游戏元素。
3. **Ctrl + D**:删除选中的游戏元素。
---
### **分辨率提示**
1. **Ctrl + 1**:切换到手机分辨率提示。
2. **Ctrl + 2**:切换到平板分辨率提示。
3. **Ctrl + 3**:切换到绝对安全区域提示。
---
### **UI 操作**
1. **Ctrl + U**:切换所有静态窗口的显示状态。
2. **Ctrl+ ↑/↓**放大缩小ui大小
---
### **摄像机切换**
1. **Ctrl + M**:切换摄像机。
---
### **元素选择**
1. **鼠标左键**:点击选择场景中的游戏元素(需不在 UI 上)。
## 某些具有特殊功能的窗口
### Logger
Logger窗口在播放控制器的上方会显示和程序有关的信息
> 绿色=执行没问题,白色=提示
> 红色=有重大问题截图发给开发者先保存项目并切记不要删除AutoSave
> 黄色=小警告,通常不影响正常写谱
### EditorManager
EditorManager会展示有些关于当前谱面的信息和开关某些东西网格判定模式等还有创建一些特殊元素
## 谱面结构
由于ichni的自由度极高其谱面结构偏向原生unity现在讲述简要功能
### Element Folder
本质上是一个空节点,拥有自己的位置属性,可以在下面放置其他的元素
### Camera
可以直接在folder下简单情况也可以放在cross Track Point里需要多机位的特殊情况需要注意的是**一张谱面只能有一个camera**
camera的职责很简单做一个camera。带着他或者他所在的folder和cross Track Point里的track乱动他也就动起来了
### Track
Track是ichni的核心元件以下分为几种
#### 基础TrackPath
TrackPath属性空间形状前进方式是否闭合
前进方式track的前进方式分为time和distancetime会把每两个pathnode之间的段分为相同的时间分别前进,diasance则会根据距离等量均分如果有缓动那么将会强制使用diasance
```示例
以下是一个示例(代码块仅示意,没有实际意义和语法)
new track{
pathnode0(0,0,0)
pathnode1(0,0,1)
pathnode2(0,0,10)
starttime:0
endtime:2
}
若是time模式下0到1秒的时间track从0到1而在剩下的1秒会从1直接冲到10
distance就不会
```
#### 路径方式
1. Movable
2. Static
#### 显示方式
1. AutoOrient
2. TrackPath
#### movable属性
开始时间,结束时间,可视长度,缓动
其中开始时间和结束时间是**track的头部**到达首尾的时间,而 结束时间+可视长度 则是**track尾**到达尾部的时间
在movable中note以<mark>固定的位置生成在track上</mark>在放note时切记判定时间要在track的启停时间之间
#### Static属性
下落时间,下落缓动
Static的track若是有选择显示方式则会始终显示整条track
在static中note从track的<mark>**尾部运动到头部**</mark>
#### 显示属性
无论是AutoOrient还是TrackPath都拥有一个材质系统你可以选择主题包中的材质两个显示方式不同的是track path会由于其中pathnode的方向而改变面的朝向而AutoOrient会强制track的面始终面向摄像机这段建议实操看看效果各有各的好
对于绝大部分始终处于同一平面内的轨道,应该使用 `TrackRendererPathGenerator` 的渲染方式,并且其所有节点的法向量应当一致,垂直于这个平面。当然,调整法向量也可使轨道扭转,制作各种特效。
而对于在三维空间运动的轨道,比如螺旋线,建议使用 `TrackRendererAutoOrient` 的渲染方式,使轨道法向量始终朝向摄像机。这样得到的轨道在视觉上是等宽的,比手动调节节点法向量要方便的多。
除了 `TrackRendererPathGenerator``TrackRendererAutoOrient` 两种轨道渲染方式之外,还有 `TrackRenderSurface` 这种方式。这种方式把**闭合轨道**围成的区域渲染成一个面。您需要注意:
- 调整节点的法向量,朝向不对会使面变得扭曲。
轨道宽度由节点的 `Scale` 来控制,默认 1。增加或减小这个值会使轨道变宽或变窄更改为 0 会使轨道不可见,一些谱面中轨道末端变细的特效就是通过这种方法实现的。此外,您也可以使轨道宽度突然变化以营造律动感。
### pathnode
无疑pathnode是track下最主要的部分但是也是最简单的部分~~但是扛不住量大~~
pathnode带有位置旋转缩放颜色等用于调整track部分的颜色
建议实操
### 事件
事件是一个很大的基础类包揽了track外几乎所有的动态效果
事件包含displacementswirlscale若是有过动效类型写谱的话事件系统应当不难理解
每当新建一个事件建议在0-1的位置放置一个打底事件本体有没有都没问题但是在编辑器下可能会导致一些问题
在一般的动画类中你应该可以看到除了三个动画表外的第四个按钮GraphicEditor
点击之后会打开当前动画的图形编辑器(去看图形编辑器的文档)
另外还有一个特殊的事件用在track下trackPercentPoint
trackPercentPoint使用0到1的值代表track进程配合trail使用可以实现 ~~反复横跳~~ 精细控制
还有一个trackHeadPoint是trackPercentPoint的简化版虽然不该放在这里但是我真的懒得开一个来讲
建议实操
### 缓动
缓动是控制数值随时间变化的参数,默认为 `Linear` 即匀速。更改缓动可以实现加速、减速及其他效果。
您可以在下图中查看各种缓动类型,对于加速/减速建议使用 `in/outQuad`,平滑淡入淡出可以使用 `in/out/inoutSine`。如果您想创建一个复杂的动画<font color = gray>(比如先加速后匀速)</font>,并且要无缝衔接,建议分两段制作,并慢慢调整数值使整体更为流畅。
如果您希望缓动能被看出来,请尽量延长缓动的时间。对于短时间的动画<font color = gray>(比如小于 1 秒)</font>,各种缓动的差别并不是很大。从另一个角度讲,如果动画的时间较短,那么一些瑕疵<font color = gray>(比如摄像机在前一个轨道的末尾和后一个轨道的开头具有不一样的速度)</font>也不会被看出来。总而言之,不要过度依赖数学计算,看上去是对的就行了。
关于缓动请查看:[缓动查看](https://easings.net/zh-cn) 或者直接去事件编辑器那里拉几个看看效果
### Trail
由于0.2旧版本的某些神奇效果使我们再次增加了TrailTrail的原型是unity的尾迹效果所以需要注意的是当用各种手段使trail瞬移的时候会拉出长长的痕迹
trail配有位置材质颜色等
>**编辑器存在的Bug**
>目前的Trail在暂停时会消失这是很头疼的一个点因为Unity组件原生原因这个Bug不大可能修复
>当然你不用担心,本体不会出现这个问题,如果没事,做完动效再播放一遍就是原本的效果了
### Note
#### 基础
note可以视为环境物体拥有击打时间击打效果等
exactJudgeTime 就是 Note 的判定时间。随后点击 New Note Visual ,展开 Note 可以看到 New Note Visual ,选中它,在右边的 Choose 那里下拉菜单选择 Note 样式所属的主题包。点击 generate Note Visual 就创建好了。此时您播放谱面,应该会有一个 Tap 落下并在相应秒被判定。
通过调整 position 即可实现无轨的效果Note 可以适当大些,这样在小屏幕上也不会显得太小。
创建 Stay 的过程与创建 Note 大同小异。选中 note 轨道,点击 Stay 以创建 Stay随后创建 Note Visual、
>**Stay 可以使用 Tap 的材质吗?**
>
>- 您可能注意到了,编辑器并不限制您做这件事。从视觉上讲,这相当于创建了一个判定更宽的 Tap因此逻辑上是被允许的。但是**Tap 不可以使用 Stay 的材质**这与读谱的基本逻辑相悖。Hold 的材质与上述两者有较大不同,不能和它们混用。
> **关于斜轨下落**
>
> 您可以从 sls 或其他谱师那里获取谱面进行学习。要注意的一点是,**确保斜轨 Note 在屏幕上的投影具有足够的宽度**。宽度太小意味着像素太少Note 会闪烁,造成不良观感。您可以通过以下几种方法来解决这个问题:
> - 使用 3d note
> - 让摄像机视角略微朝下
> - 将判定线贴近摄像机
击打时间:建议使用采音器=>见采音器指南
> **注意事项**
>
> - 请不要让 Note 的出现的时间过长,这会造成读谱困难。对于直轨下落,建议 Note 从出现 <font color = gray>(无论是从屏幕外进入还是从屏幕中浮现)</font>到判定时间不要超过 1 秒。对于斜轨下落请根据个人斜轨的游玩经验控制下落速度。由于电脑屏幕较大视觉上的流速应当偏快您可以录制视频并在移动设备上播放以确定流速是否合适或者直接让sls包一个本体看看效果。
>
> - 按Ctrl+123可以显示对应的安全范围。默认窗口大小为 16: 9。您的谱面应当尽量适配这三个范围如果做不到完全适配请至少不要把 Note 写到这些范围之外。
##### 导出 Note 配置
在导出 Note 配置之后,您就不必通过复制的方式创建 Note像之前那样单击轨道下的相应按钮即可新创建的 Note 会自动使用导出的 Note 配置。在noteinfo旁有save Note PrefabSave之后可以直接在顶上的EditorManger选择Use Note Prefab这样之后放置note就可以自动套用对应的Note Visual
#### 击打效果和判定模式
由于不同主题包拥有不同击打效果和判定模式在add页需要输入字符来创建
### Effect
#### 介绍
Effect是一个~~特殊的动画组件~~可以通过note的指定操作或者直接通过时间Time Effects Collection触发
每个可以添加Effect的地方都配有一个输入框可以搭配特效查阅表输入指定的Effect来调
比如DTM的NoteVisual有Perfect/Good/Bad/Miss字段在下添加Effect就是这个Note判定Perfect/Good/Bad/Miss时触发的特效在EditorManager里可以选择预览谱面时的判定模式
关于Effect以及分支控制我们会专门做一个Markdown来说明
### 环境物体
使用环境物体可以创建立方体、球等几何结构,可以创建假 Note 用于表演,也可以将节点绑定至环境物体上实现同步运动。具体怎么用问问 sls 吧,我也懒得写了。
## 谱面存档
望文生义,不必多说
### 自动保存
ichni每隔一段时间就会自动保存谱面如果要回档需要手动替换
### Clip
类似beta的export和import如果你选中了一个文件夹按s clip再命个名字这就相当于保存了一小段谱面。然后在别的地方用l clip读取好处就是可以跨越多个谱面起到一个类似预制件的作用。
### Export
这个属于与本体对接的功能,目的是生成本体用的加密版谱面
---
## 一般写谱流程
### 0寻找音源确定bpm选择主题包
### 1创建摄像机轨道
我们建议在开始创建谱面的第一个操作就是创建摄像机文件夹,因为摄像机是每个谱面都必须要有的元素。
在刚打开工程时,您是通过自由视角摄像机 `Scene Camera` 来预览内容的,但这并不是游戏本体使用的摄像机。想要您的谱面被正确显示在游戏本体上,您需要创建一个游戏摄像机 `Game Camera` 来“拍摄”您的谱面。
#### 创建摄像机文件夹
现有的两个移动game camera方法便是使用cross track point或者直接对摄像机所在的文件夹增加动画动画法可以直接参照其他元素的方法来进行创建而cross track point可以获取到文件夹内对应的track然后使用类似track precent point的设置来调节当然Cross track point里设有快捷设置所有的Track也就是说可以完全不用管cross track point的东西直接在文件夹下把track和对应的起止时间都写好然后直接使用paste track list粘贴所有的时间。
和beta版不同的是cross track point是会自动设置旋转的默认的旋转方向对应的是当前track的切线方向形象的说法就是你用track画一个圆然后设置之后不用手动操作你的摄像机就可以自动沿着圆旋转如果把y值设为了90它就可以始终看向圆的中心点
### 2创建track
#### 1, movable track
由于movable track的功能介绍早在前面有提及这里不过多介绍[关于MovableTrack](#movable属性)
需要注意的是尽量不要让track面的旋转垂直于屏幕也就是“不要竖着看一张纸”
当然如果是autoOrient自动面向摄像机当我没说
#### 2Static track
Static track适合生成装饰兼任下落note的方法
功能介绍早在前面有提及,这里不过多介绍:[关于StaticTrack](#Static属性)
### 3创建Note
Note的相关介绍[关于Note](#Note)
### 4其他。。。