Files
TurboSu/CONTRIBUTING.md
T

102 lines
2.0 KiB
Markdown

# 贡献指南
## 贡献方式
### 提交游戏插件 (`.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://<host>/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 许可下发布。