Logo
View unanswered posts | View active topics It is currently Thu Jun 21, 2018 4:22 am



Reply to topic  [ 19 posts ] 
D.R.A.I.C.H. Cannons! (Part 1) 
Author Message
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels
Image




Liquidedust and I worked on some numbers for cannons against out Shrines a while back. For me, personally, it's been a century since I've felt the pain of cannons (aside from the occasional shot) so I thought I'd go over the theory again and present my numbers.
I'm sure there are topics on Bugmans and Empire on this, but when it comes to military matters, Dark Elves aren't lazy and prefer to do everything themselves. :P

The first part of this topic will be dedicated to the maths and chance to hit a single target. I'll summarize the lessons learned at the end. (go there now)

I have also cursed the numbers and twisted them a little so that these conclusions will serve you excellently when you use them against High Elves but they will mysteriously fail you if you use them against Dark Elves.

Content:


Workings of the cannons

To better understand cannons, we'll investigate the limitations and potential of cannons. So we focus on:
- How accurate they are, or how likely they'll hit their target.
- How devastating they are, when they hit.

Firing a cannon

A brief recap on how cannons are fired.

  1. Designate a point on the table, for which the cannon aims.
  2. Roll artillery dice and draw a straight line from the cannon, over the designated spot, adding inches to the shot as shown by the artillery dice (measured from the designated spot). This is where the cannon ball lands.
  3. Roll the artillery dice again, for the "bounce" distance. The value rolled indicates the number of inches the cannon ball bounces/rolls over the field. A misfire indicates the cannon ball does not bounce.
  4. The cannon ball hits everything on its path, between the point where it "lands" to the point up to where it "bounced". The cannon ball can be blocked in this path, by terrain or any model which it failed to wound.

For the controlling player, the only variable of control is the target and the distance to target. This is why often the distance of a cannon shot is
expressed as distance to the target, rather than distance from the cannon.
The challenge, for the controlling player, is choosing a distance to the target with the higher probability to score a hit.

Dice facts

  • Artillery dice, is a D6 with values 'misfire', 2,4,6,8,10 with each side having an equal chance of 1/6 to be rolled.
  • The bounce roll uses an artillery dice with the misfire to mark 0.
  • A Rune of Forging allows you to reroll misfires on either the initial artillery roll or the bounce roll. We assume both artillery and bounce can be rerolled in the same shot.
    • Rerolling the artillery dice on misfires gives an out come "misfire" with 1/36 chance and any other of 2,4,6,8,10 with 7/36 chance.
    • Rerolling the bounce rolls gives 0 with 1/36 chance and 2,4,6,8,10 with 7/36 chance.
  • A Master Engineer allows you to reroll the initial artillery roll. This is a choice, so a balance must be made between the benefit of re-rolling vs the benefit of not re-rolling.

Always re-roll misfire

We will assume that a misfire is always re-rolled if a rule permits it. For both the first artillery roll and the bounce roll, it is always beneficial to re-roll a misfire.
There is only one situation where it may not be preferable to re-roll a misfire:
  • In case you have a friendly behind your designated target
  • And you scored a hit on the designated target, on the artillery dice.
  • And you are lucky enough to get no bounce on the bounce roll.
However, we feel that in this case you should re-roll the bounce and kill the friendly too out of general principle.
And to check if friendly fire is on.


Questions we want answered

  • What distance from the front, or the back of the target gives the best chance to hit for each kind of target?
  • What is the (best) chance of hitting the target?
  • What is the impact of a rune of forging?
  • What is the impact of the Dwarf Master Engineer?
    • What is the trade-off from the re-roll?
    • What is the maximum chance to hit that can be achieved with the Master Engineer?
  • What is the impact of a rune of forging, combined with the Dwarf Master Engineer? How does this impact the aforementioned strategies and trade-off?
  • Given a chance to hit, how likely is a cannon to take out a Shrine or COB after 1, 2, 3, 4 shots etc?
  • What is the best strategy to hit ranked troops of various types?

Calculations and tools used

2 inch intervals and base size.

The distance travelled by the cannon ball is a factor, and so it might be easier to hit bigger targets. Since the distance jumps per 2 inches, we can examine the number of inches that cross a base, for different angles, using simple trigonometry. (A^2 = B^2 + C^2)
Assuming we always face the cannon on the left corner of our base, we can colour the regions of our base where the cross-section is less than 2 inches, 2 to 4 inches, 4 to 6 inches.

Image
Legend:
  • Green: less than 2 inches cross section.
  • Yellow: at least 2 inches cross section.
  • Orange: at least 4 inches cross section.

We can see an interesting difference between the 40 mm peg bases and 50 mm peg bases. The smaller base only offers a cross section of 2+ inches along the diagonal line. The larger base, however, always offers a 2+ inch cross section except for an almost perfectly straight cross line.

We can also see that it would be a challenge to avoid a 4+ inch cross section for chariots and shrines unless they show their flank to the cannons.

While it seems we didn't reach a 6 inch cross section on any single base, we'll include it in the calculations for completion's sake. We won't go into details on its results however.


Chance to hit, method 1: build-up formula

We can calculate the chance to hit a target as follows:
  • For every distance to target guessed (designated targetting point)
    • For every roll of the artillery dice
      • Calculate the chance to hit the target on the bounce roll.
      • Add to total chance for the distance guessed.

We can then do this for every base size. While this method works, it requires quite a lot of calculations. We can not use the short cut of multinomials, to combine the artillery roll and bounce roll because a combined outcome of 14" doesn't indicate how much of that distance was bounced which we need to validate the hit.


Chance to hit, method 2: negative chance to miss formula

A slightly easier way to calculate the odds, is as follows:
  • For every distance guessed.
    • Calculate chance that the cannon ball falls short and doesn't reach the target P_undershoot. This can make use of the combined outcome of the artillery and bounce roll.
    • Calculate chance to overshoot the target P_overshoot. This can be done solely on the outcome table of the artillery dice.
    • Chance = 1 - P_misfire - P_overshoot - P_undershoot

The method is less intuitive but quicker to compute.


Measuring distance

The distance to target can be measured in many ways, by measuring from the front, centre or rear of the target. No factor relevant to the preferred target are influenced in any way by what point of reference we use to guess the distance.

For sake of completion, we'll compute the distance from the front and back.


Basic distance achieved

We nominate a point on the table and shoot the cannon. The distance achieved, with respect to the designated point, is:
  • misfire!: 16.67%
  • 2": 2.78%
  • 4": 5.56%
  • 6": 8.33%
  • 8": 11.11%
  • 10": 13.89%
  • 12": 13.89%
  • 14": 11.11%
  • 16": 8.33%
  • 18": 5.56%
  • 20": 2.78%

This outcome can be cached to compute the chance to hit more easily. At least, it shows us we need only be worried about computing distances between 2" and 20".

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Thu Feb 19, 2015 9:55 am
Profile WWW
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels

Case 1, a regular cannon shot

We start with a plain example: a regular cannon shot, with no modifiers. We compute this for different base sizes or cross sections along the path of the cannon ball, and for different distances.
-> Jump to the conclusions

[+] code development
Code

With method 1. Watch it in action here:
https://jsfiddle.net/t26tLjez/

Code:
/* Little function to make our percentage output prettier. */
var prettyPercentage= function(perc){
   return Math.round(perc * 10000)/100;
}

/* get the Output element */
var output = document.getElementById('outcomes');

