脚本驱动——Sonolus.js 和 Sonolus.py 引擎开发
什么是引擎脚本
Sonolus 的核心是一套脚本运行时。引擎开发者使用 Sonolus.js 或 Sonolus.py 编写脚本,定义游戏的判定逻辑、音符生成规则、计分方式、UI 交互等所有游戏行为。
脚本编译后生成 Sonolus 可以执行的节点图,打包成引擎资源,托管在服务器上供玩家加载。
两种脚本语言
Sonolus 提供两种官方脚本语言,各有侧重:
Sonolus.js
基于 JavaScript 语法,更适合有前端开发经验的开发者。Sonolus.js 是早期引擎的主流选择,Chart Cyanvas 等老牌引擎都使用 Sonolus.js 开发。
Sonolus.py
基于 Python 语法的新选择,社区认为它语法更简洁、类型系统更严格、开发体验更好。Next SEKAI 等新一代引擎使用 Sonolus.py 编写。Sonolus.py 支持 Python 子集语法(Num、Array、Record 三种核心类型),编译成 Sonolus 节点图后运行效率与 Sonolus.js 相当。
脚本能做什么
通过 Sonolus 脚本系统,你可以定义:
- 判定规则:音符类型(Tap、Hold、Flick、Slide 等)及其判定窗口
- 计分系统:不同判定等级对应的分数、连击加成
- UI 布局:轨道数量、音符下落方向、判定线位置
- 资源声明:皮肤、音效、粒子效果、教程提示、选项配置
- 状态管理:关卡内存、实体数据、共享内存、流式数据
上手难度
对于想"自己写个引擎"的玩家来说:
- 有 JavaScript 或 Python 基础 → 可以直接跟着 Sonolus 官方 Wiki 的引擎开发指南入手
- 没有编程基础 → 建议先从使用现有引擎、制作谱面开始,等熟悉了再学脚本
- 最快的入门方式是阅读 Next SEKAI 引擎源码——它是目前功能最完整的参考实现