Tag Archives: gaming

The Opinionated Bastards: Gacrux Part II (May 1, 3050)

The month of April turns out to be an exciting one for the Opinionated Bastards. Read on below the fold.

Last Month’s Action Items

Hasek10 took the lead this time, so I went with his plans. The light lance remains on training duty. We’ll discuss procurement at the end of the month.

The Action of April 19, 3050

On April 14, the unit intelligence officer receives word of a pirate concentration near a grassland town some distance from our base of operations. Happily, the light lance is training locally rather than on an exercise elsewhere, so they join in the deployment.

We’ll probably need them, too. This is some battle. A full six lances of mixed enemy mechs and vehicles are facing our ten mechs (Private ‘Severe’ Pain’s Locust is currently in refit, adding some armor and two more medium lasers). Happily, when they catch wind of our approach, they flee. We’ll have to chase down and destroy half their force before we can declare victory.

Captain Halit has four levels in the Tactics skill, which means we get to reroll battlefield conditions up to four times. The end result is this: muddy grassland with a town in the center, in moderate rain, on a moonlit night.

Because this is a chase battle, units deploy in order of speed, fastest units in early rounds and slower units later on. Attached to our lance is a Lyran Phoenix Hawk. Since the contract stipulated House command rights, the Lyran pilot is not under our direct command.

Rounds 1-4

Nothing happens.

Round 5

The Lyran mech deploys, along with the rest of the enemy light mechs. In total, they have four Wasps, a Spider, and a Stinger.

The mud is proving tricky.

stuck

Round 6

Our two fastest mechs take the field: our Phoenix Hawk (piloted by Jose Ortega) and our Vulcan (piloted by Tedros Jamil). They both fire on a Stinger stuck in the mud a few hexes to the north, but do limited damage.

Round 7

The remainder of our ‘light’ lance arrives on the field. Our two Trebuchets come first; Private Frajtov is driving the short-range TBT-5S, while Woad has the LRM-equipped TBT-5N. Damayanti Ngo rounds out the deployment, piloting our Crab.

deploying

The pirates deploy a number of Vedette medium tanks in a flanking position. Fortunately, the weather will make it very hard for them to hit our mechs at any distance, and Vedettes are slow at the best of times. They may have trouble moving at all.

The light lance concentrates its firepower on a stuck Wasp, the Stinger having escaped the sucking mud and jumped further away. (Ortega pursues him in the Phoenix Hawk, but can’t line up a good shot.) They do a good job, hitting the Wasp for more than 20 damage. Its pilot fails to keep his balance under the barrage, and the Wasp tips over into the mud.

die, wasp

Round 8

Our heavy lance hits the field. Expert gunners with long-range weapons should begin to tell here. Three of them (Captain Halit’s Flashman, Double Dog‘s Rifleman, and Linebuster‘s Lancelot) deploy with the light lance, while two of them (Lieutenant Ishikawa’s Thunderbolt and Private Ec’s Lancelot) deploy further east, behind the enemy vehicle line.

heavies

The pirates deploy their lone heavy mech, an Orion, just to the southwest of our forces. Double Dog turns to face it, ready to engage.

In the Phoenix Hawk, Ortega has run up too much heat from weapons fire and jump jet use, and forgoes firing this turn. The western heavies engage the Wasp, and the eastern heavies focus on the enemy vehicles, including two PPC-equipped Manticore heavy tanks. The mediums (and the Rifleman) divide their fire between the Orion and the vehicle line.

Captain Halit proves his worth on his first turn in battle. Lighting up the stuck Wasp with his large lasers, he draws first blood, neatly coring the enemy mech.

The eastern heavies badly damage the pair of Manticores, knocking out the nearer tank’s engine and scything into the more distant tank’s armor.

The Orion, unfortunately, aims true and hits Woad‘s rear center torso with an AC/10. The Trebuchet’s engine and gyro both take hits, and Woad is unable to keep the mech’s legs beneath him. The Trebuchet bogs down in the mud, and rattling around the cockpit like a pinball does Woad no good, either. He’s alive and conscious, but it seems unlikely he’ll be able to get unstuck and stand back up, especially with an ailing gyro.

Round 9

Let’s talk about a particularly devilish foe: the SRM carrier. A simple tracked vehicle with an enormous box of SRM launchers on the back, the SRM carrier has one of the most devastating alpha strikes in the BattleTech universe. It mounts ten SRM-6 launchers, each of which fires six missiles, each of which does two damage. That’s a potential total of 120 damage; for comparison, the Flashman, the most heavily armored mech in our hangar, has 216 points of armor altogether. It’s altogether possible for a lucky SRM carrier to blow up a mech in a single turn.

Why do I bring this up? Well, our piratical friends have laid their hands on five of them, all of which are part of the rearguard with which we’re currently engaged. We’ll come back to the SRM carriers.

This rearguard, by my count, contains enough enemy force to fulfill our mission requirements, so rather than pursue the enemy across the map (and allow the rearguard to fire on us from behind), I decide to focus on beating down the enemy here. That means nobody moves very much, although the medium mechs move closer to the vehicle line to the east of our main body to secure better shots.

Woad is still prone and unable to stand up. His mech takes some light fire from the Orion, but weathers it without further drama. Double Dog, running hot, takes an ineffectual medium laser shot at the Orion, but successfully kicks an SRM carrier, stripping its armor. The Lyran Phoenix Hawk, standing next to him, finishes the job with a kick of its own.

Linebuster destroys a second SRM carrier with well-aimed laser fire from his Lancelot, while Lieutenant Ishikawa and Private Ec in the Thunderbolt and other Lancelot make short work of a Manticore heavy tank and the lone LRM carrier.

Then the SRM carriers shoot back.

Three shoot at Captain Halit’s Flashman, but he’s moving, and the range, darkness, and rain conspire to protect him. He takes a pounding, but his armor holds.

Two shoot at Private Ec’s Lancelot. She’s not moving, and she’s much closer. Missile after missile slams into her mech’s armor. Holes begin to open up, and the explosions move inward to the mech’s frame. The dust settles. In all, 61 missiles hit Private Ec’s mech, destroying weapons and heat sinks, and damaging leg actuators. Several missiles hit the cockpit. The armor holds, but the shock knocks Ec out cold. Her mech collapses into the mud.

SRM carriers remaining: 3.

Round 10

