1.3.0: Updated ONLINE.
This commit is contained in:
83
docs/6D_README.md
Normal file
83
docs/6D_README.md
Normal 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
44
docs/FeatureDemoRDD.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
|
||||
|
||||
## demo维度:
|
||||
|
||||
### d1、经济管理特征
|
||||
1. 每局平均道具数量与使用率(烟雾、闪光、燃烧弹、手雷)
|
||||
2. 伤害性道具效率(手雷/燃烧弹造成伤害值/投掷次数)
|
||||
3. 细分武器KD(AWP、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
85
docs/FeatureRDD.md
Normal 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
189
docs/WebRDD.md
Normal 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) 功能。
|
||||
103
docs/original/特征维度prompt.md
Normal file
103
docs/original/特征维度prompt.md
Normal file
@@ -0,0 +1,103 @@
|
||||
我现在需要你帮助我制作一个cs能力分析器与指挥帮助器,命名为csanalyzer,首先我们需要沟通确定,CS2是分CT与T,CT应该有哪几个位置,T应该有哪几个位置?
|
||||
|
||||
常见来说 T包括步枪手 突破手 狙击位 辅助 自由人,其中一位兼任指挥
|
||||
|
||||
CT包括小区主防 区域辅助 自由人 狙击位
|
||||
|
||||
你认可这样的分析吗?请给我你的思路,首先我们确定每个位置与其倾向,然后再来分析玩家的数据应该包括哪些维度,再来分析如何建立python模型分析(这个模型我希望有一定的主观调整性,因为我是指挥,很多地方数据无法提现一个人是怎么玩游戏的,例如rating低但是做的事很扎实,只是因为碰的人不多,这样不应该给低分。)
|
||||
|
||||
现在我们需要开始构建能力维度,能力维度应该是极其极其丰富的。
|
||||
|
||||
首先我给你一张图,这是5e主界面截图下来的,里面包括一些维度。
|
||||
|
||||
但是我认为不管是rating还是rws还是5e评分都并没有考虑到特定玩家在队伍内的现状,所以在这个基础上进行能力评分同样我认为是不合理的。
|
||||
|
||||
我认为首先应该增加一些维度:
|
||||
|
||||
1.玩家时间序列能力评估:长期rating,胜局rating,败局rating等参数,波动系数
|
||||
|
||||
2.玩家局内对枪能力评估:对位对手最高最低rating的KD差,对位所有人的胜率或百分比计算(例如我:对面第一=6:2,就是我杀他6次他杀我2次),这个应该与遇到的次数相关而非线性。
|
||||
|
||||
3.玩家高压发挥评估:残局能力,赛点残局能力,少打多能力,连续丢分压力下突破能力首杀能力
|
||||
|
||||
4.玩家手枪局评估:手枪局首杀能力,多杀能力,连杀能力,回放能力
|
||||
|
||||
5.玩家T/CT评估:玩家平均在CT表现好还是T表现好,倾向于做什么,CT首杀率等评估进攻与防守倾向
|
||||
|
||||
6.玩家热图评估:常用站位,不同默认站位下打出的效果,哪里杀人多哪里杀人少
|
||||
|
||||
7.玩家数据评估:常用rating,KD,KAST,impact,RWS等数据产出
|
||||
|
||||
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),在翻盘阶段,哪位选手的各项表现数据有最大的正面提升?
|
||||
|
||||
- 价值何在: 这能精准地找出那些在队伍陷入绝境时,能够挺身而出、提升自己状态的选手——这是一个至关重要的领袖和韧性特质。
|
||||
|
||||
|
||||
43
docs/事件结构统一方案.md
Normal file
43
docs/事件结构统一方案.md
Normal 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 数据拟合,以免误导用户。
|
||||
Reference in New Issue
Block a user