[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [risk] DIceless Combat
On Thu, 9 Mar 2000, Richard Rognlie wrote:
> In _New Rules for Classic Games_, Schmittberger proposes a simple
> algorithm for diceless combat between two players...
>
> A v. B
>
> If both forces are the same, complete annihilation (unless once of the
> forces in defending [say A attacks B] in which case, 1 defender is left
> stadning).
>
> Otherwise, the larger force wins. It loses the same number of pieces as
> the smaller force, less the difference in size. W=W-(L-(W-L)) e.g.,
>
> A5 -> B3.
>
> A loses 3 minus the difference of 2 == 1. So A loses 1.
>
> This has the side affect of: If you attack with a force of twice the
> defender or more, you win without losing a piece.
Another flaw with this: W-(L-(W-L)) = 2W-2L and the result is always even.
Perhaps W-(L-((W-L)/2)) would be better. This losses are the smaller
force minus half the difference. End results can be odd, and it
takes triple instead of double the force for a lossless victory.
Incidently, I like this sort of system, since it makes how you use your
armies more important. Consider:
1:A(5) -- 2:A(5)
| \ |
3:B(6) -- 4:B(6)
B could defeat a with 3->1 and 4->2, but it would be better for him to do
3->1 and 4->1 and finish A of the next turn, since he will have more left
over to face the other players with.
> As long as only 2 players are involved, this works fine. But when we
> try to scale up to multiple players, it gets ugly quickly. e.g.
>
> A4 -> B3 <- C1
>
> if we think in terms of a combined attack we get (5 v. 3) The
> aggressors would lose 1. But who loses it? A or C?
Divide the losses equally, with the largest armies taking any remainders.
In this case A would lose it.
<thinking...>
Unfortunately, that may not be deterministic all the time:
Three cooperating armies, three armies each, loose 4 or 5 armies.
<think think think...>
Possible deterministic solution: If there are fractional losses, subtract
an additional army from the largest army(s). This would actually result
in additional losses in the case of ties as above, but it is
deterministic.
<more thought...>
Here a proposal for a deterministic way to divide losses between
cooperating armies:
1) Given N armies and L losses from the battle.
2) Each army looses trunc(L/N) armies, leaving L mod N = R losses
remaining.
3) If any army has less than trunc(L/N) armies (call it A). They are all
lost, and redo step 2 with L -= A and N -= 1.
4) Pick the largest R armies (or more in the case of ties) and subtract
one additional army from each.
Step 4 may actually increase the total number of armies lost, but each
army will lose no more than it's fair share rounded up.
> if the
> larger force A then A3 and C1 survive. they fight, and A3 takes
> the territory. If C loses the army, A4 survives to take the
> territory unopposed. And I can see arguments either way.
>
> It gets ugly ugly very quickly.
That's why I believe you need the "supporting" type of move.
If you are only supporting an attack, then it is clear that you will not
be the one to move into the territory after a successful raid.
It also opens the possibility of having your reinforcements cut off: if
they are attacked from another direction, they cannot lend support
somewhere else.
> To combat this, I created the algorithm currently in use.
>
> Take all the forces' values, and look at the top two values. If
> they're equal, mutual annihilation occurs (unless one of them is
> the defender... then 1 of his survives). If unequal, the largest
> force survives, losing the number of armies as the next larger. All
> others are lost. in the above example, A loses 3 but wins. B and C
> are eliminated. It's clean, but suffers from the drawback Bob
> mentioned this morning...
>
> What if A and C are working together? in the above example, C gains
> nothing from attacking. If he wants to help A, he could attack on
> an earlier turn, reducing B to 2, *then* A attacks only losing 2,
> not the 3... But that requires careful coordination.
>
> I'm still open to suggestions. It is beta afterall! 8^)
Here's a possibility: Given three or more armies, calculate the results
from each pair, and give each army the average of its winning results.
This would only be guaranteed to eliminate the smallest army, so it would
have to be repeated until only one army is left.
example using W-(L-((W-L)/2)):
A(5) B(4) C(6)
<calculate results for each pair>
1.5 - 0
0 - 3
0 -------- 1.5
<average non-zero results>
1.5 0 2.25
<calculate>
0 --------- .75
<it seems to work best if you only round at the end>
0 0 1
Another example:
A(8) B(6) C(5) D(5)
<calculate pairs>
3 - 0
4.5 - - - - 0
4.5 - - - - - - - - 0
1.5 - 0
1.5 - - - - 0
0 - - 0
<average>
4 1.5
<calculate>
3.75 - 0
<round>
4 0 0 0
On the other hand if C and D where to team up against the other two the
results would be quite different
A(8) B(6) C+D(10)
<calculate pairs>
3 0
0 3
0 6
<average>
3 4.5
<calculate>
0 2.25
<round>
0 0 2
<divide losses (L=8)>
A(0) B(0) C(1) D(1)
There are probably flaws with all of the above. Please point them out.
~ John Williams