这篇文章列出了谱面在通过谱面上架程序时必须遵守的规定和准则。
对于上架标准的任何修改建议,应通过上架标准论坛提出。
在上架标准论坛中创建提案。 尽量详细地解释你的新想法和修改造成的影响。
达成共识。 如果你认为时机已经成熟,请联系
谱面审核团队 (NAT) 的成员,来让他们决定修改提案是否可以实施。在一定程度上,NAT 可以在含有争议的情况下仲裁。但是如果提案没有达成普遍共识,则这个提案很可能无法通过。
在 osu!wiki GitHub 仓库中创建拉取请求 (PR)。 通常,这由参与讨论并确定提案的 NAT 成员完成。
如果不改变上架标准文章中的意思或意图,仅仅是修改文中的拼写、语法或组织结构时,无需发贴至上架标准论坛。但仍旧建议先咨询有经验的社区成员,来确定你的修改是否有帮助或受大家欢迎。
部分上架标准有单独的文章,并且适用于所有谱面,不论游戏模式、长度或任何其他限制。
简版上架标准: 由于这篇文章很复杂,简版上架标准简单概括了比较重要的上架标准。请注意,它并未包含所有情况,如果有任何疑问,还是应该查阅这篇文章。
视觉内容注意事项: 适用于 osu! 谱面背景、故事板、视频中包含的所有视觉内容准则。
元数据: 在填写谱面的歌曲信息时,应遵守的规定或准则。
额外地,根据谱面所属游戏模式的不同,它也需要遵守这些游戏模式自己独有的上架标准。
非常推荐您使用 Mapset Verifier (MV) 来辅助检查谱面是否符合上架标准。传统客户端 (stable 版) 内的 AiMod 工具已经过时且不再维护。同时,osu!(lazer) 客户端内的谱面检查工具仍在开发中。
使用前需注意:
同一时间不能放置两个或多个物件。 即圆圈、滑条和转盘覆盖的全部时间段不得出现重叠。osu!mania 模式除外。
圆圈与其后物件的时间间隔必须大于等于 10 毫秒,滑条尾与其后物件的时间间隔必须大于等于 20 毫秒。 osu!catch、osu!mania 模式除外。
背景图片、背景视频、故事板不得出现任何违规内容。 即不允许出现裸体、近乎裸体、性暗示、暴力、滥用药品(毒品)等元素。关于更详细的规定,参见
视觉内容注意事项。
保证谱面内的任何东西均遵守内容使用规范。 如果艺术家或者专辑在规范内列为不允许使用,则这些歌曲只允许在谱师获得明确的授权后才能上架。授权说明必须贴在谱面讨论页或谱面介绍内。
如果谱面包含快速重复的闪烁图片,或者视频、故事板内含有对比度、颜色、亮度快速变化的内容,则必须开启光敏性癫痫警告。 如果警告干扰了谱面游玩,则必须在歌曲前增加足够的开场空白时间。频率低于 3 HZ(1秒内闪烁3次)的闪烁图片一般无须担心。如果不确定是否有开启的必要,请预先开启警告,并在摸图时讨论。
谱面文件夹中不能有从未使用的文件或 0 字节大小的文件。 0 字节大小的文件会影响文件夹中其他文件的正常上传。仅自动生成的 thumbs.db
文件除外。
如果相同游戏模式下的难度包含相同的休息时间,或相同的故事板,则它们的休息段使用黑边填充背景
设定必须一致,
如果谱面包含某媒体作品的剧透内容,则必须在谱面描述中标注剧透警告。
注意:在本节中,osu!mania 中每个键位模式和游玩方法都被视为是互相独立的游戏模式。
谱面内所有游戏模式,都必须有连续合理的难度梯度。并且谱面的最低难度必须符合谱面掉血时间的限制。 不能跳过任何难度等级,任何相邻的两个难度之间也不能存在巨大的难易程度差距。
如果只将 2 首歌曲拼在一起,只能使用较长歌曲的长度来对应掉血时间要求。 这是为了避免人为操作来巧妙绕过以上时间限制。如果编入的两首单曲属于独家同时发布,则可无视此规定。
谱面的难度名称必须清晰准确地表示出它所属的难度区间,除非该难度是:
如果谱师使用了自定义的难度名称,则它必须符合与歌曲相关的主题或风格,且不得带有误导性。 如果自定义的难度名表示了本属于其他难度区间的难度等级,则它是误导性的(比如将一个 "Expert" 难度命名为 "Normal")。
难度名称不得仅由用户名组成。 如果想使用的与歌曲相关的难度名单词,碰巧与某些用户名有所重叠,则无需考虑此条规定。
谱面创建者的用户名不能出现在难度名称中。(例如:Beatmap Host's Insane)。制作歌曲元数据相同,但含有多首歌曲的谱面,或在制作
合作谱面时所出现的一些命名冲突的情况除外。参见:
客串难度,一般需要客串难度的难度名内标识该难度谱师的用户名或昵称,以表示难度的归属。
谱面创建者制作的难度数量必须大于等于客串难度的数量。 这保证谱面创建者应在制作谱面时贡献更大。
合作难度只能占据谱面的一小部分,同时,在客串谱师明显比谱面创建者付出更多的时候,会凭借谱面的
掉血时间来衡量谱师们的贡献。
谱面创建者和客串难度谱师可以按照自己的想法修改各自的谱面。 如果谱面的创建者和客串谱师意见不一致,谱面制作者必须提交请求才能删除客串谱面。如果在一个月内无法与客串谱师取得联系,将默认他们同意一切对客串难度的修改。
不能使用属于其他谱师但没有明确参与,或未获得原谱师授权的难度来作为自己谱面的客串难度。
非继承时间点(红线)必须准确地记录歌曲的拍子记号。 如果错误的拍子记号持续超过一个小节,则必须在下一处强拍添加新的非继承时间点(红线),以重置拍子记号。如果歌曲含有部分不受编辑器支持的 #/4 拍子记号,则可使用非继承时间点(红线)重置节拍器,或直接编辑
.osu
文件得到。对于其他不受编辑器支持的时间记号,请参见
范例图表或者查阅
八分拍歌曲测定。
谱面时间轴必须精确。 即时间轴的
BPM 和每一个
非继承时间点(红线)的偏移量需要完全贴合歌曲。无规律的变奏歌曲也许不可能完美地测定,此时应在不影响谱面游玩的情况下尽量精确测定。如果某段含有复杂节奏的段落被休息段或者持续的转盘覆盖,也可以不用精确测量这个段落。
第一个非继承时间点(红线)之前不能使用继承时间点(绿线)。 如果无法获取任何要继承的设置,继承时间点(绿线)将无法正常工作。如果要在当前第一个非继承时间点(红线)之前修改音效音量或滑条速度,则必须将非继承时间点(红线)向前移动一个(或四个)完整的小节,以使继承时间点正常工作。
物件放置的时间与其所属节拍细分的误差必须小于 2 毫秒。 AiMod 会报告这些错误。有时,它也会错报一些物件,如滑条折返和滑条尾。此时需要手动判别或使用其他工具协助。如果物件放置在游戏不支持的节拍细分上(如 1/11),那么这段物件可以:
如果物件持续时间内,非继承时间点发生了变化,则应该调整物件末尾并使其完美贴合变化后时间点的节拍细分。 如果这个物件是转盘或 osu!mania 的长条,拖动物件末尾的滑块即可使其完美贴合。对于滑条物件,可以使用绿线修改滑条速度来调整物件末尾时间,或者直接编辑
.osu
文件来贴合。
谱面的歌曲文件...
...必须使用 .mp3
或者 .ogg
文件格式。
...如果是 .mp3
文件,平均比特率不得高于 192 kbps;如果是 .ogg
文件,则不得高于 208 kbps。
...平均比特率不得低于 128 kbps, 如果歌曲来源提供了更高码率的文件,则必须使用更高码率的文件。
...不能从低质量歌曲文件重编码成高码率的版本得来。
谱面只应包含唯一一首用于所有难度的歌曲。 osu! 不支持在单张谱面中使用多个歌曲文件,若这样做,则可能会导致预览时间点或元数据等出现错误。
谱面必须含有音效。 普通打击音效 (hitnormal) 能给予玩家足够的反馈,并且,多样的附加打击音效(口哨、鼓掌和结束音)可以用于强调歌曲中比较重要的声音。
所有可击打的物件都必须包含至少一个...
...含有清晰打击音,并且频谱尖峰与开头相隔小于等于 5 毫秒的音效。 默认皮肤的 normal-hitfinish.wav
不受此条规定限制。
...文件格式为 .wav
或 .ogg
的音效。 .mp3
文件播放自带延迟,不应使用。
这确保了玩家在游玩时能获得即时的反馈,与歌曲完美同步的音效也能作为参考,让玩家自己调节击打的时机。osu!mania 谱面有独特的多轨节奏结构,可忽略此条规定。
音效必须能让玩家听到。 音效的作用是提供足够反馈,因此,音量极低或者与歌曲音色极其相似的音效都是不能使用的。对于不同游戏模式的例外情况,请参阅不同游戏模式特定的谱面上架标准。
谱面的预览时间点必须一致。 预览点将会在游戏的歌曲选择菜单和网页的在线歌曲试听中使用。
音效长度至少为 25 毫秒。 长度更短的文件不能播放出声音。
若需要使用完全静音的音效,则必须使用这个 44 字节文件。 其他音效文件可能会过大,并且不能使用 0 字节大小的音效文件。
故事板音效不能替换主动打击音效。 这会给玩家不准确的反馈。在某些特殊情况下,可以但不鼓励使用故事板音效。osu!mania 可忽略此条规定。
谱面的歌曲和音效不应出现任何不必要且能听到的失真效果。 不应添加违反歌曲艺术家本意,或不符合原歌曲特色的剪辑效果效果、响度降低、噼啪声效果。建议通过实际聆听歌曲检查是否符合该条准则,而不是通过软件检查。
歌曲不应被人为延长以突破谱面上架标准规定的掉血时间最低难度限制。 包括但不限于:重复播放歌曲的部分段落,降低整首歌或者歌曲一部分的
BPM,或者增加一小段突兀不合曲的音乐等。如果制作
歌曲混编,或者音频文件短于 30 秒,则可忽略此条准则。
如果谱面结尾空白部分大于等于歌曲全长的 20%,则应截短歌曲。 谱面的前奏空白段不包括在内。如果谱面结尾空白部分存在视频或故事板,或因为这部分歌曲段落因为含有复杂变奏、有渐出效果而不适合制作谱面时,则可忽略此条准则。
歌曲混编或者其他串烧、合集形式的混编歌曲,应尽量使单曲之间自然平滑过渡,不要在单曲结合处使用突兀的静音段或较长的淡出段。 用于混编的单曲应具有相似的音质,音量与长度。这能确保混编歌曲谱面与其他普通谱面一样,有着良好完整的游戏体验。可以使用长度不超过 5 秒,平稳和谐的交叉淡化过渡。并且,使用合拍合曲设计的过渡段,总比直接简单地在两首单曲之间使用交叉淡化处理更好。
如果只编入 2 首歌曲,那么它们之间应该有比较清晰且紧密的联系。 这方面的例子包括但不限于:同一系列歌曲的不同迭代,歌词、主题、音调、流派相似等等。
谱师自主剪辑歌曲,应保留原曲的总体印象和强度。 重大改变原曲结构的剪辑(如去掉或重新排序歌曲的前奏、段落、副歌、尾声)可能会迷惑玩家对歌曲的印象,并非常容易降低玩家的游戏体验。如果被剪辑的歌曲来自于官方剪辑及其再创作剪辑,则可忽略此条准则。
游戏音效中除了主动打击音效外,都应使用 .mp3
或 .ogg
格式。 这些文件通常在相同体积下具有更长时间,而
.wav
文件则会太大。但是当音效持续时间短,文件较小时,也可使用
.wav
。
尽量避免将 soft、normal 音效组中的镲音效 (hit finish) 替换为极其常用的自定义音效文件。 若替换了镲音效 (hit finish),并将其用作自定义音效的军鼓音效 (snare) 或者低音 (bass),则会极大降低禁用自定义音效这一部分玩家的体验。推荐将这类常用音效替换拍手或口哨音效。 osu!taiko 谱面有特定的自定义音效准则,不受这一准则的限制。
谱面中至少需要一张背景图片。 可以为不同的难度设定不同的背景图片。
对于背景图片有以下要求:
最小宽度: 160 像素
最小高度: 120 像素
最大宽度: 2560 像素
最大高度: 1440 像素
最大文件大小: 2.5MB
视频的分辨率不得超过 1280 像素宽,720 像素高。 另外,应该避免把较低分辨率的视频放大到较高分辨率并编码成文件。这样可保证视频文件不会变得不必要的大,或在视频解码时占用过多计算资源。
视频编码必须使用 H.264 标准。
视频的偏移量必须与歌曲完美同步。 错误的偏移量会带来误导性的视觉表达。如果同一个视频被用于多个难度,其偏移量必须一致。
视频文件不应含有音轨。 osu! 不会使用视频文件中的音频轨道,并且,删除音轨能够缩减谱面文件大小。即使视频文件原有的音轨没有声音,也应予以删除。
如果您要使用其他社区成员制作的自定义皮肤元素,请事先获得许可。 尊重他人的工作是非常重要的,大多数人会很乐意你在自定义谱面皮肤中使用他们制作的皮肤元素,并标注他们的工作!因此,如果你不知道某一皮肤元素是由谁制作,则不应使用它。
游玩皮肤元素必须可见。 如果这些元素不可见,将可能会降低谱面的游玩体验,甚至导致谱面无法正常游玩(
cursormiddle.png
除外,因为它会影响光标拖尾显示)。只有在不影响游玩体验,以及有充足理由才能让游玩皮肤元素完全透明。
自定义皮肤元素必须裁剪干净,这样它们的轮廓周围就不会有像素锯齿或阴影。
不能使用过大尺寸的自定义皮肤元素,这可能会导致默认皮肤内不重叠的元素在自定义后相互重叠。 只有自定义皮肤元素的可见部分适用这条规定。若自定义皮肤元素重叠,则可能会影响谱面的游玩体验。
若要自定义某一个游玩皮肤元素,还必须自定义这一整个皮肤组的必需元素,以避免谱面自定义皮肤元素与玩家自定义皮肤元素发生冲突。 如果使用标记为“可选”的自定义皮肤元素,那么这一整组的”可选“元素必须全部自定义。如果不使用“可选”的元素,也可以直接跳过。然而,如果一组内部分”必需“的自定义皮肤元素在任何情况下都不会使用,或者强制启用默认皮肤时,也可以跳过这些”必需“元素。
故事板图片 (Storyboard Image): 指故事板使用的图片,它们都存放在谱面文件夹中。
精灵图 (Sprite): 一个表示故事板中一张图片或一组图片的对象。
时间 (Time): 表示某一对象在时间轴上的位置,以毫秒为单位。这通常能在谱面编辑器的设计页看到。
命令 (Command): 游戏有 Move
(移动)、Scale
(缩放)、Fade
(淡化)、Rotate
(旋转)等命令。这些命令能操纵并改变精灵图的位置、大小、朝向、透明度等。每条命令都有开始时间和结束时间。
坐标轴命令 (Axis Specific Command): 指仅仅在特定坐标轴方向上影响精灵图的命令,例如 MoveX
(X 轴方向移动)和 MoveY
。(Y 轴方向移动)
激活时间 (Active): 指控制对象的命令从开始到结束这段时间。
正在渲染 (Rendered): 通常用来描述在屏幕中,且未完全淡化成透明的精灵图。
osu! 像素 (osu!pixel): 谱面编辑器设计页中的最小尺寸。可以在设计页右上角看到它,例如 x: 104; y: 88
。
故事板图片所包含的总像素数量不能超过 1700 万,这是为了保证大部分电脑能在短时间内加载完成。 此外,你需要根据故事板编辑器内部最大尺寸(854 x 480 osu! 像素)来缩放图片。
谱面在加载时,不能引发解析错误。 即解析器无法读取故事板指令的某一部分。
谱面的宽屏支持
(Widescreen Support) 设置必须保持一致。 但如果不同难度的故事板是为不同宽高比设计,则不受这一规定的限制。
在歌曲结束后,应关闭所有精灵图、停止命令。 为了某些故事板的特定效果需要,精灵图的渲染时长可以延长到歌曲结束后一段时间,但不应过长。
可考虑在含有旋转指令的故事板图片周围留有 1 像素宽的透明边框,以保证插值算法工作正常。 osu! 没有图片的抗锯齿算法。因此,如果用作旋转的故事板图片边缘非常锐利,旋转中的锯齿将会非常明显。
尽量保持故事板在播放时的帧率稳定,尽量避免任何明显的性能问题。 请在摸图时测试谱面来确认这一点。
避免使用在游玩过程中容易与打击音效混淆的故事板音效。 这违背了听觉反馈这一概念,因为故事板音效将独立于玩家的操作而自动播放。
避免使用不合逻辑、相互冲突、已经作废的命令。 游戏无法正常执行结束时间早于开始时间,或者无法成功触发的命令,且谱面内不应出现激活时间重叠的命令。应删除或修正它们。
如果需要制作适配宽屏的故事板,则应启用宽屏支持
(Widescreen Support) 。 如果故事板设计为 4:3 分辨率,则应关闭此功能。如果没有制作故事板,此设置不会影响谱面中的任何内容。
尽量优化故事板。 无论如何都要做到这一点。具体如以下所示:
避免精灵图或谱面背景图片在渲染时,被其他元素遮挡至完全不可见。 出于性能考虑,当元素不可见时,最好将它们淡化为透明。如果要将谱面的背景图片淡化为透明,请将相同的背景图片名称作为精灵图,Background
或 0
作为第二个参数,然后使用淡化命令,隐藏掉它。
避免精灵图在整个渲染过程中离开屏幕或者阻碍视线。 如果故事板图片的屏幕外不可见部分自始至终都没有展示在屏幕中,就应该裁剪掉这一部分。
避免在故事板图片周围留有大量的透明像素。 为了提高性能,应在保证图片主体完整展示的前提下,尽可能多地裁剪图片。
若要多次使用某条命令,请使用循环 (Loop) 指令,但如果这样做会影响视觉效果除外。 使用循环指令能大量减少代码行数,从而缩减故事板文件大小。
当使用一个常用命令可以实现相同的效果时,请不要混合使用两个坐标轴分量命令。 使用单条命令而不是两条命令,能缩减故事板文件大小。
使用最节省空间的图片文件格式,同时保持合理的质量。 不同于 .jpg
格式,.png
格式由于采用了无损压缩方式,占用的存储空间通常更大。
避免使用重复的图片。 完全没有必要将内容完全相同的两张图片放在一起使用。
避免同时激活多个不可见的精灵图。 无论元素是否可见,游戏依旧会计算并处理命令。如果这个精灵图长时间不可见,请关闭此精灵图,并在之后需要展示时创建一个新的精灵图。
在同一个精灵图上使用多个同类型指令时,指令的触发时间间隔需要长于 16 毫秒。 每秒 60 个命令足以使精灵图在视觉上平滑过渡。这也可以缩减故事板文件大小,并且减少故事板加载时间。
由触发器 (Triggers) 激活的精灵图要在使用完毕后淡化为透明。 触发器会从第一个激活命令开启,保持激活状态直到谱面结束。所以最好在不使用后隐藏这个精灵图。