Skip to content

Advanced Stat Addition Along with a few other data points not in HotsApi #1

Open
Zemill opened this issue Jan 2, 2019 · 3 comments

Comments

@Zemill
Copy link

Zemill commented Jan 2, 2019

All the information below is already in
https://github.com/koliva8245/Heroes.ReplayParser

I am not sure the best place to put this - but the information for the advanced stats below

In Player.cs the following objects were added
public int HighestKillStreak { get; set; } = 0;
public int ProtectionGivenToAllies { get; set; } = 0;
public int TimeSilencingEnemyHeroes { get; set; } = 0;
public int TimeRootingEnemyHeroes { get; set; } = 0;
public int TimeStunningEnemyHeroes { get; set; } = 0;
public int ClutchHealsPerformed { get; set; } = 0;
public int EscapesPerformed { get; set; } = 0;
public int VengeancesPerformed { get; set; } = 0;
public int OutnumberedDeaths { get; set; } = 0;
public int TeamfightEscapesPerformed { get; set; } = 0;
public int TeamfightHealingDone { get; set; } = 0;
public int TeamfightDamageTaken { get; set; } = 0;
public int TeamfightHeroDamage { get; set; } = 0;
public int Multikill { get; set; } = 0;
public int? PhysicalDamage { get; set; } = null;
public int? SpellDamage { get; set; } = null;

You can also pick up match awards in Player.cs
public List MatchAwards { get; set; } = new List();

Experience For Each Team is grabbed from the below Object in the Replay.cs file
public List[] TeamPeriodicXPBreakdown { get; set; } = new List[2];

Draft Picks for a match are grabbed from the below object in the Replay.cs file
public List DraftOrder { get; set; } = new List();

To pick up accurate Player Teams, and Account Levels, you need to change detailedBattleLobbyParsing to True in the DataParser constructor

For replay draft order I have a table like below for storing that data, where 'type' is either ban or player pick
CREATE TABLE replay_draft_order (
replayID int(11) NOT NULL,
type tinyint(4) NOT NULL,
pick_id tinyint(4) NOT NULL,
hero int(10) unsigned NOT NULL,
PRIMARY KEY (replayID,type,pick_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

For storing experience data I have a table like below
CREATE TABLE replay_experience_breakdown (
replayID int(11) NOT NULL,
team int(11) NOT NULL,
team_level int(11) NOT NULL,
timestamp time NOT NULL,
structureXP int(11) NOT NULL DEFAULT '0',
creepXP int(11) NOT NULL DEFAULT '0',
heroXP int(11) NOT NULL DEFAULT '0',
minionXP int(11) NOT NULL DEFAULT '0',
trickXP int(11) NOT NULL DEFAULT '0',
totalXP int(11) NOT NULL,
PRIMARY KEY (replayID,team,team_level,totalXP)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

@poma
Copy link
Member

poma commented Jan 3, 2019

I see that most of those stats are already implemented in Barrett's parser repo, adding them right now.

Considering if I should add xp breakdown. It'll take a lot of db space (my guess is like +20-30%), and I'm not sure how useful it is.

Awards seem pretty meaningless to me, but maybe some players might be interested. Maybe someone will convince me otherwise but for now I don't think I'll bother storing them.

I already have DB fields for ban order, but they are filled incorrectly (didn't check, but others say so). If correct ban order parsing is merged in Barrett's repo I'll fix it. Same with hero levels.

For now not switching to your fork because before that I'll need to review changes compared to Barrett, test performance, and then rebase hotsapi's changes onto it.

@Zemill
Copy link
Author

Zemill commented Jan 3, 2019

I can take a look at the data I have for xp breakdown that I previously stored. I am fine with not having it though, not entirely useful now with the XP changes.

I am also fine with leaving award out. I don't use it, but was considering adding it

@Zemill
Copy link
Author

Zemill commented Jan 3, 2019

I forgot to mention that the Draft Order object puts the bans and player picks in order. I am not sure that the default ban or player objects put either the bans or players in the position they were picked.

Having correct ban order is not useful unless you also have correct player order

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants