# 贡献指南 ## 贡献方式 ### 提交游戏插件 (`.tsp`) 创建一个包含 `manifest.json` 和 `parser.py` 的文件夹,压缩为 zip 改后缀: ``` my_game/ ├── manifest.json └── parser.py ``` #### manifest.json ```json { "id": "unique_game_id", "name": "游戏名称", "parser_type": "forza", "description": "简短描述", "author": "你的名字", "version": "1.0.0", "default_port": 20777 } ``` #### parser.py 规范 必须实现 `get_parser()` 函数,返回对象包含: ```python import time from server.telemetry.data import TelemetryData def get_parser(): return MyParser() class MyParser: def game_id(self) -> str: return "unique_game_id" def parse(self, data: bytes, addr: tuple) -> TelemetryData: td = TelemetryData(game_id="unique_game_id", timestamp=time.time()) td.raw = {"raw_hex": data.hex(), "length": len(data)} # 填充遥测字段... return td ``` 安装方式:在 TurboSu 设置页面 → 游戏插件管理 → 导入 `.tsp` ### 提交仪表盘主题 (`.tsd`) 创建独立文件夹: ``` my_dashboard/ ├── manifest.json # 元信息 (参考下方格式) └── index.html # 完整独立页面 ``` `index.html` 需包含: - WebSocket 连接:`ws:///ws` - 接收 `telemetry` 消息类型的数据 - 用 `data-bind="字段名"` 属性绑定数据 - 比例约束渲染逻辑 安装方式:在 TurboSu 仪表盘页面 → 导入 `.tsd`,或右键卡片导出。 ### 报告 Bug 请在 Issue 中包含: - 系统信息 (OS, Python 版本) - 错误日志 (`logs/turbosu.log`) - 复现步骤 ### 功能建议 欢迎提交 Issue 讨论。 ## 开发环境 ```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt python app.py ``` ## 代码规范 - Python: PEP 8 - 日志使用 `utils.logger`,不用 `print` - 前端 JS 模块化,文件放对应目录 ## 许可证 贡献即表示同意代码在 Apache 2.0 许可下发布。