Well, we should probably do something about those. Captain Halit and Private Frajtov will continue shooting at the Orion, in the hopes of bringing it down. Frajtov places his mech directly in the Orion’s path.

Everyone else is going to set up to shoot at an SRM carrier.

Linebuster hits one, knocking out its engine but leaving it alive. Lieutenant Ishikawa destroys one outright. The others survive unmolested.

Surprisingly, it’s Private Frajtov who takes home the trophy for largest mech destroyed to date. A simple medium laser shot at point blank range penetrates the Orion’s armor and lights off its AC/10 ammunition. Fire blossoms within the pirate mech, then bursts forth in a tremendous fireball which leaves very little of the Orion left.

Then the SRM carriers shoot back.

Private Ec’s mech takes the brunt of the barrage. Happily—she was basically doomed anyway. In the end, there isn’t much left of her mech besides a frame and, surprisingly, a cockpit. (It survived with one internal structure point remaining; happily, she did not die in her first battle.)

Double Dog takes fire from the final SRM carrier, and it’s a doozy. It gets into his Rifleman’s internal structure, knocking out several weapons and damaging a leg actuator. He can’t keep his mech upright, and it topples, getting stuck in the mud.

That’s bad. Hitting an immobilized target is easier, and Lieutenant Dare’s mech is still in relatively good shape. It would be a shame to lose it.

SRM carriers remaining: 2.

srms, sadface
The mud-soaked battlefield as it stands now.

Round 11

We’re winning, per the objective; we only have to destroy half of the enemy’s starting force before it escapes, and we’re currently up to 45%. Mopping up here in the south should suffice to win.

As far as positioning goes, it’s pretty static. Now that the Orion is dead, Captain Halit can turn around to help with the vehicles. He hits a Manticore and kills it. Linebuster destroys another SRM carrier.

Unfortunately, Private Ortega, the only pilot with a clear shot at the last SRM carrier, misses altogether. Hopefully that won’t come back to haunt us next round.

One SRM carrier shoots at the Lyran Phoenix Hawk; the other shoots at the Rifleman. The Rifleman survives, somehow, amidst a bevy of internal structure damage. It’s alive, but I don’t know how much longer it can take this kind of beating.

SRM carriers remaining: 1.

Round 12

Captain Halit accounts for the final SRM carrier with a hail of laser fire. Just before it goes up in a towering explosion, it gets off a shot at the Rifleman.

The Rifleman eats it. Its engine is destroyed, its head is destroyed, and its AC/5 ammo explodes just to really clarify that yes, it’s gone. Happily, the autoeject system works, flinging Double Dog free of the flaming wreckage just before the ammo goes off. He’s badly wounded and unconscious, but he’s alive.

doubledog down

To add indignity to our vaguely Pyrrhic victory, Woad finally gets himself unstuck from the mud, but doesn’t risk standing with his damaged gyro. Wouldn’t want to set ourselves up for yet more repairs.

SRM carriers remaining: 0. Thank God.

Rounds 13-22

With the SRM carriers dead, there isn’t much else left in the south; a few damaged Vedettes, mostly. They go down much more easily, and don’t obliterate our mechs in the space of seconds.

Private Frajtov walks his Trebuchet past the still-burning Rifleman, pops out, and brings Double Dog up to the cockpit. At least he isn’t in the rain anymore. Private Ec, still unconscious in the cockpit of her very dead Lancelot, remains there for now.

An ad-hoc lance comprising Captain Halit, Lieutenant Ishikawa, Linebuster, and Private Ngo heads north to chase the pirates, now in full retreat, off of the map.

Further in that direction, the Lyran Phoenix Hawk beats up on an immobilized transport hovercraft.

wrapping up
At least someone’s having a good day.

Eventually, the pirates make it to the north end of the map, and I call it a day.

Damage Report

damage report

Man, it would have been nice to have some battle loss compensation in this contract.

There are some bright spots. Miraculously, Private Ec’s Lancelot is not a total write-off; it has enough internal structure left to rebuild. We are, therefore, only down one mech.

dead lancelot
It’s going to take a lot of work, though.

Four of our ten pilots are wounded, including Double Dog and Woad. Only Double Dog‘s wounds are serious enough to impact his piloting skills, but he should be fine in a few weeks.

injuries1
injuries2

Salvage Report

The Wasp Captain Halit nailed is a total loss, so I took as salvage an SRM carrier and a Manticore heavy tank. We’ll strip the weapons and armor and sell the chassis.

In doing so, we make nearly 800,000 C-bills, and add a spare PPC, some armor, a medium laser or two, and a ton of SRM-6 launchers (even after selling half of them).

The husk of Double Dog‘s Rifleman yields an arm and a leg, along with a few actuators and a heat sink or two.

The salvage we took comes to 35% against our total allowed of 30%. We’ll have to pay the employer back for the overage if we don’t get our salvage percentage down below the 30% mark; the payment required at present is about 185,000 C-bills.

Kill Board

Last Mission

kill log

All-Time Leaders

  1. Captain Halit (3, 1 mech)
  2. Lieutenant Ishikawa (3)
  3. Lieutenant ‘Linebuster’ Atkinson (3)
  4. Private Frajtov (1, 1 mech)
  5. Private Ec (1)

Repairs and Refits

The Rifleman is good for an arm and a leg, which simplifies getting the second Lancelot back in action.

Unfortunately, we need some expensive parts. The damaged Lancelot’s gyroscope is a total loss, and a new one sets us back 900,000 C-bills. Other parts come to about 200,000, eating into last month’s payout a bit.

By the end of the month, we’ve rebuilt the mech, which has earned the name Frankenstein from its tech teams.

frankenstein

Status

It is now May 1, 3050. I decided against advancing the game further because…

Mission Progress

deployment
After taking such heavy losses in equipment, morale among the pirates here on Gacrux has collapsed, and they’ve made overtures to the planetary authorities about surrendering. At the same time, the local government has located the pirates’ main base of operations and passed that information on to us. See the action items for more.

Personnel

organization

All pilots except for Double Dog are in good health. Lieutenant Dare’s concussion symptoms are lingering. The doctors estimate he’ll be back to 100% in a week’s time.

Captain Halit’s Negotiation has improved, which increases our company’s reputation.

Finances

We kick off May with 2.881 million C-bills in the bank, and two payments of 884,800 C-bills remaining in this contract. That leaves us with an expected balance of 4.6 million C-bills after this contract, and about 2.9 million C-bills after transit back home.

