# Project Clutch-IQ: CS2 实时胜率预测系统实施方案 > **Version**: 3.0 (Final Architecture) > **Date**: 2026-01-31 > **Status**: Ready for Implementation --- ## 1. 项目愿景 (Vision) 构建一个**职业级、物理感知、战术驱动**的 CS2 实时残局胜率预测引擎。 该系统不仅输出胜率数值(如 "CT Win 30%"),更能解析战术成因(如“因缺少拆弹钳且时间不足”),服务于赛后复盘、直播增强和战术分析。 --- ## 2. 核心架构 (Architecture) ### 2.1 三层流水线设计 1. **Phase 1: 数据快照引擎 (Snapshot Engine)** - *ETL 层* - 负责从 Demo 解析高频、高精度的“战术切片”。 2. **Phase 2: 特征工程工厂 (Feature Factory)** - *逻辑层* - 将原始数据转化为物理特征(路径距离)和博弈特征(交叉火力)。 3. **Phase 3: 模型预测服务 (Inference Service)** - *应用层* - 基于 XGBoost/LightGBM 提供毫秒级实时预测。 --- ## 3. 详细实施蓝图 (Implementation Roadmap) ### Phase 1: 高精度数据快照 (The Snapshot Engine) #### 1.1 智能触发器 (Smart Triggers) 为了过滤冗余数据,系统仅在以下时刻捕获快照: * **关键事件**:`Player_Death`, `Bomb_Plant`, `Bomb_Defuse_Start`, `Bomb_Defuse_End` * **状态剧变**:任意玩家 HP 损失 > 20(捕捉对枪结果) * **时间心跳**:残局阶段 (≤3v3) 每 5 秒强制采样一次 #### 1.2 标准化快照字段 (Snapshot Schema) 每个快照包含 4 类核心数据: | 类别 | 字段名 | 说明 | 来源 | | :--- | :--- | :--- | :--- | | **元数据** | `match_id`, `round`, `tick` | 唯一索引 | Demo | | **局势** | `bomb_state`, `bomb_timer` | C4 状态 (0:未下, 1:已下, 2:被拆) | Demo | | **局势** | `seconds_remaining` | 回合/C4 倒计时 | Demo | | **人员** | `ct_alive`, `t_alive` | 存活人数 | Demo | | **人员** | `ct_hp_sum`, `t_hp_sum` | 团队总血量 | Demo | | **装备** | `ct_has_kit`, `t_has_c4` | **关键道具** (钳子/C4) | Demo | | **空间** | `ct_positions`, `t_positions` | 原始坐标 (用于后续计算) | Demo | --- ### Phase 2: 特征工程与融合 (Feature Engineering) #### 2.1 物理感知特征 (Physics-Aware Features) * **F1: 路径距离 (NavMesh Distance)** * *革新点*:放弃欧氏距离,使用地图路网计算真实移动距离。 * *实现*:预计算 `Map_Zone_Distance_Matrix`,实时查询。 * **F2: 时间压力指数 (Time Pressure Index - TPI)** * *公式*:$TPI = \frac{\text{TravelTime} + \text{DefuseTime}}{\text{TimeRemaining}}$ * *判定*:$TPI > 1.0 \rightarrow$ 胜率强制归零。 * **F3: 视线与掩体 (Line of Sight)** * *特征*:`is_blind` (致盲状态), `is_in_smoke` (烟雾状态)。 #### 2.2 战术博弈特征 (Tactical Features) * **F4: 交叉火力系数 (Crossfire Coefficient)** * *逻辑*:计算多名 CT 与目标 T 的夹角。夹角接近 90° 时胜率加成最大。 * **F5: 经济势能差 (Economy Momentum)** * *公式*:$\Delta E = \text{CT\_Equip\_Value} - \text{T\_Equip\_Value}$ * *作用*:量化“长枪打手枪”的装备压制力。 #### 2.3 选手画像注入 (Player Profiling) 利用 L3 数据库增强模型对“人”的理解: * **F6: 明星光环**:`max_alive_rating` (存活最强选手的 Rating)。 * **F7: 残局专家**:`avg_clutch_win_rate` (存活选手的历史残局胜率)。 --- ### Phase 3: 模型训练与策略 (Modeling Strategy) #### 3.1 训练配置 * **算法**:**XGBoost** (分类器) * **目标函数**:`LogLoss` (优化概率准确性) * **评估指标**:`AUC` (排序能力), `Brier Score` (校准度) #### 3.2 样本清洗策略 * **剔除保枪局 (Filter Save Rounds)**: * 若残局结束时:`Damage_Dealt == 0` AND `Dist_To_Enemy > 50m` AND `Weapon_Value > 2000` * 判定为“主动放弃”,剔除样本,防止污染胜率模型。 --- ## 4. 交付物清单 (Deliverables) 1. **`extract_snapshots.py`** * 基于 `demoparser2` 的 Python 脚本,批量处理 Demo 生成 CSV 训练集。 2. **`map_nav_graph.json`** * 核心地图 (Mirage, Inferno 等) 的区域距离查找表。 3. **`Clutch_Predictor_Model.pkl`** * 训练好的 XGBoost 模型文件。 4. **`Win_Prob_Service.py`** * 简单的 Flask 接口:输入当前状态 JSON $\rightarrow$ 输出 `{ "ct_win_prob": 0.35, "key_factor": "time_pressure" }`。 --- ## 5. 下一步行动 (Action Items) 1. **[High Priority]** 开发 `extract_snapshots.py` 原型,跑通基础数据流。 2. **[Medium Priority]** 构建 Mirage 地图的简单网格距离表。 3. **[Medium Priority]** 整合 L3 数据库,生成选手能力特征表。