// Chance to score at least x inches on the bounce
            //  0"  1"   2"   3"   4"   5"   6"   7"   8"   9"  10"  11" ...              
var cummulBounce = [1, 5/6, 5/6, 4/6, 4/6, 3/6, 3/6, 2/6, 2/6, 1/6, 1/6, 0, 0];
// Chance to score at least x inches on the bounce with Rune of Forging

/*
 Calculate the odds for each base size. The artillery dice jumps
 by 2 inches each time, so it's worth only checking the sizes up
 to 8 inches, with both base and distance intervals of 2".
*/
for(var baseSize=0; baseSize<=6; baseSize+=2){
   // Print out the base size.
   output.value += '\r\nFor base sizes: ['+ baseSize +'",'+(baseSize+2)+'"[\r\n';
   /*
      Max range is 20, min range is 2 so we measure odds for all
      distances between 0" and 20" from the front of the target.
      We this distance as "Guess", being the range from the back of
      the base.
   */
   for(var guess=20+baseSize; guess>=0; guess-=2) {
      // We will need to track the total, for various rolls on the artillery dice.
      var total = 0;
      //Artillery dice can missfire. Otherwise returns 2,4,6,8 or 10".
      for(var art=2; art<=10; art+=2) {
         /*
            1. Check if Artillery dice didn't overshoot
            2. Check that the bounce can still reach base.
         */
         if( (art<=guess) && (guess-art-baseSize <= 10)) {
            /*
               1/6th chance to have this roll from the artillery dice
               multiplied by the chance that the bounce can reach target.
            */
            var chance = 1/6 * cummulBounce[Math.max(0,guess-art-baseSize)];   
            /* Add this to the total chance for the guessed distance; */
            total += chance;            
         }
      }
      /*
         Print the outcome for the user to read. Write distance from
         front, center and back of the base.
      */
      output.value += 'Guess '
                  + (guess-baseSize) + '", '
                  + (guess-baseSize/2) + '", '
                  + (guess) + '": '
                  +  prettyPercentage(total)+ '%\r\n';
   }
}


With method 2. Watch it in action here:
https://jsfiddle.net/4gn67dwo/
Code:
/* Little function to make our percentage output prettier. */
var prettyPercentage= function(perc){
   return Math.round(perc * 10000)/100;
}

/* get the Output element */
var output = document.getElementById('outcomes');

/*
   The basic outcomes of some dice, precached.
   artRedux: the chance to roll at least x on artillery dice
   combiCummul: chance to roll at most x on both artillery and bounce dice
                  0...   1...   2...   3...   4...   5      6       7      8      9      10
*/
var artRedux       =[   5/6,    5/6,    5/6,   4/6,   4/6,   3/6,   3/6,   2/6,   2/6,   1/6,   1/6];
var combiCummul      =[   0,      0,       1/36,   1/36,   3/36,   3/36,   6/36,   6/36,   10/36,   10/36,   15/36,
//                        11,      12,      13,      14,    15,      16,      17,      18,      19,      20
                        15/36,   20/36,   20/36,   24/36,   24/36,   27/36,   27/36,   29/36,   29/36,   30/36];

/*
 Calculate the odds for each base size. The artillery dice jumps
 by 2 inches each time, so it's worth only checking the sizes up
 to 8 inches, with both base and distance intervals of 2".
*/
for(var baseSize=0; baseSize<=6; baseSize+=2){
   // Print out the base size.
   output.value += '\r\nFor base sizes: ['+ baseSize +'",'+(baseSize+2)+'"[\r\n';
   /*
      Max range is 20, min range is 2 so we measure odds for all
      distances between 2" and 20" from the front of the target.
      We this distance as "Guess", being the range from the back of
      the base.
   */
   for(var guess=20+baseSize; guess>=2; guess-=2) {
      // Chance to undershoot = roll at most 2 inch less than guessed (from front).
      var under = combiCummul[Math.max(0, guess-baseSize-2)];
      // Chance to overshoot = chance to roll more than guessed (from back)
      var over = (guess >= 10) ? 0 : artRedux[guess+2];
      // misfire chance
      var misfire = 1/6;
      // total chance is 100% - chance to undershoot - chance to overshoot - misfire
      var chance = (1-under-over-misfire) ;
      /*
         Print the outcome for the user to read. Write distance from
         front, center and back of the base.
      */
      output.value += 'Guess ' + (guess-baseSize) +'", '
               + Math.round(guess-baseSize/2) +'", '
               + guess +'": '+ prettyPercentage(chance) +'%\r\n';
   }
}


Results

We summarize the results to the top 3 scores for each base size. Our guessed distance shows 3 numbers, being the difference to the target's front, centre and back respectively.

  • For base sizes: 0" to 2"
    • Guess 12", 12", 12" : 41.67%
    • Guess 10", 10", 10" : 55.56%
    • Guess 8", 8", 8" : 50%
    • Guess 6", 6", 6" : 41.67%
  • For base sizes: 2" to 4"
    • Guess 10", 11", 12" : 55.56%
    • Guess 8", 9", 10" : 66.67%
    • Guess 6", 7", 8" : 58.33%
  • For base sizes: 4" to 6"
    • Guess 8", 10", 12" : 66.67%
    • Guess 6", 8", 10" : 75%
    • Guess 4", 6", 8" : 63.89%



Conclusion

We see a pattern emerge, where aiming 10" from the back of the model consistently scores the best chance to hit. Using this measurement, the chance to hit with a regular shot can be summarized:
  • For bases 0" to 2", 10" from the back: 55.56% hit chance.
  • For bases 2" to 4", 10" from the back: 66.67% hit chance.
  • For bases 4" to 6", 10" from the back: 75% hit chance.

We can make some other (less important) observations:
  • For small bases, we lose only 5% hit chance by guessing 2" less in distance. We trade 5% hit chance for 2" gain on average.
  • For small bases, the second best distance is 8" from the back. This can probably be explained by the high risk of not reaching the target. As the bases grow larger, this risk is lowered considerably.
  • For larger bases, the second best distance is 12" from the back.
While these observations don't matter that much with respect to our preferred target, they beg further investigation in case of hitting multiple targets such as a ranked unit.

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Thu Feb 19, 2015 9:56 am
Profile WWW
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels

Case 2, a cannon with Rune of Forging

The Rune of Forging allows a reroll of missfires on the artillery and bounce roll. We compute this chance to hit again, for different base sizes or cross sections along the path of the cannon ball, and for different distances (with respect to front, center and rear). We highlight the top 3 scores for each base size.
-> Jump to the conclusions
[+] code development
Code


Method 1. Watch it in action here:
http://jsfiddle.net/9t9o0gg2/1/

Code:
/* Little function to make our percentage output prettier. */
var prettyPercentage= function(perc){
   return Math.round(perc * 10000)/100;
}

/* get the Output element */
var output = document.getElementById('outcomes');

