feat: Add recent performance stability stats (matches/days) to player profile

This commit is contained in:
2026-01-28 14:04:32 +08:00
commit 48f1f71d3a
104 changed files with 17572 additions and 0 deletions

83
docs/6D_README.md Normal file
View File

@@ -0,0 +1,83 @@
# YRTV Player Capability Model (6-Dimension System)
This document outlines the calculation principles and formulas for the 6-dimensional player capability model used in the YRTV platform.
## Overview
The model evaluates players across 6 key dimensions:
1. **BAT (Battle Power)**: Aim and direct combat ability.
2. **PTL (Pistol)**: Performance in pistol rounds.
3. **HPS (High Pressure)**: Performance in clutch and high-stakes situations.
4. **SIDE (Side Proficiency)**: T vs CT side performance balance and rating.
5. **UTIL (Utility)**: Usage and effectiveness of grenades/utility.
6. **STA (Stability)**: Consistency and endurance over matches/time.
Each dimension score is normalized to a 0-100 scale using min-max normalization against the player pool (with outlier clipping at 5th/95th percentiles).
---
## 1. BAT (Battle Power)
*Focus: Raw aiming and dueling mechanics.*
**Features & Weights:**
- **Rating (40%)**: Average Match Rating (Rating 2.0).
- **KD Ratio (20%)**: Average Kill/Death Ratio.
- **ADR (20%)**: Average Damage per Round.
- **Headshot% (10%)**: Headshot kills / Total kills.
- **First Kill Success (10%)**: Entry Kills / (Entry Kills + Entry Deaths).
- **Duel Win Rate (High Elo) (10%)**: KD Ratio specifically against high-Elo opponents.
## 2. PTL (Pistol Round)
*Focus: Proficiency in pistol rounds (R1 & R13).*
**Features & Weights:**
- **Pistol KD (50%)**: Kill/Death ratio in pistol rounds.
- **Pistol Util Efficiency (25%)**: Headshot rate in pistol rounds (proxy for precision).
- **Pistol Multi-Kills (25%)**: Frequency of multi-kills in pistol rounds.
## 3. HPS (High Pressure)
*Focus: Clutching and performing under stress.*
**Features & Weights:**
- **1v1 Win Rate (20%)**: Percentage of 1v1 clutches won.
- **1v3+ Win Rate (30%)**: Percentage of 1vN (N>=3) clutches won (High impact).
- **Match Point Win Rate (20%)**: Win rate in rounds where team is at match point.
- **Comeback KD Diff (15%)**: KD difference when playing from behind (score gap >= 4).
- **Undermanned Survival (15%)**: Ability to survive or trade when team is outnumbered.
## 4. SIDE (Side Proficiency)
*Focus: Tactical versatility and side bias.*
**Features & Weights:**
- **CT Rating (35%)**: Average Rating on CT side.
- **T Rating (35%)**: Average Rating on T side.
- **Side Balance (15%)**: Penalty for high disparity between T and CT performance (1 - |T_Rating - CT_Rating|).
- **Entry Rate T (15%)**: Frequency of attempting entry kills on T side.
## 5. UTIL (Utility)
*Focus: Strategic use of grenades.*
**Features & Weights:**
- **Util Usage Rate (25%)**: Frequency of buying/using utility items.
- **Flash Assists (20%)**: Average flash assists per match.
- **Util Damage (20%)**: Average grenade damage per match.
- **Flash Blind Time (15%)**: Average enemy blind time per match.
- **Flash Efficiency (20%)**: Enemies blinded per flash thrown.
## 6. STA (Stability)
*Focus: Consistency and mental resilience.*
**Features & Weights:**
- **Rating Consistency (30%)**: Inverse of Rating Standard Deviation (Lower variance = Higher score).
- **Fatigue Resistance (20%)**: Performance drop-off in later matches of the day (vs first 3 matches).
- **Win/Loss Gap (30%)**: Difference in Rating between Won and Lost matches (Smaller gap = More stable).
- **Time/Rating Correlation (20%)**: Ability to maintain rating in long matches.
---
## Calculation Process (ETL)
1. **L2 Aggregation**: Raw match data is aggregated into `fact_match_players` (L2).
2. **Feature Extraction**: Complex features (e.g., Pistol KD, Side Rating) are calculated per player.
3. **Normalization**: Each feature is scaled to 0-100 based on population distribution.
4. **Weighted Sum**: Dimension scores are calculated using the weights above.
5. **Radar Chart**: Final scores are displayed on the 6-axis radar chart in the player profile.

