Tag Archives: skypirates

Skypirates! Development Log #2: RPG Layer

At the very bottom, Skypirates!1 is an RPG. World entities like characters and airplanes have rollable attributes, and those determine how they interact. Those interactions are out of scope today, though. We’re going to cover how the RPG layer works at its very core: the dice, or at least the simulated dice.

If you’ve been around a very long time, or spent a long time trawling the archives, you might have come across a set of rules for building zeppelins in Savage Worlds. This was the jumping-off point. Skypirates designs past used a step dice system Savage Worlds players would have found very familiar. Start at d2, and skills/vehicle characteristics go up to d12 by die size, then to d12+d2 and d12+d4.

That last clause indicates the problem: step dice have poor resolution. For a moment-in-time, quick-playing tabletop RPG, it’s sufficient. For a PC game where I expect the timeline to run from about 1922 to 1937, it doesn’t leave a lot of room for multiple generations of airplane, in a period of time wherein aviation technology would advance even more quickly than in reality owing to greater conflict between the major powers. It leaves even less room for variation in individual airframes2. So, regrettably, step dice had to go, simple as they are to reason about.

In abandoning physical dice as the underlying abstraction, I found myself wondering, “Why not a 1-100 system?” A number between 1 and 100 represents each skill or characteristic. To roll it, generate a random number between 1 and the skill value. Highest number wins. Hard to do with physical dice, trivial with computers.

It doesn’t quite capture everything, though, so I brought in an idea familiar to players of D&D Modern: advantage. Roll two dice, take the better result. But, I don’t plan on using it primarily for rolling character skills with a bonus. Instead, in a form I’m calling ‘capped advantage’, it’s a way to combine pilot skill with airplane characteristics.

Say a plane has Agility 50 and its pilot has Flying 70. I take that to mean that the pilot knows where the edge is, and can use every bit of the plane’s agility. So, behind the scenes, we roll Flying with capped advantage Agility: roll both skills, and take the better of the two, up to a cap of the best Agility result. If the rolls are Agility 37 and Flying 64, the pilot has hit the cap, and the final result is 503.

I’ll go into the representation of planes and characters at some later date, but I wanted to make sure we got through the week with some content here, even if it’s not the allegedly-weekly news update.


  1. While the exclamation mark is part of my official branding plan, I am likely to omit it in the running text for reasons of forgetfulness. 
  2. The Secret Horsepower Race relates a story of six production Spitfires, which varied in tested top speed from 330 mph to 360 mph. 
  3. I plan on doing something similar with aerial gunnery: roll the gun’s accuracy with capped advantage the pilot’s Gunnery skill. For simulation-fun reasons, lighter guns are more inherently accurate, but that doesn’t mean a pilot can shoot better than his overall skill just because the gun helps. 

Skypirates! Development Log #1: Introduction

You may remember Random Carrier Battles, if you’ve been here for long enough. That project is now abandoned, because modern alternatives like Task Force Admiral exist, and although they lack the Random element, they hit the Carrier Battles part of the project with more verisimilitude and much prettier graphics.

But the germ of the idea stuck around, and a better, easier 2d engine in the shape of Flutter presented itself. The idea (small-scale strategy-game air combat in the Pacific) got me thinking: what other settings would fit this kind of design?

The Pitch

Enter Skypirates! (Exclamation mark included.) Skypirates! is a game of air piracy, zeppelin aircraft carrier combat, and high adventure in the South Seas. My current, very preliminary design document covers three main gameplay layers.

menu

Air Combat

Send your zeppelin’s air wing into combat against all challengers: other planes and airships, surface targets, ships at sea, and more. From your radio room, direct squadrons of your own construction, staffed with pilots and officers whose personalities and particular abilities affect the way dogfights play out.

Airship and Crew Management

Design a zeppelin, or choose from premade options, with which to tackle the unfriendly skies of the Far East. Pick and choose aircraft to fill its hangars, and crew to fill its cabins.

Careful weighting of the options will pay off! Pilots with certain temperaments and skills match certain planes better than others.

High Adventure

Daring deeds and thrilling exploits are just around the corner in every port of call. Choose your own path through branching stories of treacherous pirates, ancient civilizations, and treasures thought lost to the mists of time.

map

Progress

