0628 更新

This commit is contained in:
OLDREDSTONE 2025-06-28 16:48:49 +08:00
parent 5dab36288b
commit c7b6c35ddc
17 changed files with 88 additions and 28 deletions

View File

@ -1 +0,0 @@
<!-- _navbar.md -->

View File

@ -33,6 +33,7 @@
- [<img src="/indexicon/beatpatterndesign.png"/><p>采音和节奏设计</p>](/pages/beatpatterndesign.md)
- [<img src="/indexicon/chartdesign.png"/><p>关卡设计</p>](/pages/chartdesign.md)
- [<img src="/indexicon/audiodesign.png"/><p>音效设计</p>](/pages/audiodesign.md)
- [<img src="/indexicon/twoplayers.png" width="64px"/><p>双人模式设计</p>](/pages/twoplayers.md)
- [<img src="/indexicon/accessibledesign.png"/><p>无障碍设计</p>](/pages/accessibledesign.md)
- 进阶:视觉特效
- [<img src="/indexicon/room.png"/><p>房间</p>](/pages/room.md)

View File

@ -26,7 +26,7 @@
homepage: '/pages/intro.md',
loadSidebar: true,
loadNavbar: true,
coverpage: true,
coverpage: false,
maxLevel: 5,
subMaxLevel: 4,
mergeNavbar: true,

View File

@ -8,7 +8,7 @@
### 带X拍子
在编辑器中翻译为X字拍子。心跳有时候会**跳过一些拍子**,但我们仍然需要在拍子抵达时抓住时机按键。当电图线路上出现**红色的X字**时,就意味着这些拍子会被跳过。这个时候你需要在头脑里继续数数,然后照常在第二拍处按键。
在编辑器中翻译为X字拍子。心跳有时候会**跳过一些拍子**,但我们仍然需要在拍子抵达时抓住时机按键。当电图线路上出现**红色的X字**时,就意味着这些拍子会被跳过。这个时候你需要在头脑里继续数数,然后照常在处按键。
`1-2 亲密`中被首次引入,且在大量关卡中出现。
@ -22,13 +22,13 @@
### 摇摆普通拍子
也称心脏梗阻。他们的心跳会出现不规则的拍子,因为心跳信号的工作不正常,节拍也会呈现不规则的感觉。无论如何,也请在第拍按下空格。
也称心脏梗阻。他们的心跳会出现不规则的拍子,因为心跳信号的工作不正常,节拍也会呈现不规则的感觉。无论如何,也请在第拍按下空格。
`3-3 分离二重唱`中被首次引入。
### 网好卡菌
在编辑器中应设置为电击拍子。无论发生什么都要在音乐的第拍按下空格。
在编辑器中应设置为电击拍子。无论发生什么都要在音乐的第拍按下空格。
`1-X 东方不眠夜`中被首次引入。

View File

@ -22,7 +22,7 @@
## 设置游戏音效
除了节奏音效和按拍音效之外,游戏里还有一些地方会出现音效,主要是失误的时候(分为微小失误和严重失误),没有节拍却按了空格的时候(默认是“啵”一声,所以在编辑器里面叫“手掌-啵音”),第拍按下之后第八拍“咚”地一声回音(叫做心爆,这时候心脏图标也会小抖一下),以及跳过拍(嘎↘的声音),长按拍,冻结拍,灼热拍的音效。
除了节奏音效和按拍音效之外,游戏里还有一些地方会出现音效,主要是失误的时候(分为微小失误和严重失误),没有节拍却按了空格的时候(默认是“啵”一声,所以在编辑器里面叫“手掌-啵音”),第拍按下之后第八拍“咚”地一声回音(叫做心爆,这时候心脏图标也会小抖一下),以及跳过拍(嘎↘的声音),长按拍,冻结拍,灼热拍的音效。
这些音效在设置的时候是无法下拉列表选择更改的,只能通过键入游戏内置的音效文件名,或者导入自定义的音效来改变。目前已公开的内置音效文件名因为数量太多,集中收录在了[附录3](../appendix/3.html)中。

View File

@ -1,5 +1,11 @@
# 更新信息
#### 2025-06-28
- 添加了~~吐槽~~样式
- 修复了批量替换遗留问题
- 修复了样式混淆
- 添加了[双人模式设计页面](../pages/twoplayers.md)
#### 2025-06-08
- 修复了一些死链
- 添加了新的 otto 插图(没错作者又更了)并修改了更换逻辑