// Chance to score at least x inches on the bounce with Rune of Forging
//                 0"    1"      2"      3"      4"      5"      6"      7"      8"      9"     10"
var cummulReBounce = [   1,   35/36,   35/36,   28/36,   28/36,   21/36,   21/36,   14/36,   14/36,   7/36,   7/36];
/*
   Redo the calculation, with Rune of Forging. Missfires are rerolled.
   Comments below mark the differences with previous case.
*/
for(var baseSize=0; baseSize<=6; baseSize+=2){
   output.value += '\r\nFor base sizes: ['+ baseSize +'",'+(baseSize+2)+'"[\r\n';
   for(var guess=20; guess>=2; guess-=2) {
      var total = 0;            
      for(var art=2; art<=10; art+=2) {
         if( (art<=guess) && (guess-art-baseSize <= 10)) {
            /*
               Chance on missfire is 1/6th, which is rerolled. So:
               chance to roll X
                  = chance_roll_X + chance_missfire * chance_roll_X
                  = 6/6 chance_roll_X + 1/6 chance_roll X
                  = 7/6 chance_roll_X
               Every X has 1/6th chance. So:
                  = 7/6 * 1/6
               instead of 1/6.
               Also use rebounce chance, since missfire on rebounce
               can be rerolled.
            */
            var chance = 7/6 * 1/6 * cummulReBounce[Math.max(0,guess-art-baseSize)];   
            total += chance;
         }
      }
      output.value += 'Guess '
                  + (guess-baseSize) + '", '
                  + (guess-baseSize/2) + '", '
                  + (guess) + '": '
                  +  prettyPercentage(total)+ '%\r\n';
   }
}




Method 2. Watch it in action here:
http://jsfiddle.net/1toj7a25/
Code:
// A simple function to combine the outcome of two rolls.
var multiply = function(pmf1, pmf2)
{
   var combination = new Array(pmf1.length + pmf2.length - 1);
   for(var k=0;k<combination.length;k++) combination[k] = 0;
   for(var i=0;i<pmf1.length;i++) {
      for(var j=0;j<pmf2.length;j++) {
         combination[(i+j)] += pmf1[i] * pmf2[j];
      }
   }
   return combination;
}


/*
   The basic outcomes of some dice, precached.
   reBounce: the chance to roll x on a RoF bounce roll
   reArt: the chance to roll x on a RoF artillery roll
   reArtRedux: chance to roll at most x on RoF artillery roll
                  0...   1...   2...   3...   4...   5      6       7      8      9      10
*/
var reBounce       =[   1/36,    0,       7/36,   0,      7/36,   0,      7/36,   0,      7/36,   0,      7/36];
var reArt          =[   0,       0,       7/36,   0,      7/36,   0,      7/36,   0,      7/36,   0,      7/36];
var reArtRedux       =[   35/36,   35/36,   35/36,   28/36,   28/36,   21/36,   21/36,   14/36,   14/36,   7/36,   7/36];

/*
   reCombiCummul: chance to roll at least X on both artillery and
   bounce roll with RoF.
*/
var reCombi = multiply(reArt, reBounce);
var reCombiCummul = [];
cummul = 0;
for(var i=0; i<reCombi.length; i++) {
   cummul +=  reCombi[i];
   reCombiCummul[i] = cummul;
}
/*
   Redo the calculation, with Rune of Forging. Missfires are rerolled.
   Comments below mark the differences.
*/
for(var baseSize=0; baseSize<=6; baseSize+=2){
   output.value += '\r\nFor base sizes: ['+ baseSize +'",'+(baseSize+2)+'"[\r\n';
   for(var guess=20+baseSize; guess>=2; guess-=2) {
      // chance to undershoot takes into account ROF now.
      var under = reCombiCummul[Math.max(0, guess-baseSize-2)];
      // chance to overshoot takes into account ROF now.
      var over = (guess >= 10) ? 0 : reArtRedux[guess+2];
      // misfire with ROF is 1/36
      var misfire = 1/36;
      var chance = (1-under-over-misfire) ;
      output.value += 'Guess ' + (guess-baseSize) +'", '
               + Math.round(guess-baseSize/2) +'", '
               + guess +'": '+ prettyPercentage(chance) +'%\r\n';
   }
}


Results

  • For base sizes: 0" to 2"
    • Guess 12", 12", 12" : 56.71%
    • Guess 10", 10", 10" : 72.38%
    • Guess 8", 8", 8" : 64.81%
  • For base sizes: 2" to 4"
    • Guess 10", 11", 12" : 72.38%
    • Guess 8", 9", 10" : 84.26%
    • Guess 6", 7", 8" : 72.92%
  • For base sizes: 4" to 6"
    • Guess 8", 10", 12" : 84.26%
    • Guess 6", 8", 10" : 92.36%
    • Guess 4", 6", 8" : 77.24%


Conclusion

10" from the back is the miracle distance that never fails.
  • For bases 0" to 2", 10" from the back: 72.38% hit chance.
  • For bases 2" to 4", 10" from the back: 84.26% hit chance.
  • For bases 4" to 6", 10" from the back: 92.36% hit chance.

Aside from a notably higher chance to hit, largely attributed to smaller misfire risks, we can see larger distances score better. This is presumably the benefit of re-rolling a 0 bounce roll.

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Thu Feb 19, 2015 9:56 am
Profile WWW
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels

Case 3, a cannon with a Dwarf Master Engineer

All hail the engineer!


A Dwarf Master Engineer might smash the cannon with his hammer to make it work even better. Or so they believe. The engineer allows the controlling player to re-roll the first artillery roll (not the bounce). This includes an element of choice, placed in the player's hand. The re-roll may increase the chance of success, but also increases the risk of a misfire. This requires the player to strike a balance between risk and benefit.
To offer the player the facts to make this call, we compare the chance of success with and without the re-roll, for every outcome of the artillery dice. However, this doesn't give us the resulting hit chance: only the data to make a choice.


A story of reason and minimum insanity

While a Dwarf Engineer might consider re-rolling a misfire self-evident, this is a little trickier for a poor roll on the artillery dice which isn't a misfire. The player is forced to make a trade-off between risking a misfire or increasing the chance to hit. We nickname this trade-off "reason". For example, 5% reason implies a re-roll if the re-roll increases the chance to hit by 5% or more.
However, no engineer is entirely sane, and we take into account another factor: "minimal insanity". This is the part where a Master Engineer will re-roll all artillery roles that have no chance of hitting the target. For example, overshooting your target will force a re-roll.

Then, for any amount of reason we can compute the hit chance.

-> jump to conclusions
[+] code development
The code

Watch it in action here:
http://jsfiddle.net/6u9t6tjq/
Code:
/* Little function to make our percentage output prettier. */
var prettyPercentage= function(perc){
   return Math.round(perc * 10000)/100;
}
/* get the Output element */
var output = document.getElementById('outcomes');

// The basic outcomes of some dice.
// "Cummul" suffix implies cummulative scores (at most x).
// "Redux" implies reduction (a lease x)
//                  0...   1...   2...   3...   4...   5      6       7      8      9      10
var bounceCummul   =[   1/6,    1/6,   2/6,   2/6,   3/6,   3/6,   4/6,   4/6,   5/6,   5/6,    1];
var artRedux       =[   5/6,    5/6,    5/6,   4/6,   4/6,   3/6,   3/6,   2/6,   2/6,   1/6,   1/6];
var combiCummul      =[   0,      0,       1/36,   1/36,   3/36,   3/36,   6/36,   6/36,   10/36,   10/36,   15/36,
//                        11,      12,      13,      14,    15,      16,      17,      18,      19,      20
                        15/36,   20/36,   20/36,   24/36,   24/36,   27/36,   27/36,   29/36,   29/36,   30/36];

/* Cache the result of the Basic cannon shot. */
var chances = [];
for(var baseSize=0; baseSize<=6; baseSize+=2){
   chances[baseSize] = [];
   for(var guess=20+baseSize; guess>=2; guess-=2) {
      var under = combiCummul[Math.max(0, guess-baseSize-2)];
      var over = (guess >= 10) ? 0 : artRedux[guess+2];
      var misfire = 1/6;
      var chance = (1-under-over-misfire) ;
      chances[baseSize][guess] = chance;
   }
}
         

/* Cannon shot, with Master Engineer. */
output.value += '\r\n** Cannon shot with Master Engineer, per Artillery score ** \r\n';
   
// Just some code to cache the results
var masterChances = [];
for(var baseSize=0; baseSize<=6; baseSize+=2){
   // Just some code to cache the results
   masterChances[baseSize] = [];
   output.value += '\r\nFor base sizes: ['+ baseSize +'",'+(baseSize+2)+'"[\r\n';
   for(var guess=20+baseSize; guess>=2; guess-=2) {
      // Just some code to cache the results
      masterChances[baseSize][guess] = [];
      output.value += '\r\nGuess ' + (guess-baseSize) +'" / '+ Math.round(guess-baseSize/2) +'" / '+ guess +'" - ';
      output.value += 'Reroll gives ' + prettyPercentage(chances[baseSize][guess]) +'%\r\n';
      for(var art=2; art<=10; art+=2) {
         var under = (art >= guess-baseSize)? 0 : bounceCummul[Math.min(10,guess-baseSize-art-2)];
         var over = (art > guess) ? 1 : 0;
         var misfire = 0; //We only check artillery rolls that aren't misfire.
         var chance = (1-under-over-misfire) ;
         // Just some code to cache the results
         masterChances[baseSize][guess][art] = chance;
         output.value += 'Art ' + art +'": '+ prettyPercentage(chance) +'%\r\n';         
      }
   }
}


/* Cannon shot, with Master Engineer, reason and minimum insanity. */
output.value += '\r\n** Cannon shot with Master Engineer, Reason and minimum insanity** \r\n';

for(var reason=0; reason<=1; reason+=0.10) {
   //Write reason level to output
   output.value += '\r\nWith '+prettyPercentage(reason)+'% reason \r\n';
   for(var baseSize=0; baseSize<=6; baseSize+=2){
      //Write base size to output
      output.value += '\r\nFor base sizes: ['+ baseSize +'",'+(baseSize+2)+'"[\r\n';
      for(var guess=20+baseSize; guess>=2; guess-=2) {   
         //Chance to hit on re-roll is the cached regular shot
         var chanceReroll = chances[baseSize][guess];   
         //Add re-roll after misfire to total
         var total = 1/6 * chanceReroll;
         for(var art=2; art<=10; art+=2) {
            // Chance to hit is cached.
            var chanceRoll = masterChances[baseSize][guess][art];
            // See if chance to hit is 0 or within reason from reroll.
            if((chanceRoll == 0) || (chanceReroll - reason > chanceRoll)) {
               // Reroll
               total += 1/6 * chances[baseSize][guess];
            } else {
               // If chance to hit was reasonable, just throw the bounce.
               total += 1/6 * chanceRoll;
            }
         }
         //Write report to user
         output.value += 'Guess ' + (guess-baseSize) +'" / '+ Math.round(guess-baseSize/2) +'" / '+ guess +'": '
                     + prettyPercentage(total) + "%\r\n";
      }
   }
}



The numbers
[+] The numbers
We summarize the returned numbers to the top scoring ranges.

  • For base sizes: 0" to 2"
    • Guess 12", 12", 12" - Reroll gives 41.67%
      • Art 2": 16.67%
      • Art 4": 33.33%
      • Art 6": 50%
      • Art 8": 66.67%
      • Art 10": 83.33%
    • Guess 10", 10", 10" - Reroll gives 55.56%
      • Art 2": 33.33%
      • Art 4": 50%
      • Art 6": 66.67%
      • Art 8": 83.33%
      • Art 10": 100%
    • Guess 8", 8", 8" - Reroll gives 50%
      • Art 2": 50%
      • Art 4": 66.67%
      • Art 6": 83.33%
      • Art 8": 100%
      • Art 10": 0%
    • Guess 6", 6", 6" - Reroll gives 41.67%
      • Art 2": 66.67%
      • Art 4": 83.33%
      • Art 6": 100%
      • Art 8": 0%
      • Art 10": 0%
  • For base sizes: 2" to 4"
    • Guess 10", 11", 12" - Reroll gives 55.56%
      • Art 2": 33.33%
      • Art 4": 50%
      • Art 6": 66.67%
      • Art 8": 83.33%
      • Art 10": 100%
    • Guess 8", 9", 10" - Reroll gives 66.67%
      • Art 2": 50%
      • Art 4": 66.67%
      • Art 6": 83.33%
      • Art 8": 100%
      • Art 10": 100%
    • Guess 6", 7", 8" - Reroll gives 58.33%
      • Art 2": 66.67%
      • Art 4": 83.33%
      • Art 6": 100%
      • Art 8": 100%
      • Art 10": 0%
  • For base sizes: 4" to 6"
    • Guess 8", 10", 12" - Reroll gives 66.67%
      • Art 2": 50%
      • Art 4": 66.67%
      • Art 6": 83.33%
      • Art 8": 100%
      • Art 10": 100%
    • Guess 6", 8", 10" - Reroll gives 75%
      • Art 2": 66.67%
      • Art 4": 83.33%
      • Art 6": 100%
      • Art 8": 100%
      • Art 10": 100%
    • Guess 4", 6", 8" - Reroll gives 63.89%
      • Art 2": 83.33%
      • Art 4": 100%
      • Art 6": 100%
      • Art 8": 100%
      • Art 10": 0%

Overall, it seems 10" from the back wins, but the numbers offer different strategies. We check it for a few different values of reason.

  • With 0% reason
    • For bases 0" to 2"
      • Guess 10", 10", 10": 69.44%
      • Guess 8", 8", 8": 66.67%
      • Guess 6", 6", 6": 62.5%
    • For bases 2" to 4"
      • Guess 8", 9", 10": 80.56%
      • Guess 6", 7", 8": 77.78%
      • Guess 4", 5", 6": 70.83%
    • For bases 4" to 6"
      • Guess 8", 10", 12": 80.56%
      • Guess 6", 8", 10": 88.89%
      • Guess 4", 6", 8": 85.19%
  • With 40% reason
    • For bases 0" to 2"
      • Guess 10", 10", 10": 64.81%
      • Guess 8", 8", 8": 66.67%
      • Guess 6", 6", 6": 62.5%
    • For bases 2" to 4"
      • Guess 8", 9", 10": 77.78%
      • Guess 6", 7", 8": 77.78%
      • Guess 4", 5", 6": 70.83%
    • For bases 4" to 6"
      • Guess 8", 10", 12": 77.78%
      • Guess 6", 8", 10": 87.5%
      • Guess 4", 6", 8": 85.19%
  • With 100% reason
    • For bases 0" to 2"
      • Guess 10", 10", 10": 64.81%
      • Guess 8", 8", 8": 66.67%
      • Guess 6", 6", 6": 62.5%
    • For bases 2" to 4"
      • Guess 8", 9", 10": 77.78%
      • Guess 6", 7", 8": 77.78%
      • Guess 4", 5", 6": 70.83%
    • For bases 4" to 6"
      • Guess 8", 10", 12": 77.78%
      • Guess 6", 8", 10": 87.5%
      • Guess 4", 6", 8": 85.19%

We can note that for higher scores of reason, suddenly the 8" from the back method beats the 10" from the back method. This is a result from overshooting the target, which will always trigger a re-roll with a rather high chance to hit. By comparison, the 10" from the back method always has a chance to hit, even when rolling a 2" on the artillery dice. For higher numbers of reason, this will not be re-rolled. So it may seem that the lower guessing range scores better, while actually it is more risky than the 10" from the back method.


Conclusion

Based on this, different strategies are possible. We stick to the most and least risky strategy.
  • The most risky strategy re-rolls all artillery dice, if they increase the chance to hit.
    • For bases 0" to 2", 10" from the back: 69.44% hit chance, by re-rolling misfires, 2 and 4. However, the re-roll of 4 is not recommended.
    • For bases 2" to 4", 10" from the back: 80.56% hit chance, by re-rolling misfires and 2.
    • For bases 4" to 6", 10" from the back: 88.89% hit chance, by re-rolling misfires and 2.
  • The least risky strategy re-rolls only the misfires.
    • For bases 0" to 2", 10" from the back: 64.82% hit chance.
    • For bases 2" to 4", 10" from the back: 77.78% hit chance.
    • For bases 4" to 6", 10" from the back: 87.5% hit chance.

We observe a brief emergence of the distance 8" from the back for moderate values of reason. However, this is partly attributed to being forced to re-roll overshooting the target.
We could note that, although the difference between a risky strategy and safe strategy may seem small, this doesn't mean that the benefit of re-rolling a "2" on the artillery dice isn't worth it. When a 2 is rolled, the re-roll can yield up to 20% more chance to hit.

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Thu Feb 19, 2015 9:56 am
Profile WWW
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels

Case 4, a cannon with a Dwarf Master Engineer and the Rune of Forging.

In case a player gets crazy, they may stack the Engineer and Rune of Forging on a single shot. As with the regular cannon, we can expect this to benefit longer guessing distances a little more, which benefit the most from the re-roll on the bounce. This is weighed now against the benefit from the Master Engineer which seemed to benefit shorter guessing ranges more.
-> jump to conclusions

[+] code development
The code

Watch it in action here:
http://jsfiddle.net/wLsarrg2/

Code:
/* Little function to make our percentage output prettier. */
var prettyPercentage= function(perc){
   return Math.round(perc * 10000)/100;
}

/* get the Output element */
var output = document.getElementById('outcomes');


// The basic outcomes of some dice.
// "Cummul" suffix implies cummulative scores (at most x).
// "Redux" implies reduction (a lease x)
// "Re" stands for "re-roll".
//                  0...   1...   2...   3...   4...   5      6       7      8      9      10
var artRedux       =[   5/6,    5/6,    5/6,   4/6,   4/6,   3/6,   3/6,   2/6,   2/6,   1/6,   1/6];
var reBounceCummul   =[   1/36,    1/36,   8/36,   8/36,   15/36,   15/36,   22/36,   22/36,   29/36,   29/36,    1];
var combiArtReBounceCummul=[0,0,1/216,1/216,3/72,3/72,1/9,1/9,46/216,46/216,75/216,75/216,110/216,110/216,138/216,138/216,159/216,159/216,173/216,173/216,180/216];

   

/* Cannon shot, with Rune of Forging. */
output.value += '\r\n** Cannon shot with Master Engineer and Rune of Forging ** \r\n';
         
// We cache the chance to hit with no reroll on artillery and
// a re-roll from the of Rune of Forging on the bounce only/
// This is our re-roll chance for the artillery dice.
var rofBounceChances = [];
for(var baseSize=0; baseSize<=6; baseSize+=2){
   rofBounceChances[baseSize] = [];
   for(var guess=20+baseSize; guess>=2; guess-=2) {
      var under = combiArtReBounceCummul[Math.max(0, guess-baseSize-2)];
      var over = (guess >= 10) ? 0 : artRedux[guess+2];
      var misfire = 1/6;
      var chance = (1-under-over-misfire) ;
      rofBounceChances[baseSize][guess] = chance;
   }
}


var rofMasterChances = [];
for(var baseSize=0; baseSize<=6; baseSize+=2){
   rofMasterChances[baseSize] = [];
   output.value += '\r\nFor base sizes: ['+ baseSize +'",'+(baseSize+2)+'"[\r\n';
   for(var guess=20+baseSize; guess>=2; guess-=2) {
      rofMasterChances[baseSize][guess] = [];
      output.value += '\r\nGuess ' + (guess-baseSize) +'" / '+ Math.round(guess-baseSize/2) +'" / '+ guess +'" - ';
      output.value += 'Reroll gives ' + prettyPercentage(rofBounceChances[baseSize][guess]) +'%\r\n';
      for(var art=2; art<=10; art+=2) {
         var under = (art >= guess-baseSize)? 0 : reBounceCummul[Math.min(10,guess-baseSize-art-2)];
         var over = (art > guess) ? 1 : 0;
         var missfire = 0;
         var chance = (1-under-over-missfire) ;
         rofMasterChances[baseSize][guess][art] = chance;
         output.value += 'Art ' + art +'":'+ prettyPercentage(chance) +'%\r\n';         
      }
   }
}


/* Cannon shot, with Master Engineer, reason and minimum insanity. */
output.value += '\r\n** Cannon shot with Master Engineer, Reason and minimum insanity** \r\n';
// Reroll is rofBounceChances[baseSize][guess]
// Without reroll = rofMasterChances[baseSize][guess][art]

for(var reason=0; reason<=1; reason+=0.20) {
   output.value += '\r\nWith '+prettyPercentage(reason)+'% reason \r\n';
   for(var baseSize=0; baseSize<=6; baseSize+=2){
      //Write base size to output
      output.value += '\r\nFor base sizes: ['+ baseSize +'",'+(baseSize+2)+'"[\r\n';
      for(var guess=20+baseSize; guess>=2; guess-=2) {      
         var chanceReroll = rofBounceChances[baseSize][guess];
         // we always reroll missfires, so add this to the total chance
         var total = 1/6 * chanceReroll;
         for(var art=2; art<=10; art+=2) {
            var chanceRoll = rofMasterChances[baseSize][guess][art];
            if((chanceRoll == 0) || (chanceReroll - reason > chanceRoll)) {
               total += 1/6 * chanceReroll;
            } else {
               total += 1/6 * rofMasterChances[baseSize][guess][art];
            }
         }
         //Write guess range to output
         output.value += 'Guess ' + (guess-baseSize) +'", '+ Math.round(guess-baseSize/2) +'", '+ guess +'": '
                     + prettyPercentage(total) + "%\r\n";
      }
   }
}