These are the very early days, so it’s time for some generalities!

Technologies

“Flutter?” I hear the technologically-inclined in the audience asking. “The mobile app framework?”

It is an unusual choice, but not an unreasonable one, from where I stand.

Reason one: I’m familiar with Flutter right now, thanks to work. It’s simple and expressive, easy to extend, and ludicrously cross-platform. (I don’t intend to support anything beyond desktop, though.) It being a UI-centric toolkit, it makes the hard part (pretty UI) easy.

Reason two: Dart has gone from a pretty good language to a great one, with the addition of null safety. It’s concise without being unreadable, I like having named parameters, and it doesn’t go overboard on the punctuation.

Reason three: it’s less opinionated than most game engines about how world and data ought to be structured. This isn’t an attack on traditional game data modeling practice, merely a note that I find it easier to reason about when there’s a world state on one hand, and a rendering engine on the other, and they only talk in strictly limited ways.

Design: Scope and Scale

The world map image above is a lot of the map, but not the whole thing: it runs from about the top of Honshu west to Afghanistan, and south to about the northern third of Australia.

In this alternate history, that region of the planet has all of the ingredients for a vigorous population of pirates: namely, a lot of territories belonging to a lot of different powers, most of whom are busy in their home theater(s) with more pressing threats, and all of whom want to obstruct their opponents’ progress in overseas holdings as much as possible. Nearly every player in Europe is represented somewhere on the map: Britain, France, the Dutch Republic (alternate history, remember), Germany, Italy, Portugal… There are American colonies too, in and around the Philippines, from all the several American nations, and local powers too.

Because I am lazy, I’m using Cartesian geometry instead of spherical geometry, so distances aren’t quite accurate. Eventually, that may change, if I decide to expand the scope of the world, but India, Southeast Asia, and some very near parts of Oceania seem like plenty of room to run to start with.

The world runs on one-minute time steps, and although positional accuracy is basically ‘as high as floating-point numbers allow’, I’m planning on an ‘interaction range’ of 5-10 miles, at which point other systems (dogfights, visiting a port or point of interest, etc.) come into play. Maybe. This part’s still up in the air.

The typical player faction is a single zeppelin, its crew, and its air wing, an independent with an eye toward privateering or outright piracy. The design likely admits some mild variations on the theme (employee of an aviation security company, a task force of two or three airships…), but those will come later if they come at all. As alluded to in the elevator pitch, crew will have relatively detailed character sheets, and crew characteristics and aircraft characteristics intersect somewhat. A pure virtuoso pilot might prefer a more agile machine, while a tactician might want something with better energy fighting. An instinctive gunner might do best with a few heavy guns, carefully choosing his shot. A more exuberant personality might prefer more ammo.

Characters under the player’s command get placed into three categories, to reduce skill management minutiae: the player’s avatar, over whose sheet the player has full control; officers, who the player can guide down certain paths; and ordinary crew, who level up and gain skills on their own, according to templates.

Design: Aircraft

All of which will be accounted for in aircraft design—although designing airframes is outside of the player’s scope. On the other hand, souping up an existing model, swapping its engine for a bigger one, or adding guns are within reason.

I have a lot more to say about aircraft, because getting the math down took a ton of effort, so I’ll save it for its own post.

Anyway, that’s a very brief introduction to a few parts of Skypirates! As I continue the creative process, I’ll have more to say.

Fishbreath Plays: SimplePlanes

I’m a fan of sandboxes.

Many of my favorite games are sandboxes, or have a sandbox element: StarMade is altogether a sandbox, Rule the Waves gives you plenty of latitude to build your own navy and your own history, Falcon 4 lets you play with someone else’s castle or kick it down as you please, and Command Ops, though less open than the rest of this list, still gives you the chance to do largely as you please inside whatever scenarios you can find or make.

So, when I saw that SimplePlanes, an aeronautics sandbox by Jundroo, who made one of my favorite physics puzzle games on Android, was now on Steam, I had to give it a whirl. We’ll get the bad out of the way first: it’s a port of a mobile game, and so the interface is not as powerful as, say, Kerbal Space Program’s (which is the natural comparison), and the parts list isn’t quite as lengthy as I’d like. That said, the flight modeling is excellent for a wee building game like this, and as with any building game, there are some superb examples out there. For another downside, there isn’t a lot to do; as far as I can tell, there isn’t a way to add new maps or new challenges, which is a shame. Either one would add a ton of longevity to the game. Finally, the combat bits could be expanded upon a little—damage is very binary right now, and hitting a plane with anything will usually pop it.