View File

@ -7,7 +7,7 @@
- [Sterix_Craft砹氪硒](https://space.bilibili.com/349090681)
- [T_Terrence](https://space.bilibili.com/455443751)
- [mfgujhgh](https://space.bilibili.com/1369651)
- [喜欢精灵宝可梦的黄黄](https://space.bilibili.com/589687399)
- [龙俟城](https://space.bilibili.com/589687399)
- [卢毅](https://space.bilibili.com/26101629)
- [RaYmondCheung](https://space.bilibili.com/1579208)
- [NoMathExpectation](https://space.bilibili.com/184862524)

View File

@ -49,14 +49,14 @@
</div>
<!--
| 普通拍子轨道 | 人物  | 前六拍左侧 | 前六拍中段 | 第二拍左侧 | 第二拍右侧 | 心脏之前 | 心脏  |
| 普通拍子轨道 | 人物  | 前六拍左侧 | 前六拍中段 | 第七拍左侧 | 第七拍右侧 | 心脏之前 | 心脏  |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 轨道1 | -0.5 | 1 | 0.5 | 1 | 0 | -2 | -2.5 |
| 轨道2 | -10.5 | -9 | -9.5 | -9 | -10 | -12 | -12.5 |
| 轨道3 | -20.5 | -19 | -19.5 | -19 | -20 | -22 | -22.5 |
| 轨道4 | -30.5 | -29 | -29.5 | -29 | -30 | -32 | -32.5|
| 单发拍子轨道 | 人物  | 前六拍左侧 | 前六拍中段 | 第二拍左侧 | 第二拍右侧 | 心脏之前 | 心脏  |
| 单发拍子轨道 | 人物  | 前六拍左侧 | 前六拍中段 | 第七拍左侧 | 第七拍右侧 | 心脏之前 | 心脏  |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
-->
**删除**:删除这个精灵。

View File

@ -16,11 +16,11 @@ eb.PulseFreeTimeBeat 6 0[pulse=9];
eb.PulseFreeTimeBeat 7 0[pulse=9];
```
我们选中数字1对应的节拍发现这个是设置起始脉冲位置的。你甚至可以将它改为第拍,然后把六个小的`>`删掉,这样就没有任何节拍提示。如果你设计的关卡是一个和节奏医生没什么关联的创意谱(梦幻联动?),且按键密度很大,则可以考虑这样使用。相比于工作区里面重叠摆放一大堆普通普通拍子,这样会看上去更清爽。但如果你设计的就是节奏医生,**请不要在完全无节奏提示的情况下直接响起第拍**。
我们选中数字1对应的节拍发现这个是设置起始脉冲位置的。你甚至可以将它改为第拍,然后把六个小的`>`删掉,这样就没有任何节拍提示。如果你设计的关卡是一个和节奏医生没什么关联的创意谱(梦幻联动?),且按键密度很大,则可以考虑这样使用。相比于工作区里面重叠摆放一大堆普通普通拍子,这样会看上去更清爽。但如果你设计的就是节奏医生,**请不要在完全无节奏提示的情况下直接响起第拍**。
![](../images/moreclassicbeats-endpulse.png)
剩下的大于号`>`即意味着心跳向右移动一格数到7的时候则需要按拍。点选之后把它改成 `<`,心跳还能向左移动一格;点击自定义,还可以任意指定到第几个节拍。每一组自由拍**必须使用较大的节拍作为开头**,较小的则数量不限,直到数到第拍为止。
剩下的大于号`>`即意味着心跳向右移动一格数到7的时候则需要按拍。点选之后把它改成 `<`,心跳还能向左移动一格;点击自定义,还可以任意指定到第几个节拍。每一组自由拍**必须使用较大的节拍作为开头**,较小的则数量不限,直到数到第拍为止。
```rdview 10 2
eb.AddFreeTimeBeat 1 0[pulse=1];
@ -41,7 +41,7 @@ eb.PulseFreeTimeBeat 9 0[pulse=9];
如果你想让一串自由节拍最后不需要按拍,而是节奏直接消失,就把这一组自由节拍的最后一个点选**垃圾桶**符号。
> 如果你设计了一段无法数到第拍的节奏且不放置垃圾桶,那么心电图就会一直停在轨道中间。这很诡异。
> 如果你设计了一段无法数到第拍的节奏且不放置垃圾桶,那么心电图就会一直停在轨道中间。这很诡异。
接下来介绍一些社区机制。社区玩家们通过合理设计自由拍,并加以适当的提示,创造出了一些全新的节奏类型。其中一些节奏被广泛使用,并在社区中形成共识,从而延续下来。使用这些机制制作自定义关卡无需额外设计教学环节。当然如果你担心玩家不了解社区,或是你有其它自己的想法,也可以为这些节奏类型自行设计节奏提示的方法,唯一的宗旨是保证提示恰当准确。

View File

@ -29,7 +29,7 @@ eb.AddOneshotBeat 5 1[tick=0.75,loop=3,interval=1];
## 单发拍子护士提示
单发拍子与普通拍子不同之处在于,普通拍子可以观察前六次脉冲,推测出第拍的正确按键时机;但单发拍子只有一次脉冲,玩家无法仅通过单发拍子的脉冲得知按键时机。因此,为了能让玩家正确击打单发拍子,**必须为单发拍子添加护士提示**。
单发拍子与普通拍子不同之处在于,普通拍子可以观察前六次脉冲,推测出第拍的正确按键时机;但单发拍子只有一次脉冲,玩家无法仅通过单发拍子的脉冲得知按键时机。因此,为了能让玩家正确击打单发拍子,**必须为单发拍子添加护士提示**。
![护士语音设置](../images/oneshotbeat-whatshouldnursesay.png)

21
pages/twoplayers.md Normal file
View File

@ -0,0 +1,21 @@
# 双人模式设计
> 此页面处于初稿阶段,欢迎补充!
## 切换至双人模式
[在编辑器预览栏下](../pages/editorinterface.md)打开双人模式选项,这时候预览画面中的所有玩家操控的轨道会相应地变换。
由玩家 1 操控的轨道的默认颜色变为蓝色(`#0050FF`),心脏处会增加一个蓝色的 P1 图标;
由玩家 2 操控的轨道的默认颜色变为红色(`#AC0929`),心脏处会增加一个红色的 P2 图标。
指示轨道控制者的图标P1P2CPU都不会受轨道染色事件影响。
在播放关卡过程中会影响以下游戏元素的行为。
- 切换玩家轨道事件是为改变轨道控制者而设计的。将下拉单选框的选项改为`双人模式``单人或双人模式`时,事件就会在双人模式下执行。
- 编辑条件时将类型改为玩家模式,再在下面的玩家模式中选择双人,即可使应用了这个条件的事件仅在双人模式下执行。
## 多轨道设计
官方在 v0.18.0 时重新设计了大量关卡的双人模式版本。
在设计双人模式关卡时,最核心的要点就是:需要让玩家分清他所控制的轨道。这同时也适用于在关卡中将某个轨道托付给 Otto 时的情况。
在为单发拍使用护士提示时需要用两种护士音效以区分玩家,通常为 P1 使用的语音为**护士**P2 使用的语音为**伊恩**。你也可以根据实际场景交换这两者。
轨道的音效使用左右声道作区分(例如左声道只播放 P1 需要操控的轨道的音效而右声道相反)也是一个不错的选择。
当 P1、P2 交换轨道控制权时,需要使用护士语音 `Switch` 以提示即将交换轨道控制权。

View File

@ -5,22 +5,22 @@ let columny;
let positions = {
"c1": { "x": 64, "name": "第一拍" },
"c2": { "x": 88, "name": "第单发拍" },
"c2": { "x": 88, "name": "第拍" },
"c3": { "x": 112, "name": "第三拍" },
"c4": { "x": 136, "name": "第四拍" },
"c5": { "x": 160, "name": "第五拍" },
"c6": { "x": 184, "name": "第六拍" },
"c7": { "x": 249, "name": "第拍" },
"c7": { "x": 249, "name": "第拍" },
"ccharacter": { "x": 35, "name": "角色" },
"ccenter": { "x": 176, "name": "中心" },
"cheart": { "x": 317, "name": "心" },
"r1": { "y": 162, "name": "四轨时的第轨" },
"r2": { "y": 141, "name": "三轨时的第轨" },
"r3": { "y": 120, "name": "二轨时的第一轨/四轨时的第轨" },
"r1": { "y": 162, "name": "四轨时的第轨" },
"r2": { "y": 141, "name": "三轨时的第轨" },
"r3": { "y": 120, "name": "二轨时的第一轨/四轨时的第轨" },
"r4": { "y": 99, "name": "一轨时的第一轨/三轨时的第二轨" },
"r5": { "y": 78, "name": "二轨时的第二轨/四轨时的第轨" },
"r6": { "y": 57, "name": "三轨时的第轨" },
"r7": { "y": 36, "name": "四轨时的第轨" },
"r5": { "y": 78, "name": "二轨时的第二轨/四轨时的第轨" },
"r6": { "y": 57, "name": "三轨时的第轨" },
"r7": { "y": 36, "name": "四轨时的第轨" },
}
function themePosition() {

View File

@ -471,7 +471,7 @@ main.hidden {
}
.sidebar-toggle {
background: linear-gradient(to right, transparent 50px, #0ff8);
background: linear-gradient(to right, #0dd 50px, #0ff8);
border: 0;
outline: none;
padding: 10px;
@ -967,7 +967,7 @@ section.cover blockquote>p>a {
}
.markdown-section code {
border-radius: 2px;
border-radius: 4px;
margin: 0 2px;
padding: 3px 5px;
white-space: pre-wrap
@ -1227,4 +1227,27 @@ article.markdown-section:has(.intro)>.notice[onclick] {
&:hover {
transition: all 0.5s;
}
}
div.medium-zoom-overlay{
opacity: 0.5 !important;
}
del{
text-decoration: none;
background-color: #5C5D67;
color: #5C5D67;
transition: background-color 0.1s, color 0.1s;
border-radius: 4px;
cursor: pointer;
&:hover {
background-color: #7B7C84;
color: #7B7C84;
transition: background-color 0.1s, color 0.1s;
}
&:active {
background-color: inherit;
color: inherit;
transition: background-color 0.1s, color 0.1s;
}
}

View File

@ -128,7 +128,7 @@ body {
.markdown-section h3,
.markdown-section h4,
.markdown-section strong {
color: var(--section-background-color);
color: var(--section-color);
}
.markdown-section a {
@ -142,7 +142,7 @@ body {
.markdown-section code {
background-color: var(--section-main-color);
color: var(--section-background-color);
color: var(--theme-color);
font-family: d9c, d9;
}
@ -220,4 +220,8 @@ article.markdown-section:has(.intro)>.notice {
&[onclick]:hover{
background-color: var(--section-main-color);
}
}
div.medium-zoom-overlay{
background-color: var(--background-color) !important;
}

View File

@ -2,6 +2,7 @@ body.dark {
--main-color: #c8c8c8;
--main-theme-color: #008080;
--background-color: #1f1f1f;
--background-border-color: #303030;
--section-main-color: #0f0f0f;
--section-background-color: #003333;
--section-table-header-border-color: #303030;
@ -15,6 +16,8 @@ body.dark {
--notice-border-color: #303030;
--notice-hover-background-color: #525252cc;
-webkit-tap-highlight-color: rgb(0, 0, 0);
--special-theme-position-backgound-color: #177500;
}
body.dark .sidebar li>a:has(>img) {

View File

@ -2,6 +2,7 @@ body.light {
--main-color: #202020;
--main-theme-color: #008585;
--background-color: #dddddd;
--background-border-color: #b1b1b1;
--section-main-color: #00c9c9;
--section-background-color: #009999;
--section-table-header-border-color: #b1b1b1;
@ -15,6 +16,8 @@ body.light {
--notice-border-color: #b1b1b1;
--notice-hover-background-color: #e0e0e0;
-webkit-tap-highlight-color: rgb(255, 255, 255);
--special-theme-position-backgound-color: #05a000;
}
body.light .sidebar li>a:has(>img) {

View File

@ -114,9 +114,9 @@ div.theme-positions>.infobox {
width: max-content;
height: max-content;
padding: 3px;
border: 2px solid #535353;
border: 2px solid var( --background-border-color);
border-radius: 2px;
background-color: #363636;
background-color: var(--background-color);
text-align: center;
z-index: 20;
font-size: 15px;
@ -130,7 +130,7 @@ div.theme-positions>.infobox {
font-weight: bold;
&.c {
background-color: #177500;
background-color: var(--special-theme-position-backgound-color);
border-radius: 3px;
}
}