Files
dota2-assistant/README.md

93 lines
2.4 KiB
Markdown

# Dota 2 助手 (Dota 2 Assistant)
Windows 上的 Dota 2 英雄选择与出装推荐 Overlay 应用。实时读取游戏状态,在 BP 阶段提供英雄克制推荐,游戏中提供出装建议。
## 功能
- **选将阶段 (BP)**: 根据对方已选英雄,通过 OpenDota 数据推荐克制英雄
- **游戏中**: 根据当前英雄推荐各阶段最优出装路线
- **游戏内 Overlay**: 透明悬浮窗叠加在 Dota 2 之上,支持鼠标穿透
- **本地缓存**: 英雄/物品数据缓存 24 小时,减少 API 请求
## 安装
### 依赖
- Windows 10/11
- Dota 2 (Steam)
- Visual Studio C++ 构建工具 (用于编译)
### 编译
```powershell
# 安装 Rust (如果未安装)
winget install Rustlang.Rustup
# 克隆并编译
git clone <repo>
cd dota2-assistant
cargo build --release
```
### 配置 Dota 2 GSI
运行安装脚本 (需要知道 Dota 2 安装路径):
```powershell
.\install_gsi.ps1
# 或指定自定义路径:
.\install_gsi.ps1 -DotaPath "D:\Steam\steamapps\common\dota 2 beta"
```
### 手动配置
1.`config\gamestate_integration_assistant.cfg` 复制到:
```
<Steam>\steamapps\common\dota 2 beta\game\dota\cfg\gamestate_integration\
```
2. 在 Steam 中给 Dota 2 添加启动参数: `-gamestateintegration`
3. 将 Dota 2 设置为**无边框窗口 (Borderless Window)** 模式
## 使用
1. 先启动 `dota2-assistant.exe`
2. 再启动 Dota 2
3. 进入游戏后 Overlay 会自动出现
4. 按 **F12** 切换显示/隐藏
## 架构
```
Dota 2 Game (GSI)
│ HTTP POST (每 0.5 秒)
GSI HTTP Server (axum, :3000)
State Manager (Arc<Mutex<AppState>>)
├──► 推荐引擎 ──► OpenDota API ──► SQLite 缓存
└──► egui Overlay UI (主线程, GLFW 透明窗口)
```
## 注意事项
- **VAC 安全**: 仅使用 GSI 官方接口 + 透明窗口技术,不涉及内存读取或 DLL 注入
- **GSI 限制**: 只能获取玩家自己可见的信息(不能读取对方未展示的选择)
- **网络依赖**: 首次运行需联网拉取英雄数据,之后可离线使用缓存
## 技术栈
| 组件 | 技术 |
|------|------|
| 语言 | Rust |
| 异步运行时 | tokio |
| Overlay UI | egui_overlay 0.9 (GLFW + egui 0.29) |
| GSI 服务器 | axum 0.7 |
| API 客户端 | reqwest 0.12 |
| 本地缓存 | rusqlite (SQLite, bundled) |
| 数据源 | OpenDota API (免费) |