Supplies

Per Hasek10’s directions, I’ve obtained spare ammunition and armor suitable for a deployment of moderate length and intensity, and laid in stocks of common weapons and equipment.

Action Items

  • As far as this contract goes, we have two options. We can attack the pirate base, or accept the pirates’ surrender and head home. In both cases, we’ll be paid the remaining balance of the contract. In the former case, we have a chance at more salvage, although there are no heavy mechs among the enemy’s known forces. In the latter case, we don’t risk losing any further mechs in a costly battle, but we’ll have to pay 185,000 C-bills to the employer to cover our over-salvaging.
  • As far as the company goes, should we reorganize? We may be able to find more favorable engagements (read: MekHQ generates less difficult missions) if we go to a more traditional lance structure, heavy units supported by lighter units. On the other hand, that places a greater emphasis on pilot skill; we do have some skilled pilots, but they’re distributed mainly in the heavy mechs right now. If you think the answer is ‘yes’, you should describe a structure you think would be an improvement.
  • Mechwarriors are going fast, but there are some remaining. Give me a callsign and the pilot is yours; I’ll follow them more closely in subsequent updates, refer to them by their callsign in most cases, and bold their name so you can track them more readily.
    • Captain Halit
    • Lt. SG Ishikawa
    • Pvt. Jamil
    • Pvt. Ec
    • Pvt. Ortega
    • Pvt. Ngo
    • Pvt. Frajtov
  • For the record, the following mechwarriors have been claimed by members at the Bay12 Games forum.
    • Lt. SG George “Linebuster” Atkinson (Hasek10)
    • Lt. JG Sung-min “Double Dog” Dare (a1s)
    • Pvt. Ferdinand “Woad” Kohler (A Thing)
    • Pvt. Jan “Euchre” Kojic (EuchreJack)
    • Pvt. Cathrine “Severe” Payne (Burnt Pies)

The Opinionated Bastards: Gacrux Part I (Apr. 7, 3050)

The Opinionated Bastards sign on the dotted line, and will be employed by the Federated Commonwealth hunting pirates until July 7, 3050 (or earlier, if we’re very successful). Read on below the fold for more.

En Route

To save on transit costs, I had the techs mothball the light lance. With only five mechs in mech bays, we fit into a smaller combat dropship; the mechs in mothballs go in a small cargo dropship. Mothballing takes two days, but a tech can unmothball a mech in a single working day, so we should be deployed as soon as we hit the ground on Gacrux.

Along the way, our human resources division makes a few paid recruitment rolls, spending 100,000 C-bills per week to load up on mech techs and administrators in the other categories. The Opinionated Bastards now have a fully-stocked tech division, as well as administrators and doctors fit for a unit of our size. In all, the Opinionated Bastards total 121 personnel, including the 72 local astechs and 12 local medics supporting our tech teams and medical staff.

Rick Papatamelis
Rick Papatamelis is one of our new administrators. Hi, Rick!

(Note that since this is my first campaign following the Campaign Operations payment and maintenance rules, I’m using Campaign Operations rules for administration and tech support too; I had to triple the administrator allowance to get a reasonable starting position.)

Finally, I ordered some parts for delivery at Gacrux: ammunition, armor, and heat sinks, all of which are consumables after a fashion. (Heat sinks don’t get used up, of course, but they’re the most common part in our force and therefore the most likely to take critical hits.) I also bought some hand and foot actuators before I realized that’s probably a good thing to vote on, so check the action items for more.

map
The seven-jump path from Piedmont to Gacrux. The top of the map, in blue, is the Clan invasion. Terra is the white dot just below Yorii.

Monthly Happenings

Gacrux, our destination, is a fascinating place. We arrive on March 7, 3050. I deploy the heavy lance to seek out action right away to fulfill the terms of the contract, and set about unpacking the light lance. The latter, hosting all of our rookies, goes on training duty, in the hopes of bringing some of them up to a slightly higher standard of performance.

Nothing much goes on in March. The pirates won’t come out to play, which is quite a shame.

We do pick up a local; an astech by the name of Kian-zhi Ewerlof signs on permanently. He’ll apprentice under one of our proper techs for a while, and perhaps someday he’ll grow into a proper tech himself.

Status

It is now April 7, 3050.

Personnel

As mentioned above, we’re fully manned as far as administrators, techs, and support personnel go. Since we have administrators with an HR specialty, we can make paid recruitment rolls to find candidates for specific positions at a cost of 100,000 C-bills per weekly recruitment cycle.

Mission Progress

deployment report

The heavy lance is searching out the enemy. The light lance (such as it is) is training. Enemy morale is now Low. If it reaches Rout, we win, and we can collect the remaining payment and hit the road.

The Locust LCT-1M is refitting to a variant which mounts three medium lasers, a solid punch for such a lightweight mech.

Finances

financial report

After transit to Gacrux and the first month’s payout, we have 2.378 million C-bills. Our net income before share payment is 1.106 million C-bills. After shares, the company nets 884,800 C-bills per month. The May, June, and July payouts remain, for a total of 2.654 million C-bills remaining to be paid. At the end of the contract, discounting salvage sales and battle damage repairs, we should have 5.032 million C-bills. Transit back to Piedmont should cost about 1.7 million C-bills. We should therefore have about 3.332 million C-bills after all is said and done for this contract.

Supplies

supply report

Armor, ammo, heat sinks, and cheapo actuators make up the majority of our supplies right now. (Note that LRM ammo and SRM ammo are interchangeable. 240 shots of LRM 5 ammo is 720 missiles, or 60 shots of LRM 20 ammo.)

Action Items

  • First up, deployment. Should the light lance remain in training, or deploy? Units actively seeking out combat have a much higher chance of finding it. On the other hand, Hasek10 is correct in saying that the game will generate roughly even forces. (Not quite BV-equivalence, but approximately weight-equivalent for sure.) That could make for a tough fight, given the light lance’s actual weight and inexperience in piloting.
  • Next, ongoing procurement. I want to have about four million C-bills in hand before we leave; that leaves room for transit back, transit to the next world, and some downtime if we roll a bunch of undesirable contracts. Should we save the money, or secure sufficient spares and ammunition for a long, independent operation? In either case, I’ll get spares for commonly-used weapons and so on. If we’re planning on taking a long, independent contract, I’ll also likely want to get more actuators and some spare arms and legs. The latter would set us up for a longer contract out of contact with friendlies. The former might yield a treasury which can absorb the price of a light or medium mech.
  • Mechwarriors are still available to claim; all you need to do is say so and give me a callsign. I’ll try to follow claimed mechwarriors more closely in future updates. Available mechwarriors:
    • Captain Halit
    • Lt. SG Ishikawa
    • Lt. JG Dare
    • Pvt. Jamil
    • Pvt. Ec
    • Pvt. Ortega
    • Pvt. Ngo
    • Pvt. Frajtov
    • Pvt. Kohler
    • Pvt. Kojic
    • Pvt. Payne

