Author Archives: Fishbreath

Tafl Open 2016 Contenders: J.A.R.L

The first submission to the 2016 OpenTafl Computer Tafl Open arrived in my inbox yesterday morning. Since I had not yet finished my coffee at work, I decided to open it up and extend my break a bit.

J.A.R.L was developed by Jonathan Teutenberg, who comes to us from the java-gaming.org forum (under the name Jono). It’s a fairly standard iterative deepening depth-first search player, the same structure as OpenTafl’s AI, with two fascinating features.

First, it uses as a component in its evaluation function the distance to a king victory in a simple abstraction of the game. In the simplified version, only the king is allowed to move, and he can move through pieces with a move count penalty. The score is a combination of the abstract distance to each corner, the material balance, and the freedom of the king’s men.

Second, it does some advanced pruning of the search tree, along with some move ordering. Moves which make or avoid captures are weighted heavily and searched more deeply, while states which are much worse than alternatives and worse than the current position are not expanded.

The upshot is an AI which seems to have no small measure of strength to it, enough so that a game against it was worth commenting on, to some degree. (Granted, only because it lost a particular corner endgame I’ve seen come up before.) My suspicion after one game is that it’s one of the best AIs for the attacking side I’ve played to date. I look forward to seeing it in action in the tournament.

The Soapbox Carbine Qualification

The Soapbox carbine qualification is a quick test of a number of useful carbine skills.

Start all stages from a proper low or high ready. If you need rules beyond your own personal code of honor, your low ready should be at least thirty degrees down. Targets are IPSC steel or cardboard unless otherwise stated.

The times given here are our first estimates. (We’ll update this post after we’ve shot the qualification ourselves and evaluated how good our guesses were.)

Stage 1: Short-range transitions
Round count: 6
Par time: 4 seconds

Ten yards away from the firing line, place one target five yards left of the stage center line, and one target five yards right of the stage center line. At the buzzer, engage the left target with two rounds, engage the right target with two rounds, and finish by engaging the left target with two rounds.

Stage 2: Cover
Round count: 6
Par time: 4.5 seconds

Find some object to represent cover. (This may be a target stand, a support post, or even a mark on the ground.) The stage center line is the line drawn downrange from the right edge of the cover. At ten yards, place a target five yards left of the center line. At 20 yards, place a target five yards right of the center line. Start at low ready, positioned so that no part of your body is past the right edge of the cover. At the buzzer, come around the cover, engaging the twenty-yard target first, followed by the ten-yard target, both with three rounds each.

Left-handed shooters should reverse the stage: the center line and the 20-yard target go left of the edge of the cover, the ten-yard target goes to the right, and the shooter must start behind the left edge of the cover.

Stage 3: Snapshot
Round count: 2
Par time: 1.5 seconds

Place a target at 25 yards. At the buzzer, engage the target with two rounds as quickly as possible.

Stage 4: Midrange reload
Round count: 6
Par time: 4 seconds (+1 second for closed pouches)

Load three rounds in one magazine and three rounds in another. Place a target at 50 yards. At the buzzer, engage the target with three rounds, reload, and engage the target with a further three rounds.

Stage 5: Long-range speed
Round count: 6
Par time: 4 seconds

Place a target at 100 yards. At the buzzer, engage the target with six rounds.

Stage 6: Long-range precision
Round count: 4
Par time: 8 seconds

Place a paper plate or 8″ steel at 100 yards. Start in your firing position of choice, carbine at low ready (for all positions except prone), or laying on the ground (for prone). At the buzzer, engage the target with four rounds.

Scoring
Score one point for every hit under par time. Passing score is 20.

The Crossbox Podcast: Episode 13 – Qualified Approval

We’re back to our normal format for a very late November episode. Join us for some griping about one thing which really isn’t tacticool, some games which we don’t understand, and the case of the missing quals.

Further reading
PC Gamer writes up some terrible adventure game puzzles


(Download)

Random Carrier Battles: what’s in the prototype, then?

Yesterday, we spoke briefly of what’s getting left out of Random Carrier Battles’ first playable prototype. Today, we’ll cover the happier side of that story: what’s in!

UI stuff
I have some informational interface tasks to take care of, to allow players to view task force members and elements of air groups. I figure to stick this on the left side of the main UI.

