Match Analyzer
https://www.lolanalyzer.gg/ site thanks to /u/paparHein
Hi, i have been waiting quite awhile to show my code for a match analyzer that i created for league, and with the new unveil of Champion levels, i think it might be time...
i have been working for about a year and a half now on a program that takes into consideration all major factors of a game to create a number that accurately compares all people in the match. I have refined it to a point which i dont think it can get any better.
i do not expect it to impact the game, so the response "neat program bro" would be fine XD... but if riot is finding it hard to figure out a way to accurately calculate various things to hand out: exp, ip, or exp in the new champion level thing, this may be a solution. i require no notoriety or fame for this, simply helping the game is my goal, and i would be honored for riot to use it.
if you use the https://www.lolanalyzer.gg/ - Please respond with stats and if you think it's accurate!
without further ado,
=========================The Formula========================= the variables used are all numbers already counted in game:
n:= Number of Players per team (5v5 = 5) k:= Kills d:= Death a:= Assist dd:= Damage Dealt to Champion dt:= Damage Taken w:= Wards Placed
ttp:= Total "Participation" (Kills + assists of everyone on your team) ttdd:= Total Damage Dealt to Champion (everyone on your team) ttd:= Total Deaths (everyone on your team)
ettd:= Total enemy Deaths (everyone on the enemy team)
first off i remove divide by zero cases, if any team didnt get a kill (if ttp = 0 or ettp=0) i set it to 1, if a specific person didnt die (if d = 0), i set their deaths to 1
and here's the equation i have come up with:** (((((a1.05) + k)/ttp)ttdd) + dd + dt + (w120)) / ((1 - (d / (ttd+ettd))) (d + (ttd/n)))**
this will give a number that is relatively fair across all roles, all positions, and comparable to one another, i know i abuse parentheses, and it is quite a long formula, i will try to break it down:
(1 - (d / (ttd+ettd)))(d + (ttd/n))
this is the divisor - it deals with the deaths that specific person had, and penalizes them for it
(d / (ttd+ettd))
this is the percentage of deaths that the person is, so 12 personal deaths out of 120 total deaths isnt as bad as being 12 out of 20
d + (ttd/n)
this is the percentage of your own team deaths that the person i, this is to prevent winning teams from having a HUGE advantage via deaths, they still due, but this numbs it a little. it also creates a "your brother's keeper" effect - your score gets worse as your allies die - so NOT saving them to protect your own score isnt a possibility, and saving them improves your score
(((((a1.05) + k)/ttp)ttdd) + dd + dt + (w120))
this is the numerator, this is everything that adds to your score
((((a1.05) + k)/ttp)ttdd)
this is where kills and assists come into play, assists *1.05 (this helps supports/jungles a tad) plus your kills, divided by your teams deaths - this creates a dynamic where getting assists and kills is good, but not at the death of your team (ie if you get 3 kills but your team deaths go up by 5, its a net loss), that number multiplied by total damage dealt gives what i like to call "Participation points", because you where there for 16 of the teams kills you allowed your team to do damage, so a portion of the total damage dealt by your team is attributed to you, whether you dealt it or you tanked enough damage to allow you adc to deal that damage - you where the reason your teams damage went up.
next along with that number we add personal damage dealt to champs and damage taken, and added is wards*120 - the wards part is prolly the worst part of the formula, i needed a number that supports did more than any other role, and wards usually accurately represent that.... but the constant number "120" can be abused.... and it should prolly include wards removed/revealed
=========================FAQ========================= ----why not include gold? because obtaining gold isnt the goal, and it is represented in other ways. you get more gold you buy more items, you deal more damage, you take more damage, you provide more opportunities for your team, gold could also be used as a normalization factor - if need be ----Why not first blood? first blood is genuinely meaningless, gives gold, gold gets items, etc.... ----Why not objectives? All objectives in the game are represented by the values i use, you get baron, you deal more damage, you get dragon you deal more damage, towers give gold, gold gets items.... ----Damage/KDA isnt the goal, the goal is destroying the nexus, right? yes, correct. but when towers go down, something is happening, the enemy is distracted, focusing something or someone else, getting a different objective or is dead, most often games are won by the enemy being dead, so goals like towers and destroying the nexus are represented via the values ive used. beyond that judging objectives destroyed isnt fair to all positions.
=========================Examples========================= lets take a few of my games: http://matchhistory.na.leagueoflegends.com/en/#match-details/NA1/1750837143/200798440?tab=overview
B.
Evelyn - 9863
B.
Leona - 9662
B.
Jinx - 9624
B.
Jarven - 6163
P.
Gnar - 4840
B.
Ahri - 4735
P.
Xerath - 3682
P.
Brand - 3084
P.
Wukong - 2752
P.
Jinx - 2584
this game jinx and i dominated bot, rarely dying - i was a part of 31 kills, and jinx was similar with 25. ahri was a part of 14 kills, and damn near feeding, coming in at half our score. The enemy jinx went 0/9/7, was feeding the entire game, did little damage and took little back
a game i lost: http://matchhistory.na.leagueoflegends.com/en/#match-details/NA1/1754264878/200798440?tab=overview
B.
Twisted Fate - 9101
B.
Leona - 6538
P.
Leblanc - 6295
B.
Yi - 5450
P.
Riven - 5055
B.
Riven - 4703
P.
Leona - 3843
P.
Nautilus - 3646
P.
Ezreal - 3195
B.
Dinger - 2209
i am "p" leona, i died a bunch, we lost our lane hard, i tried to save my adc, failed a bunch of times and the enemy started rolling, ezreal did little more damage than i did - was part of less kills, and died one less time, his impact was minimal, and dinger's was even less. TF was their "ADC" and rolled in the kills and gold. "b" leona didnt do much damage, didnt take the most, but the formula understands that because she was there - she was important, being a part of 21 kills
I WOULD LOVE to analyze one of your games - https://www.lolanalyzer.gg/ then post your thoughts on it