Plugin Inquiry: Rank Balancer
Sarisel
.::' ( O ) ';:-. .-.:;' ( O ) '::. Join Date: 2003-07-30 Member: 18557Members, Constellation
<div class="IPBDescription">prevent stacking</div>This comes from my idea for a ranking system for NS2.
<a href="http://www.unknownworlds.com/forums/index.php?s=8968266149059279872&showtopic=99836" target="_blank">http://www.unknownworlds.com/forums/index....showtopic=99836</a>
For NS1, something more practical:
I know that there are plugins to collect stats about players. This causes a lot of stat "whoring". Instead of getting rid of stats, make them invisible and make a plugin that balances teams by ranks.
The general idea is as follows:
1. The average rank of the two teams should not differ beyond a critical value.
2. Each team should have approximately the same number of highest ranked players (i.e. higher ranked players must distribute themselves amongst each team so that there isn't a significant difference between their numbers on each team.)
This would also factor in when autoassigning, so instead of randomly placing players on either team, there would be an algorithm that will separate players into groups - higher ranked and lower ranked - and then randomly assign them separately.
Without autoassigning, the server checks the team rank averages as players join up. As soon as there is a significant difference, higher ranked players are no longer allowed to join the team with the higher rank average and can only join the other team in order to balance the averages.
Comments? I think this is possible to make, I just don't have the coding knowledge.
<a href="http://www.unknownworlds.com/forums/index.php?s=8968266149059279872&showtopic=99836" target="_blank">http://www.unknownworlds.com/forums/index....showtopic=99836</a>
For NS1, something more practical:
I know that there are plugins to collect stats about players. This causes a lot of stat "whoring". Instead of getting rid of stats, make them invisible and make a plugin that balances teams by ranks.
The general idea is as follows:
1. The average rank of the two teams should not differ beyond a critical value.
2. Each team should have approximately the same number of highest ranked players (i.e. higher ranked players must distribute themselves amongst each team so that there isn't a significant difference between their numbers on each team.)
This would also factor in when autoassigning, so instead of randomly placing players on either team, there would be an algorithm that will separate players into groups - higher ranked and lower ranked - and then randomly assign them separately.
Without autoassigning, the server checks the team rank averages as players join up. As soon as there is a significant difference, higher ranked players are no longer allowed to join the team with the higher rank average and can only join the other team in order to balance the averages.
Comments? I think this is possible to make, I just don't have the coding knowledge.
Comments
And then maybe adapt it to NS.
I think there already is a free plugin available that does this. I've seen it on Jigglypuff(?), it can be activated automatically or by server ops. If it helps to find this plugin, the players can type /stv in-game to see the rankings of players on each of the teams. The plugin does have flaws though, since it is limited to capturing stats on that server only. Everytime a new player joins, it is assumed that player has a rating of 0, even if they might be pro.
<!--QuoteEnd--></div><!--QuoteEEnd-->
You're referring to the Metamod plugin <a href="http://www.nsmod.org/forums/index.php?showtopic=207" target="_blank">Balance on Death</a>. It could easily be modified to meet the criteria Sarisel wants.
Sarisel, why not post in our <a href="http://www.nsmod.org/forums/index.php?showforum=2" target="_blank">Plugin Requests / Suggestions Forum</a> and reference to this B.O.D. plugin. We have some brilliant coders who could crank this out for you, particularly if I nudge them... <img src="style_emoticons/<#EMO_DIR#>/wink-fix.gif" style="vertical-align:middle" emoid=";)" border="0" alt="wink-fix.gif" />
Balance by stats will never be perfect and player acceptance is tough to overcome as they won't like their team selection being taken away from them, but implementing it on YO has solved many of our stacking issues.
The plugin does have flaws though, since it is limited to capturing stats on that server only. Everytime a new player joins, it is assumed that player has a rating of 0, even if they might be pro.
<!--QuoteEnd--></div><!--QuoteEEnd-->
While I definitely understand what you're getting at here, the problem with having a centralized location for player stats (other than obviously finding someone to donate a SQL server) would be that plugins are required to be open source because of Metamod's license. This means that any server operator who installs the plugin would be able to fully see the source code, and could modify it (and innocently throw off stats) or even worse, he could intentionally report rubbish to the centralized server.
With the per-server skill level, I couldn't imagine it would take terribly long for a newly recognized user's skill level to be placed in the ball park of where he belongs.
I'm curious how these plugins that already exist calculate skill level. I've tried a couple ways and I never came up with anything that I was satisfied with. I assume they just go off of K:D ratio, but what about commanders? Or gorges?
I don't think a centralised system is a good idea. There are too many factors that change as a specific player switches server. Someone who is effective on his local low-ping server might be a complete waste of space on the 180 ping server he likes to visit late at night. I think that if the right people with the right experience collaborate to produce a solid algorithm, amx plugin, sql schema and simple web interface for administration then serverops can build their own local database of steam ids.