Some aircraft design improvements
I believe I’ll need to make some tweaks to aircraft and escort design, to specify quality of armament: the early use of the TBF Avenger was hampered by the poor quality of the Mark 13 air-launched torpedo, and I can’t capture that in the system as is. Similarly, British battlecruisers, German pocket battleships, and Yamato aren’t well-captured by the system as is. (Battlecruisers, in this framing, would be heavy cruisers with good guns; Scharnhorst would be battleships with poor guns, and Yamato would be a battleship with good guns.) Although surface combat is out of scope for the initial prototype, I want to have enough data to do a passable job at it when I come to it.

I may also have to make radios a feature of airplane design, so that types with historically good radios can communicate better than types with historically poor radios.

Aircraft handling: repair, fueling, arming, launching, recovery
Aircraft handling is a big focus of Random Carrier Battles: more than previous games in the carriers-at-war genre, I want to get down into the weeds. I want to track aircraft status to a fine-grained level of detail, down to how far along arming and fueling have progressed, or how warmed-up the engine is. On deck, I don’t think I plan to track exactly where planes are spotted, but I may do some tracking of takeoff run available—this would penalize light aircraft carriers with large air wings by preventing them from launching everything in one go, which is, in my view, a feature.

In terms of discrete development tasks, I’ll have to figure out how to turn a designed air group into an air group instance in the game world, build systems to hold air operations status and control transitions between air operations states, and build UI to control it all.

This feature will also lay the groundwork for land-based airfields, as well as seaplane tenders and seaplane-carrying cruisers.

Air combat!
Making this one heading is perhaps a bit ambitious on my part, but there you are. Air combat has a bevy of subordinate features, including representing armaments (to give damage) and ship and aircraft systems (to take damage), a planner for missions, and unit combat behavior AI.

Systems and armaments are the easiest of the bunch; they merely involve defining a set of systems for each class of asset, along with a set of armaments generated from the asset’s statistics and arming status.

The mission planner is a complicated feature, and one which I hope will be industry-leading: a central clearinghouse where admirals can view all missions currently planned or in progress, create new missions, cancel unlaunched missions, and eventually, handle every air operation in the task force. For now, it may fall to players to prepare the aircraft assigned to missions on their own initiative, depending on how the aircraft handling features shake out.

Finally, combat behavior AI: this is by far the biggest feature under this heading, and the hardest to handle. It includes automatic marshaling of air groups (players won’t have direct control over aircraft in flight), CAP behavior, scout plane behavior, strike planes’ flights to their targets, and attack behavior for dive bombers and torpedo bombers. Ships will also have to maneuver under direct attack (that is, to avoid incoming torpedoes, and to throw off dive bombers’ aim).

Initial spotting and scouting
Spotting and scouting in their fullness will require a lot of work, so I’m going to build a simpler system to start with. Simply put, you can see everything on your side, and anything within horizon range of your ships and planes.

Submarines will come later.

That’s that! I hope you find these plans as exciting as I do. I hope to get the demo to a state where I can take some usable screenshots and videos and submit to Steam Greenlight, at which point I’ll be hitting you up for upvotes.

Random Carrier Battles: the road to a playable prototype

Good afternoon, and happy Thanksgiving! While sitting here watching the turkey and the giblet broth, I had some time to work out a little roadmap for taking Random Carrier Battles from its current state, barely above proof of concept that the Godot engine is suitable for this purpose, to a playable prototype (if one that doesn’t capture my full vision).

So, to get the ugly out of the way first, let’s talk about what I’m leaving (for now) on the cutting room floor.

Wind and weather
Though they are crucial parts of aviation, they’re incredibly complicated, and I want to do them right the first time, rather than hacking something together now. With modern processors and multi-threading, I can push weather simulation into the background and only update every few in-game minutes, which leaves me lots of time to try interesting simulation techniques. ‘Interesting’, as I said, is a synonym for ‘hard’, and so I won’t be exploring these yet.

Land-based air
It may turn out that the mechanics of land-based air—launching and recovery—is a freebie based on doing carrier-based air. If it isn’t, though, I’ll tackle it later, along with design for land-based types like multi-engine bombers and flying boats.

Full visibility and spotting system
My plan for Random Carrier Battles is to attempt to capture just how blind carrier admirals were a lot of the time. Enemy positions will only be known by spotting reports, and allied air positions will only be known with full precision when they can be seen from friendly task forces. All of that will require a detailed system for spotting and visibility, and a system for displaying and archiving spotting reports. It’s less straightforward than it sounds, since the AI (when that arrives) will need access to that information for its fleet. Speaking of…

Artificial intelligence
I may provide some sort of rudimentary AI, but I may also leave it more or less entirely to scripting, or give the computer perfect knowledge. Don’t expect anything amazing, at any rate.

So, what does that leave to do? Nothing less than the core of the game. Come back tomorrow or Saturday for details!

Random Carrier Battles: kinematics and scale

I spent some time the other day playing the old-school DOS version of the current state of the art in carrier air warfare simulations, SSG’s 1992 classic appropriately entitled titled Carriers at War. As far as DOS-era wargames go, it’s pretty good—it doesn’t bother you with too many details, and it (largely) lets you focus on the grander strategy. I really blew the Battle of Midway as the Americans, though.

So, let’s talk about a way in which I hope to improve on the old classic: movement. Carriers at War plays out on a 20-mile hex grid; Random Carrier Battles currently tracks positions down to 10 meters; rather than a five-minute time step, I use a six-second timestep (organized into ten steps per one-minute turn) for movement and combat. This lets me do all sorts of fun things which 1992’s processing power did not allow, which I’ll get to shortly. It also causes me a great deal of trouble, which I’ll gripe about first.

The short version is, the kinematics are hard.

The slightly longer version is, there’s a lot of math involved in working out just how game entities ought to move. Warships aren’t much of a problem, because it turns out that warship maneuvering is pretty straightforward1. Aircraft, however, get a little tough. Not only do I have to consider everything I do with warships, I have to account for performance differences at altitude, as well as rates of climb and descent beyond which aircraft must either decelerate or accelerate. I don’t have the design fully worked out for that yet, I’m afraid, so I can’t say much more yet. Rest assured it’s complicated.

So, what does that enhanced positional and temporal resolution buy me above Carriers at War?

Better simulation of strike range
This is the biggest win, in my opinion. With such a high temporal and positional resolution, I can simulate fuel consumption to a much greater level of accuracy. As such, I don’t need to limit myself to Carriers at War’s fixed strike ranges2. The TBD, for instance, gets a with-torpedo range of 90 miles. I’ve seen other figures give a combat radius of 150 miles, and still others give a range (not radius) of 435 miles with a torpedo. By tracking fuel, I can, to some degree, ignore the trickier combat radius figures2, and simply grab a plausible cruise range figure. If I mix in some reasonable modifiers for speed, altitude, weight, climbing and descending, and maneuvering, suddenly I have a system which doesn’t need to work with combat radius at all. Players can launch strikes well beyond range if they want to; they just need to know that they’ll have to either deal with losing planes to fuel exhaustion, or follow the strike with their carriers.

Realistic combat behavior
The level of detail in kinematics, and the short time step, lets me make emergent some behaviors which might otherwise be the result of dice rolls. For instance, are Devastators running in on your carriers? Turn away from them, and the slothful American torpedo bombers will have to chase you, running their fuel down and exposing them to the depredations of your CAP and your escorts’ AA. Dive bombers rolling in on you? Throw the helm hard over to throw off their aim.

Many of these behaviors can be made to happen automatically: ships under dive bomb attack will make evasive turns on their own, for one. I haven’t yet decided which behaviors will end up being automatic, and which will be tactics set up by the player, but my aim is to do the low-hanging fruit for the player.

A notable exception to the above model is air combat: my current expectation is that the six-second combat step will prove too large for air combat (and relatedly, that emergent air combat behaviors will prove very complicated to code), and that the best way to handle it will be to put planes into a furball object inside which combat is handled in an abstract manner.

Exploration of unexplored formation options
Allowing the player relatively detailed control over formations, and keeping track of positions in similar detail, allows players to try some unusual tactical ideas. For example, the Japanese were not in possession of shipboard radars until fairly late in the game. What if, in some hypothetical battle, they detached some escorts from the main task force to make a search line a few miles toward the threat? Perhaps they could better direct their CAP to meet incoming threats.

That’s only one example. Undoubtedly there are others which haven’t occurred to me yet.

Those are at least a selection of the benefits of an approach with a greater focus on direct simulation, as opposed to a more traditional hex and counter approach. We’ll see how they turn out.

  1. At least to the fidelity I plan to simulate. There are lots of fascinating behaviors when you introduce multiple screws into the mix, but given that Random Carrier Battles is still, at its essence, a game of task forces, I don’t intend to allow players to give orders that detailed.
  2. The reason they’re so fiddly is that nobody ever talks about their assumptions: what load, exactly, constitutes a combat load? Is range deducted for reserve fuel and the time spent forming up? Are allowances made for maneuvering over the target? These are three of many questions left unacknowledged by most authors of military references.