With that out of the way, let’s talk about the good. I’m going to do this by discussing some of the things I have built; namely, the aircraft carried by the zeppelin Inconstant, from Skypirates: the Kestrel, Falcon, Vulture, Albatross, and Gorcrow. All are based off of real-world designs. The Kestrel is a riff on the XP-55 Ascender, the Falcon is based on any number of (generally French) twin-boom pusher designs of the immediate prewar and postwar periods, the Vulture is a recreation of the Sh-Tandem, a Russian ground-attack design, the Albatross is a Blohm & Voss-inspired asymmetric design, and the Gorcrow is more or less every medium bomber between 1930 and 1945. (Note that I made a few modifications to fit my zeppelin-borne aircraft requirements and restrictions, which you’ll find at the end of this post.)

The Kestrel is one of my favorites, owing to its handling characteristics. The twin coaxial engines, with a total of 1,500 horsepower for only 6,000 pounds full load, push it to speeds in excess of 400 miles per hour. It fields an excellent anti-aircraft punch, and has superb maneuverability at high speeds. Its weakness comes mainly in its low-speed handling: its vertical stabilizers are small, to limit the drag they add, but this creates a prominent tendency to yaw instability at landing speed. As such, it’s a design that’s likely very prone to landing mishaps, and requires a steady hand on the stick and active feet on the pedals to put onto the skyhook. Though the design is unusual, it flies very well, responding smoothly with little adverse yaw or other undesirable handling characteristics. At the edges of its envelope, it can sometimes get the pilot into trouble; unrecoverable flat spins are a possibility.

In design, the Falcon is much more conservative: it treads on no unusual aeronautical ground. The twin-boom design provides some added damage resistance; losing the back of one boom isn’t immediately fatal. It’s powered by a 1,250-horsepower engine, about the largest single engine we can expect to find in the world of Skypirates, and has a maximum takeoff weight of about 9,000 pounds. (The version posted is overweight, and needs to be slimmed down.) With rather a lower power-to-weight ratio, it only reaches about 320 miles per hour, significantly slower than the Kestrel. Although its gun armament is less heavy than the Kestrel’s, it makes up for that loss in firepower by mounting several racks for air-to-air and air-to-ground rockets. Its flight characteristics befits its character: rugged and dependable, with very few surprises, although it does have a tendency to stall the lower wing in tight, low-speed turns.

The Vulture is probably the one whose looks most closely match its intended purpose. A light bomber and ground-attack plane, the Vulture is the usual aircraft of choice when Inconstant needs to make a show of force. Its unusual design gives it a great deal of lift for its footprint, and permit all of its hardpoints to be placed along the same axis as its center of mass: dropping weapons doesn’t change its balance at all, making it a forgiving platform when carrying large weapons. The centerline mount supports an aerial torpedo, but only when the plane is air-launched—aerial torpedoes are too long otherwise. (Note that Inconstant doesn’t carry Vultures equipped with landing gear.) To my surprise, the Vulture’s handling is docile in the extreme, even when fully loaded, and turns downright peppy when empty, even though it only sports a 1,000-horsepower engine. I ran into no surprises anywhere in the envelope.

The Gorcrow, powered by a pair of 700-horsepower engines, is a conventional medium bomber, with all that implies. Its handling is ponderous, but it can sling a heavy load of bombs or rockets, or three aerial torpedoes, making it Inconstant‘s heaviest hitter by far. Three gun positions, one at the back of each engine nacelle, and one atop the fuselage, round out its weapon fit. Again, an unsurprising performer—not spritely, and predictable in its handling. Unlike the other aircraft on the list so far, its bringback weight is somewhat less than its full fuel empty weight. Inconstant being fairly light on avgas stores, her Gorcrows are generally only launched when absolutely necessary, to avoid having to dump fuel overboard before landing. The in-universe version has a glazed nose, but I haven’t figured that out yet.

