Tag Archives: gaming

On tafl: state space complexity

One of the most basic ways to describe the computational complexity of a game is its state space complexity—that is, the number of unique positions possible for a game—and that’s where I’ve started in my analysis of computer tafl. For now, and probably for every post I write on tafl and mathematics, I’m going to stick with Fetlar rules tafl or Copenhagen rules tafl1, on an 11×11 board.

To start off, we can make an extremely, extremely rough estimate. The board has 121 spaces, and each space can be empty, occupied by a besieger, occupied by a defender, or occupied by the king, so to get an absolute upper bound, we can just do this:

4^{121} \approx 7\times10^{72}

7 x 1072 is surprisingly close to the rough estimate for chess (1.9 x 1071; chess has thirteen states per space and 64 spaces). We know the actual state space complexity of chess to be in the vicinity of 1047, however, so we can clearly do better. And, if you think about it, we’re not even trying all that hard. Our current estimate permits some flagrantly illegal positions, like a board entirely filled with kings, or the board with no taflmen.

There are plenty of obvious constraints we can use to tighten up our guess. For one, any reachable tafl position has to have at least three taflmen: one side must have two taflmen, to have captured the second-to-last piece from the other side, and the other side must have at least one taflman left, or else the game is over. For another, there are only 37 taflmen to place.

An intermediate question presents itself: in how many different ways can three to 37 taflmen be placed on 121 spaces? Well, that’s a question for combinatorics. For any number n of taflmen, the number of unique arrangements of those taflmen into 121 spaces is:

\binom{121}{n}

And, since I’m a programmer, and loops come naturally to me…

\displaystyle\sum_{i=3}^{37} \binom{121}{i} \approx 3\times10^{31}

So, we have 3 x 1031 ways to arrange our taflmen onto our board. Going forward, I’ll multiply it by one quarter2, although it hardly matters at this scale3. This picture is also incomplete—it’s not an upper bound, because it doesn’t account for taflmen belonging to the besieging or defending sides. For every arrangement of n taflmen on the board, there are a bunch of distributions of the taflmen between the besieging and defending sides, and a bunch of options for the position of the king within the defending side.

So, since I am still a programmer, time to break out the nested sums. For every number of taflmen i between three and 37, consider the distribution of taflmen between the sides. For valid positions, let k be the number of pieces on the defending side, between one and i – 1. We need only consider one side. From a logic perspective, it’s obvious why: answering the question, “How many ways are there to assign k taflmen to the defending side?” contains in its answer the answer to the question, “How many ways are there to assign i – k taflmen to the besieging side?” Since the two sides exist on the same board, the number of defending positions is the number of attacking positions. (There’s a mathematical argument in a footnote4, if you don’t buy this.)

Anyway, that insight gets us most of the way there. We have one more thing to account for: the position of the king. One of the defending taflmen must be the king for this position to be valid, and the king is distinct from every other defending taflman. Any one of the k defending taflmen could be the king: that is, there are always exactly k distinct arrangements of the defending taflmen for any distribution of taflmen between the sides, so we multiply the two numbers together.

\displaystyle\sum_{i=3}^{37} \Bigg(\binom{121}{i} \times \bigg(\sum_{k=1}^{i-1} \binom{i}{k} \times k\bigg)\Bigg) \\[1em] \approx 1.4\times10^{43}

There we have it: the number of possible arrangements of taflmen on the board for every valid number of taflmen, multiplied by the number of ways to split a certain number i of taflmen between each side, is a much better bound on the number of possible positions. It’s still not perfect: mainly, this model permits some positions where pieces have illegally stopped on restricted spaces, and I’m probably missing some other things, too, but it’s a close enough bound to make an interesting point.

11×11 tafl games have an upper bound on state space complexity on the order of 1043. Chess, as I mentioned earlier, has a state space complexity on the order of 1047. This might seem like evidence against my theory that tafl games are more computationally complex than chess, but I’m still convinced. Ultimately, state space complexity is a poor measurement of computational difficulty. Consider backgammon: its state space complexity is on the order of 1020, but backgammon AI is a more difficult problem than chess AI.

There is another metric to introduce: that of game tree complexity. State space complexity measures the number of possible positions for a given game. Game tree complexity measures, in a sense, the number of ways to get there. Consider a tree of every possible game of tafl. You start, obviously, with the starting position, then create a leaf node for every possible move by the defending player. At each of those leaves, create leaf nodes for every possible response for the defending player, and so on until every possible combination of moves has resulted in a game-ending state. (We’ll assume there are no ways for games to go on forever.) The number of leaves at the bottom of the tree is the game state complexity.

This number, Wikipedia remarks in its typical laconic style, is “hard even to estimate.” This is true. Wikipedia also remarks that a reasonable lower bound can be established by raising the branching factor, the average number of moves possible at any given step, to the power of the game length in plies (that is, one player moving once). This is where things start to get interesting.

The accepted figure for chess’s branching factor is 35. From the starting position, each player can make 20 distinct moves. (Pawns forward one or two squares, or knights to the inside or outside.) Chess games last, on average, about 40 turns, or 80 plies. The game tree complexity of chess is at least 10123. Backgammon’s branching factor is 250, and its average game length is about 60 plies, so its game tree complexity is at least 10144.

I don’t have a figure for tafl’s branching factor. Aage Nielsen’s tafl site has a tournament running right now, using the Copenhagen tafl rules. Once it’s finished, I’ll look at some positions from the midgame and the endgame and try to work out a good average. In the interests of providing a number, I tweaked OpenTafl’s debug script to print out a count of the number of possible moves on the opening turn. The besiegers can make 116 moves, and the defenders can make 60, for an average of 88. High-level tafl games seem to go on for about 40 turns or 80 plies, from my observation so far. This yields a lower bound of 10167, which rather blows chess out of the water.

Let me try to contextualize that number. Relatively simple 11×11 tafl games are, as far as I can tell, more computationally difficult than any historical abstract strategy game besides go. Not only that, but larger tafl games (15×15 or 19×19 variants) seem likely to me to be more difficult than go.

If you’re not well-read on the subject of board game artifical intelligences, you may have missed what a crazy thought that is. Go is the benchmark for hard AI problems. Computers were playing chess and backgammon at grandmaster levels by the end of the 1970s. Computers still can’t beat professional go players in even games, and the hard tafl variants are probably harder than that.

This is a seriously cool game.

1. Here are rules for the Fetlar and Copenhagen variants. If you don’t care to read them, here’s the summary: they’re more or less identical for my purposes here, played on an 11×11 board with 12 defenders, one king, and 24 attackers.
2. Think about it: any arrangement of taflmen on the board is functionally identical if you were to rotate the board 90 degrees beneath them in either direction, or 180 degrees.
3. Remember, with scientific notation, 8 x 105 divided by four is 2 x 105. Or, indeed, 8 x 100 divided by four is 2 x 100.
4. Let i be the number of taflmen on the board, k be the number of defending taflmen, and i – k be the number of besieging taflmen. The number of distributions of taflmen for the defenders is:

\binom{i}{k}

Therefore, k taflmen have already been accounted for—the besieging side can’t choose them, because they’ve been chosen as defending taflmen. We do not choose from i, we choose besieging taflmen from from i – k, which yields:

\binom{i - k}{i - k}

Which is one, and can be simplified out.

On tafl

While I attempt to dream up suitable procurement challenges for Parvusimperator, who is much harder to challenge than I am, I have some side projects in flight. One of those is a computer implementation of tafl.

Tafl is an Old Norse board game. The name means ‘table’, and the game and its variants are also known by some others: hnefatafl (King’s Table, to my best guess), brandubh, tablut, alea evangelii, ard ri, and likely some I’m forgetting. It is mainly notable for being the best-developed asymmetric abstract strategy game of which I am aware. Common across all the varians is the central goal: one side, the king’s side, starts in the center of the board. Its goal is to get its king to escape. The other side, the besieging side, plays to prevent the king from escaping. The king escapes on edge spaces in some variants, and on corner spaces in others.

Taflmen are moved like the rook in chess, orthogonally, any number of spaces. Captures are made by surrounding opposing taflmen on two sides, though some variants require that the king be surrounded by four opposing taflmen to be captured, and others do not allow the king to take part in captures.

Some modern variants introduce innovations aimed at a more balanced game, or one less likely to stalemate: pieces in a line on a board edge can be captured by lining up your own pieces opposite them and surrounding them to the sides, or the king can escape by means of a similar formation, if he is able to move inside the surrounding formation. Other modern variants go even further from the original rules, introducing pieces which can jump to move or jump to capture, and the ‘berserker rule’: a piece which makes a capture can move repeatedly, so long as each subsequent move also makes a capture. (That one is going to be a huge pain to implement. Just saying.)

Anyway, besides its obscurity and its Viking flavor, I find two other things to like about tafl games: first, the unchartedness of the territory. Tafl is still an enthusiast community, and although it seems to be growing, research into the game is still in its infancy. It’s a chance to break some new ground in human understanding, a compelling reason to work on it.

The second reason is the probable computational complexity of tafl games. Though the rules are simpler than those of chess, it’s my suspicion that, in terms of raw possible games and average branching factor, tafl is a harder game to model than chess. Consider: concretely, taflmen move as freely as the second tier of chess pieces (the rooks and bishops), and the tafl board is bigger (attested variants range from 7×7 to 17×17 or 19×19, depending on your interpretation of the rules). Qualitatively, it feels to me like tafl is a busier game: the capture rules mean that it’s more difficult to make captures while keeping strong positions, and the escape/surround duality in objectives means that material advantage is, to a certain point, less important. Pinning a piece in place so that a piece behind it can’t deliver an attack is fundamental to chess tactics, but two taflmen in the same vicinity build upon each other, and their interchangeability means that sacrificing one taflman so that another can move into a better position requires much less care than chess tactics do.

I suppose, speaking in the most general terms, chess between evenly-matched players is a game of materiel before a game of position: gains in material advantage are easily parlayed into gains in positional advantage, because it’s easier to fix an opponent’s powerful pieces in place relative to tafl. Tafl between evenly-matched players is a game of position before materiel. It isn’t uncommon to see high-level tafl players decline to take ‘freebie captures’—when the opponent places a piece into a position where it can be captured without retaliation—because a small material gain is not worth losing a turn in the race for position elsewhere on the board.