Announcing Random Carrier Battles

Coming soon, or at least at some point down the line, from the Softworks division of Many Words Press, Random Carrier Battles:

random carrier battles main menu

Random Carrier Battles is a computer wargame simulating aircraft carrier warfare at the operational level between the mid-1930s and the end of the Second World War. It features a user-friendly design system for carriers, escorts, and aircraft, along with a large library of predefined types for your convenience. Planned features include a scenario editor and a random scenario generator, along with some premade scenarios covering major battles in the Second World War.

If you listened to Episode 12 of The Crossbox Podcast, you’ll remember my goal for the design system: create something just complex enough to adequately capture the different schools of carrier design in the era in question.

random carrier battles design

In scenarios, the player fills the role of the admiral in command, controlling the composition and disposition of the task force or task forces under his control, as well as the tempo and target of air operations. Hands-on admirals will be able to control aircraft handling down to the individual plane aboard their carriers; big-picture admirals will be able to delegate those to the computer.

Both kinds of admiral will have plenty to sink their teeth into strategically: Random Carrier Battles will accurately model the uncertainties inherent in carrier warfare, including incorrect spotting reports and communications failures, incomplete information about enemies, and lack of direct control over aircraft.

rcb-scenario

Obviously, this project is still in its infancy. I’ll be blogging about the development process here (at least until it’s far enough along for its own website), and sharing more screenshots and videos as things progress. Stay tuned for more information in the months to come!

The 2016 OpenTafl Computer Tafl Open approaches!

That’s right, ladies and gentlemen, one month until entries close. I’ve posted final deadlines and submission guidelines at the official tournament page; have a look and get ready.

During the tournament, expect coverage here, possibly to include some liveblogged or streamed games. See you in a month!

Sunrise, November 9

Well, here we are. It’s November 9. In a few months, Donald Trump will be our president. I prefer him over Hillary, but it’s hard for me to say I’m happy with the outcome. There are no good choices between a brutish egotist and a corrupt kleptocrat.

So, in the spirit of united disappointment (though I grant yours is likely greater than mine), I offer this olive branch. We have a president none of us1 is all that happy with. I have little doubt you’re ready to stand in opposition to him. So am I, when he steps out of line. Let’s stand together.

Let’s also talk about why this happened. If you’re reading this and you’re disappointed, I suspect you’re going to go with ‘racism’ or ‘sexism’. This is not true, and it’s unfair to your fellow Americans. A month or two ago, I posted an excellent article on Trumpism from, of all places, Cracked. It gets at the crux of the thing: rural voters perceive that educated urban liberals hate their values. Said rural voters have been content to let it pass, but after a decade or two of the capital’s trouble finding them, they’ve had enough. Now they’ve thrown a brick through the window saying so. Frankly, I think they were right to do so. The documented malfeasance of the media—this year more than ever the Democrats’ palace guard—and the stink in Washington are brickworthy things2. I would have chosen a different brick, but educated suburban conservatives didn’t get to pick the nominee this time3.

I’ve seen murmurings about pushing that ridiculous national popular vote plan. I’d urge against that. The brick came through your window because the rural voter feels like the urban population centers have too much say over the way the nation goes. The Electoral College is designed specifically to give said rural voter a voice. Be careful taking away the ballot box: the next one in line is the ammo box. On that note, I do find myself a little unsettled. If nothing else, this election has cast into sharp relief the gulf between the country and the city. More than any time since about 1860, people on both sides of the aisle feel like they’re living in two separate Americas4. I hope the similarity ends there.

In fact, I believe the similarity ends there, at least for now. We aren’t doomed. America is stronger than that. I believe in the resilience of our system of government and the vigilance of the opposition, both Republican and Democrat, to Trump’s presidency. Let the next four years be a time of renewal of the checks and balances over which the last few executives have run roughshod, a time of returning power to the states and liberty to the people, where power and liberty ultimately belong, and a time to once again become a government of laws, and not a government of men. That’s where I am. I hope you can find your way there too.

1. Except, I believe, parvusimperator.
2. I really doubt any media people are reading this, but if you are and your name is not Jake Tapper, be more like Jake Tapper. That’s all we ask. I don’t care if you have political beliefs so long as you aren’t obviously a partisan on the job.
3. And it isn’t like we have a good record at picking candidates anyway.
4. British political scientist Rob Ford expressed the following sentiment after the Brexit vote: do you feel like you’re a stranger in your own country? That’s the way people voting for (Brexit/Trump) have felt for years.