The Albatross, powered by two 800-horsepower engines, is a long-range transport aircraft, and also one of my favorites for its sheer unlikeliness. Although Herrs Blohm und Voss built similar aircraft for the Luftwaffe during the Second World War, I was a little concerned that the flight engine wouldn’t handle it well, given the presumably-complicated aerodynamics at play. To my surprise, it worked fine, and isn’t even particularly touchy. Anyway, the 1,600 combined horsepower pushes her to a good turn of speed when empty, nearly as fast as the Falcon, and pegs her total cargo capacity at just over four tons. The asymmetry does mean she has some slight balance concerns, but in-universe, it’s easily trimmable. Low-speed handling is good, thanks to the fat wings. Even with the asymmetric nature of the pitching and yawing forces, owing to the offset position of the empennage, it has surprising maneuverability when empty. Same remark about the glazed nose.

Now, I didn’t even get into the built-in challenges, or into serious modding. I was just messing around, and in the course of learning how to build airplanes, building these, and coming up with my flight reports, I got more than my $10 of fun. I also got at least $10 of storytelling value out of it: I now have quirks and flight characteristics in mind better for each of these planes than I did before, and I can work that into stories.

If you’re looking for a plane construction sandbox, look no further.

Fishbreath’s Zeppelin-Borne Aircraft Construction Rules for SimplePlanes

  1. Airframes should range between about 3 tons and 12.5 tons full load.
  2. Aircraft must be shorter than 70 feet and have a wingspan less than 110 feet.
  3. No single engine may develop more than 1250 horsepower.
  4. Aircraft must have a bringback-weight stall speed of 110mph or less. (The other 20-30mph to get down to zeppelin speed is assumed to come from flaps.)

Skypirates: lessons in zeppelin aircraft carrier design

When I worldbuild, I put great importance on doing the background work, even background work which doesn’t feature in the foreground very often. So it is with zeppelins in the Skypirates world. Not only do we design them in the same modes and manners as real rigid airships, we’ve discovered that, to our surprise, they’re not quite as implausible as we thought.

Which isn’t to say that they aren’t implausible. We’re making a couple of assumptions rooted in our alternate history that are, well, unlikely. First: we assume that the limit on the size of airships was not one of 1920s and 1930s materials science, but rather one of insufficient ambition. Second: we suppose that engine technology in about 1925, owing to a few more years of the First World War to incubate, has reached levels not seen until ten or fifteen years later1. Third: we assume that large airships are much cheaper than they were in actuality, and that they’re much more common. Fourth: we assume a couple of highly-specific technological advances with respect to gas handling.

If you’re unfamiliar with airships, that last one might seem oddly specific, but it turns out to be critical. There are exactly two practical lifting gases2: hydrogen and helium. You may remember from high school science that hydrogen makes a tremendous *thump* as it blows up in the presence of flame. This doesn’t necessarily rule it out for zeppelins-of-war, but it does push it firmly into the realm of the sub-optimal. That leaves us with helium.

Helium is a pain. Its most notable characteristic3 is its mad delight in escaping every container you try to put it in, including Earth’s atmosphere. Its second most notable characteristic is its relative rarity. Because of its eagerness in leaving the planet once it’s free, there’s very little of it in the air, and it’s difficult to get out of the air. In the timeframe in which the Skypirates stories takes place, the United States historically controlled most of the world’s helium supply4, and, for political reasons, the Germans were unable to buy any for the Hindenburg. (And we all know how that turned out.)

Now, we also had another problem, not all that closely related, but ultimately in the same vein: aircraft-carrying zeppelins are heavy, and anything you put inside a zeppelin’s hull doesn’t just count against your total lift, it reduces it5. I’m going to introduce a term here, and I’m sure it’ll make airship engineers tear their hair out, but here we are: reserve displacement.

If you have a fixed amount of gas inside of a stretchable container, then reduce the pressure outside the container, the container will expand, and the pressure inside will drop. Although less air mass is displaced per unit volume, the container’s volume grows, and the container still makes lift. This effect explains why high-altitude weather balloons look tiny when they take off, and then get huge when they reach high altitudes. High-altitude weather balloons have high amounts of reserve displacement.