44
docs/FeatureDemoRDD.md Normal file
View File

@@ -0,0 +1,44 @@
---
## demo维度
### d1、经济管理特征
1. 每局平均道具数量与使用率(烟雾、闪光、燃烧弹、手雷)
2. 伤害性道具效率(手雷/燃烧弹造成伤害值/投掷次数)
3. 细分武器KDAWP、AK-47、M4A4等
4. 武器选择与回合胜率相关系数(某武器使用时胜率-整体胜率)
5. 保枪成功率(需保枪回合中成功保下武器次数/总机会)
6. 经济溢出率(每局剩余金钱>3000的回合占比
### d2、团队协同特征后续进行详细设计计算暂时有较大缺陷
1. 补枪成功次数队友阵亡后10秒内完成击杀
2. 补枪反应时间(队友阵亡到自身补枪击杀的平均时长)
3. 与队友A的补枪成功率对队友A的补枪成功次数/其阵亡次数)
4. 被补枪率自身阵亡后10秒内被队友补枪次数/总阵亡次数)
5. 道具配合得分(被队友闪光致盲后击杀的敌人数量)
6. 辅助道具价值(自身烟雾/燃烧弹帮助队友下包/拆包次数)
7. 拉枪线贡献(自身阵亡后队友获得多杀的次数)
8. 疑似卖队友次数(自身附近队友存活但未补枪的阵亡次数)
### d3、经济影响力特征自定义计算方案
1. 累计缴获敌方武器的经济价值如AWP按4750计算
2. 保枪致胜次数(保下的武器在下一回合帮助获胜的次数)
3. 单局经济扭转值(因自身行为导致的双方经济差变化)
4. 回合致胜首杀贡献分首杀为胜利带来的权重分如5v4优势计0.3分)
5. 回合致胜道具贡献分(关键烟雾/闪光为胜利带来的权重分)
6. 回合致胜残局贡献分1vN残局胜利的权重分1v3+计1分
### d4、热图与站位特征预留demoparser阶段开发
1. 各地图区域击杀数如Inferno的A区、B区、中路等
2. 各地图区域死亡数(同上区域划分)
3. 常用站位区域占比(某区域停留时间/总回合时间)
4. 区域对枪胜率(某区域内击杀数/死亡数)
---
完整了解代码库与web端需求文档 WebRDD.md 开始计划开发web端完成web端的所有需求。
注意不需要实现注册登录系统最好核心是token系统。
严格按照需求部分规划开发方案与开发顺序。不要忽略内容。
utils下还会有哪些需要打包成可快速调用的工具针对这个项目你有什么先见

85
docs/FeatureRDD.md Normal file
View File