The Opinionated Bastards: a MekHQ BattleTech Mercenaries Campaign

Introduction

Welcome to what I hope will be the start of a long-running Let’s Play: a mercenary campaign, more or less following the Against the Bot campaign rules, using MekHQ and MegaMek to handle the bookkeeping.

That’s a lot to unpack. We’ll start with MegaMek. This is MegaMek:

MegaMek

MegaMek is an open-source implementation of the BattleTech rules, which greatly simplifies playing out battles. It covers just about everything in the BattleTech rulebooks, but it’s also a little on the dense and questionably-documented side, as open source projects are wont to be. (See also: my very own OpenTafl.)

Next up, MekHQ. This is MekHQ:

MekHQ

MegaMek runs battles; MekHQ runs campaigns. It implements some of the many, many variations in BattleTech’s rules for maintenance costs, mercenary contract generation, and so on and so forth.

Finally, Against the Bot. No screenshot here. Against the Bot is simply a set of rules on top of those implemented in MekHQ, concerning the generation of a mercenary company and some of the mechanics of running one left untouched by BattleTech’s rulebooks.

I have a few house rules I plan to layer on top. First, a set of rules I cooked up for pre-existing enemy damage. Especially in the Third Succession War era, it’s hard to come by spares and time for maintenance, but the Against the Bot rules have no provision for setting up the enemy forces to be as battered as yours. The pre-existing damage rules present a mechanism for wearing down the enemy force over the length of a campaign, an important part of warfare.

Second, I have a litany of little tweaks to the Against the Bot rules.

  • I’ll be using the contract payments and maintenance costs from the Campaign Operations rulebook. I won’t be using maintenance rolls or the unofficial percentage-based maintenance costs in MekHQ; Campaign Ops costs neatly fix a lot of the issues with the old type-based maintenance costs.
  • I plan to turn the contract search radius down to about 200 light-years to start. This keeps transport costs limited. That’s important: the default contract radius of 800 light-years covers pretty much the entire Inner Sphere. Contracts 20 or 30 jumps and a year or two away require very favorable transport terms to have any chance of being profitable. Contracts five or ten jumps away can still be feasible to take even with poor transport terms if the other terms are sufficiently favorable.
  • Retirement rolls will be ignored for the first five years. After that, retirement rolls will always have a -2 Target Number modifier.
    • In any given year, every full month of downtime on the mercenary’s home world will add a -1 modifier to the retirement roll Target Number.
  • Mechs associated with the founding members of the company are company property. If/when founding members retire or die, they don’t get to take mechs with them. Pilots hired later on who bring their own mechs must get the same mech or a comparable one on retirement. Further, they may not be reassigned from their personal mech to a worse one.
  • I reserve the right to ignore Big Battles and Special Events; the Against the Bot generator in MekHQ seems not to get them right on some occasions. If they’re reasonable, I’ll play them.
  • Reinforcements.
    • Any or all lances can be deployed on missions where I’m the attacker.
    • Any lance with Defend duty can be deployed on missions where I’m the defender.
    • Any lance with Training duty can be deployed on missions where I’m the defender on 4+ on a D6.
  • If I have a DropShip, I can add mech bays to it at the cost of cargo space. Adding a mech bay costs 120 tons of cargo space and 7.5 million C-bills.

Process and Participation

I, as the company commander, will play roughly a month of game time per week of real time (my time permitting). I’ll be using a customized build of MekHQ which contains some brand-new features; you can download the source from this branch on Github.

You, as the readers (either at my website or at the Bay12 forums) have a few participation options. You can pick a mechwarrior, aerospace pilot, or vehicle crewman to follow, and give me guidance on how that person ought to develop his or her skills (and possibly input on mech refitting, if that happens). Whether or not you do that, you can also vote on the contract to take.

Company Generation

Now we come to the fun part. Given that my blog is the primary venue for this Let’s Play, I’ve decided we will be known as the Opinionated Bastards. We still have a few things to figure out, though. First off, time period.

  • 3025: at the tail end of the Third Succession War, there is very little advanced technology to be found. Mechs are more likely to be held together with spitballs and baling wire, just barely kept running by industrious techs. Classic BattleTech.
  • 3050: the Clan invasion is in full swing. Advanced technology is back on the menu! We may also have to fight the Clans. Classic BattleTech for me—I cut my teeth on MechWarrior 2, back in the day. If you vote for this item, specify whether you want to start on the same side of the Inner Sphere as the Clans, or elsewhere.
  • 3075: the Word of Blake Jihad is the crisis of the day. Modern-ish BattleTech.

Furthermore, we have to pick a flavor of company.

  • Adventurous Merchant: company commander and officers will have worse piloting and gunnery skills, but better mechs. Start with an extra 5 million C-bills. Chance to start with a DropShip. Start with one Logistics administrator only.
  • Mercenary Veteran: company commander and officers will have better piloting skills, but receive no bonus to mech generation rolls. Start with an HR administrator plus administrator of choice. Receive a 10% signing bonus on contracts owing to reputation. Also owing to reputation, it is no longer forbidden to assign mech pilots who bring their own hardware to worse mechs. (They still get to take them back when they leave.)
  • No Special Background: -2 Target Number on all retirement rolls. Start with two administrators, my choice.

Action Items

  • Your votes needed! Give me some preferences for time period and mercenary company type.

Some Thoughts On DCS: Part I

Eagle Dynamics’ flight sim DCS World is, on its surface, an impressive achievement. It’s the most beautiful game in its genre of the modern era, and one of the most exhaustive. Only the big players in civilian flight sims surpass it in terms of aircraft and theater variety, and nothing beats the complexity of its flight dynamics and systems modeling.

And yet, it remains a niche title. Why? I have three reasons: the engine, the ecosystem, and the community. Today, let’s look at the first.

