The first thing I’d like to present is the player rating system. The system I made is closely based on ELO system, with a lot of tweaking to make it better fit into team games with many possible factors. Is it mathematically correct? Fuck no!
Does it calculate players true skill? Ha-haha, fuck no!
Does it give the the basic idea of player's skill and experience? Yes!
So here we go.
Player’s rank varies from 10 (lowest) to 30 (highest, though there’s no real limit). Each player starts with rating of 10 and if his rating drops below this number, it’s automatically set back to 10. When displaayed to people, you discount those 10 points form rating so it becomes form 0 to 20, because it looks prettier. Now the system itself: Let’s assume there are 2 teams, composed of n1 and n2 players. After a game team 1 wins (if team 2 wins, rename it to “team 1” and return).
Rating of each team is calculated as geometric mean of its players’ ratings. This is made because geometric mean accounts for variance in the team players’ skills, so team of 8 average players will have slightly higher team rating than a team of 4 pros and 4 noobs. This seems correct to me, as the more different the players are in team, the harder it is for them to cooperate effectively. Now the formula for winning team’s score is: S1=1-1/(1+10((Rb-Ra)/15)) where Rb – rating of team b and Ra is rating of team a.
The result is a number between 0 and 1. The stronger your opponent is - the higher bonus you get. The losing team’s score equals minus winning teams’ score divided by two (-S1/2). This means losers lose 2 times less points than winners receive. As result, player ranks will inflate over time, but its okay since we have server restarts and smaller penalties are good incentive to play. It may be cool to give newly registered players their starting rank depending on their spring rank. In this case platinum start should have no more than 10th rank so that they actually have space to grow.
Now some additional multiplierss for players' scores added to make up for some various problems. 1: Importance factor – the more people took part in the battle, the less significant each player’s role in it. This means that people should get smaller rewards in large games and larger – in small ones. I wanted a 1v1 duel to be about 3 times more important than a 8v8 and 2 times than 4v4. The formula I found to be best for it is 1/(n0.5). 2: imbalance factor – the more imbalanced the teams are, the less predictable the results are and so the less important these games should be. Calculated simply as n1/n2 where n1 is the smaller team.
That’s pretty much all I could think of with ratings. We could probably also add a planetary defences factor to incorporate fleets and planetary stuff, but meh, that would create incentive to not overuse them, and why not overuse if it’s fun!
Then all you need is to add one constant factor to adjust the speed at which players are gaining ranks. I was aiming at something like 40 8v8 wins in even teams = 10 ranks gained. So this constant factor is just 2. Yeh, that’s probably too small, but the wars are going to take long time and you don’t want to see too many players gain highest ranks by the end of the war.
The overall formula is NewScore?=OldScore?+2*Kimp*Kimb*TeamScore?.
The main problem with this system is that veterans are going to gain skills too fast as the bonus for winning is divided equally among entire team. I tried to find a counter for this, but couldnt. Using a different algorithm where you count player's elo by counting it as if he won 1v1 battle against each opponent is much worse, just trust me or you'll have to read 2-3 pages of text more.
Now, I was too lazy to make a new ticket so here’s an unrelated suggestion about conquering planets.
Currently, there’s a possible exploit where you can register 2 smurfs, give one to your friend, go to duels server and let him lose to you a few dozen times. As result one side will lose many planets without even actually fighting for them. Even with people getting banned for that and stuff, there are still sometimes completely unfair teams or real noob duels, which allow people to capture extremely hard planets at almost no price.
I suggest giving each planet a new value – surface percentage lost. Each successful attack or defence will raise or drop this value. Most significant balanced battles (starting from good 3v3) should be enough to cap planets, but too small or too imbalanced games give you only some percentage of the planet’s surface and you have to attack again if you want to control the planet.
The formula I suggest is ( n0.5 * (n2/n1) * (s1)* (Ra+Rb)0.5 ) /5
n is overall number of players, n1 is n of players in larger team, n2 is number of players in smaller team, s1 is weaker team’s basic score (the one without additional factors added). You could just use min(s1, 1-s1) and use score of any team. Ra and Rb is average rating of each team calculated as geometric mean. This formula accounts for team sizes, average ranks, and player number and rating imbalance. The percentage conquered should drop by 5-10% every turn even if nothing happens on it. As result, pretty much any battle with more than 6 players and no ridiculous imbalance is enough to cap planet. If you find the Surface thing too complex, you could just set it so that if the result is above 1 the planet is lost, if its not - the game isnt counted as significant enough. To make it easier to understand for common players, you could give the bots a special command which tells people how much of the planet they will get/lose if they win or lose the battle with their current player setup.