NOVA Open 40k Trios Recap

kingbreakers-iconThis year I went to the NOVA Open weekend for the first time. I went with Colin & Jason W for the Trios Tournament and 40k Narrative Warlords+Nightfighter, while John L and Carl also went for the two Narrative tracks. The Harmons also came down for the Warmachine/Hordes and Infinity tournaments. I’m hoping to have a couple posts up this week recapping the whole affair.

First up is my first event: The Trios Tournament with Jason and Colin. It’s a cool format, in which three players team up to each play two 1000pt doubles games and a single 2000pt solo game; each round the team gets to choose the doubles based on their match opponents and mission. There was also competition for Best Theme, encompassing the narrative story of why your armies are fighting together, the display board, and overall appearance. We spent a ridiculous amount of time on this part when we should have been just practicing. Our final story was vague but something along the lines of the Kingbreakers emerging triumphant from their fortress monastery after returning with Dark Angels, Imperial Fist, and Blood Angels friends to retake it years after the fall of Forestway. In the end sizable chunks of our armies weren’t finished, barely primed in my case, and there was no detail painting on the fortress, but the sheer size and detail combined with the all-Space Marine armies made it look good.

The display board two weekends out.

The display board two weekends out.

The fortress the day before the tournament.

The fortress the day before the tournament.

Furiously painting literally through the night going into the tournament.

Furiously painting literally through the night going into the tournament.

The chapter rides forth.

The chapter rides forth.

The wall-top shrine.

The wall-top shrine.

No castle's complete without a turbo-laser.

No castle’s complete without a turbo-laser.

The Knight Errant Greenheart, sans pants, goes out from the main gate.

The Knight Errant Greenheart, sans pants…

A few more photos of the individual models and armies are in the Flickr gallery.

Game 1

Jason & I vs Ryan & Andy’s Necrons and Eldar: Crushing loss (1 to 10). This mission was cumulatively scoring objectives, all three of them placed along the diagonal outside the Vanguard deployment zones. We just didn’t score enough points each turn to keep up. Their Wave Serpents had more than enough mobility to contest my Drop Podding guys on the quartile objectives, with Objective Secured overriding my Sternguard on one. Critically my third Drop Pod did not come in from reserve in time to contest the central objective and prevent the Necrons from swarming all over it. Meanwhile a Crimson Hunter went wherever it was needed and blasted away at our Imperials.

The Silent King's troops awaken.

The Silent King’s troops awaken.

Kingbreakers huddle up amongst the ruins of a xenos invasion.

Kingbreakers huddle up amongst the ruins of a xenos invasion.

Game 2

Colin & I vs Todd & Ronald’s Eldar and Tyranids: Crushing win (5 to 2). Five objectives, scored equally at game end, Hammer and Anvil zones. We were up for a while, but they pulled it together to make it a close run thing in the endgame. Our forces spent a lot of time fighting back Tyranids, which left a lot of very mobile Eldar to branch out at the end toward multiple objectives. Fortunately we had the right guys in just the right places all over the board and made some lucky rolls in the closing moments: Scouts assaulted some Windrider Jetbikes that had swooped onto our home objective and made enough saves to contest the ground; Tacticals made a hard rush on foot to run around a Wave Serpent and contest Dire Avengers on our previously unprotected home flank by mere fractions of an inch; Terminators crushed several monsters to claim table center; Belial and Captain Angholan tanked a punishing amount of fire to shield Sgt Scolirus as he powerfisted a Wave Serpent into oblivion in the last moment to claim an opposing home objective. All of that happened in the bottom of the last turn as time ran out!

Big momma.

Big momma.

Flyers inbound!

Flyers inbound!

Terminators flood the corridors of the ravaged city.

Terminators flood the corridors of the ravaged city.

Belial and Scolirus lead the forward charge.

Belial and Scolirus lead the forward charge.

Game 3

Me vs Jason’s Salamanders: Minor loss? Draw? I can’t actually remember and didn’t write it down, but believe the former. Mission was Dawn of War deployment, four objectives plus the Relic at table center (a moveable objective). This was also a close game, though I’m fairly confident that if I had another shot at it I could convert this near mirror match into a win. By this point I was going on nearly no sleep for many days between prep, driving, and non-40k activities in the preceding week, and had been playing 1000 points for both of the previous games. All of a sudden I had to switch mindset to a 2000 pt army and just didn’t make the transition well. For literally more than half the game I totally forgot about Coteaz, and made a number of other similar mistakes throughout. Without that sloppyness alone I think it would have ended very differently. One interesting thing was that Jason’s Thunderfire Cannon really hampered my Knight, forcing it to move as if in difficult terrain via Tremor shells and preventing it from clearing the large line of sight blockers at table center fast enough to get shots on critical targets.

Salamanders come-a-knockin' to settle once & for all if Kingbreakers are actually a descendant chapter or not...

Salamanders come-a-knockin’ to settle once & for all if Kingbreakers are actually a descendant chapter or not…

Squad Titus corners some jerk named Vulkan.

Squad Titus corners some jerk named Vulkan.

Outcome

I have no idea where we placed, but I’m sure we were down near the bottom. Results were never published as far as I know. This was one of the three execution areas to be improved in an otherwise really fun & interesting tournament. Another was that set-up, judging, and player voting for army theme & appearance was somewhat slap-dash and disorganized. Hardly anybody actually saw our display because there was no set time or space for checking out everyone’s setups and ours wasn’t practical to have up all day, something we have to keep in mind for the future. Finally, the rule packet could also have stood quite a bit of editing and clarification, which we’d be happy to help with. However, the TOs Troy and James were great guys and it’s a fun, novel tournament format. I really enjoyed it despite not doing well. I think I’d like to see the solo mission reduced in points so it’s less of a leap from the 1k games if you play it at the end of the day, but also appreciate the challenge of handling both and making that transition. I would definitely be up for this event again.

In the end though we did win the Best Theme award. Another team apparently actually won the voting, but they also won the tournament overall so we got bumped up. This was pretty cool, and definitely rewarded both the effort on our fortress monastery display board as well as not going with a more powerful but random, non-fluffy collection of armies.

Again, a few more photos of our armies and many from the games are in the Flickr gallery.

The team w/ tournament organizers James and Troy at the awards ceremony.

The team w/ tournament organizers James and Troy at the awards ceremony.

Well, guess we're doin' Space Wolves for next year's armies...

Well, guess we’re doin’ Space Wolves for next year’s armies…

NOVA Construction

Diving headfirst back into gaming, yesterday Colin, Jason, and I finally got down to some serious business on our plans for the NOVA tournament, where we’ll be playing in the Team Trios and Narrative tracks.

The Monastery

Despite being way, way behind schedule, our final plans are shaping up reasonably grandiose. Assuming it gets done, our display will indeed be based around our theme of the Kingbreakers defending their chapter monastery amid the fall of Forestway. The vignette here will be the local Knight Errant marching forth with the last Kingbreakers to join the Imperial Fists, Blood Angels, and Dark Angels come to help defend the planet.

Colin measures and cuts some foam as Jason supervises.

Colin measures and cuts some foam as Jason supervises.

The causeway out of the monastery.

The causeway out of the monastery.

Battle!

After spending many many hours building some elaborate boxes out of foam and talking through the missions a bit, Colin and I played a 2000 point game. We used the second mission of the Trios tournament, which is pretty straightforward: Hammer & Anvil (long table axis), five objectives, go! Colin’s army is basically all deep striking: Bunch of Dark Angels Terminators, bunch of Blood Angels dreadnoughts in Drop Pods, bunch of Blood Angels hooligans in Drop Pods, handful of scouts that have to run onto the board as part of some cruel hazing ritual. Kingbreakers have a forward contingent of Tacticals and Sternguard in Drop Pods, a rear contingent of bunkered up Devastators, Tacticals, and Predators, and a stompy contingent in the form of a giant Knight.

Some early morning traffic congestion.

Some early morning traffic congestion.

After deploying the standard joke about his army being entirely deployed (while still in its cases), Colin went first and dropped Dreadnoughts all around my Knight and Terminators deep in my backfield. My Inquisitor though was expecting them, and the Devastators put a hurting on one group of Terminators on the intercept. The Dreadnoughts did minimal damage, and then the backfield shot back: Sternguard dropped in to bail out the poor trapped Knight and together they kicked in some cans while the Devastators worked over the Terminators some more. More Blood Angels came down on two objectives to scrum it up, but Kingbreakers Tacticals unexpectedly put the beatdown on the dreaded Death Company while the Knight and friends had a shooting party against some less angry red gentlemen.

I am lord of all I surveil!

I am lord of all I surveil!