The numbers
[+] The numbers
  • For base sizes: 0" to 2"
    • Guess 12", 12", 12" - Reroll gives 48.61%
      • Art 2":19.44%
      • Art 4":38.89%
      • Art 6":58.33%
      • Art 8":77.78%
      • Art 10":97.22%
    • Guess 10", 10", 10" - Reroll gives 62.04%
      • Art 2":38.89%
      • Art 4":58.33%
      • Art 6":77.78%
      • Art 8":97.22%
      • Art 10":100%
    • Guess 8", 8", 8" - Reroll gives 55.56%
      • Art 2":58.33%
      • Art 4":77.78%
      • Art 6":97.22%
      • Art 8":100%
      • Art 10":0%
  • For base sizes: 2" to 4"
    • Guess 10", 11", 12" - Reroll gives 62.04%
      • Art 2":38.89%
      • Art 4":58.33%
      • Art 6":77.78%
      • Art 8":97.22%
      • Art 10":100%
    • Guess 8", 9", 10" - Reroll gives 72.22%
      • Art 2":58.33%
      • Art 4":77.78%
      • Art 6":97.22%
      • Art 8":100%
      • Art 10":100%
    • Guess 6", 7", 8" - Reroll gives 62.5%
      • Art 2":77.78%
      • Art 4":97.22%
      • Art 6":100%
      • Art 8":100%
      • Art 10":0%
  • For base sizes: 4" to 6"
    • Guess 8", 10", 12" - Reroll gives 72.22%
      • Art 2":58.33%
      • Art 4":77.78%
      • Art 6":97.22%
      • Art 8":100%
      • Art 10":100%
    • Guess 6", 8", 10" - Reroll gives 79.17%
      • Art 2":77.78%
      • Art 4":97.22%
      • Art 6":100%
      • Art 8":100%
      • Art 10":100%
    • Guess 4", 6", 8" - Reroll gives 66.2%
      • Art 2":97.22%
      • Art 4":100%
      • Art 6":100%
      • Art 8":100%
      • Art 10":0%

When we add in reason and minimum insanity, we get some exact scores:

  • With 0% reason
    • For bases 0" to 2"
      • Guess 10", 10", 10": 76.85%
      • Guess 8", 8", 8": 74.07%
      • Guess 6", 6", 6": 68.75%
    • For bases 2" to 4"
      • Guess 10", 11", 12": 76.85%
      • Guess 8", 9", 10": 86.57%
      • Guess 6", 7", 8": 83.33%
    • For bases 4" to 6"
      • Guess 8", 10", 12": 86.57%
      • Guess 6", 8", 10": 92.59%
      • Guess 4", 6", 8": 88.27%
  • With 30% reason
    • For bases 0" to 2"
      • Guess 10", 10", 10": 72.38%
      • Guess 8", 8", 8": 74.07%
      • Guess 6", 6", 6": 68.75%
    • For bases 2" to 4"
      • Guess 8", 9", 10": 84.26%
      • Guess 6", 7", 8": 83.33%
      • Guess 4", 5", 6": 74.31%
    • For bases 4" to 6"
      • Guess 8", 10", 12": 84.26%
      • Guess 6", 8", 10": 92.36%
      • Guess 4", 6", 8": 88.27%
  • With 100% reason
    • For bases 0" to 2"
      • Guess 10", 10", 10": 72.38%
      • Guess 8", 8", 8": 74.07%
      • Guess 6", 6", 6": 68.75%
    • For bases 2" to 4"
      • Guess 8", 9", 10": 84.26%
      • Guess 6", 7", 8": 83.33%
      • Guess 4", 5", 6": 74.31%
    • For bases 4" to 6"
      • Guess 8", 10", 12": 84.26%
      • Guess 6", 8", 10": 92.36%
      • Guess 4", 6", 8": 88.27%


We note again the jump for 8" distances (from the back), with moderate amounts of reason. This is because the overshooting is better compensated than the safe shot from a 10" guess from the back. For the 100% reason scores, where we only re-roll misses and misfires, then 10" from the back strategy scores the same as if it only had a rune of forging.


Conclusion

Based on the above numbers, we can mark different chances to hit a target, based on how risky the strategy is.

  • The most risky strategy re-rolls all artillery dice, if they increase the chance to hit.
    • For bases 0" to 2", 10" from the back: 76.85% hit chance, by re-rolling misfires, 2 and 4.
    • For bases 2" to 4", 10" from the back: 86.57% hit chance, by re-rolling misfires and 2.
    • For bases 4" to 6", 10" from the back: 92.59% hit chance, by re-rolling misfires and 2.
  • The least risky strategy re-rolls only the misfires.
    • For bases 0" to 2", 10" from the back: 72.38% hit chance.
    • For bases 2" to 4", 10" from the back: 84.26% hit chance.
    • For bases 4" to 6", 10" from the back: 92.36% hit chance.


In general, it seems that the Master Engineer is mostly useful to re-roll both a misfire and an artillery roll of 2.

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Thu Feb 19, 2015 9:56 am
Profile WWW
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels

Lessons learned so far

Depending on the base we're looking at, the cannon can easily have 2" to 4" available to hit, dramatically increasing the chances the hit.

Image
Legend:
  • Green: less than 2 inches cross section.
  • Yellow: at least 2 inches cross section.
  • Orange: at least 4 inches cross section.

Overall the best strategy is 10" from the back of the base as a target range.

  • Regular cannon:
    • For bases 0" to 2", 10" from the back: 55.56% hit chance.
    • For bases 2" to 4", 10" from the back: 66.67% hit chance.
    • For bases 4" to 6", 10" from the back: 75% hit chance.
  • Cannon with Rune Of Forging:
    • For bases 0" to 2", 10" from the back: 72.38% hit chance.
    • For bases 2" to 4", 10" from the back: 84.26% hit chance.
    • For bases 4" to 6", 10" from the back: 92.36% hit chance.
  • Cannon with master engineer:
    • For bases 0" to 2", 10" from the back: 69.44% hit chance, by re-rolling misfires, 2 and 4. However, the re-roll of 4 is not recommended.
    • For bases 2" to 4", 10" from the back: 80.56% hit chance, by re-rolling misfires and 2.
    • For bases 4" to 6", 10" from the back: 88.89% hit chance, by re-rolling misfires and 2.
  • Cannon with Rune Of Forging and master engineer:
    • For bases 0" to 2", 10" from the back: 76.85% hit chance, by re-rolling misfires, 2 and 4. However, the re-roll of 4 is not recommended.
    • For bases 2" to 4", 10" from the back: 86.57% hit chance, by re-rolling misfires and 2.
    • For bases 4" to 6", 10" from the back: 92.59% hit chance, by re-rolling misfires and 2.

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Thu Feb 19, 2015 9:57 am
Profile WWW
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels
The next steps

Part 2: Damage
Now that we know the chances to hit with a cannon, we can work out how effective it is against our characters, monsters and "towers". Surely, the conclusion will always be to avoid getting shot in the first place, but perhaps it might reveal some encouraging or discouraging statistics.


Part 3: Effectiveness against ranked troops.
The previous researches have focused on scoring a single hit for various base sizes. Now, we try to extend the examination to hitting ranked units. This could be infantry, cavalry, monstrous cavalry etc. The main difference with the previous research is that the number of models hit become important. We can expect this to favour guessing ranges closer to the target, as overshooting the first model isn't as penalized as it is before, where the gain in range may be welcomed.
However, modelling this can be a bit tricky, so I expect this to take some time.

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Thu Feb 19, 2015 9:57 am
Profile WWW
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels
...Reserved...

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Thu Feb 19, 2015 9:57 am
Profile WWW
Malekith's Best Friend
User avatar

Joined: Wed Jan 09, 2013 1:46 pm
Posts: 1177
Location: The Depths of Despair
Comments and erratas I spotted during reading:

"The cannon ball hits everything on its path, between the point where it "lands" to the point up to where it "bounced". The cannon ball can be blocked in this path, by terrain or any model which it failed to wound." <--- Only a monstrous infantry, cavalry, monstrous beast or monster will block the cannonball if it fails to wound or fails to inflict enough wounds to kill the target. If a normal infantryman is not wounded (or he makes his ward safe, if any), the cannonball still proceeds to hit the unlucky chap behind him.

