|
| 1 | +# Match Details: Player Farming Pattern Analysis |
| 2 | + |
| 3 | +## Summary |
| 4 | + |
| 5 | +On the match details page, visualise each player's farming pattern by analysing the source breakdown of gold received throughout the game. |
| 6 | + |
| 7 | +## Background |
| 8 | + |
| 9 | +OpenDota's standard match endpoint does not provide gold-source granularity. This feature requires **full replay parsing** to access per-event gold income data, specifically: |
| 10 | + |
| 11 | +- Creep kills (lane + jungle) |
| 12 | +- Building kills |
| 13 | +- Hero kills / assists |
| 14 | +- Passive gold income |
| 15 | +- Bounty runes |
| 16 | + |
| 17 | +This likely means using the **OpenDota parse endpoint** (`POST /api/request/{match_id}`) and then pulling data from the parsed match's `gold_reasons` or raw event log — or integrating an alternative parser (e.g. Clarity, Manta). |
| 18 | + |
| 19 | +## Requirements |
| 20 | + |
| 21 | +### Data Needed |
| 22 | +- Per-player gold income broken down by source over time |
| 23 | +- Sufficient granularity to identify patterns (e.g. 1-minute or 5-minute buckets) |
| 24 | + |
| 25 | +### Visualisation |
| 26 | +- Show farming pattern per player (e.g. stacked area/bar chart by gold source) |
| 27 | +- Identify pattern types: |
| 28 | + - **Lane farmer** — majority from lane creeps |
| 29 | + - **Jungler** — majority from neutral creeps |
| 30 | + - **Skirmisher** — significant portion from hero kills |
| 31 | + - **Split pusher** — significant building gold |
| 32 | +- Optionally cluster players by pattern similarity |
| 33 | + |
| 34 | +### Integration Consideration |
| 35 | +- Evaluate whether OpenDota's parsed data endpoint provides enough detail |
| 36 | +- If not, investigate embedding a lightweight replay parser (Clarity/Manta via JVM, or a Rust-native alternative) |
| 37 | +- This is a heavier feature — parser integration may warrant its own sub-task |
| 38 | + |
| 39 | +## Acceptance Criteria |
| 40 | + |
| 41 | +- [ ] Gold source breakdown available per player for a parsed match |
| 42 | +- [ ] Farming pattern chart visible on match details page |
| 43 | +- [ ] Pattern label assigned per player (Lane / Jungle / Skirmish / Push / Mixed) |
| 44 | +- [ ] Graceful fallback if match has not been parsed yet (prompt user to request parse) |
0 commit comments