R – Team matchups for Dota Bot

balanceformulaprobability

I have a ghost++ bot that hosts games of DotA (a Warcraft 3 map that is played 5 players versus 5 players). I'm trying to come up with good formulas to balance the players who are going into a match based on their records (I have game history for several thousand games). I'm familiar with some of the concepts required to match up players, like confidence based on sample size of the number of games they played, parameter approximation and degrees of freedom. Thus throwing out any variables that don't contribute enough to the r^2. My bot collects quite a few variables for each player from each game:

The Important ones:
Win/Lose/Game did not finish
# of Player Kills
# of Player Deaths
# of Kills player assisted

The not so important ones:
# of enemy creep kills
# of creep sneak attacks
# of neutral creep kills
# of Tower kills
# of Rax kills
# of courier kills

Quick explanation:

The kills/deaths don't determine who wins, but the gold gained and lost from this usually is enough to tilt the game. Tower/Rax kills are what the goal of the game is (once a team loses all their towers/rax, their throne can be attacked, and if that is destroyed, they lose), but I don't really count these as important because it is pretty random who gets the credit for the tower kill. And chances are if you destroy a tower, it is only because some other player is doing well and distracting the other team elsewhere on the map.

I'm getting a bit confused when trying to deal with the fact that there are 5 players are on a team, so ultimately each individual isn't that responsible if the team wins or not.

Take a player that is really good at killing, has 40 kills and only 10 deaths, but in his 5 games he has only won once. Should I give him extra credit for such a high kill score despite losing (when losing, it is hard to keep a positive kill/death ratio)? Or should I dock him for losing assuming that despite the nice kill/death ratio, he probably plays in a really greedy way only looking out for himself and not helping his team?

Ultimately, I don't think I have to guess at questions like this because I have so much data. But I don't really know how to look at the data to answer questions like this. Can anyone help me come up with formulas to help team balance and predict the outcome?

Thanks,
Dan

Best Answer

I think part of the problem is that it's a team based game, and as such, the total of a team's ability is not strictly the sum of the player's abilitys. Player combinations of the same or different styles may compliment or hinder the team as a whole, thus varying the team's overall ability regardless of the players' individual skill levels.

Perhaps you need a method for categorizing each player into a "player type", and then run an analysis of the past data to see how the different sets of player types combine, which you could then use to weight you team ratings.

Related Topic