User:Draygo Korvan/Aspenwood Balance

General and Assumptions
After a strong feeling that the Fort Aspenwood Competative mission favors the luxon side, I have done some research and some testing to come up with some evidence to support my claim.

For one, I assume the mission itself is ideally balanced, that the kurzicks and the luxons have an inherit equal chance of winning assuming the players on each side are equal. However in the game the player ability is not equal and often you have some very weak players going up against experienced and strong players. I devised a test to check this theory. In addition, the inbalance is caused by the time the mission takes for either a luxon victory or a kurzick victory, this also greatly affects the win ratios. Because the luxons can win faster, even much faster than the kurzicks the good luxon players will be able to enter sooner and get another match in.

Test and description of method
All in all I devised this method. Each side would have 18 players that want to play in Fort Aspenwood. Each player would be rated on a scale of 0 to 1000, because I assume people are not completely incompetent I started it at 200. 0 would be players that leave or go afk which we are not measuring in this article.

So I started at 200 incremented by 50, and ended up with two players for each side rated at the maximum of 1,000. I realize player class also plays into this and you really cant have 8 monks all on one team and expect to win. But something like this can be examined later, I haven't seen that take place in game so this test will not take into account player class in that respect. It is not what this test is measuring.

So now I have two arrays, they are then randomized and then treated as a queue, the first 8 players are popped off and sent to 'battle 1', the next 8 are popped off and sent to 'battle 2'. If the luxons gain a victory (by having more total player skill points than the kurzick side) the participants are put back on the end of the queue in random order. This way teams will mix and match as much as possible to get a truely random sample. Because kurzick wins take longer, seemingly twice as long when they get a victory, those players are still locked in combat for an extra 'round' of the formula. The formula would have 1,000 iterations of 2 battles.

Result
Trial 1 Result

L wins:878 K wins:561

Trial 2 Result

L wins:833 K wins:584

Trial 3 Result

L wins:840 K wins:581

Trial 4 Result

L wins:835 K wins:583

Formula and Code
Wrote it out in PhP for simplicity sake, this code can be easily adopted in other languages with a little work. <?php //create luxon and kurzick player lists skill range 200-1000 $l[0] = 200; $l[1] = 250; $l[2] = 300; $l[3] = 350; $l[4] = 400; $l[5] = 450; $l[6] = 500; $l[7] = 550; $l[8] = 600; $l[9] = 650; $l[10] = 700; $l[11] = 750; $l[12] = 800; $l[13] = 850; $l[14] = 900; $l[15] = 950; $l[16] = 1000; $l[17] = 1000; $k[0] = 200; $k[1] = 250; $k[2] = 300; $k[3] = 350; $k[4] = 400; $k[5] = 450; $k[6] = 500; $k[7] = 550; $k[8] = 600; $k[9] = 650; $k[10] = 700; $k[11] = 750; $k[12] = 800; $k[13] = 850; $k[14] = 900; $k[15] = 950; $k[16] = 1000; $k[17] = 1000;

//we must randomize the list shuffle the players. shuffle($l); shuffle($k);

//now we must test the batch $nb1 = true; $nb2 = true; $kurzickwin = 0; $luxonwin = 0; $bl1 = array; $bk1 = array; $bl2 = array; $bk2 = array; for($i=0; $i<1000; $i++) {	//battles last 7 mins for luxon victory 14 for kurzick victory //grab 8 people for($ii=0;$ii<8 && $nb1;$ii++) {		array_push($bl1,array_shift($l)); array_push($bk1,array_shift($k)); }	for($ii=0;$ii<8 && $nb2;$ii++) {		array_push($bl2,array_shift($l)); array_push($bk2,array_shift($k)); }

//determine who will win if($nb1) {		if(array_sum($bl1) > array_sum($bk1)) {			$luxonwin++; $nb1 = true; }		else {			$kurzickwin++; $nb1 = false; //draws go to defense

}	}	else {		$nb1 = true; }	if($nb2) {		if(array_sum($bl2) > array_sum($bk2)) {			$luxonwin++; $nb2 = true; }		else {			$kurzickwin++; $nb2 = false; //draws go to defense

}	}	else {		$nb2 = true; }	if($nb1) {		//repopulate stack shuffle($bl1); shuffle($bk1); for($ii=0;$ii<8; $ii++) {		array_push($l,array_pop($bl1)); array_push($k,array_pop($bk1)); }	}	if($nb2) {		//repopulate stack shuffle($bl2); shuffle($bk2); for($ii=0;$ii<8; $ii++) {		array_push($l,array_pop($bl2)); array_push($k,array_pop($bk2)); }		} } echo("L wins:{$luxonwin} "); echo("K wins:{$kurzickwin} "); ?>