Rigid airships aren’t designed with lot of reserve displacement. Their gas cells start out almost fully inflated, for a very simple reason: over the course of a flight, airships get a lot lighter. Your choices are either to vent your lifting gas when you’re nearly to your destination, or rely on complicated ballast recovery systems to capture water vapor from your engine exhaust. One puts you at the mercy of the ground facilities at your destination6, and the other only works in the absence of heavy flight operations. Launching and recovering lots of planes is the same thing as dropping and taking on tens or hundreds of tons of ballast over the course of a few hours, and reality has no way to mitigate that.

So, we’re presented with three little plausibility concerns that get in the way of storytelling: zeppelins don’t have much room for gas cell expansion, limiting them to a narrow band of altitudes; realistic methods for landing require a loss of lifting gas unlikely to be available at your friendly neighborhood jungle ruin filling station; and air operations break all normal procedures for trimming and ballasting. We invented two pieces of retro-scientific fictional technology to gloss over those plausibility issues, both products of fictional Imperial German zeppelin pioneer Karl von Rubenstein.

The von Rubenstein cell is a specially-treated fabric gas cell with a fantastically7 useful characteristic: it is helium-impermeable (don’t ask me to explain it; I just said it’s fiction). von Rubenstein cells can be used as trim tanks, in a sense—if you limit a cell’s expansion, you can pump helium into it, and plain air into the others. The air-helium mix generates less lift per unit displacement, and the trim cell is holding more helium, but isn’t displacing any more air, and the lift goes down.

The von Rubenstein pump is what lets us move helium around so easily. Passing a mix of gases through its machinery yields helium as one output, and everything else as another. The air-helium mix inside a gas cell can easily be separated back into nearly-pure helium, thus raising the trim altitude again, and even atmospheric helium can be extracted, albeit slowly.

Combining the two, we have a model for airship operations. The secret is that modern zeppelins in the Skypirates world aren’t built with a lot of ballast. They’re built for a ceiling, with helium capacity and reserve displacement for that ceiling. In their untouched configuration, that’s their ‘trim altitude’—where they’ll end up, absent other concerns. To descend, or to land, or to launch aircraft, the crew pumps extra helium into the trim cells, and the zep’s lifting capacity goes down.

Practically speaking, there are a few inescapable limitations. For one, a zeppelin’s initial trim altitude—its pressure height, as the technical term goes—is inversely related to its lifting capacity. To leave room in the gas cells for high-altitude expansion, the gas cells must not be filled at sea level, and doing so leaves buoyancy on the table. To some degree, trim cells mitigate this—the excess can be pumped in and held at pressure, and eventually the reduced amount of helium in the lift cells will balance out the zeppelin’s weight, or either trim or lift cells will explode8. Between that and limited ballast, though, we have the ability to let our zeppelins cruise at a broad range of altitudes, which was our aim in the first place.

Another of those inescapable limitations comes from structural strength and weight. It strikes me as unlikely that zeppelins of the bulk we’re talking about could be built as lightly as we say the are. Assuming I’m wrong, we’re within about 10-15% of actual, possible zeppelin designs, in an ideal world, with our fantasy technologies. If I’m right, the figure is more like 25% or 30% off, I’d wager.

Even so. When I first went over the design rules parvusimperator found for zeppelins, I thought to myself, “This is awesome, but utterly impossible.” From ‘utterly impossible’ to ‘we just need to be about one-third lighter than aluminum actually is’? That’s progress.

Expect a few more posts on zeppelin design in the near future. For one, I’ve completed a first draft of a vaguely technical cutaway drawing of Inconstant, which may eventually show up on a mug, and I want to go over it some. For another, I mentioned the zeppelin construction rules, and I feel like I should provide those, too, pending parvusimperator’s approval.

1. This is not zeppelin-specific, but it does explain our extreme fuel efficiency.
2. Impractical lifting gases include water vapor, ammonia, methane, simple hot air, and (yes, I know it isn’t a gas) vacuum, all of which don’t work in large airships for various reasons.
3. Besides being lighter than air and making your voice funny when you inhale it, that is.
4. It comes from natural gas wells, mostly.
5. Airships work by displacing air with a lighter lifting gas. When you’re putting aluminum hangar plating or a library in the place of gas cells, you’re cutting into your displacement.
6. “Top me up! I need about five hundred thousand cubic meters!”
7. In the sense of fantasy, too.
8. This is bad.