Wait, wasn’t the engine a big pro? You’ll note I said it was pretty, and nothing more. I will grant it’s also fairly easy on performance for what it is, provided you haven’t added too many planes.

It falls down on the job in four crucial areas, though. First, it has no ‘bubble’ system a la Falcon 4, and can’t handle especially large numbers of units. There’s no good way to build and populate an entire front with opposing forces, and the lack of a true front line makes large-scale war scenarios very hard to do. It also means that the enormous bomber boxes from Battle of Britain 2 are still contained solely to Battle of Britain 2. Lacking the capability for large numbers of units makes even excellent innovations like MBot’s lua-script dynamic campaign engine less enjoyable than the pushing-20-year-old competition.

Second, there are currently two versions of DCS. DCS 2.1 is the new branch, which supports the payware Nevada and Normandy maps. DCS 1.5 is the legacy branch, which only has the Caucasus/Georgia map, but is also more reliably stable. This is a terrible state of affairs. Third-party developers have to keep their code up to date against two highly distinct versions of DCS, and these third-party developers are to a man small indie-style shops. They don’t have the developer resources to support two branches and build new products, and it shows. (More on this later.)

Third, developers can’t release standalone module updates. Module updates, as far as I can tell, require a full DCS recompilation. If a show-stopping bug makes it out of testing, players are pretty much out of luck until Eagle Dynamics can scrape together a hotfix. I have no idea why this should be the case, in this age of dynamic loading and so on. I suspect one of two things: either limitations in the engine, which does date back in some places to the Lock-On Modern Air Combat days, or a misguided attempt to prevent unauthorized third parties from accessing the high-end flight modeling features. The first issue could be fixed by a little work, and the second is a bad solution in search of a solved problem. Code signing is a thing. No need to reinvent the wheel.

Fourth, the simulation engine is extremely creaky. We’ll start with the scripting system. Not only is it difficult to use (fortunately, there are some scripting frameworks which wrap the inscrutable API), the API occasionally changes with no notice, breaking old missions. The mission editor, which is a key piece of any game that doesn’t have a dynamic campaign, is clunky and poorly integrated with the simulation engine. Its support for scripting is basically nil, to the point that it’s dramatically better to edit mission scripts in Notepad than in the mission editor itself. It may be a bit much to ask for a proper lua development environment in a flight simulator, but a full-screen text editing window would be nice, at the very least.

The simulation engine also lacks some crucial features for the sort of game Eagle Dynamics is trying to make. Most of the major omissions center on radar and electronic warfare. A third party, Heatblur Simulations, fields the current state of the art in DCS radar technology with the Viggen’s ground-mapping setup. Eagle Dynamics is scheduled to come back to the forefront with the DCS Hornet, but that still leaves all their other planes using a lightweight system which dates back to the Lock-On days. Aspect is unimportant but for notching, jammers are simple noise which only protect your aircraft, chaff (and countermeasures generally) only affects missiles locked on you (so Vietnam- or Viggen-style chaff corridors are impossible). The list goes on. Certainly, radar modeling is hard, but that’s no reason not to do it.

So much of Eagle Dynamics’ attention has been focused on paying work—modules, engine upgrades, new theaters—that they’ve let their underlying technology fall by the wayside. In the long run, that’s unsustainable, and I only hope that they can find the time to fix what needs to be fixed before the ongoing, accumulated debt catches up with them.

OpenTafl v0.4.6.2b released

OpenTafl has seen some major development work for the first time in a while, culminating in the recent release of v0.4.6.2b.

This version adds some major features which have been on my to-do list for some time. First, the in-game and replay board views now support keyboard input, a major usability enhancement. No longer will mistaken command entries torpedo your games!

That feature, however, was merely a happy piece of good fortune, falling out of the true headline feature for the v0.4.6.x releases: a variant editor. That’s right. OpenTafl is now the best tool available for designing tafl rules, bar none. Not only can you individually tweak every rule described in the OpenTafl notation specification, you can also edit the board layout to look any way you like.

If you’re interested in playing a few games with the new UI or experimenting with rules variants all your own, you can, as always, get the latest version from the OpenTafl website. I haven’t promoted v0.4.6.x to the stable release yet, but I expect to do so soon.

With these features done, I turn my attention next to a few network-centric things for v0.5.x. OpenTafl’s network play server has not, to date, seen much use; now that PlayTaflOnline.com is getting close to its new architecture, I hope to write a PlayTaflOnline front end for OpenTafl, so you can use OpenTafl to play games at PlayTaflOnline, with all the rich support for replays, commentary, and analysis from OpenTafl. OpenTafl’s network server mode and self-contained network play will continue to be a supported mechanism for remote games, but won’t see new features. v0.5.x will also contain an automatic updater, to simplify the end-user updating process.

Looking further into the future, I’m running out of OpenTafl features I want to do. With luck, 2017 will see a v1.0 release.

Fishbreath Plays: MHRD Review

If you like puzzle games, it’s a good time to be alive. You’ve got your programming puzzle games, like Shenzhen I/O, SpaceChem, and really, the entire Zachtronics catalog; you’ve got your process optimization puzzle games, like Big Pharma and Production Line; you’ve got puzzle games of every shape, size, color, and description.

You even have, it turns out, logic puzzlers. That’s where MHRD comes in. You’re a hardware engineer for the waggishly-named Microhard, a company building the Next Big Thing in CPU design in the 1980s. You start with a single logic element: a NAND gate (for the uninitiated, that means not-and). You end up with a simple but entirely functional 16-bit CPU1, designing all the logic circuits you need along the way. Start with NAND, build the rest of the logic gates, figure out your multiplexers, demultiplexers, adders, and memory elements, put it all together into your higher-level CPU components.

It’s packaged in a fun, oldtimey DOS-style terminal editor, and unlike a lot of retro UIs, it doesn’t wear out its welcome. All your circuit design happens in a hardware description language, in an in-game editor. The editor has some foibles: it doesn’t scroll, and it only does line wrapping when adding text. On the other hand, it has a decent auto-completion engine. The hardware description language makes sense: you refer to pins and buses by name, connecting them to other pins and buses with an arrow operator. For instance, opCode->alu.opCode would connect the circuit’s opCode input to the ALU’s opCode input. Generally, the syntax is straightforward and easy to remember. Sound effects are basic; you get a background fan whir befitting an old PC, and an IBM keyboard sound effect which wears out its welcome after a while.

