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.
9
The basic approach is:
- Identify all the factors.
- Assign a weight to each factor.
- If the factor itself has a scale, assign a scaling formula (eg linear, log, capped, whatever) based on additional weights.
- If there are dependencies, express those as a formula based on additional weights.
- 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.
8
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.
5