A math comment: "For larger bases, the second best distance is 12" from the back. This is probably explained by the risk of overshooting the target when guessing 10" from the back." <-- This is a gaming / math thing. If you guess 10" from the back line of the model, roll a 10 on the bounce, you still hit the target.
In other words: if you guess 10" from the back of a target (a point which, since its "the back line of the target", is still part of the target), it is not possible to overshoot, thus eliminating this risk. This is the single greatest factor why 10" from the back of a target is the optimum choice in almost every single case you can come up with.

Master engineer + rune of forging on a single cannon is almost never seen. The gain per points invested is not worth it. Rerolls of misfires is the most important gain anyway.


Good article otherwise! It is truly horrifying to watch, in writing, the chance of a dwarf cannon to hit a cauldron of blood. 92%. Are you kidding me how powerful are these things. GW, redesign please :)

Let me know if you need some numbers run. Firing against rank-and-file troops is almost never going to be a choice made by cannon owners unless there is literally nothing else to shoot on, so making up a large and complex algorithm is not the best use of time. Cannons are used against, in this order (DE example but can be applied to any race): dragons, pegasus heroes, cauldron of blood, bolt throwers, chariots, heroes on foot or mounted in a unit of same troop type (which is the real interest with rank-and-file: 10" from the back line of the character, and hope for a 1 on the look out, sir!). Then cavalry. And only then comes the regular foot sloggers.

_________________
Name: Ladry (female)
Class: Mage (Pyromancer)
Equipment: Staff, longsword, dagger, 20 gold, insignia ring.
Skills: Power of Aqshy (2), defensive figthing
WS4, S2, T3, D4, I6.


Thu Feb 19, 2015 10:24 am
Profile
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels
Thanks for the review.

Thraundil wrote:
Comments and erratas I spotted during reading:

"The cannon ball hits everything on its path, between the point where it "lands" to the point up to where it "bounced". The cannon ball can be blocked in this path, by terrain or any model which it failed to wound." <--- Only a monstrous infantry, cavalry, monstrous beast or monster will block the cannonball if it fails to wound or fails to inflict enough wounds to kill the target. If a normal infantryman is not wounded (or he makes his ward safe, if any), the cannonball still proceeds to hit the unlucky chap behind him.


I'll note that in the third part where I'm focusing on multiple targets.

Thraundil wrote:
A math comment: "For larger bases, the second best distance is 12" from the back. This is probably explained by the risk of overshooting the target when guessing 10" from the back." <-- This is a gaming / math thing. If you guess 10" from the back line of the model, roll a 10 on the bounce, you still hit the target.

Corrected. Thanks. I must have lost focus there for a moment :P

Quote:
Master engineer + rune of forging on a single cannon is almost never seen. The gain per points invested is not worth it. Rerolls of misfires is the most important gain anyway.

True, but it is always interesting to make notes if you're on it anyhow.

Quote:
the chance of a dwarf cannon to hit a cauldron of blood. 92%. Are you kidding me how powerful are these things. GW, redesign please :)


Laser-guided missiles from the Vietnam era had a slightly over 50% chance to score a direct hit. I had that quote ready, but removed it in the end. Indeed it is truly powerful. If they would make them weaker, though, shouldn't they also go down in points?
I will do the exercise on ranked units, if only for the challenge and sake of completion. Besides, I've been brooding on an elegant way to compute it effectively... there's no turning back :P

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Thu Feb 19, 2015 10:37 am
Profile WWW
Corsair
Corsair
User avatar

Joined: Fri Mar 14, 2008 10:00 pm
Posts: 8620
Location: Hag Graef
Good read!
Daeron wrote:
Firing a cannon

A brief recap on how cannons are fired.
Here are a few adds-on (in yellow)
and tactical comments (mostly coming from the adds-on in yellow ;) ).

  1. Designate a point on the table, for which the cannon aims.
    This point must be within the war machine's LOS.
    It is forbidden to take a chance to hit a friendly unit or a unit in melee.
  2. Roll artillery dice and draw a straight line from the cannon, over the designated spot, adding inches to the shot as shown by the artillery dice (measured from the designated spot). This is where the cannon ball lands.
  3. Roll the artillery dice again, for the "bounce" distance. The value rolled indicates the number of inches the cannon ball bounces/rolls over the field. A misfire indicates the cannon ball does not bounce.
  4. The cannon ball hits everything on its path, between the point where it "lands" to the point up to where it "bounced".
    The cannon ball can be blocked in this path,
    by impassable terrain
    by an obstacle (destroyed by the cannon ball)
    or any monster/monstrous model which it failed to kill.
  5. A maximum of one model per rank can be hit (or per file if hit in the flank).