That’s all there is to it, which brings me to my next point. Is it good as a game? That’s a harder question to answer. It is sited in a difficult middle ground. It can’t be too freeform—given an instruction set and a CPU specification, very few people who don’t already know how could build all the necessary subcomponents. At the same time, it shouldn’t be too static, or else it feels a little too much like rote construction to the truth table for the component at issue. MHRD errs a bit too far in the latter direction. There is no real sandbox. All you’re doing is building the gates and circuits the game tells you to, in exactly that order. There’s no discovery to be had, and not a lot of freedom to design solutions in different ways. Unlike, say, Shenzhen I/O, the problems are small enough that it’s never all that unclear how to solve them.

That isn’t to say that there’s no fun to be had. If you aren’t a hardware engineer, or a software engineer with a deep interest in hardware2, you will find it fascinating how few steps it takes to get from a NAND gate to a functioning processor3. There are leaderboards, too, based on NAND counts for each element. Given that logic design is a fairly well-understood field, the NAND counts are uniformly the smallest possible number of gates required for each task, which gives you a nice target to aim for. The developer is active on his Steam forum, and seems to have more planned for the game. Given that it’s an atmospheric logic puzzle that I, an experienced software engineer, found enjoyable and educational, I think it’s worth a buy. (You may want to wait for a a sale.)

At the same time, there’s a better way. (If you’ve been reading the footnotes, you should have seen this coming.) There’s a free course out there, a Computer Science 101 sort of thing, called Nand2Tetris. As the name suggests, it’s similar to MHRD in that you’re building a CPU from a NAND gate alone. Nand2Tetris differs in two ways. First, it isn’t a game. As such, there isn’t a plot (MHRD’s is skeletal, but present), or any pretension that it’s about anything besides learning. Second, it goes a lot further. MHRD stops at the aforementioned functional CPU. The last puzzle combines the instruction decoder, the ALU, and some registers, and that’s it. It verifies your solution by running a few instructions through the CPU, and you’re done.

Nand2Tetris, as the name suggests, keeps going. After you finish the CPU, you write a compiler to generate your microcode. After you write your compiler, you write an operating system. After that, you can run Tetris. Furthermore, although you have assignments, you also have a proper sandbox. You get a hardware design language and a hardware simulator, and you can build anything you like. That, I feel, is the promise of a logic design puzzle game, and MHRD doesn’t quite deliver.

In the final reckoning, though, I say MHRD is worth the price of entry. I don’t really have the inclination to write my own compiler, and I have plenty of other software projects besides. If you’re only interested in the logic design portion, you ought to get MHRD too. If, on the other hand, you want to really understand how computers work—how the processor you built becomes the computer you use every day—try Nand2Tetris instead.


  1. It’s very similar in architecture, I understand, to the CPU designed in the Nand2Tetris course. We’ll come back to that. 
  2. Or a very good memory for that hardware class you took back in college. 
  3. Not counting the memory elements, the CPU task takes fewer than 800 NAND gates in the minimal solution. My current best is 3500. 

Fishbreath Flies: DCS AJS 37 Viggen Review

Leatherneck Simulations is at it again: a 1970s aircraft modeled in loving detail. Once more, we get a plane which has virtues beyond accuracy. Leatherneck’s DCS Viggen has heart.

I’ve written about the Viggen’s history already, so if your first thought is, “Why should I care?”, there’s your answer. With that out of the way, we can move onto the plane itself.

Graphics
Digital Combat Simulator made huge strides on this front with the release of its new rendering engine in 2015; Leatherneck has proven itself well above average at the graphical side of DCS module development. The MiG-21 was a work of art, and the Viggen is perhaps even more so. The external model is well done, and seems perfectly realistic to me1. The real artistry comes inside the cockpit, though. Flip on the battery and the low pressure fuel pump, and the master warning lights (labeled HUVUDSVARNING, because Swedish) come on, bathing the cockpit in a luminous flashing red. Turn them off and get through the rest of the startup checklist, then turn the radar on. The CRT casts its eerie green CRT glow over everything, and seems to glow with the inner light all displays of its type do.

Beyond the superb lighting effects, the cockpit also has the weathered feel you would expect from twenty-year-old airframes. (Remember, the AJ 37 Viggen is a 1970 plane; the AJS 37 Viggen is the 1990s update). It isn’t dingy, but it does look and feel as though it’s been used, and that adds tremendously to the plane’s character.

Sound
We come now to perhaps the best part of the Viggen: its sound design. Although the DCS engine may not do very well at exterior sounds for any plane, Leatherneck has still managed to make the flyby sound meaty, especially in afterburner. In-cockpit, the state of things is much better. Turn on the AC power, and the computer’s fans spin up with a sound that reminds me of my childhood machines. The master warning alarm has the same warmth to it as the light does. Later, the insistent chirp of the radar warning receiver gives way to the thunder of the afterburner, growing deeper by stages as the throttle clicks past its detents through the three afterburner power bands.

Sound is an important and underrated component to immersion in sims. The Viggen gets it spot-on. It’s good as any sim I’ve played to date.

Systems and weapons
The Viggen flies a mission profile rather out of favor in today’s world: interdiction. That is, it’s designed to fly at ludicrously high speeds and ludicrously low altitudes, carrying a wingload of bombs, rockets, or rudimentary guided weapons. It gets to its target, pops up at the last minute to aim its weapons, makes one pass, and heads home.

This is reflected in its design: the canarded double delta makes quite a bit of low-speed lift, but it does so inefficiently. The Viggen is happiest in its native habitat: Mach numbers greater than 0.6, altitudes lower than 500 meters above the ground. It does not fit into the low-intensity COIN world of DCS nearly so well as (say) the A-10C, the Ka-50, or even the Su-25. The weapons fit requires you to know where your target is, and even the air pressure at the target’s location. All of this (except for the air pressure) must be programmed into the computer ahead of time, or using the wee six-digit input display while flying.

So, don’t expect to do much loitering, waiting for JTAC, and dropping bombs precisely. Even if it was more straightforward, the Viggen has very little facility for dropping quantities of its weapons smaller than ‘all’. Only guided missiles fire one at a time.

