5bc2c18f067ddc3081279d9824c5e386dd57a2bd
TurboSu · 极速中枢
基于 Web 的 B/S 架构赛车遥测仪表盘,支持多种赛车游戏遥测数据实时显示。 社区市场在线分享仪表盘和场景。
功能特性
- 多游戏支持 — 插件化架构,内置 Forza Horizon、Forza Motorsport、AC/ACC、F1、iRacing
- 8 款内置仪表盘 — 速度表、转速弧、档位指示器、圈速计时器、Forza 复合仪表、F1 复合仪表、G 力圆图、轮胎温度矩阵、换挡指示灯、手机竖屏仪表
- 场景编辑器 — 拖放式画布,自由组合多个仪表盘到同一画面
- 局域网共享 — 仪表盘/场景独立链接,手机/平板/笔记本均可全屏访问
- 比例约束渲染 — 仪表盘可指定比例和渲染模式
- 社区市场 — 在线分享仪表盘和场景,登录即上传,管理员审核发布
- 录制回放 — 录制原始 UDP 流,离线回放调试仪表盘
- 数据转发 — 原始 UDP 包转发到下游物理外设
- HyperOS 风格 — Miuix 设计语言,日间/夜间模式,中英文切换
- 社区分发 — 仪表盘
.tsd、场景.tss、插件.tsp— zip 格式
快速开始
环境要求
- Python 3.10+
- pip
运行
git clone https://git.yeij.top/AskaEth/TurboSu.git
cd TurboSu
# 一键启动
./run.sh
# 或手动启动
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python app.py
浏览器访问 http://localhost:9527
使用指南
1. 选择游戏
侧边栏 → 游戏列表展开 → 选择你要玩的游戏。列表来自 games/builtin/ (内置) 和 games/user/ (社区)。
2. 配置遥测输出
在各游戏中开启 UDP 数据输出功能:
| 游戏 | 设置位置 | 端口 |
|---|---|---|
| Forza Horizon 4/5 | 设置 → HUD与游戏 → 数据输出 | 20777 |
| Forza Motorsport | 设置 → 游戏玩法 → UDP数据输出 | 20777 |
| Assetto Corsa | 内容管理器 → 自定义UDP | 9996 |
| ACC | 设置 → 电子设备 → UDP | 20777 |
| F1 24 | 设置 → 遥测设置 → UDP | 20777 |
| iRacing | 选项 → 杂项 → 数据记录 | 20777 |
3. 浏览仪表盘
侧边栏 → 仪表盘 → 浏览/分类筛选 → 点击卡片在新标签打开全屏仪表盘。
链接自动复制,局域网设备可直接访问。右键卡片可导出 .tsd 文件。
4. 创建场景
侧边栏 → 场景 → 新建场景 → 编辑添加多个仪表盘 → 选择画布比例 → 渲染。
场景卡片支持导出 .tss,页面顶栏可导入。
5. 数据调试
侧边栏 → 数据测试 → 实时查看解析字段和原始 JSON 数据流。
开发指南
- 仪表盘开发指南 — 创建自定义仪表盘主题 (.tsd)
- 游戏插件兼容开发指南 — 为任意赛车游戏编写遥测解析器 (.tsp)
- Forza 数据包格式参考 — Forza Horizon UDP 324 字节完整定义
- F1 24 数据包格式参考 — F1 24 UDP 遥测规范
- ACC 数据包格式参考 — Assetto Corsa Competizione 广播 API
- iRacing 遥测格式参考 — iRacing IRSDK 遥测变量
项目结构
TurboSu/
├── app.py # FastAPI 主入口 (lifespan)
├── run.sh # 一键启动脚本
├── requirements.txt
├── config/settings.py # 全局配置 (JSON 持久化)
├── server/
│ ├── api.py # REST API (状态/配置/CRUD/导入导出)
│ ├── websocket.py # WebSocket 广播 (30fps 限流)
│ ├── game_manager.py # 游戏插件发现/加载/导入导出(.tsp)
│ └── telemetry/
│ ├── data.py # TelemetryData 27字段数据类
│ ├── listener.py # UDP 异步监听器
│ └── parsers/ # 内置解析器 (base/forza/ac/acc/f1/iracing)
├── games/
│ ├── builtin/ # 7 款内置游戏插件
│ │ ├── forza_horizon/ # Forza Horizon 4/5 (合并)
│ │ ├── forza_horizon_6/ # Forza Horizon 6
│ │ ├── forza_motorsport/
│ │ ├── assetto_corsa/
│ │ ├── assetto_corsa_competizione/
│ │ ├── f1_24/
│ │ └── iracing/
│ └── user/ # 社区插件 (运行时安装)
├── dashboards/ # 内置仪表盘 (5 款)
│ ├── speedometer/ # 极速仪表 (auto 比例, 全兼容)
│ ├── tachometer/ # 转速表 (16:9, 全兼容)
│ ├── gear_indicator/ # 档位指示器 (1:1, R/N/1-8, 自适应映射)
│ ├── lap_timer/ # 圈速计时器 (4:3, Forza/F1)
│ └── forza_composite/ # Forza 复合仪表 (16:9, 仅Forza系列)
├── models/
│ ├── dashboard.py # 仪表盘模型 + 自动扫描 + zip导入导出
│ └── scene.py # 场景模型 + 画布/布局 + zip导入导出
├── templates/
│ ├── index.html # 主 SPA 页面
│ └── scene.html # 场景渲染页 (iframe组合)
├── static/
│ ├── css/
│ │ ├── miuix.css # HyperOS/Miuix 样式框架 (CSS变量+毛玻璃+主题)
│ │ └── main.css # 布局 + 跨端响应式 (3断点)
│ └── js/
│ ├── app.js / router.js # 应用入口 + Hash路由
│ ├── api.js / ws.js # API + WebSocket 客户端
│ ├── components/ # sidebar.js / topbar.js
│ ├── pages/ # home / dashboard / scene / debug / settings
│ └── utils/ # theme.js / toast.js
├── data/ # 运行时数据 (user dashboards, scenes, config)
├── logs/ # 日志 (轮转文件, 10MB x5)
├── README.md
└── CONTRIBUTING.md
导入导出格式
| 格式 | 后缀 | 本质 | 说明 |
|---|---|---|---|
| 仪表盘 | .tsd |
zip | 含 manifest.json + index.html |
| 场景 | .tss |
zip | 含 scene.json |
| 游戏插件 | .tsp |
zip | 含 manifest.json + parser.py |
作者
Yei.J. (AskaEth)
许可证
Apache License 2.0
Description
Languages
JavaScript
40.4%
Python
30.8%
HTML
19.9%
CSS
8.8%