@@ -0,0 +1,85 @@
## basic、个人基础数据特征
1. 平均Rating每局
2. 平均KD值每局
3. 平均KAST每局
4. 平均RWS每局
5. 每局爆头击杀数
6. 爆头率(爆头击杀/总击杀)
7. 每局首杀次数
8. 每局首死次数
9. 首杀率(首杀次数/首遇交火次数)
10. 首死率(首死次数/首遇交火次数)
11. 每局2+杀/3+杀/4+杀/5杀次数多杀
12. 连续击杀累计次数(连杀)
15. **(New) 助攻次数 (assisted_kill)**
16. **(New) 完美击杀 (perfect_kill)**
17. **(New) 复仇击杀 (revenge_kill)**
18. **(New) AWP击杀数 (awp_kill)**
19. **(New) 总跳跃次数 (jump_count)**
---
## 挖掘能力维度:
### 1、时间稳定序列特征 STA
1. 近30局平均Rating长期Rating
2. 胜局平均Rating
3. 败局平均Rating
4. Rating波动系数近10局Rating计算
5. 同一天内比赛时长与Rating相关性每2小时Rating变化率
6. 连续比赛局数与表现衰减率如第5局后vs前4局的KD变化
### 2、局内对抗能力特征 BAT
1. 对位最高Rating对手的KD差自身击杀-被该对手击杀)
2. 对位最低Rating对手的KD差自身击杀-被该对手击杀)
3. 对位所有对手的胜率(自身击杀>被击杀的对手占比)
4. 平均对枪成功率(对所有对手的对枪成功率求平均)
5. 与单个对手的交火次数(相遇频率)
* ~~A. 对枪反应时间(遇敌到开火平均时长,需录像解析)~~ (Phase 5)
* B. 近/中/远距对枪占比及各自胜率 (仅 Classic 可行)
### 3、高压场景表现特征 HPS (High Pressure Scenario)
1. 1v1/1v2/1v3+残局胜率
2. 赛点12-12、12-11等残局胜率
3. 人数劣势时的平均存活时间/击杀数(少打多能力)
4. 队伍连续丢3+局后自身首杀率(压力下突破能力)
5. 队伍连续赢3+局后自身2+杀率(顺境多杀能力)
6. 受挫后状态下滑率(被刀/被虐泉后3回合内Rating下降值
7. 起势后状态提升率(关键残局/多杀后3回合内Rating上升值
8. 翻盘阶段KD提升值同上场景下自身KD与平均差值
9. 连续丢分抗压性连续丢4+局时自身KD与平均差值
### 4、手枪局专项特征 PTL (Pistol Round)
1. 手枪局首杀次数
2. 手枪局2+杀次数(多杀)
3. 手枪局连杀次数
4. 参与的手枪局胜率(round1 round13)
5. 手枪类武器KD
6. 手枪局道具使用效率(烟雾/闪光帮助队友击杀数/投掷次数)
### 5、阵营倾向T/CT特征 T/CT
1. CT方平均Rating
2. T方平均Rating
3. CT方首杀率
4. T方首杀率
5. CT方守点成功率负责区域未被突破的回合占比
6. T方突破成功率成功突破敌方首道防线的回合占比
7. CT/T方KD差值CT KD - T KD
8. **(New) 下包次数 (planted_bomb)**
9. **(New) 拆包次数 (defused_bomb)**
### 6、道具特征 UTIL
1. 手雷伤害 (`throw_harm`)
2. 闪光致盲时间 (`flash_time`, `flash_enemy_time`, `flash_team_time`)
3. 闪光致盲人数 (`flash_enemy`, `flash_team`)
4. 每局平均道具数量与使用率(烟雾、闪光、燃烧弹、手雷)
### 手调1.、指挥手动调节因子主观评价0-10分
1. 沟通量(信息传递频率与有效性)
2. 辅助决策能力(半区决策建议的合理性)
3. 团队协作倾向(主动帮助队友的频率)
4. 打法激进程度进攻倾向0为保守10为激进
5. 执行力(对指挥战术的落实程度)
6. 临场应变力(突发情况的自主处理能力)
7. 氛围带动性(团队士气影响,正向/负向)

189
docs/WebRDD.md Normal file
View File

@@ -0,0 +1,189 @@
# YRTV 网站需求规格说明书 (RDD)
## 1. 项目概述 (Overview)
### 1.1 项目背景
YRTV 是一个面向 CS2 战队数据洞察与战术研判的 Web 平台,旨在通过 Web 界面提供可视化的数据查询、战队管理、战术模拟及深度分析功能。
### 1.2 核心目标
* **数据可视化**: 将复杂的 SQLite 比赛数据转化为易读的图表、雷达图和趋势线。
* **战术研判**: 提供阵容模拟、协同分析及地图热点情报,辅助战术决策。
* **交互体验**: 通过轻量级前端交互(筛选、对比、点赞、白板)提升数据使用效率。
* **实时动态**: 追踪战队成员的实时竞技状态与近期比赛动态,营造“战队大厅”氛围。
### 1.3 技术栈规划
* **后端框架**: Python Flask (轻量级,易于集成现有 ETL 脚本)
* **数据库**:
* **L2**: SQLite (`database/L2/L2_Main.sqlite`) - 基础事实数据 (Read-Only for Web)
* **L3**: SQLite (`database/L3/L3_Features.sqlite`) - 高级衍生特征 (Read-Only for Web)
* **Web**: SQLite (`database/Web/Web_App.sqlite`) - [新增] 业务数据 (用户、评论、阵容配置、策略板存档)
* **模板引擎**: Jinja2 (服务端渲染)
* **前端样式**: Tailwind CSS (CDN 引入,快速开发) + PC-First 响应式设计 (适配手机、平板与桌面端),主题色紫色,可切换黑白模式。
* **前端交互**:
* **图表**: Chart.js / ECharts (雷达图、趋势图)
* **交互**: Alpine.js 或原生 JS (处理模态框、异步请求)
* **拖拽**: SortableJS (阵容调整)
* **地图**: Leaflet.js 或简单 Canvas (热力图/策略板)
---
## 2. 系统架构 (Architecture)
### 2.1 目录结构规划
```text
yrtv/
├── web/
│ ├── app.py # Flask 应用入口
│ ├── config.py # 配置文件
│ ├── routes/ # 路由模块
│ │ ├── main.py # 首页与通用 (Home)
│ │ ├── players.py # 玩家模块 (List, Detail, Compare)
│ │ ├── teams.py # 战队模块 (Lineup, Stats)
│ │ ├── matches.py # 比赛模块 (List, Detail, Demo)
│ │ ├── tactics.py # 战术模块 (Lineup Builder, Map, Nade)
│ │ ├── wiki.py # 知识库模块 (Wiki, Docs)
│ │ └── admin.py # 管理后台 (ETL Trigger, User Mgmt)
│ ├── services/ # 业务逻辑层 (连接 L2/L3/Web DB)
│ │ ├── stats_service.py # 基础数据查询 (L2)
│ │ ├── feature_service.py # 高级特征查询 (L3)
│ │ ├── wiki_service.py # 知识库管理
│ │ └── user_service.py # 用户与评论管理
│ ├── static/ # 静态资源
│ │ ├── css/
│ │ ├── js/
│ │ └── images/
│ └── templates/ # Jinja2 模板
│ ├── base.html
│ ├── components/
│ ├── home/
│ ├── players/
│ ├── teams/
│ ├── matches/
│ ├── tactics/
│ ├── wiki/
│ └── admin/
├── database/ # 数据存储
│ ├── L1A/ # 原始爬虫数据
│ ├── L2/ # 结构化事实数据
│ ├── L3/ # 衍生特征库 (Feature Store)
│ └── Web/ # [新增] 业务数据库 (User, Comment, Wiki)
└── ETL/ # 数据处理层 (ETL Pipeline)
├── L1A.py # L1A Ingest
├── L2_Builder.py # L2 Transform
└── L3_Builder.py # L3 Feature Engineering (原 feature_store.py 逻辑)
```
### 2.2 数据流向
1. **ETL 层 (数据处理核心)**:
* L1 (Raw): 爬虫 -> JSON 存储。
* L2 (Fact): JSON -> 清洗/标准化 -> Fact/Dim Tables。
* **L3 (Features)**: L2 -> 聚合/滑窗计算/模型推理 -> Player/Team Derived Features。**数据处理逻辑收敛于 ETL 目录下的脚本Web 端仅负责读取 L2/L3 结果。**
2. **Service 层**: Flask Service 仅负责 SQL 查询与简单的业务组装(如评论关联),不再包含复杂的数据计算逻辑。
3. **View 层**: Jinja2 渲染 HTML。
4. **Client 层**: 浏览器交互。
### 2.3 开发与启动 (Development & Startup)
* **启动方式**:
* 在项目根目录下运行: `python web/app.py`
* 访问地址: `http://127.0.0.1:5000`
---
## 3. 功能需求详解 (Functional Requirements)
### 3.1 首页 (Home)
* **功能**: 平台入口与导航聚合。
* **内容**:
* **Hero 区域**: 平台定位文案("JKTV CS2 队伍数据洞察平台")。
* **Live / 战队状态看板 (New)**:
* **正在进行**: 如果监测到战队成员(配置列表内)正在进行比赛(通过 5E 接口轮询或最近 10 分钟内有数据更新),显示 "LIVE" 状态卡片。
* **近期战况**: 滚动显示战队成员最近结束的 5 场比赛结果胜负、比分、MVP
* **状态概览**: 类似 GitHub Contribution 的热力日历,展示战队本月的活跃度。
* **快捷入口卡片**:
* "战术指挥中心": 跳转至阵容模拟。
* "近期比赛": 跳转至最新一场比赛详情。
* "数据中心": 跳转至多维对比。
* **比赛解析器**: 输入 5E 比赛链接,点击按钮触发后台 ETL 任务(异步),前端显示 Loading 状态或 Toast 提示。
### 3.2 玩家模块 (Players)
#### 3.2.1 玩家列表 PlayerList
* **筛选/搜索**: 按 ID/昵称搜索,按 K/D、Rating、MVP 等指标排序。
* **展示**: 卡片式布局显示头像、ID、主队、核心数据 (Rating, K/D, ADR)。
#### 3.2.2 玩家详情 PlayerProfile
* **基础信息**: 头像、SteamID、5E ID、注册时间。可以手动分配Tag。
* **核心指标**: 赛季平均 Rating, ADR, KAST, 首杀成功率等。
* **能力雷达图**: *计算规则需在 Service 层定义*
* **趋势图**: 近 10/20 场比赛 Rating 走势 (Chart.js)。
* **评价板**: 类似于虎扑评分,用户可点赞/踩,显示热门评价(需新增 `web_comments` 表)。增加访问次数统计。
* **管理区** (Admin Only): 修改备注、上传自定义头像。
### 3.3 战队模块 (Teams)
* **阵容视图**: 展示当前核心阵容,手动添加。
* **角色分组**: 手动标签将玩家分组。
* **统计概览**: 战队整体胜率、近期战绩、地图胜率分布,个人关键数据。
### 3.4 比赛模块 (Matches)
#### 3.4.1 比赛列表 MatchList
* **筛选**: 按地图、日期范围筛选。
* **展示**: 列表视图显示时间、地图、比分、胜负、MVP。
#### 3.4.2 比赛详情 MatchDetail
* **头部**: 比分板CT/T 分数、地图、时长、Demo 下载链接。
* **数据表**: 双方队伍的完整数据表K, D, A, FK, FD, ADR, Rating, KAST, AWP Kills 等)。
* *利用 `fact_match_players` 中的丰富字段*
* **原始数据**: 提供 JSON 格式的原始数据查看/下载(`raw_iframe_network` 提取)。
### 3.5 战术模块 (Tactics)
#### 3.5.1 化学反应与战术深度分析 (Deep Analysis)
* **阵容组建**: 交互式界面,从玩家池拖拽 5 名玩家进入“首发名单”。
* **阵容评估**: 实时计算该 5 人组合的平均能力雷达。
* **共同经历**: 查询这 5 人共同参与过的比赛场次及胜率。
* **协同矩阵**: 选择特定阵容展示两两之间的协同数据A 补枪 B 的次数A 与 B 同时在场时的胜率)。
* **最佳/短板分析**: 基于历史数据分析该阵容在特定地图上的强弱项。
#### 3.5.2 数据对比 Data Center
* **多选对比**: 选择多名玩家,并在同一雷达图/柱状图中对比各项数据。
* **地图筛选**: 查看特定玩家在特定地图上的表现差异。
#### 3.5.3 道具与策略板 (Grenades & Strategy Board)
* **道具管理**:
* **道具计算**: 提供特定点位(如 Inferno 香蕉道)的烟雾弹/燃烧弹投掷模拟(基于坐标距离与轨迹公式)。
* **道具库**: 预设主流地图的常见道具点位(图片/视频展示),支持管理员添加新点位。
* **实时互动策略板**:
* **分地图绘制**: 基于 Leaflet.js 或 Canvas加载 CS2 高清鸟瞰图。
* **实时协同**: 支持 WebSocket 多人同屏绘制(类似 Excalidraw即时同步画笔轨迹与标记。
* **快照保存**: 支持一键保存当前战术板状态为图片或 JSON生成分享链接/加入知识库。
#### 3.5.4 经济计算器 (Economy Calculator)
* **功能**: 模拟 CS2 经济系统,辅助指挥决策。
* **输入**: 设定当前回合胜负、存活人数、炸弹状态、当前连败奖励。
* **输出**: 预测下一回合敌我双方的经济状况(最小/最大可用资金给出起枪建议Eco/Force/Full Buy
### 3.6 知识库 (Knowledge Base / Wiki)
* **架构**: 典型的 Wiki 布局。
* **左侧**: 全局文档树状目录(支持多级折叠)。
* **右侧**: 当前文档的页内大纲TOC
* **中间**: Markdown 渲染的正文区域。
* **功能**:
* **快速编辑**: 提供 Web 端 Markdown 编辑器,支持实时预览。
* **简单验证**: 简单的密码或 Token 验证即可保存修改,降低贡献门槛。
* **文件管理**: 支持新建、重命名、删除文档,自动生成目录结构。
### 3.7 管理后台 (Admin)
* **鉴权**: 简单的 Session/Token 登录。
* **数据管理**:
* 手动触发增量/全量 ETL。
* 上传 demo 文件或修正比赛数据。
* **配置**: 管理员账号管理、全局公告设置。查看网站访问数等后台统计。
### 3.8 管理后台查询工具 (SQL Runner)
* **功能**: 提供一个 Web 版的 SQLite 查询窗口。
* **限制**: 只读权限(防止 `DROP/DELETE`),仅供高级用户进行自定义数据挖掘。
---
### Second Stage: Demo 深度解析管线 (Future)
* **目标**: 引入 `demoparser2` (或类似开源库) 实现本地 Demo 文件的深度解析,获取比 Web 爬虫更细粒度的原子级数据。
* **Pipeline**:
1. **Ingest**: 自动/手动上传 `.dem` 文件。
2. **Parse**: 调用 `demoparser2` 提取每 tick/每事件数据 (Player Position, Grenade Trajectory, Weapon Firing)。
3. **Store**: 将海量原子数据存入 ClickHouse 或优化的 SQLite 分表 (L1B/L2+)。
4. **Analyze**: 产出高级分析指标(如:真实拉枪反应时间、道具覆盖效率、非预瞄击杀率)。
5. **Visualize**: 在前端复盘页面实现 2D 回放 (2D Replay) 功能。

View File

@@ -0,0 +1,103 @@
我现在需要你帮助我制作一个cs能力分析器与指挥帮助器命名为csanalyzer首先我们需要沟通确定CS2是分CT与TCT应该有哪几个位置T应该有哪几个位置
常见来说 T包括步枪手 突破手 狙击位 辅助 自由人,其中一位兼任指挥
CT包括小区主防 区域辅助 自由人 狙击位
你认可这样的分析吗请给我你的思路首先我们确定每个位置与其倾向然后再来分析玩家的数据应该包括哪些维度再来分析如何建立python模型分析这个模型我希望有一定的主观调整性因为我是指挥很多地方数据无法提现一个人是怎么玩游戏的例如rating低但是做的事很扎实只是因为碰的人不多这样不应该给低分。
现在我们需要开始构建能力维度,能力维度应该是极其极其丰富的。
首先我给你一张图这是5e主界面截图下来的里面包括一些维度。
但是我认为不管是rating还是rws还是5e评分都并没有考虑到特定玩家在队伍内的现状所以在这个基础上进行能力评分同样我认为是不合理的。
我认为首先应该增加一些维度:
1.玩家时间序列能力评估长期rating胜局rating败局rating等参数波动系数
2.玩家局内对枪能力评估对位对手最高最低rating的KD差对位所有人的胜率或百分比计算例如我对面第一=62就是我杀他6次他杀我2次这个应该与遇到的次数相关而非线性。
3.玩家高压发挥评估:残局能力,赛点残局能力,少打多能力,连续丢分压力下突破能力首杀能力
4.玩家手枪局评估:手枪局首杀能力,多杀能力,连杀能力,回放能力
5.玩家T/CT评估玩家平均在CT表现好还是T表现好倾向于做什么CT首杀率等评估进攻与防守倾向
6.玩家热图评估:常用站位,不同默认站位下打出的效果,哪里杀人多哪里杀人少
7.玩家数据评估常用ratingKDKASTimpactRWS等数据产出
8.玩家分位置能力评估:不同位置要求不同,指挥在能力值上应该有增益,狙击手与步枪手更加看重补枪效率,辅助看中道具能力等
9.玩家经济管理评估每局道具量购买与使用与产生作用关系主要针对伤害性道具武器倾向武器效果武器kd选择倾向与局效果的相关度
10.玩家持续时间评估是否有随着同一天内比赛进行rating下降
11.指挥手动调参维度:作为指挥我知道队伍中谁抗压好,谁抗压不行,谁沟通多,谁可以辅助指挥进行半区决策,谁喜欢帮助队友,谁是激进谁是保守
给我基于这些你的更多想法我来思考与选择。
除了上面给你的图片之外,你还有非常多指标可用,局内爆头击杀 爆头率 首杀首死道具rating残局等等详细内容也可以进行特征工程产出更多的数据维度特征
队伍维度应该有一些倾向分析例如喜欢打哪块胜率如何下包概率回访概率回防成功概率赌点成功概率eco局anti-eco局胜率发生概率帮助指挥进行决策。
### 拓展方向一:团队协同与配合分析
我们之前主要聚焦于单个选手但CS的精髓在于团队。我们可以增加一些维度来衡量选手之间是如何进行 互动 的。
- 补枪与被补枪效率 (Trade & Refrag Efficiency):
- 这是什么: 当一名队员阵亡后,队友立刻补枪完成人数交换的频率有多高?这个反应时间有多快?在队伍里,谁和谁是最高效的“补枪搭档”?
- 价值何在: 这是一个可以直接量化的、衡量团队协调性和沟通水平的指标。高的补枪率意味着队伍像一个整体在移动和战斗;反之则可能说明队员之间站位过远,打得太孤立。它能帮你回答:“我们到底是不是在抱团打?”
- 道具配合得分 (Utility Coordination Score):
- 这是什么: 衡量一名队员击杀的敌人,有多少是被队友的闪光弹致盲的。反过来,一名队员投掷的烟雾弹或燃烧弹,有多少次成功帮助队友完成了下包或拆包?
- 价值何在: 这将分析从“你有没有扔闪”提升到了“你的闪光弹 帮到人 了吗?”。它量化了辅助性道具的真实影响力,并能找出团队中最高效的道具配合二人组。
- “拉枪线”与“卖队友”行为分析 (高级功能):
- 这是什么: 这是一个更细微、也更难量化的指标。我们可以尝试识别一种模式:当一名队员阵亡时,他附近的队友是否在没有交火的情况下存活了下来。这 可能 是卖队友行为。反之,我们也可以识别出,当一名队员的阵亡成功吸引了敌方大量注意力,从而让队友拿到多杀的情况,这就是成功的“拉扯空间”。
- 价值何在: 作为指挥你最清楚什么是必要的牺牲什么是自私的打法。虽然这个指标很难做到100%自动化判断,但它可以将这些“可疑”的回合标记出来,供你亲自复盘,从而对团队内部的动态有更深刻的洞察。
### 拓展方向二:高级经济影响力分析
我们可以进一步优化衡量选手真实影响力的方式,超越原始的伤害或击杀数据。
- 经济扭转因子 (Economic Swing Factor):
- 这是什么: 量化那些对双方经济产生巨大影响的行为。例如:
1. 武器窃取价值: 击杀对方的狙击手并缴获其AWP这相当于一次近$6000的经济优势$4750的武器成本 + 击杀奖励)。
2. “影响力保枪”价值: 成功保下一把有价值的武器如AWP或长枪并在 下一回合 使用这把枪赢得了胜利。
- 价值何在: 这能凸显出那些在数据面板上不显眼,但通过聪明的经济决策改变了战局的选手。
- “回合致胜贡献”评分 (Round-Winning Contribution Score):
- 这是什么: 在任何一个赢下的回合里,哪些行为是 最关键 的一个1v3的残局胜利显然贡献巨大。但那个为团队创造了5v4优势的开局首杀呢那颗为安全下包提供了保障的烟雾弹呢我们可以建立一个模型为回合内的不同行为首杀、残局、关键道具赋予“胜利贡献分”。
- 价值何在: 它能帮助你发现,谁在持续地做出那些 导致胜利的关键决策 ,即便他不是数据榜上的第一名。
### 拓展方向三:心理与势头指标
这个方向尝试量化比赛中的“心态”博弈。
- “上头”与“起势”指标 ("Tilt" & "Snowball" Indicators):
- 这是什么: 一名选手在经历了一次令人沮丧的死亡(比如被刀)后,他的个人表现(如枪法精准度、反应速度)是否会在接下来的几个回合里有明显下滑?反之,在他赢得一个关键残局或拿到多杀后,他的表现是否会飙升(即“滚雪球”效应)?
- 价值何在: 这能帮助你作为指挥,识别出哪些队员心态坚韧,哪些队员在失利后可能需要一句鼓励。同时,也能看出谁是那种能依靠势头越打越好的“顺风神”。
- 翻盘贡献分 (Comeback Contribution Score):
- 这是什么: 在那些队伍完成大翻盘的比赛中例如从4-11追到13-11在翻盘阶段哪位选手的各项表现数据有最大的正面提升
- 价值何在: 这能精准地找出那些在队伍陷入绝境时,能够挺身而出、提升自己状态的选手——这是一个至关重要的领袖和韧性特质。

View File

@@ -0,0 +1,43 @@
## 3. 统一处理方案 (Unified Pipeline Strategy)
为了解决互斥问题,建议在 ETL `L2_Builder` 中建立一个 **中间抽象层 (Unified Event Model)**
### 3.1 统一事件结构
无论来源是 Classic 还是 Leetify都解析为以下标准结构存入 `fact_round_events`
```python
@dataclass
class UnifiedKillEvent:
match_id: str
round_num: int
tick: int = 0 # Web数据通常为0或估算
seconds: float = 0.0 # 回合开始后的秒数
attacker_steam_id: str
victim_steam_id: str
assister_steam_id: str = None
weapon: str
is_headshot: bool
is_wallbang: bool
is_blind: bool # Classic: attackerblind, Leetify: AttackerBlind
is_through_smoke: bool # Classic: throughsmoke, Leetify: ThroughSmoke
is_noscope: bool
# 空间数据 (Classic 有值, Leetify 为 Null)
attacker_pos: Tuple[float, float, float] = None
victim_pos: Tuple[float, float, float] = None
distance: float = None # 有坐标时自动计算
# 来源标记
source_type: str # 'classic' | 'leetify'
```
### 3.2 降级策略 (Graceful Degradation)
在 Web 前端或 API 层:
1. **热力图/站位分析**: 检查 `match.data_source_type`。如果是 `leetify`,显示“该场次不支持热力图数据”,或隐藏相关 Tab。
2. **距离分析**: 同上Leetify 场次不计入“平均交战距离”统计。
3. **经济分析**: Leetify 场次可提供更精准的经济走势图(因为有确切的 `Money` 字段Classic 场次可能需显示估算值。
### 3.3 推荐补充
对于 **反应时间**、**拉枪线**、**精确道具覆盖** 等 `❌` 项,建议列入 **Phase 5 (Demo Parser)** 开发计划,不强行通过 Web 数据拟合,以免误导用户。