An earlier version of this article attributed the Cracked article to Buzzfeed, despite the fact that I failed multiple times to find it on Buzzfeed via Google searches, and eventually copied the link from an old Facebook post while thinking, “Well, I guess Google must be wrong.” The error in the article has been corrected.

Why we don’t trust gun control

If you were unfortunate enough to catch the final 2016 presidential debate, you may recall Hillary Clinton’s most bald-faced lie: that the Heller decision was about toddlers, guns, and accidental deaths. It’s difficult to express how comprehensively this is untrue.

The Supreme Court described the law at issue in DC v. Heller as a ‘total handgun ban’. This is not in any way in dispute. The word ‘toddler’ appears nowhere in any of the opinions, nor does it appear in oral argument. The word ‘child’ appears only in Breyer’s dissent, and comes up a few times in the oral argument transcript. In the latter case, though, the context is a discussion of the safe storage requirements imposed by the DC law1. In any event, the children under discussion are, depending on your statistical source, all people under the age of 14, or all people under the age of 18. Hardly ‘toddlers’.

So, there’s nothing in the court’s final decision, and very little in the supporting material, to suggest the primary issue at hand was anything but the aforementioned total handgun ban. And yet, Hillary brought up DC v. Heller as a case in which the Supreme Court failed to properly apply the Second Amendment. Put another way, she supports the DC law as written.

Why might she have chosen to express her position using toddlers as a framing device, then? One possibility is that it’s simple scoring of cheap political points. This is almost certainly the case. However, I posit that it is not the only cause here. I take Hillary at face value when she says that she feels accidental deaths by toddler with gun are a problem worth tackling2. I also take her at face value when she argues that DC v. Heller was a bad application of the Second Amendment. Taken together, what does that mean? Preventing the vanishingly small number of accidental gun deaths among youth per year is an admirable goal, and a complete ban on handguns is a proportional effort to make in service of that goal.

As a gun rights guy, this is a completely terrifying line of reasoning. The right to armed self-defense (whether against petty crime by petty criminals, or high crimes by petty politicians) is a fundamental right, however out of vogue it may be most places in the world. Subjecting fundamental rights to utilitarian arguments is a real slippery slope, not the fallacious kind a particular set of internet leftists are so eager to throw a flag on. There is literally nothing, legally speaking, which distinguishes the First Amendment from the Second. If you’re attacking one on utilitarian grounds, you’re opening the door for an attack on the other.

Leaving aside that argument, though, consider the end result of such utilitarian reasoning. If fewer guns in private hands reduces deaths (which is not settled science, but we, like the gun control supporters, will momentarily assume it to be true), and if government has a responsibility to reduce deaths to as near zero as possible, then the government has a compelling interest in reducing the stock of privately-owned firearms to zero. This chain of reasoning underpins the thinking of every major advocate of gun control.

Don’t believe me? How often have you heard gun control advocates express admiration for the gun laws in Australia or England? If you’re paying attention, the answer is ‘all time time’. Those two countries have de facto gun bans, and de jure gun bans on anything you might be able to reliably use for self-defense. It’s the same in New York, where a recent report blames lax gun laws elsewhere for criminal firearms violence in New York. (As opposed to, y’know, New York’s violent criminals.) The solution? Stronger gun laws elsewhere! Stronger laws in New York, even!

So, gun control supporters, I ask you this: are you for banning guns? If so, good for you; that’s a reasonable position, if one I completely disagree with. Come right out and say that, because it’s a very different position than ‘reasonable regulations’. People deserve to know exactly where you stand. If you do like the sound of ‘reasonable regulations’ but not ‘total gun ban’, then I’m sorry to be the one to tell you, but you’re a patsy for the total gun ban people. They aren’t planning to stop with the gun show loophole (not a thing), the online loophole (also not a thing), better mental health reporting, or anything that sounds good to you. They will exploit your vote as far as you’re willing to give it to them, then they’ll dump you and find the next group of suckers willing to vote for them. Bear that in mind when you go to the ballot box tomorrow.

  1. ‘Disassembled and nonfunctional’.
  2. She’s allowed to feel that way, but frankly, they aren’t a problem worth tackling, at least not by federal law. I cite a David Mitchell sketch as evidence for this.