Eventually we called the game for time, three turns in. At that point Colin appeared to be playing for a draw from a tight position, with me most likely able to claim 3 objectives and possibly Slay the Warlord. The main takeaway for me though was that I remain pretty happy with this basic army construction. Right now I’ve dropped the Guardsmen used in the June tournament as I simply won’t have time to get them painted. That reduces my ability to bubble wrap the Knight and have cheap guys camp out in the bunker, but it’s not the worst thing ever. So, I’m looking at painting a Knight (!) and a Drop Pod to have this army fully painted.  Oh yeah, and a giant frickin’ fortress to be detailed and painted, because… yeah.

Stompin' time!

Stompin’ time!

Circle Intersection Test

Yet another quick test for a geometry function:

Click, drag, and release to draw a line. A point will be drawn at the intersections if there are any. Hit ‘S’ to toggle between treating the drawn segment as a line segments or a line.

The demo uses some basic Phaser features for the interaction and drawing. The Javascript code is:

var game = new Phaser.Game(530, 300, Phaser.CANVAS, 'container',
                           { create: create, update: update, render: render });

var line;

var setting;

var result1;
var result2;

var circle;

var segment = true;

function create() {

  line = new Phaser.Line(game.world.width/4, game.world.height/4,
                         3*game.world.width/4, 3*game.world.height/4);

  circle = new Phaser.Circle(game.world.width/2, game.world.height/2,
                             Math.min(game.world.height, game.world.width)/2);

  game.input.onDown.add(click, this);
  setting = false;

  result1 = new Phaser.Point();
  result2 = new Phaser.Point();

    game.input.keyboard.addKey(Phaser.Keyboard.S)
        .onDown.add(function() {
            segment = !segment;
        }, this);
}


function update() {

    if (setting) {
        line.end.set(game.input.activePointer.x,
                      game.input.activePointer.y);

        if (!game.input.activePointer.isDown) {
            setting = false;
        }
    }
}


function click(pointer) {
    setting = true;
    line.start.set(pointer.x, pointer.y);
}


function render() {
  game.debug.geom(line);

  game.debug.geom(circle, '#00ff00', false, 2);

  var res = intersection(line, circle, result1, result2, segment);
  if (res) {
    result1.x--;
    result1.y--;
    result2.x--;
    result2.y--;

    game.debug.geom(result1, '#ff0000');

    if (res == INTERSECTION)
      game.debug.geom(result2, '#ff0000');
  }

}


var NO_INTERSECTION = 0;
var INTERSECTION = 1;
var SINGLE_INTERSECTION = 2;
var TANGENT = 3;

function intersection(line, circle, result1, result2, segment) {
  var lx = line.end.x - line.start.x;
  var ly = line.end.y - line.start.y;

  var len = Math.sqrt(lx*lx + ly*ly);

  var dx = lx / len;
  var dy = ly / len;

  var t = dx*(circle.x-line.start.x) + dy*(circle.y-line.start.y);

  var ex = t * dx + line.start.x;
  var ey = t * dy + line.start.y;

  var lec = Math.sqrt((ex-circle.x)*(ex-circle.x) +
                      (ey-circle.y)*(ey-circle.y));

  if (lec < circle.radius) {

    var dt = Math.sqrt(circle.radius*circle.radius - lec*lec);

    var te = dx*(line.end.x-line.start.x) + dy*(line.end.y-line.start.y);

    if (segment) {
      if ((t-dt < 0 || t-dt > te) &&
          (t+dt < 0 || t+dt > te)) {
            return NO_INTERSECTION;
      } else if (t-dt < 0 || t-dt > te) {
          result1.x = (t+dt)*dx + line.start.x;
          result1.y = (t+dt)*dy + line.start.y;
          return SINGLE_INTERSECTION;
      } else if (t+dt < 0 || t+dt > te) {
          result1.x = (t-dt)*dx + line.start.x;
          result1.y = (t-dt)*dy + line.start.y;
          return SINGLE_INTERSECTION;
      }
    }

    result1.x = (t-dt)*dx + line.start.x;
    result1.y = (t-dt)*dy + line.start.y;

    result2.x = (t+dt)*dx + line.start.x;
    result2.y = (t+dt)*dy + line.start.y;

    return INTERSECTION;
  } else if (lec == circle.radius) {

    result1.x = ex;
    result1.y = ey;

    result2.x = ex;
    result2.y = ey;

    return TANGENT;
  }

  return NO_INTERSECTION;
}