Tactics.
As explained above, the clever cannon owner will always wish to aim at 9.99" in front of target's rear end.
The clever opponent (that's you, dear reader) will try to prevent that. The cannon cannot move AND shoot, so when you move your model, you know where the cannon is (except first round if you did not get to play first and had to place your precious models before the opponent placed his warmachines).

- Avoid to align several juicy targets in same line from cannon.

- Avoid to show a long end or a diagonal. See Daeron's graphics.
This is especially true for 25x50mm chariot size, NEVER show your front or diagonal to the cannon, all the more that pivot is free when it will be time to move.

- Hide behind impassable terrain such as a building. The cannon will no longer be able to "miss short and bounce", only "direct hit" will threaten your precious model, the bounce will not matter. This reduces the chances to be hit to 1/6, 2/6 or 3/6 (plus rerolls) in accordance to the size of the target.

- Hide behind an obstacle. Same result as for the impassable terrain, except you can move forwards! :D

- Hide behind a monster. Better lose a K-beast than your general on dragon. That's an exception to "avoid to align". Daeron might compute if really that improves much.

- Hide inside a rank. The cannon can only hit one model per rank. If that model is an infantry(wo)man, your CoB in the same rank is safe! :lol:
In order to achieve that, arrange your unit in near diagonal view from cannon, so that the cannon still is in the front arc.
The cannon will have either to aim at a direct hit above an infantry(wo)man and the CoB's flank, before bounce; or to aim at the CoB's front with potential bounce, but with a smaller triangular area to hit.
Here is a graphics.
Note that the chances to hit are not that much reduced, but that leaves a narrower angle to shoot at (cross section < 4"), which can be obscured more easily.

Code:
Example: cannon (/ = LOS) shooting at 30 WE (W) and CoB (CoB) in horde formation
            /   /     if cannon shoots towards "a", it may fall short and bounce and still hit the CoB - but the width of CoB under the LoS is not optimal.
          /   /       if cannon shoots towards "b", the width of LOS over CoB is more optimal, but if it bounces short, the CoB cannot be hit at all,
        /   /         because there will be already one model from same rank as COB hit by the same cannonball.
      a   b
WWWCoBWWWW   1st rank
WWWCoBWWWW   2nd rank
WWWCoBWWWW   3rd rank
WWWCoBWWWW   4th rank
   CoBWWW


- Target saturation. One cannon can only aim at one target per turn. If you have a CoB, bring also a dragon and a K-beast.

- Align your precious model with some models in melee
The line 2" to 20" from point aimed at must be free from melee or models in same camp as cannon, otherwise shooting would be illegal. Usually difficult to achieve, but don't forget to do it, given the opportunity!

- Deny LOS to 10" spot.
That's the most outrageous way to deny the 10" aim: RAW, that spot must be within TLOS of the cannon muzzle.
If that spot happens not to be visible, it is not legal and the player must aim too far or too short, i.e. decrease his odds.
Example: if you're behind a forest, make sure that the 10" spot is behind a tree and not visible.
If there is no tree, move a flock of harpies, which wings will hide the 10" spot. The oversized pennant of a DR can achieve the same trick.

_________________
Winds never stop blowing, Oceans are borderless. Get a ship and a crew, so the World will be ours! Today the World, tomorrow Nagg! {--|oBrotherhood of the Coast!o|--}


Thu Feb 19, 2015 11:02 pm
Profile
Malekith's Best Friend
User avatar

Joined: Tue Jun 04, 2013 4:25 pm
Posts: 1003
Location: Delft
Thanks for the great article so far ! I am looking foward to learn how to best minimize impact of cannons besides target saturation.

_________________
The 13th Legion


Sun Feb 22, 2015 3:38 pm
Profile
Assassin
User avatar

Joined: Mon Apr 29, 2013 7:44 pm
Posts: 570
Location: The thin edge of the wedge
Great article, I look forward to topics related to those chariot cannons that we see in a few armies.


Mon Feb 23, 2015 7:50 pm
Profile
Executioner

Joined: Wed Feb 06, 2008 3:02 pm
Posts: 167
Location: Stalking the Frozen Lands of Finland
Great that Im gonna see AC/DC this summer :D thanks for that heh.

As for the topic, its good that these are getting cruched, although it not a big deal to know the exact propabilities. But that rough 56% chance to hit single point is important to remember. Still tactica how to deal with these propabilities is required, and how to play against cannons. But I think it is in the DRAICH already...

I must say too that Im not a fan of amount of text in these post. Is the code really necessary? it is really tough to read these posts and I dont care for the code as long as the maths is correct. I guess others agree on this


Thu Feb 26, 2015 4:40 pm
Profile
Corsair
Corsair
User avatar

Joined: Fri Mar 14, 2008 10:00 pm
Posts: 8620
Location: Hag Graef
Ajattaro wrote:
I must say too that Im not a fan of amount of text in these post. Is the code really necessary? it is really tough to read these posts and I dont care for the code as long as the maths is correct. I guess others agree on this
I thought that the new "spoiler" button might be useful to hide the pages of code and stats which many readers might find too hard to swallow.
That might provide a visually pleasant alternative to the "jump to conclusion" offered by Daeron.
The burden of hitting one more button is transferred to the more expert reader.

@ Daeron, I hope you will appreciate these alterations of your posts. If not, only the "spoiler" marks need to go.

_________________
Winds never stop blowing, Oceans are borderless. Get a ship and a crew, so the World will be ours! Today the World, tomorrow Nagg! {--|oBrotherhood of the Coast!o|--}


Thu Feb 26, 2015 7:32 pm
Profile
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels
Those changes are most certainly appreciated. I will be making a summary post at the end, where I try to compact all information to a quick read ;)
However, seeing it is a tactica, I think it's also important to show how some numbers were obtained and where they come from.

Hmmm.. It does raise an interesting question, which I'll discuss in another topic.

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Tue Mar 17, 2015 9:14 am
Profile WWW
Malekith's Best Friend
User avatar

Joined: Tue Jun 04, 2013 4:25 pm
Posts: 1003
Location: Delft
I will face two Dwarf cannons with runes and a Master Engineer (besides Organ Gun = 1st priority above anything else) while I field a Shrine, Hydra and BSB with Cot on Manticore. The only thing I can think about it to use the Hydra as meatshield for the Shrine while Manticore has to use terrain to full advantage (but does cannons not just shoot through forests?).

How am I going to survive or negate his Cannons ? I have plenty of chaff (two dark riders, warlocks and shades) but he also fields a lot of missile troops (2 thunderers, 16 irondrakes) to finish them off before my main combat block arrive. To make the situation even worse, there is a river in the middle of the map with only two bridges so initial movement is limited

_________________
The 13th Legion


Fri Mar 27, 2015 12:41 pm
Profile
Malekith's Best Friend
User avatar

Joined: Fri Oct 03, 2003 7:36 pm
Posts: 3850
Location: Belgium, Brussels
Ugh.. That sounds nasty :S

I can't add many points to Calisson's strategy, but these few tips:
- Characteristic tests are the bane of war machines. If you can bring some in your magic, make sure he feels it. Lore of Shadow and Pit of Shades is dreadful for Dwarfs. The miasma can render the Organ gun notable less effective.
- You can twist and turn your Monsters to show only their flank. However, that might make them an easier target for gunners and attacks, so be careful.

And finally.. Weirdly.. A thing worth the shot, but it might require a bit of a poker face.
- If you approach both cannons, say one with the Manti, one with DRs, have these units face the nearest cannon with an aggressive roar, like they are about to smash it to bits. This doesn't improve your odds in theory at all. But some opponents will use the cannons on the target nearest to their cannon, instead of shooting cross-eyed to maximize hit potential. Be wary not to expose a wide row flank though!
Remember that a cannon ball is stopped by some terrain, and use that to prevent getting hit on the bounce. Maybe that river blocks cannon balls? That might open some options.

All that sounds very aggressive though... While in my limited experience, I've learned that timing is more important than aggression. It's important to minimize the turns in which all his warmachines and gunners work effectively, rather than stopping it on turn 2.
So, for example, against my Dwarf opponent I have held back my dark riders and even put my shades far away where their impact was limited but they were out of reach for the organ guns. This goes a long way to surviving round 1. Only when all fast units where ready for that dangerous cross, near the 24" range of the organ guns, would I charge in.
Usually this set-up would cost me a turn, which isn't fun, but usually works better than facing a gunline one unit at a time. I would use that turn to try and pit of shade something out of the way. There's a FAQ explaining that a template like PoS that needs to be within 24" (or any distance) means that the centre must be within that range. This means that POS can hit Organ Guns from a range with about a 1" margin ;)

Thunderers have that 24" range issue as well, all the more reason to keep out of the 24" range on turn 1. They are move or shoot, if I remember correctly, which means clever maneuvering should limit their effectiveness.

Iron Drakes have an 18" range issue, but they can move and shoot. I don't have any experience against them.... On the battle reports I read, they are often placed as a pivot towards the center of the board. They are a far bigger problem, I fear. But they have flaming attacks, so... If you have a 2+ ward save against flaming attacks, you can lock them out.

Just keep in mind that, by the sound of it, from a distance only his cannons can hit you. The rest is only a problem within 24".

_________________
I love me a bowl of numbers to crunch for breakfast. If you need anything theoryhammered, I gladly take requests.

Furnace of Arcana, a warhammer blog with delusional grandeur.

"I move unseen. I hide in light and shadow. I move faster than a bird. No plate of armour ever stopped me. I strike recruits and veterans with equal ease. And all shiver at my coldest of whispers."
- The stiff breeze


Fri Mar 27, 2015 2:10 pm
Profile WWW
Malekith's Best Friend
User avatar

Joined: Tue Jun 04, 2013 4:25 pm
Posts: 1003
Location: Delft
I got massacred ! Two small bottlenecks made it impossible to create enough threats at once and his warmachines could finish the scary stuff (manticore, hydra and shrine + sisters) before they got into combat resulting into a shooting stand off which was hopeless (Reapers vs Cannons).

_________________
The 13th Legion


Sat Mar 28, 2015 3:17 pm
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 19 posts ] 

Who is online

Users browsing this forum: Majestic-12 [Bot] and 6 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software