3

How would I go about a ranking system for players that play a game? Basically, looking at video games, players throughout the game make critical decisions that ultimately impact the end game result.

Is there a way or how would I go about a way to translate some of those factors (leveling up certain skills, purchasing certain items, etc.) into something like a curve that can be plotted on a graph?

This game that I would like to implement this is League of Legends.

Example: Player is Level 1 in the beginning. Gets a kill very early in the game (he gets gold because of the kill and it increases his "power curve"), and purchases attack damage (gives him more damage which also increases his "power curve". However, the player that he killed (Player 2), buys armor (counters attack damage). This slightly increases Player 2's own power curve, and reduces Player 1's power curve.

There's many factors I would like to take into account. These relative factors (example: BECAUSE Player 2 built armor, and I am mainly attack damage, it lowers my OWN power curve) seem the hardest to implement.

My question is this: Is there a certain way to approach this task? Are there similar theoretical concepts behind ranking systems that I should read up on (Maybe in game theory or data mining)? I've seen the ELO system, but it doesn't seem what I want since it simply takes into account wins and losses.

tabchas
  • 149
  • 5
  • 1
    Do you have access to all the required player information? Or is this a question about building a system to acquire and process said information? – MetaFight Aug 24 '14 at 09:43
  • Yes I will have access to the data. The question is more of "given the data, how could I build something like a power curve?" (Given that a power curve is how potentially impactful a player can be to win the game. – tabchas Aug 24 '14 at 10:23
  • 2
    This question looks really, really domain-specific. I think you might in fact get better answers from a specialized league of legends forum where you find people with the meta-gaming knowledge to understand all the connections and implications of the progression in that game. – Philipp Aug 24 '14 at 14:12
  • I don't think so... I'm just using League of Legends as an example. Im trying to see if there is some general way of ranking players in game theory. I just want to do some research and base my system off of something. – tabchas Aug 24 '14 at 18:17
  • 1
    I just hope you realize that League of Legends isn't mathematically solvable like a game of chess or Reversi. In that kind of game, there are many cases where *humans* are much better at interpreting whether an action was good or bad, than a computer program could ever be. For example, the value of a kill is heavily dependent on a nearly uncountable number of factors, many of which humans think of spontaneously when analyzing the game, which is why sports commentators in 2014 are humans and not just computations that spit out game data and associate an overall ranking/value for that data. – Shashank Gupta Aug 24 '14 at 18:54
  • This comment is for people who have played League of Legends before: I know that, it's not supposed to be some AMAZING system that can truly 100% predict that outcome of a game. Rather, it should provide viewers an insight to the in game scalability of a certain champion. I think it would be a cool visualization to see. Looking at the ELO System, it is also flawed when it comes to League of Legends. Basing players solely off of wins and losses doesn't give any intution on how truly skilled a player is. It happens so often that a low ELO player can outplay a high ELO player. – tabchas Aug 24 '14 at 19:21
  • So what I'm feeling is there are no other resources to base such a system like this off of? Some factors are a matter of math however, for instance, the current damage a champion can POTENTIALLY (not saying he will, but that is his potential) deliver can be calculated. I guess that is the premise behind this power curve: Simply a way to see a champion's live POTENTIAL impact of winning the game. – tabchas Aug 24 '14 at 19:25
  • I am not trying to account for mechanical abilities or ALL decisions that happen throughout the game. We are simply looking at the scalability of champions throughout a given game and how it has it spikes up and spikes down depending on what players are buying, how players are farming, and how players are ordering their skills. – tabchas Aug 24 '14 at 19:45
  • Note that solving this problem is the same as developing a game AI. If you have such a rank algorithm, you can evaluate the rank after all possible moves and choose the move which results in the best result. If your ranking algorithm is perfect, this algorithm chooses the best possible move at all stages and therefore is a perfect AI. – MSalters Aug 25 '14 at 14:39

2 Answers2

3

The basic approach is:

  1. Identify all the factors.
  2. Assign a weight to each factor.
  3. If the factor itself has a scale, assign a scaling formula (eg linear, log, capped, whatever) based on additional weights.
  4. If there are dependencies, express those as a formula based on additional weights.
  5. Add up all the resulting values.

The problem now is that you have a complicated formula with a lot of weights and you just need to find the correct values for all those weights. Simply to say, very hard to do.

There are many approaches to optimising weights: linear programming, genetic algorithms, neural networks, Bayesian analysis, gut feel, etc.They all depend on being able to measure the goodness of the final result, and that was one thing that was missing from your question.

Do you actually know what end result you expect to get? Do you know what final scores or rankings your players should achieve? Do you have training data and comparative metrics to drive your algorithms? When you know how you can measure success, you will know how to get there.

david.pfx
  • 8,105
  • 2
  • 21
  • 44
  • I guess my question is slowly moving to: In a video game similar to League of Legends where each decision doesn't necessarily map to a single outcome, can we generalize the progressive ranking of a player's potential impact to winning the game? Please do ask if you need me to explain more. – tabchas Aug 25 '14 at 01:45
  • I see what you are trying to say, but attaching weights to certain decisions might be too general? Also, the outcome that the team wants is simply to win. Each decision culminates in a victory for a team. Very difficult to say whether one decision will prove the victory. However, I figured I could try to give a statistic on the "potential impact" a player or team will have in winning a game. Thoughts? – tabchas Aug 25 '14 at 01:48
  • If the only metric is win/loss, you will need hundreds of games to train your weights. Sounds like this area of metrics to validate your rankings and train your weights is the place to focus. – david.pfx Aug 25 '14 at 02:04
  • Ok, is there a suggested path to start learning about how to do this? Any data mining strategies that are common for a task like this? – tabchas Aug 25 '14 at 02:22
  • That sounds like another question. – david.pfx Aug 25 '14 at 03:17
  • Should I open another question and reference this one? – tabchas Aug 25 '14 at 03:18
  • 1
    The main thing is to think more, add your own ideas and ask the best question you possibly can. It's OK to link, but the question should stand alone. – david.pfx Aug 25 '14 at 09:06
  • Let us [continue this discussion in chat](http://chat.stackexchange.com/rooms/16704/discussion-between-tabchas-and-david-pfx). – tabchas Aug 26 '14 at 06:41
1

I should think a data mining approach would work, probably with a neural network to map inputs (user actions) to outputs (game win/ loose). Record many games and use these to train the neural net. At run time let this trained 'net decide what's important and produce a numeric measure, which you graph.

Michael Green
  • 903
  • 5
  • 16
  • Hmm, I know a little about data mining, but willing to learn more about it. From my understanding, you are suggesting a probability statistic of the "chance" that a team has to win a game, based on win/loss rate data on each of their decision making skills. I'm a misunderstanding? If you have played League of Legends before, please use examples so I can understand what you are saying better. – tabchas Aug 24 '14 at 23:34
  • And any idea on how relativity statistics could be added (If Player 1 builds a certain item but Player 2 builds an item to counter it). Would that lower Player 1's chance of winning? How? – tabchas Aug 24 '14 at 23:59
  • 1
    Yes, I'm suggesting a probabilistic model based on past games. I haven't played that game so I can't suggest specifics. What you call "relativity statistics" would fall out of the training data. If, in the past, if P1 builds an X and then wins 60% of the time that will naturally raise the chance of a win in *this* game for the player that builds and X. If, in the past, P2 builds a Y in response to P1's X and then P2 wins 70% of the time, building a Y in response to an X will improve your chances in *this* game. – Michael Green Aug 25 '14 at 03:17
  • 1
    This will be complicated, but you don't have to enumerate all possibilities before you start. The historical games will enumerate the likely ones (because actual people actually did these things) and the mining engine will determine which are significant in determining the output. – Michael Green Aug 25 '14 at 03:20
  • I think I will start with 7 or 10 very important and obvious factors. I'll collect the set of data and train some data mining algorithm to use that information to weigh in the factors during a live game. Any ideas on how to get started or specific techniques used in data mining that I should read on? Thanks! – tabchas Aug 25 '14 at 03:45