A Miscellany of Issues

Dumping alliances
I’ve been having some difficulties with the alliance system. Its implementation is rather tricky. Should an actor have only one alliance at a time? What if one of the actors in an alliance greedily grabs up the information but refuses to engage the adversary in dream combat? What if an actor tricks another actor into an alliance, and then feeds him incorrect information in order to sucker the ally into a disastrous dream combat? There are so many complexities here that I think that I should remove alliances from the system for the nonce. I can re-insert them later, but for now, there are too many complexities. The new gossip system provides plenty of meaty interaction, so I should get that working just now.

Lying in gossip
Which raises a new topic: shouldn’t gossip be modulated by strategy? I had not given this any thought at first, but now I realize that there are situations that might call for an actor to offer deliberately misleading information to particularly opposed actors. For example, suppose that A is gossiping with B, whom A does not like. A tells B that C possesses a surfeit of shial. If B accepts A’s statement, then B will calculate that C is likely to play his shial, which means that B should play his tanaga, defeating C. Of course, if in fact C possesses a shortage of shial, then B will probably lose. 

This must be balanced against the likelihood that B does not trust A and so will ignore A’s information. 

In order to carry this out, I must first define the process by which actors make their combat decisions. The basic concept is simple: an actor wants to attack the actor whom he thinks he can best predict their aura-choice, which in turn is based on the confidence with which they know the difference between the largest aura-count. For example, if A thinks that B has aura counts of 3, 1, and 1, then A will conclude that B will likely use the first aura against him. The strength of this conclusion is the sum of the differences between 3 and the other two counts: 4. 

However, two modifications must be made to this calculation. First, the calculated strength must be reduced by the magnitude of the uncertainty of each of these counts. The uncertainty of each of the aura counts is the inverse of the cValue for those counts. So once again I’m back to figuring with uncertainties.

Digression to statistics
I dug up my old statistics books to get the right formulae, but they don’t provide any answers. Here is the first problem I must solve:

Given two mean values, x1 and x2, with standard deviations s1 and s2, what are the values of x3 and s3, the mean and standard deviations of the distribution representing the best combination of these two?

There are lots of examples of combing two distributions with different x1 and x2, but with the same s1 and s2. I need to solve the problem with different values of s1 and s2. Here is a graphical representation of the problem:

It should be obvious that the value of x3 will be closer to x2 than to x1, because the second distribution is narrower than the first. The solution, it seems obvious to me, is to find the point x3 such that (x3 - x1)/s1 = (x2 - x3)/s2. In other words, place x3 where it is an equal number of standard deviations away from each of the two distributions. Solving this equation for x3 yields:

x3 = [ x1 + (s1 * x2)/s2 ] / ( 1 + s1/s2)

There’s probably a cleaner form of this equation, but I don’t need clean at this point; I just need correct. The next task is to calculate s3. From the stuff I read in the textbooks, I’m pretty sure that

s3 = SQRT( s1**2 + s2**2)

Onto the next problem: calculating x4 and u4 representing the subtraction of x1 from x2. This one is addressed in a number of places. The difference is simply x2 - x1. The standard deviation uses exactly the same formula used for the mean of the two distributions. 

Back to the scripts
So now I can get back to the scripting. In deciding strategy, the actor will calculate for each opponent the value of the two differences between the biggest aura count and each of the other two aura counts. We then calculate the mean of those differences. In all these calculations the uncertainty values are propagated along with the mean values. We are left with a single number: X ± S, representing the best estimate of how lopsided the opponent’s distribution of aura counts is, and the uncertainty in that value. There will be six of these distributions, one for each of the other actors, so we’ll end up with something like this. No, wait a minute; after examining the six distributions, I realized that the uncertainties by themselves don’t alter the issue; the only factor that matters is the magnitude of the lopsidedness. 

But there’s another complication to add to the mix: the relationship of the target’s mix to the actor’s mix. Suppose, for example, that an attacker possessing an aura-count mix of { 3, 2, 0 } determines that a potential defender has the highest lopsidedness — but the defender's greatest strength lies in the aura that matches to the attacker’s 0 aura count. In other words, the defender’s greatest weakness lies in the one aura that the attacker cannot defeat. Obviously the attacker doesn’t want to attack this defender.

But does this consideration apply only to cases in which the attacker has zero auras? What if the attacker has an aura count distribution of { 3, 2, 1 }. In this case the attacker could indeed use his sole aura to defeat the defender. But wouldn’t this be a risky course of action? If the defender knows that he’s wiped out the last blue aura, then he can counterattack in perfect safety, and the best that the original attacker can do is trade off. 

Here we get into one of the trickiest aspect of intransitive combat relationships (rock, scissors, paper): the recurse nature of the calculations. I assume that he will play his strongest aura, but shouldn’t he play against what he thinks is my strongest aura? Which consideration is more important? 

What I have do here is assemble a table of probabilities for each opponent, calculating the probability for each color that the opponent would deploy that color. That probability is based on two considerations: the lopsidedness of his distribution (an actor prefers to deploy the color that he is strongest in) and his estimate of what the attacker has. Here we go again: circumferential relationships! These, however, are even trickier to apply, because 1) everybody starts with a poor estimate of the other’s aura counts; and 2) the aura counts are changing every night. 

The only thing making this system workable is the acquisition of more accurate information, which I intend to have happen every night as part of dream combat. I shall have to come up with a complete system for this; the method I used in the original game (giving each player knowledge of exactly one aura count for each opponent) might be applicable here, but I have to think this through carefully.