用 Sonolus.py 开发引擎(推荐)
为什么选 Sonolus.py
相比 Sonolus.js,Sonolus.py 是社区更推荐的新引擎开发语言:
- Python 语法更简洁,类型系统更严格
- 编译工具链更现代化,有
sonolus-pyCLI 工具一键构建和本地调试 - Next SEKAI 等目前最活跃的引擎都用 Sonolus.py 重写了
如果你是从零开始写一个新引擎,优先选 Sonolus.py。如果是维护 Sonolus.js 旧引擎,那还得用 JS。
环境搭建
Sonolus.py 是 Python 库,搭建步骤:
- 安装 Python 3.10+
- 用 pip 安装 sonolus-py:
pip install sonolus-py - 创建新项目:
sonolus-py new my-engine - 本地运行和调试:
sonolus-py serve
sonolus-py serve 会在本地启动一个 HTTP 服务器,你可以在 Sonolus 里直接添加这个本地服务器地址来实时测试。
核心概念
Sonolus.py 的三种核心数据类型:
- Num:数值类型(整数、浮点数、布尔值)
- Array:固定长度数组,类似 Numpy 的 array
- Record:自定义数据结构,类似 Python 的 dataclass
这些类型可以嵌套组合,构建复杂的游戏状态。
示例:一个基础的 Tap 音符
from sonolus.script import archetype, num
@archetype
class Tap:
def touch(self):
# 判定逻辑:玩家触摸屏幕时检查是否在判定窗口内
pass
def update(self):
# 每帧更新:处理移动、过期等
pass
参考实现
学习 Sonolus.py 最好的方式是看 Next SEKAI 引擎源码。它是目前功能最完整、生产环境跑着的 Sonolus.py 引擎,覆盖了世界计划引擎的所有音符类型、判定逻辑、计分规则。
编译和部署
开发完成后:
sonolus-py build编译引擎- 把编译产物上传到你的自定义服务器
- 在 Sonolus 里添加服务器地址测试
相关阅读
- Sonolus.js 引擎开发——两种脚本语言对比
- 脚本驱动系统——整体脚本系统架构
- Sonolus.py 文档——社区维护的完整 Python API 文档
- 自定义服务器规格——部署引擎需要遵循的服务器 API