Having introduced this section with an extended ramble, let me get back on point for a paragraph. The systems modeling feels right to me. I’m not an expert on Swedish systems of the 1970s and 1990s, but everything feels plausible enough, modulo some early-access issues Leatherneck is working through in weekly patches. Notable fun items include the overwhelmingly programmable RB-15 anti-ship missile, the BK-90 totally-not-a-low-altitude-cluster-JDAM, and the RB-05A manually-guided missile (easier to use than it sounds). The air-to-ground mapping radar works as expected; that is to say, it’s very cool, albeit with the confusing wrinkle that green means no radar return and black means return.

There are some ongoing issues with rearming, as well as some others involving weapons and multiplayer, but I’m confident Leatherneck will be able to get those squared away.

Gameplay
On to the most subjective point! Is it fun?

Yes. Yes it is.

The design of the HUD, with few numbers and lots of indicator lines, makes you feel like you’re flying a Swedish X-Wing, and the rest of the cockpit supports that impression. As the treetops zip by at four hundred knots, and the waypoint distance line on the HUD shrinks to indicate you’re closing in on your target, you can just picture yourself hurtling down the Death Star trench.

Maybe that’s an exaggeration, but the Viggen’s mission profile makes for a certain sense of rising anticipation as you speed toward your target. Do you know that stereotypical scene from adventure movies, the one where the sun inches toward a bejeweled staff placed just so, or the one where some narrator is speaking while an orrery clicks toward planetary alignment? Everything is building toward a single moment, and then, bam—the payoff. The sun sparkles off the jewel and lights up the model of the city below, the orrery’s planets align. That’s the feel of a Viggen mission done correctly. Your range-to-target dial—and it is a dial; the Viggen may be computerized, but it isn’t that computerized—ticks down toward zero. You pull up, catching a glimpse of your target as you do. You roll onto it, lining up the sighting mark in the HUD, and then, bam. You pull the trigger and your weapons strike home. There’s the payoff.

It’s tremendously exciting.

Verdict
I recommend the Viggen wholeheartedly, based on its production values and on the sheer thrill I get out of flying it. I offer the following two caveats, though. First, it’s an early access product; more importantly, it’s an early access DCS product. There are still plenty of gremlins. Second, if you’re a multiplayer-primary player, be warned that there are several bugs and several usability issues to contend with. Even with those caveats, though, it’s an excellent aircraft, and I very much doubt you’ll be disappointed with your purchase.


  1. I don’t count rivets, though. 

2016 Tafl Efforts: Results and Roundup

First off: the inaugural OpenTafl Computer Tafl Open has come to a close. It was a bit of an anticlimax, I must admit, but fun times nevertheless.

To recap, only one entry (J.A.R.L) made it in on time. On January 2nd, I had the AIs run their matches, and it was all over inside of 20 minutes, with a bit of technical difficulty time to boot. You can find the game records here.

To move one layer deeper into the recap, both AIs won one game each out of the match. J.A.R.L won in 22 moves, OpenTafl won in 18, giving the victory to OpenTafl. Disappointingly for me, OpenTafl played quite poorly in its stint as the attackers, allowing J.A.R.L to quickly set up a strong structure funneling its king to the bottom right of the board. Disappointingly for Jono, J.A.R.L seemed to go off the rails when it played the attacking side, leaving open ranks and files and leaving a certain victory for OpenTafl. Deeper analysis is coming, although, not being a great player myself, I can’t offer too much insight. (Especially given that neither AI played especially well.)

I do expect that, when Jono finishes fixing J.A.R.L, it’ll be stronger than OpenTafl is today. He intends on making its source code available in the coming year, as a starting point for further AI development. (If feasible, I hope to steal his distance-to-the-corner evaluation.)

There will be a 2017 OpenTafl Computer Tafl Open, with the same rules and schedule. I’ll be creating a page for it soon.

Next: progress on OpenTafl itself. It’s difficult to overstate how much has happened in the past year. Last January, OpenTafl was a very simple command-line program with none of the persistent-screen features it has today; it had no support for external AIs, no multiplayer, no notation or saved games, and a comparatively rudimentary built-in AI.

The first major change of the year was switching to Lanterna, and that enabled many of the following ones. Lanterna, the terminal graphics framework OpenTafl uses to render to the screen, allows for tons of fancy features the original, not-really-solution did not. Menus, for one. For another, a UI which makes sense for the complicated application OpenTafl was destined to become. Although it’s the easiest thing to overlook in this list of features, it’s the most foundational. Very few of the remaining items could have happened without it.

Next up: external AI support. In the early days, I only planned for OpenTafl to be a fun little toy. At the end of that plan, it might have been something I could use to play my weekly (… well, kind of) tafl game without having to deal with a web interface. (For what it’s worth, Tuireann’s playtaflonline.com renders that goal obsolete, unless you really like OpenTafl.)

Later on, as I got into work on OpenTafl’s built-in AI, I realized what an amazing object of mathematical interest it is, and that it has not, to date, seen anything like the kind of study it richly deserves. As such, I decided I wanted OpenTafl to be a host for that sort of study. Much of what we know about chess, go, and other historical abstract strategy games comes from the enormous corpus of games played. That corpus does not yet exist for tafl games, the amazing efforts of people like Aage Nielsen and Tuireann notwithstanding. The quickest way to develop a good corpus is to play lots of games between good AIs. Good AIs are hard to come by if every AI author also needs to build a UI and a host.

So, OpenTafl fills the void: by implementing OpenTafl’s straightforward engine protocol, AI authors suddenly gain access to a broad spectrum of opponents. To start with, they can play their AI against all other AIs implementing the protocol, any interested human with a copy of OpenTafl, and possibly even the tafl mavens at playtaflonline.com. Not only that, but the AI selfplay mode allows AI authors to verify progress, a critical part of the development process.

Multiplayer was an obvious extension, although it hasn’t seen a great deal of use. (There are, admittedly, better systems out there.) It proved to be relatively straightforward, and although there are some features I’d like to work out eventually (such as tournaments, a more permanent database, and a system for client-side latency tracking to allow for client-side correction of the received server clock stats), I’m happy with it as it stands.

OpenTafl is also the first tafl tool to define a full specification for tafl notation, and the first to fully implement its specification. The Java files which parse OpenTafl notation to OpenTafl objects, and which turn OpenTafl objects into OpenTafl notation, are in the public domain, free for anyone to modify for their own AI projects, another major benefit.

