为什么需要服务器——Sonolus 的外部资源架构
Sonolus 本身不自带关卡
Sonolus 安装完成后,你打开会发现里面空空如也——没有歌曲列表、没有关卡、甚至没有具体的判定规则。这不是 bug,是 Sonolus 的设计。
Sonolus 把所有游戏内容都放在外部服务器上。这样做有几个好处:
- 引擎、谱面、皮肤、背景可以独立更新,不用每次更新都重新安装整个应用
- 不同服务器可以托管不同引擎类型的玩法,一个 Sonolus 玩遍所有风格
- 社区可以自由搭建新服务器,不用经过官方审核
服务器托管什么
一个 Sonolus 服务器通常托管以下内容:
| 资源类型 | 说明 |
|---|---|
| 引擎(Engine) | 判定逻辑、操作方式、计分规则 |
| 关卡(Level) | 谱面数据、难度设置 |
| 皮肤(Skin) | 音符外观、轨道样式、判定线 |
| 背景(Background) | 关卡背景图、动态效果 |
| 音效(Effect) | 判定音、击中音 |
| 粒子(Particle) | 特效动画、连击提示 |
玩家连接服务器后,这些资源会按需下载到本地缓存。
服务器规格
Sonolus 官方定义了自定义服务器的 API 规格。任何符合规格的 HTTP 服务器都能被 Sonolus 识别和连接。社区开发者可以用任意后端技术栈(Node.js、Python、Go 等)搭建自己的服务器。
服务器 vs 引擎
注意区分这两个概念:
- 服务器是资源的托管方,一个服务器可以只提供一种引擎的内容,也可以同时提供多种
- 引擎是游戏逻辑本身,由 Sonolus.js / Sonolus.py 脚本编译而来
例如,Next SEKAI 服务器托管的就是 Next SEKAI 引擎的谱面、皮肤和背景。