Early Design

Starships Assembly is my most-polished, biggest project yet taking nights and weekends spanning 7 years. It all started with a challenge I gave myself:

Can I make a fun, interesting strategy game using as few parts as possible?

Almost from the beginning I had this:

  • 20 cards, all the same format, keep it simple that way
  • a captain character on side (end) of the card
  • a ship on the other side
  • reuse cards as dice rolls, so damage outcome in the middle
Early card versions.

From there, though, it was a lot of fun exploring, looking at lots of possible captain abilities, for making the space combat more or less complex, for figuring out how to combine all the information on a card into a sane presentation.

Sifting through early design choices.

Many of my designs only get to this rough sketch, hand-drawn prototype phase. This one, though, phew! Players liked it! I had some fun games early on, and it just felt good, worth pursuing.

Pixel Art

If the hand drawn cards were fun to play with, I was convinced I should bump up the production quality. A huge chunk of the time spent on this project was drawing pixel art in the GIMP!

Backgrounds, characters, icons, and ships!

The main card art file has 182 layers, and I wrote a fun GIMP script that will automatically hide and show layers to generate each of the 20 final print images.

Rulebook and Playtest Party

With nicer cards and interested fans, I started concentrating on nailing down the final ruleset and writing a nice rulebook. This took a tremendous amount of time: writing, re-writing, diagramming, doing layout.

I held a play-test party, got a ton of feedback, and a lot of it suggested the rules needed another major rewrite for clarity.

Rulebooks with notes from play-test party.

Also while considering the cost of producing the rulebook, I decided to format it for mobile screens first and that the rules would be download-only. This brings the cost of the game way down only having to physically print and box the cards!

Analysis and Simulator

I could have stopped around here and had a decent game to show for it. But I pushed myself to try to accomplish the original challenge, to find a strategy game you could play again and again using only 20 cards. For the game to get where I hope it can go, I had to be as certain as I could be that no cards were broken, or too underpowered, or that any strategy just dominated everything else.

So I embarked on an analysis journey, and honestly, I could have stayed here tinkering probably for decades, this part was SOOOOOOOOO fun!

To analyze space combat I went completely bonkers. I wrote a Monte Carlo simulator, basically set up two fleets with two AI players, let them play, record the outcome, and repeat a million times. I used this in different ways, comparing AI's, comparing ships head-to-head, doing 5v5 fleet battles to see which ships contributed the most.

Here's an example where having each pair of ships go head to head many times, which consistently beats which ship?

Head-to-head domination by ship tier (cost).

Just because a ship can consistently beat a higher-priced ship head-to-head doesn't mean it will contribute more on average in fleet v fleet battles! And I hoped this was true, sometimes a cheap ship can kill a specific enemy ship, but you'll always want some workhorse ships in your fleet.

Using average 5v5 win percentage to estimate good ship cost.

And just looking at how ships do on average in different dimensions like tanking damage and whether their weapons tend to overkill:

What do ships specialize in?

If you're curious, each run of the simulator is actually many sub simulations, and the final output is this big html report that gives the results for a certain card set version. This way I can look at how my card tweaks affect all the things I care about and make sure fixing one problem doens't cause another.

All of these reports come out, per card set version.

You might have noticed the report card thing and the grades. My thinking here was to consider some stat like "average number of rounds per space battle." What do I wish this stat was? For battle rounds I think you'd want the average to be more than 1 or 2, but probably not 5. Long enough to have a bunch of fun decisions to make and no longer! So I would come up with some function for each stat that would assign a grade to the outcome. In this example, if a card set version came out with an average battle rounds = 6.6 then the grade function would give it a bad grade, like an F.

Take the grades from all the subreports into a 'report card' at the top.

See other stats from the overall set, like in this card set version the percent of battles where one side would win by coming back from behind in ship count was 9.8%.

Overall set stats.

The simulator also checked some static properties of the card set, and all of this was super helpful when tweaking, because I would often accidentally change one ship and make it an exact copy of some other ship without realizing it.

Check how 'same' any two ships are, try to give them all an identity.

A few of the reports told me whether the set had some properties that I wanted. Like the "ideal damage class I fleet." So there are five cards with a damage class I miss, and I wanted to make sure that all of the ships that happened to be on those miss cards only had damage class I weapons. So... if you deployed all five of these ships into your fleet you'd have only damage class I weapons that are guaranteed not to miss until some of your ships get destroyed and eventually come back to the top of the damage deck. I love this idea, even if it's reaaally hard to execute.

Other set attributes.

For captain abilities and the Assembly phase, which is waaaaaay harder to simulate with AI, I used only pen-and-paper analysis to compare captains. What I am looking for there is to make sure each one had a unique contribution, there was a good mix of general use, early use, late use, offensive, economic all types of captains.

Honestly, I could spend another 7 years just analyzing and tweaking the game!

Responsive Website

I didn't want to do anything fancy with the website. Just show the game, say a little bit about how it's unique, some strategies you can try. And a button to grab one!

Oh, and I was hoping this simple site would look right on desktops and tablets and phones. Making that happen is called making a site "responsive" (where the layout responds to the screen size, among other things). Turned out to be some work!

Here are some specific things that I think made it work for the Starships Assembly website:

  • Media queries are how you pick different CSS depending on the screen size. Keep it simple, use as few as possible. Also, the "default" page should be your smallest mobile layout.
  • One of the things that should change somewhere in there is text size. The browsers and screen resolutions actually do a pretty good job without much intervention. I found some default text size on mobile looked fine, and somewhere beyond tablet I changed my font size to something bigger because only then did I have a huge screen to fill, so it reads like headlines on a desktop.
  • I used this fun pattern to have a setup where on mobile you see image-text, image-text, ... and on desktop those same pieces become rows that alternate, so image-text then text-image, image-text, text-image, ...

Introduction Video

With a game ready for publication I then needed some marketing material. So started a 4 month subproject to produce an introduction video that shows what Starships Assembly is all about.


  • Script
  • Storyboards
  • Set design


  • Blender
    • 3d modeling of objects and backgrounds
    • Render materials (very interesting subject!)
    • Lighting theory + design
    • 3d animation
    • Particle systems
    • Rigid body physics simulation
    • Smoke simulation
  • Audacity
    • Recording basics
    • Generating sound effects
    • Basic audio engineering
Audio engineering


  • Audio mixing + mastering (difficult!)
  • Complex animation, audio, effect sequencing
  • Editing for tight, punchy pace
  • Codecs + render quality for YouTube streaming

Final Product!

Back to the Main Page.