core icon indicating copy to clipboard operation
core copied to clipboard

Item Statistics

Open alexalperov opened this issue 10 years ago • 5 comments

Dotamax has a nice feature which documents hero advantages/disadvantages" in certain matchups. For example: image

Something which has not been implemented anywhere is a similar application for items. For example:

Wraith King


Wraith King's Best Versus

Item Anti-Index Win Rate Daedalus +6.8% 53%

Wraith King's Worst Versus

Item Anti-Index Win Rate Diffusal Blade -12.4% 49% Scythe -4.4% 47%

With Yasp's in-depth knowledge of item purchase items, etc it would allow even greater flexibility. You can create scales that show the effectiveness of the items at different points in the game.

I understand one of the limits of Yasp is that it does not parse as much game data as dotamax and dotabuff, but this feature would give a distinct competitive edge over other statistics websites as well as provide a strategic benefit for DOTA players.

Thoughts?

alexalperov avatar Oct 31 '15 03:10 alexalperov

Interesting.

So you'd sum together all of the opponent's items ever bought, and add a win/loss data point for that match for that hero/item combination?

howardchung avatar Oct 31 '15 03:10 howardchung

Yeah that's exactly what I would do. In the end you would have data sets for every hero's winrate against every single item.

alexalperov avatar Oct 31 '15 15:10 alexalperov

concerns:

  • How to store this data? Create a new SQL relation for it? What would the schema look like?
  • What is the cost of adding together all of a team's items? I suppose this could be done once per team, then 10 data points created and the backing data store updated. EDIT: actually it would be the sum of 5 * number of items other team bought + 5 * number of items first team bought.

howardchung avatar Oct 31 '15 17:10 howardchung

This would probably be a good task for a graph based storage backend. A background task could run this on an interval. I don't think it needs to be updated in real time.

On Sat, Oct 31, 2015 at 1:08 PM, Howard Chung [email protected] wrote:

concerns:

How to store this data? Create a new SQL relation for it? What would the schema look like?

What is the cost of adding together all of a team's items? I suppose this could be done once per team, then 10 data points created and the backing data store updated.

— Reply to this email directly or view it on GitHub https://github.com/yasp-dota/yasp/issues/731#issuecomment-152751148.

albertcui avatar Nov 01 '15 17:11 albertcui

You want to play with it? I think this is where the "fan-out" stuff starts happening. When we add a match we're getting to the point where we trigger a lot of updates and we need to do this asynchronously so we don't stop importing new matches. Updating player caches is already the bottleneck in some cases. I thought about modifying scanner.js to just put the API results in a queue, then create a new worker type that handles inserting/fan-out tasks. We could use multiple threads to speed it up.

On Sun, Nov 1, 2015 at 9:27 AM, Albert Cui [email protected] wrote:

This would probably be a good task for a graph based storage backend. A background task could run this on an interval. I don't think it needs to be updated in real time.

On Sat, Oct 31, 2015 at 1:08 PM, Howard Chung [email protected] wrote:

concerns:

How to store this data? Create a new SQL relation for it? What would

the schema look like?

What is the cost of adding together all of a team's items? I suppose this could be done once per team, then 10 data points created and the backing data store updated.

— Reply to this email directly or view it on GitHub https://github.com/yasp-dota/yasp/issues/731#issuecomment-152751148.

— Reply to this email directly or view it on GitHub https://github.com/yasp-dota/yasp/issues/731#issuecomment-152847229.

howardchung avatar Nov 01 '15 18:11 howardchung