It seems to me that an Elo system is the ideal way to do it, but it is probably too big a re-work to implement (
http://en.wikipedia.org/wiki/Elo_rating_system).
So if its not to be a proper Elo, then the way I would suggest is;
- as current, being off line decays the ranking. The players who have not played will drop off the board, keeping it fresh with active players and thats a positive thing.
- a win against a much lower ranked player counts less than a win against a similar rank, and winning against a higher rank counts more. This would act as a very good reason for pro players to stop farming at level 20-23, as they stand to gain little 'per win, balancing the easy wins they can score.
- a win at high level counts more than a win at low level, but a loss is the same. This would act as a good reason to play at higher levels, giving a better distribution than the current low-level heavy distribution.
The formula would look something like this;
loss = -1 ranking points.
win = calculated as below; based on opponent's mech level
level 1-23 gives +1 ranking points
level 24 - 32 gives +2 ranking points
level 33 - 44 gives +3 ranking points
level 45 - 52 gives +4 ranking points
level 53 + gives +5 ranking points
Modified by winners rank position (i.e rank position on table, not ranking points) to a minimum +1 per point win
winner 100 to 199 higher than enemy -1 point
winners rank position 200 to 299 higher than enemy -2
etc.
winner 100 to 199 lower than enemy +1 point
winners rank position 200 to 299 lower than enemy +2
etc.
The modifier means winning against a higher ranked player is more benificial, and winning against a noob is less benificial.
A player like in the top 10 who plays at level 23 and will beat many inexperienced players would still gain a lot of ranks by winning a lot of games, but would gain it very slowly, gaining far less per win. While a player playing at higher level will gain his ranking much faster per win.