In defining OpenTafl notation, I wanted to do two things: first, to craft a notation which is easily human-readable, in the tradition of chess notation; and second, to remain interoperable with previous tafl notation efforts, such as Damian Walker’s. The latter goal was trivial; OpenTafl notation is a superset of other tafl notations. The former goal was a little more difficult, and the rules notation is notably rather hard to sight-read unless you’re very familiar with it, but on balance, I think the notations people care about most—moves and games—are quite clear.

Having defined a notation and written code to parse and generate it, I was a hop, skip, and jump away from saved games. Shortly after, I moved on to replays and commentaries. Once again a first: OpenTafl is the first tool which can be used to view and edit annotations on game replays. Puzzles were another obvious addition. In 2017, I hope to release puzzles on a more or less regular basis.

Last and the opposite of least, the AI. Until the tournament revealed that J.A.R.L is on par with or better than OpenTafl, OpenTafl was the strongest tafl-playing program in existence. I’ve written lengthy posts on the AI in the past, and hope to come up with another one soon, talking about changes in v0.4.5.0b, which greatly improved OpenTafl’s play on large boards.

Finally, plans. 2017 will likely be a maintenance year for OpenTafl, since other personal projects demand my time. I may tackle some of the multiplayer features, and I’ll probably dabble in AI improvements, but 2017 will not resemble 2016 in pace of work. I hope to run a 2017 tafl tournament, especially since the engine protocol is now stable, along with OpenTafl itself. I may also explore creating a PPA for OpenTafl.

Anyway, there you have it: 2016 in review. Look for the AI post in the coming weeks.

Fishbreath Plays Total War: Warhammer

I fear we are too late.

Under the High King’s banner, we drove the grobi scum out of the halls of our ancestors. We chased them through the badlands and put them to the az, and now they will never trouble us again. Our diplomats traveled the whole of the world, drawing together the karaks and reforging the alliances of old. We stood side by side with men for the first time in a thousand years.

But while we looked south, Chaos fell on the world from the north. Kislev fell. Nordland teeters on the brink. Men fought men in the Empire’s heartland, and now tendrils of darkness reach the very gates of Altdorf.

The High King looks north now. Umgi and dawi alike are united under his command. So we march to the lands of men, az in hand, to face those who would bring about the end of all things—servants and champions of the dark gods.

The Empire is a shadow of its old self. The Wood Elves still make war on all who stand for order. Their stubbornness may yet doom us all. We are the world’s last hope.

– Elmador Oathforged

Warhammer is an excellent setting for storytelling.

You should need no further convincing, but in the event you do, let me elaborate. From its rather humble beginnings as a miniatures wargame, Warhammer Fantasy Battles1 developed a world full of timeless themes for war stories: dramatic final stands against insurmountable odds, the evil horde sweeping through the world to eradicate all that is good and right, brave men standing athwart the tide.

Total War games are story generators. Perhaps they aren’t as effective in that role as Crusader Kings 2, but they nevertheless make interesting alternate histories. Note I say ‘interesting’, as in, ‘huh, that’s interesting’, and not ‘compelling’, as in, ‘I cannot wait to see where this goes next’. Previous Total War games were interesting, but not compelling. Factions aren’t all that different, generals are more or less interchangeable, your enemies are the ones next to you, and your territory is whatever you can take.

Not so much in Total War: Warhammer. Factions are very different—some depend on siege weapons, some depend on strong infantry, some depend on movement and trickiness, and all feel almost like different games. Generals have a deep skill tree, and that helps to turn them from collections of bits into characters. (I didn’t even have to start the game to look up General Oathforged’s name.) Your enemies may be across the world. Chaos, remember, comes out of the north, and the dwarfs start in the south. You can’t take territory willy-nilly, either. Most factions have some territorial restrictions. Dwarfs, for instance, can only occupy territory which was originally dwarfen: the settlements in the central plains are right out, but old dwarfen settlements occupied by the greenskins are fair game.

Ultimately, though, the thing Total War: Warhammer has over previous Total War games is its setting. It probably isn’t quite correct to say that everyone knows Warhammer, but a lot of people know Warhammer. There are more people familiar with Warhammer, I would say, than the 18th-century history of the Netherlands2. Even if the numbers were equal, the Warhammer setting is a fictional setting. By their very nature, fictional settings generate stories more easily than historical ones. This isn’t to say that there aren’t interesting stories out of the Netherlands’ exploits in the 1800s—just that they aren’t as memorable or as frequent as the stories out of the dawi’s fight against the grobi, or the Empire’s strife with its neighbors, or the coming together of all the civilized peoples to stand against Chaos.

So, when compared to other Total War games, Total War: Warhammer has much deeper emotional impact because of its setting. Game systems reinforce this: I’m not just fighting a war of conquest, I’m fighting wars of conquest to rebuild the Karaz Ankor and reclaim what was lost to dwarfkind thousands of years ago. Or, I’m not just beating up on my neighbors to take their stuff, I’m beating up on my neighbors because they are to the south, they won’t stop fighting me until they’re defeated, Chaos is to the North, and the Empire is the first and best line of defense against the Ruinous Powers. Or, I’m not just swarming up out of the badlands because I’m looking for a scrap—well, okay. Maybe the greenskins aren’t the best example, but even if they do fight just for the sake of fighting, they have a reason for it. It’s what they do: beat up on anyone small enough to take a beating, then find the next biggest thing, rinse, and repeat.

That, in my opinion, is what previous Total War games were missing, and what Total War: Warhammer has in spades: context.

To hit on a few final, technical notes, battles play quickly, moreso than even the relatively quick games in recent Total War history, but the factions are varied, tactics are interesting, and the AI has a great sense for cavalry flanking maneuvers. The Creative Assembly finally got to cut loose and have some fun, and it shows here. Presentation is generally superb all around; the writers nailed the Warhammer feel, and the art design follows along. There are some spectacular battle maps, too.

Really, it’s the perfect union of theme and mechanics. I’m glad it took this long to happen, because they got it very right. Ordinarily, when I’m looking forward to a game, I build up a picture in my head of what it’ll be like. That picture is usually not altogether accurate, so when the game finally comes out, there’s a time of adjustment. The game may not be bad, but it isn’t what I’m expecting, and so in a sense, I’m disappointed. I never had that feeling with Total War: Warhammer: it is everything I had hoped it would be. If you like games that generate stories, the Total War formula, or Warhammer, you owe it to yourself to give it a whirl.

  1. May it ride eternal, shiny and chrome!
  2. Fun fact: your author’s next favorite Total War game is Empire, because he likes to be contradictory.