Anyway, that’s all I have for today. As I get OpenTafl more ready for a release, I intend to go into more specifics about its variations, its strategy, and my implementation of its more curious features and work toward a reasonable AI. I’ll see you then. (Or probably before then, when I tell you which things I’ve chosen for Parvusimperator’s unseemly gauntlet-throwing.)

Fishbreath Plays: Starsector, Part II

I talked some about logistics in my last post about Starsector. Now, I’d like to touch on what I think is its best feature: its combat engine.

This video depicts a quick 1v2 battle I set up in the game’s combat simulator. HSS Daring, my cruiser from my previous Starsector post, faces off against a Venture-type cruiser and a Buffalo destroyer.

Have a watch, preferably on Youtube proper in high definition, and feast your eyes and ears upon the visuals and sounds. It’s in the running for the best-looking two-dimensional game of all time, I would say.

Okay. There is one major, overriding concern in Starsector combat, and that is ‘flux’. Flux is the generic resource which runs just about everything. Firing weapons takes it, and crucially, having your shields up and taking damage to your shields increases flux. You can choose to vent flux, which shuts down your shields and weapon systems, but quickly drains your flux. If you wait too long and your flux bar overflows, your ship overloads. (It happens to the enemy cruiser toward the end of the video above.) When overloading, it drains flux more slowly than normal, and much more slowly than venting, while sitll rendering you vulnerable and helpless to respond. Once you get through the shields, there’s armor (represented by yellow damage numbers in the video) and hull (orange ones).

Besides some caveats about beam weapons impacts and weapons fire generating ‘soft flux’, which goes away when the shields are up, and other weapons impacts generating ‘hard flux’, which only drops when the shields are down, that’s all there is to it, and it’s a brilliant piece of game design. It solves a few problems all at once. First, it allows for very easy tuning of relative ship performance. High-tech destroyer underperforming? Give it a better shield damage-to-flux ratio. Old-fashioned heavy cruiser too easy to pack with high-cost modern weapons? Give it a lower flux dissipation rate, and it’ll be able to unload a few powerful volleys to start a fight, but will have to fall back to recover afterward. Battleship failing to absorb damage like it should? Give it more flux capacity.

Beyond that, it also forces the player to think about a ship’s weaknesses in fitting, and to think on his feet when the fight is on. Absorbing damage from a lot of enemies requires most of an ordinary ship’s flux capacity, and captains have to be able to choose their moments well to put an enemy ship out of commission in such circumstances as that.

Anyway, I have one more video for you, which shows the command system and a much larger battle. In the main, ships are autonomous vessels controlled by NPC captains. (Eventually, this will be even more true: NPC captains will be characters, requiring pay, who have personality traits. Worried about your fancy carrier getting too close to the fighting? Put a captain with a lot of caution in command. Want your attack cruiser to get stuck in more? Look for an aggressive guy.) You put orders markers down on the map, and the number of orders you can give per battle is limited. (Spend a command point, and you can give orders for free as long as the command interface is open.) You have to decide which tasks are important enough to request your subordinates carry out specifically, and rely on them not to get in too deep on their own. So far, I’ve found this system to be more than sufficient. Again, it pushes the player into tradeoffs—is it more important to me to have a frigate protect my flagship against incoming fighters, or to have a frigate run down an enemy freighter at the far end of the field of battle? It also frees the player to get on with the business of actually fighting. There’s no benefit, and indeed there is active harm in, attempting to micromanage, so you’re best off setting up your orders, charging into the fray yourself, and checking on the state of things every now and then.

Fishbreath Plays: Starsector, Part I

Starsector, once known as Starfarer, is a 2D top-down space combat sandbox game.

After a trading-based start to the game, I’ve traded in my freighters and moved up in the world, with a moderately large carrier, some destroyers, and a cruiser, and I’ve found that there is money to be made in pirate hunting, so long as you hunt the right kind of pirate. Let’s take a quick look at my fleet, and at some of the things I have to consider before and between combat.

HSS Daring is my new cruiser, purchased and fit with help from the Hegemony military. (I’ve been doing a lot of my trading and pirate hunting in Hegemony territory, which improves my standing with them. Eventually, factions that like you open up their internal markets to you.) It’s the core of the fleet now—surivable enough to shrug off multiple smaller ships, punchy enough to plaster other things its size. ISS Bounty II is my carrier, with a pair of flight decks. I think it’s actually the fastest non-fighter ship I can deploy. HSS Aquilo II and HSS Juturna III are my destroyers. Aquilo is fit to hunt bigger ships: it has a large-size hardpoint for a forward-firing energy weapon and two smaller hardpoints flanking, along with some missile racks. Juturna is primarily made to get in close, overload a frigate or destroyer’s shields, and tear it up before it can recover. ISS Helle was my starting ship, an exceedingly tough combat freighter frigate. It didn’t have shields until recently, but now it does.

The major limiter on using ships in combat is combat readiness, which represents how well-maintained a vessel is. It doesn’t play a role on the overworld map, the assumption being that simple travel doesn’t put too much stress on the duct tape and bailing wire school of starship engineering, but if you get into combat, low combat readiness will see your ships performing poorly or outright falling apart. You lose combat readiness by deploying ships in combat, and also by taking hull damage (or by supply and logistical failings, but that’s another story), and you get it back by an expenditure of supplies. The major expense in keeping a combat fleet active is spending on supplies to restore combat readiness, and so the question for a bounty-chasing mercenary such as myself ends up being, how little can I deploy without losing?

For the moment, the answer almost always includes Bounty II. It’s fast enough to catch most destroyers. So are the fighters, which usually make an appearance too. (Fighters without a carrier on the field are one and done. With a carrier in combat, they can dip into a replacement pool. With no carrier in the fleet, either in the combat or in reserve, if a fighter wing runs out of ships, it’s gone for good.) Next up are Juturna and Helle, if I need more punch. Daring comes next, as it’s not significantly more expensive than Aquilo to deploy, and vastly more capable, and Aquilo comes in last. (Although I usually bump Daring up in the order, because it’s just so much fun to fly.) For when I need it, I have a light carrier and fighter wing mothballed, and they add a good bit of missile-based punch to the fleet.

It’s proven to be a really neat logistical challenge—how long can I stay out and fight, how much can I commit to this combat when I’m far from a supply source, should I buy that freighter with a flight deck to add to my far-from-supply longevity and provide a cheap launch platform for small engagements (that one’s a yes)? Updates come infrequently, but so far, Starsector has never seen a change that isn’t well-thought out and engaging, and I haven’t even begun to gush about how trading is an improvement on the genre norm. I was a little leery about recommending it to people on the fence before, but nowadays, there’s a sandbox game there, and it’s probably worth the $15 as it is now, to say nothing of how it’s going to end up.

As you make your Fishbed, so you must fly in it

Last Wednesday, Leatherneck Simulations released the MiG-21bis Fishbed-N module for DCS, and I’ve been getting to grips with it since then. Here are my impressions so far on the aircraft and simulation. It’ll take a while before I’m comfortable enough with the plane to talk about the campaign or the included single missions.

The MiG-21 was designed as a high-speed, high-altitude interceptor, and its shape reflects that: teensy delta wings highly swept. Overall, it’s quite a slight machine: its maximum takeoff weight is a mere 10,400 kilograms, next to the 17,500 kilograms or so of the Su-25T (also described on this blog.

Takeoff calls for full afterburner: with a rotation speed of 350 kilometers per hour, the MiG needs the extra kick in the pants to get off the ground in good order, especially with a reasonable load. Handling in flight is benign at high speed, and a little wallowy if you get below 450 kilometers per hour or so. That said, the MiG retains good controls authority down to the lowest speeds at which it can fly, and up to angles of attack where most planes would be complaining, or bumping you into angle of attack limiters. It’s even possible to do something like the famed Cobra maneuver a la the Flanker, although not quite as crazy off-axis.

It shines brightest in the linear and vertical axes. Drag is low, and acceleration at afterburner is exceptional. Below 4,000 meters altitude, you have access to a second afterburner mode, which increases the kick in the pants factor still further. It’s not much of an exaggeration to say that 0-300 kilometers per hour on the runway takes more time than 1000-1300 kilometers per hour at 2,000 meters. Climb is similarly rocket-like, especially while the second afterburner is available. Even with a full combat load, it’s only a hair away from a 1:1 thrust-weight ratio.

The front office is very 1960s, as is the design (it entered service in 1971). Steam gauges and switches are the order of the day. It comes from the era before pilot workload was a major concern, so switches you’ll need are positioned helter-skelter around the cockpit, although some of the most important functions do show some grouping. For instance, the weapons control panel, at the top left of the front panel, has all of what you’ll need to select and ready weapons.

Speaking of which, the MiG-21 is DCS’s first full-fidelity multirole fast mover, and I only feel a little bad about how much I’m stretching the definition of multirole. Your weapons include a variety of obsolete air to air missiles, from the RS-2US beam-rider to the R-55 let-us-take-RS-2US-and-add-semi-active-seeker-da upgrade to the R-3/R-13/K-13/AA-2 family of IR and SARH missiles. Also available are the R-60 and R-60M, the latter being more nearly obsolescent than straight-up obsolete. The air-to-ground loadout options include a mix of similarly obsolescent things, like 57mm rocket pods (abandoned in general use in Afghanistan, because they were insufficiently effective) and the Kh-11 Grom radar-beam-riding missile (highly effective), and the timeless FAB series of general-purpose free-fall bombs. There are also some esoteric options like the rocket-assisted runway-penetrating BetAB-500Sh. All told, it’s a curious kit, capable at short range in air to air combat, and limited in its maneuverability in that realm, and more than sufficient for oppress-the-rebels-style strike sorties, examples of which in the real Middle East have recently featured the MiG.

Aiding you in finding targets, aiming those weapons, and firing them, is the avionics suite, which really isn’t significantly more complicated than, say, the Huey’s setup. Certainly, it’s less to get to grips with than the Ka-50, and a whole lot less to get to grips with than the Warthog. The kit comprises four systems: the radar, the optical sight, the radio navigation system, and the autopilot.

The radar is simple to use, but no more capable than you’d expect: it’s useful only in the near BVR arena, and to cue radar homing missiles. It has no dogfight modes, and a detection range of maybe 30 kilometers on a good day, if you can tease contacts out of the clutter. (Clutter is modeled for the first time, and is pretty nifty. And annoying.)

The optical sight includes the actual sight unit and the weapons control panel next to it. The former is simple to set up, providing gyro-based aiming for the gun and air-to-ground rockets, and indicating what an IR-homing missile is tracking. (For radar seekers, you’re on your own.) The weapons control panel is effectively an analog stores management system: you pick the pylon with a big honking knob, the master mode (either air to air or air to ground) with a switch, and the weapons paramenters with a variety of other switcher.

The radio navigation system is surprisingly useful1. The ARK is a standard radio compass, capable of tuning the NDBs scattered around the Georgia map and providing bearings to them. RSBN stations, the other kind of beacon the MiG can tune, function like VOR/DME, providing cues to fly to or from a station along a certain radial course, and distance to the station, with a range of about 200 kilometers. The MiG can provide steering cues to intercept and fly along a radial, or, while flying along a radial, descent cues to reach pattern altitude within 20 kilometers of the station2. The third position on the RSBN mode switch is landing, which utilizes the PRMG instrument landing system3. It’s a pretty standard ILS. The NPP (read: horizontal situation indicator, read: radio compass thingy) has some tick marks on its inner dial which provide steering points to construct a standard landing pattern, which I thought a very handy feature. Stay tuned: after I mention the autopilot real quick, I’m coming back to landing.

The autopilot (really, the flight control system; the Russian acronym is SAU) has a few handy features: a straight-and-level mode, a ‘stabilized’ mode that tries to maintain your current bank and pitch4, and a pair of landing modes. One flies you in automatically, one provides you flight director cues, like you’d get on a more modern aircraft automatically, and neither seem to be working right now.

Which brings me to perhaps the most exciting phase of flight: the landing. It’s been a while since I’ve flown a simulated fixed-wing aircraft as complicated to land as the MiG. With those tiny delta wings, it requires an insane turn of speed: 350 kilometers per hour, or almost 200 knots, over the runway threshold. To compound that, it features blown flaps: engine bleed air is vented along the wings to provide more lift at low speeds and high angles of attack, as you find on landing. Most planes don’t mind an idle-throttle touchdown; with the MiG, I find myself flying into the flare and very slowly reducing the throttle to avoid dropping it on the runway like a streamlined brick. Fortunately, the brakes are good and a drag parachute is mounted in the tail, so stopping after touching down halfway down the runway doesn’t often present much of an issue. (Unless you shoot a second approach and forget to have the parachute repacked in between, in which case you’re going off the far end of the runway.)

That’s about all I have right now. I’d like to write about, or potentially stream, some of the campaign at a later date, but there are a few things stopping me—general just-past-release issues. Game performance is pretty horrid right now. The MiG’s developers are working hard on optimizations. A few avionics bugs slipped through the pre-release net, and are also being worked on. That said, the MiG was a definite buy for me, an icon from an exciting era past, and given Leatherneck Simulations’ progress on cleaning it up so far, I think it’s more than worth the cost of entry.

1. Quoth me, to skypirates collaborator parvusimperator: “I guess when you have such a short range, ‘divert to alternate’ is not an okay response to bad weather.”
2. In DCS, all of the RSBN stations are at airfields.
3. I’d been so disciplined with footnotes until just now. Anyway, the PRMG system is a lot like the western ILS, except it provides guidance both ways on a runway and fits in a single truck, which is a rare case where the Russians seem to do something better than we do.
4. Or something. I haven’t quite figured it out.

Fishbreath Plays: StarMade

I’ve been thinking about new sorts of content for the Fish Bowl, and hit upon this idea. I like games, you see, and I like writing—so maybe I should try writing about games? There’s no better place to start, I would say, than the game which has been consuming all of my time: StarMade, the block building game with spaceships.

I saw someone else say that ‘Minecraft with spaceships’ was too reductive, but it’s not inaccurate. StarMade is still in alpha, and the meat of the game right now is in the building. That part plays very much like Minecraft with extra spice: put blocks down to make ships, but some blocks have extra functionality. Power generator blocks make power, thruster blocks make you move, weapon blocks give you guns with which to blow stuff up. Putting blocks in contiguous groups makes them more effective than they’d be separately, so there are advantages to building, say, reactor rooms and engineering spaces. That leads to a natural progression from small ship to large ship in power and cost. It scratches the naval engineer itch I’ve always had—I find myself planning out a ship’s hull shape and interior spaces first, and the internals and hull from that plan in a way that isn’t entirely dissimilar to how ships are actually built.

Beyond building, the gameplay’s still being fleshed out. Crafting is more or less useless; the recipes are completely random, and you might find yourself with a block you can buy cheaply from the various space stations requiring a half-dozen of the most expensive components in the game, or you might have a 300,000-credit block recipe requiring two units of sand. The idea behind crafting is nifty, though. Factory blocks take a recipe and materials and turn them into outputs, and they can be linked together: some factory blocks could make intermediate materials from raw stuff, then be linked to a final production factory to produce usable blocks. Putting factory upgrade blocks next to factories makes them faster and more efficient. The potential for a really neat system is there, but it needs some refining to make the possible inputs to a recipe similar to the value of the outputs.

The flying and combat work reasonably well already. Flying I’d call semi-realistic; there’s drag and a speed limit, but you don’t change directions when you turn. I understand prettier competitor Space Engineers has more physics (you need reverse thrusters, for instance, and gravity is supposed to work like gravity), but StarMade gets by with what it has. Weapon construction has some interesting tradeoffs—while missiles are straight-up better the bigger they are, smaller blocks of guns do more damage over time, but at shorter ranges with slower projectile speeds. You can put AI-controlled turrets onto bigger ships, and although those could use some further development in terms of manual target selection and the like, capital ships with batteries of defensive guns and such are plenty exciting already. I find the death of ships compelling, too: weapons taking chunks out of the armor and the internal spaces, and capabilities slowly decreasing as the ship loses power, weapon, and engine blocks.

All told, it’s a delightful build-spaceships Lego set, and the AI-controlled pirates (which can use your designs if you allow it) and space stations provide some opportunities to try out your designs. Multiplayer seems solid so far, and there’s a lot of fun to be had in collaborative building and comparing designs (and eventually blowing them up). Even as an alpha, I give it a thumbs-up. I look forward to seeing how it develops as it gets closer to finished.

Insert clever Fishbreath/Warthog pun here

As the most dedicated Russophile among my flight-simming friends, I strapped myself into the cockpit of my early-birthday-present A-10C intending to make like good Soviet propagandist and put it down for every trivial flaw I could find in otherwise-perfect product of decadent capitalism. My final opinion turned out to be a little more measured. The Charlie Warthog is, in a lot of ways, a fine aircraft, and perhaps even the Su-25T’s superior (I would say the jury is still out), but it’s not quite the world-beater I thought it might be.

I’ll start with how it flies. The one-word description is ‘docile’; the two-word description is ‘very docile’. Those big, straight wings yield excellent handling at low speeds, a great roll rate, and all-around pleasant performance. The two podded turbofans strapped to the fuselage in back are high-bypass, which is to say they’re the same sort as the engines on most airliners: the jet exhaust contributes less than the volume of air moved by the fan at the front. It doesn’t make for a fast airplane, and indeed a loaded Warthog struggles to reach the sorts of speeds I consider ‘slow’ in the Su-25, but in any aircraft without an air-to-ground radar, sloth is a virtue (which explains my thing for helicopters). I count this one as even. The Su-25 has better thrust-to-weight and better ability to escape danger, but the A-10 can loiter just about forever and is an easier weapons platform.

Since all fixed-wing planes are basically the same, I got on top of the flying thing in just about no time flat. The two remaining pillars of the Warthog (the systems and the weapons) I learned at about the same time, but I’m going to hit weapons first. The biggest drawback compared to other the other DCS platforms of my acquaintance is the inexcusable lack of dedicated anti-tank missiles. The Su-25T can carry sixteen, plus another six laser-guided missiles, and that’s a lot of semi-standoff capability. On the other hand, the A-10’s gun is worthy of all the praise it garners. It’s effective against every target up to and including the vaunted M1 Abrams, provided you attack from the right aspect, and it makes a lovely, lovely sound.

The guided bomb options (fitted with the GPS-guided JDAM kits and the laser-guided Paveway kits) are good, and can be mounted on most of the hardpoints, but the Maverick only works on two of them, and the Su-25T’s Kh-25 (the Maverickski) is roughly equivalent. The Warthog’s rocket options are typically American, which is to say horrid; the Russians, with their long experience in Afghanistan, have a much better selection (from tiny little 57mm peashooters to 340mm monsters). The Su-25 has better light and medium weapons, and the A-10 has better heavy stuff; in my book, that goes to the Su-25.

Finally, we come to avionics, that traditional locus of American superiority, and the A-10C doesn’t disappoint. The dash holds two color multifunction displays, which control the armaments and targeting, and can display a moving map, and it’s all brilliant. The A-10’s targeting pod (the LITENING, a hardpoint-mounted jobber), through gyroscopes, gimbals, and voodoo magic (I repeat myself), plus a healthy dose of positional awareness, can track a point on the ground even if the wing or the airplane is blocking it, through a complete turn. It features an absurd amount of zoom, plus an IR camera and a standard CCD, and really, it’s hard to say anything bad about it.

It also feeds into the Sensor Point of Interest concept: with any sensor, from the targeting pod to the navigation display to a Maverick seeker to the little visual designation cursor on the HUD, you can declare a Sensor Point of Interest. It sticks around, and you can slew all of your sensors to it at any time. It’s a very, very handy bit of systems integration, and makes re-locating targets on subsequent attack passes a lot easier than they are in the Su-25.

Still, as good as it is, the designers missed two tricks. For one: by Russian standards, the A-10C’s autopilot is archaic. The Su-25T and the Ka-50 both have modes galore, up to and including ones which will follow the mission route or line up on a target, and the A-10 has… one mode which orbits, and one mode which flies straight and level. An orbit mode being the bare minimum for a single-seat attack aircraft, the A-10’s omission of anything fancier is a significant strike against it, given how much head-down work it expects you to be doing. The second one, I wouldn’t have thought of had it not been for the Su-25T: an infrared jammer in the tail. It makes a great deal of sense. Attack planes hang around at low level, where any mujahid with an SA-7 can take a pop at them, and having a bit of kit which makes rear-aspect attacks difficult is a gigantic win.

In the end, the Warthog is what I expected it to be: a solid ground-attack platform with a gun that’s unmatched in its effectiveness. At the same time, it isn’t quite what I expected. It’s only just entering service now, and being such a modern piece of kit, I have to wonder: why did the Air Force settle for very good, when perfect was so nearly within their grasp?

Breath of Fish, Foot of Frog: A Su-25T Mission Log

I, with a metrical title, recount my thoughts on recent Su-25T shenanigans, including the two failed attempts before the one that made parvusimperator’s final report. -Fish

I’ve already written my initial impressions of the Su-25T, so I can skip that part and go straight to the SEAD mission.

As we were getting our armaments in order, kicking the tires, and lighting the fires, I suggested, “Why don’t we try a synchronized takeoff?”

Parvusimperator raised several legitimate objections: “Because I only started flying this aircraft an hour or two ago? Because it wanders all over the runway? Because we’ll crash into each other and die?”

“Pessimist,” I said. We lined up on the runway in rough formation, him as the leader ahead and to my left. We held the brakes in, ran up the engines, and released the brakes as we started rolling… and somehow, most of the way down the runway, I passed him. As little sense as that made, it wasn’t hard to get back in formation—I just slowed down and let him pass me. We turned toward the target, three SAM batteries 100 kilometers southeast of our airfield. Two of them were medium-range area defense systems: one 9K37 Buk and one Improved Hawk. One 9K33 Osa provided short-range support. Soon after we left the field, we were already getting painted by the I-Hawk’s search radar. The radar warning receiver made a little ‘boop’ every now and then as the beam hit us. Range to target, according to our instruments, was about 90 kilometers when we started getting the radar signal, and parvusimperator’s anti-radiation missiles had a range of about 50 kilometers. We drove in to that range at about 500 meters above ground level, whereupon parvusimperator lofted the first missile at the I-Hawk’s search radar. By that time, the Buk had found us, and we turned in that direction. After parvusimperator launched his missile, the annoying solid tone my radar warning receiver was blaring into my ears turned into an annoying fast beeping.

“I’ve been launched on. Going defensive,” I said, feeling very professional as I rolled out of formation, left a cloud of chaff in my wake, and dove for the deck. Looking out the right side of my cockpit, I could actually see the missile’s smoke trail off in the distance, headed in my direction. Fortunately, my dive to the deck and my turn to put the missile on my three-o’clock ran it out of energy before it could hit me. Parvusimperator, who had been watching his missile in, was less lucky: although he had fired on the Buk battery before the missiles launched, the battery’s search radar had cued the launcher’s fire control radar onto us, letting it launch its missiles and guide them to us even after parvusimperator’s missile knocked out the search radar. He took a hit and punched out, and we restarted. Our second try didn’t go much better—owing to a DCS bug, the anti-radiation missiles blew up moments after leaving their hardpoints.

On the third try, we finally found a little more success: parvusimperator launched from nearly maximum range on both of the long-range SAMs, and tagged the short-range one with one of his other SEAD missiles. Lacking his fancy ELINT pod (which gives him HUD cues toward radars, and therefore targets), I had to resort to more desperate measures: first, my FLIR targeting pod, which proved unhelpful, and finally my good old Mark I eyeball. I found the smoking husk of the Osa, dropping a cluster bomb on it for good measure, and headed north from there, following the threat heading indicator on my radar warning receiver and eventually finding the Hawk battery just as parvusimperator did. I made one pass with rockets and destroyed the launcher, and was looping around for another when parvusimperator tagged the last vehicle with a laser-guided missile. That done, we climbed to our rendezvous point, formed up again, and went home.

Protivtankovy Parvusimperator

The DCS Su-25T Frogfoot is the only attack aircraft in my simulated stable right now. In the interests of cooperation, parvusimperator learned to fly it a few nights ago, and has recounted his experience with it here for your edification. -Fish

As resident NATO-trained attack pilot, I took to the Su-25T without too much trouble. It certainly helped that this sim uses somewhat simplified modeling, so startup was a breeze. I can’t help but feel that the A-10C and the Su-25T are designed for very different missions. The A-10C has JDAMS and LGBs, some of which are quite large (2,000 lb. class). It also has Mavericks, which are a nice blend of fire-and-forget-ness and range. On the other hand, the Su-25T carries Vikhr ATGMs, and why the A-10C can’t equip Hellfires is beyond me. It would really improve tankbusting capability. Alas, the Su-25T only carries 16 Vikhrs, which some Soviet pencil-pusher probably figured was enough. However, the A-10C at least has some weapons that can do the same job as the Vikhrs. As for Vikhr employment, they’re very fast, but you have to maintain the target lock until impact, just like a Sparrow. The speed makes up for any inconvenience.

The bigger oversight in the A-10 is the inability to carry ARMs. The Su-25T can carry an ELINT pod to help you find SAM radars and Kh-58 and Kh-25MPU antiradiation missiles to kill them. With the A-10C, you have to rely on the Maverick, which basically means you can only kill Osa and Strela-1 SAMs with any degree of safety. Strela-10s can be engaged with care.

The A-10C’s avionics really put it ahead of the Su-25T. The MFDs, Digital stores management, moving map capability, and, most especially, Litening Targeting Pod capability dramatically improve flyability. The Litening pod’s electro-optical sensors are stabilized, so airframe buffeting doesn’t show up in your display. It will also remember where it was pointing provided you don’t exceed it’s G-limits, which is next to impossible in the A-10C. So the pod will helpfully remain pointed at the bit of dirt, Soviet armored vehicle or terrorist’s left nostril that you were looking at before you decided to turn to bring weapons to bear or evade ground fire. This also lets the experienced Hog-driver orbit either around the target area or next to the target area while he searches. The one advantage of the Shkval and/or Khod on the Su-25T is that since it is forward-aspect only, you always see an indication of where it’s searching in your HUD, making searching with visual references in front of you much easier for the novice pilot.
The Digital Stores Management System (DSMS, pronounced diz-miz) is super convenient, and analog systems don’t even come close. DSMS lets you select which pylon you want to launch stores from (helpful for balance), tells you how many rockets you have remaining, and lets you set fusing options and targeting modes (e.g. CCIP/CCRP). The A-10C’s presentation of CCIP and CCRP are better, as they help you fly onto the correct path to hit your target.

As mentioned before, the Su-25T handles better than the A-10C full stop. It’s faster and more agile. Ground handling is a bit tricky, and that is the one handling vice of the type. The Su-25T is also not well equipped for loitering, using thirsty turbojet engines.

I will also add that the Su-25T’s weapons encourages close flying, so I got to test how well the Rook could withstand 12.7mm BMG rounds the hard way. Several passes over M1 Abrams tanks had resulted in my plane being positively riddled, causing Flight Instructor Fishbreath to recommend that I return to base twice. I did no such thing and pressed my attack until I was happy I killed enough tanks. Afterwards, damage assessment from my instructor indicated that my plane was riddled with holes and it was missing several panels. However, handling wasn’t very impaired, which impressed me (and was the reason I had kept attacking, since it seemed like nothing important was damaged). Airbrakes deployed fine on my final approach. Given damage to my wings and flaps, my instructor suggested not using flaps to avoid a spin if only one of them deployed. At approach altitude, I agreed. Passing the outer marker, I put my gear down. But main gear did not budge. I opted for a belly landing, and continued with the approach. As my plane jolted to the ground, I deployed my parachute, but it didn’t seem to do anything. Eventually I skidded to a stop and shut down my engines. Now I could take a look at the external view, which showed that the part of the tail holding the braking chute was completely shot away. But despite all of the damage and missing bits, the Rook brought me home alive, and earns that special place in my heart, along with other ugly-but-tough planes like the Hog and the Wildcat.

With the newfound SEAD ability, Fishbreath and my now-proficient self decided we would go SAM-killin’. I took the ELINT pod and ARMs to kill SAM radars, and he took rockets and cluster bombs to kill TELs and command vehicles. We took off simultaneously, and then held formation like pros into the target until we started getting lit up by search radars. Our targets were an MIM-23 Hawk battery, an 9K37 Buk (SA-11 Gadfly) battery and an 9K33 Osa (SA-8 Gecko) battery. My plan was to hit the Hawk and the Buk with long-range Kh-58s, and then nail the Osa with a Kh-25MPU. Fishbreath would then destroy remaining launchers and command vehicles with cluster bombs and rockets. Closest to our ingress route was the Hawk battery, and it is very unnerving to hear that it has locked onto you while you wait for the battery to come within range of your missiles.

Accompanied by the Bomb Run theme from Dr. Strangelove, I shoved my throttles to the stops and bore in on the Hawk battery at full power. I launched one Kh-58 at it, and then turned to engage the Buk. By now I was much closer to the Buk, so I was able to launch shortly after acquiring it. I then promptly turned away hard to stay out of range of the missiles and avoid reprisals. Once I noted that the missiles had hit their targets, I engaged the Osa battery with a Kh-25MPU. After impact, I thought my threat display ought to be clear, and at first it was.

After only the briefest of moments, it became clear that there were still active radars. I detected radars from the Buk and the Hawk still active. I thought that we probably only had search radars left, but I decided to silence the infernal beeping of the RWR just the same. I rolled in on the Buk, locked it up, and fired my other Kh-25MPU. Bozhe moi! It blew up just in front of my nose! Clearly capitalist spies had gotten to our missile stocks. Also, I was out of ARMs. I would have to use other missiles. And, unfortunately, I couldn’t directly cue these with the ELINT pod. So I got my flightpath so that the radar icon was near an attitude marking on my HUD, then switched to air-to-ground mode and engaged the Buk search radar with a Kh-25ML. That target down, I decided to finish off the Hawk sensors. After a few tries, the same technique worked like a charm. Fishbreath finished off the battery with some rockets, guided in by smoke from the burning radars.

Landing the Su-25T with its parachute was quite fun. The return from this flight was my first proper landing in a fully functional plane and ILS cues made it a breeze.