Hi, I'm Henry. In 2012 I quit my job as a programmer at BioWare to spend a year making my own indie games. This blog is about what happened next...

Like Spaceteam? Want to support my work?
Join the Spaceteam Admiral's Club!

Quandary

I’m reaching the point where my “technical debt” is finally catching up with me. The Spaceteam codebase is now 3 years old, using an out-of-date customized version of cocos2d for iOS (notably not cocos2d-x). I’m stuck with this code primarily so I can get the Android version for “free”. My Android build is reliant on the Apportable SDK, which I can still use and still works ok, but I can no longer update it or request new features. And it is difficult to debug.

But I’m trying to move on from Spaceteam, so why does this matter?

Well I still want to support the current players, and I’m starting to get Android bugs that are much harder (and in some cases, potentially impossible) for me to fix on my own. Some of them are just annoying but some are hard crashes, preventing the game from starting. Even if I can fix these bugs they end up taking a lot of time to diagnose and test. I can’t really get help from experienced Android programmers because there is no Android code to work with.

If my Android “solution” no longer works then this not only impacts Spaceteam and its various incarnations (Spaceteam ESL, Spaceteam Kids, etc.), but also my new projects like Blabyrinth that are based on the Spaceteam code. If I can’t easily get Blabyrinth to run on Android then I have no reason to stick with my ancient, cobbled-together, spaghetti Frankenstein code.

So I’m seriously considering rebuilding Spaceteam with new technology. It will take some intense work (at least a month) and if I do it right then nobody will notice that the game has changed. There won’t be any new features. Except that everything will work better. It’s a big investment in the future. Here are the advantages:

  • Lots of major bugs will no longer exist (…with a few minor ones to replace them)
  • The game will be much easier to maintain and extend
  • I’ll have control over the Android version
  • Lots of community support, both locally (friends in my co-working space and Montreal in general) and online
  • Much easier to find and hire development help if I need it
  • Opportunity to use better networking libraries
  • Possibility of a Windows Phone version!
  • I’ll feel a lot more comfortable and proud sharing the project source code with people 😃

If I can make it work then it will be a much happier note on which to end the main Spaceteam saga and finally move on to other things. So I’ve been investigating this over the past week.

The obvious engine choices are:

**

**

cocos2d-x: The cross-platform variant of the engine I’m currently using. This would be the most straightforward port because it’s very similar and supports almost all the same features. It’s tailored for 2D games, which is good for Spaceteam and Blabyrinth.

Unity: Unity has even more community support than cocos. I love Unity and I want to use it for future games, so getting more experience now is another bonus. They have recently improved their 2D, UI, and networking components, all of which are critical for my games. And they have high-quality reusable components available in their Asset Store.

I’ve experimented with both and so far I’m leaning towards Unity.

A Finer Mess

The other project that would be affected (positively) by this change is CaptainsMess, the much-delayed local multiplayer networking library that I want to make freely available.

The delays were due to higher priorities but also to the fact that in its current state it is iOS-only and still has connection issues so I wasn’t confident releasing it at this level of incompleteness.

But if I rebuild Spaceteam then I also have to rebuild the networking and make it work cross-platform, possibly as a Unity plugin, which I think will be much more useful to people.

Whatever form it takes, it will be the version that Spaceteam actually uses and so I would continue to support it. If I go ahead with the rebuild then the old version (if I released it) would be dead on arrival.

Anyway, I’m as frustrated by the delays to Blabyrinth as you are and very eager to work on it again, but I just wanted to explain and justify what I’ve been struggling with lately.

Space out!


Surprise Television

Just when I thought I was out, they pull me back in…

So in a somewhat surprising announcement, I just released Spaceteam for the new Apple TV!

I say surprising because a month ago I didn’t think this is what I’d be doing. I was interested in making a game with a large shared screen, but I wanted it to be something new, designed from the beginning with the TV in mind.

But then, a few weeks ago, I got contacted by Apple. They convinced me that Spaceteam would make a great couch co-op game for the new Apple TV launch. When Apple shows interest, it’s hard to say “no”. Potential benefits included:

  • A significant chunk of new players, with not many games to choose from (yet)
  • Some practice developing for the big screen
  • Improving my relationship with Apple :)

So I dropped everything and spent the last four weeks crunching to redesign the game to work with a remote control.

Since it was for the new product launch I wasn’t supposed to talk about it which is why I’ve been quiet lately, but I’m finally finished and glad to be recovering and then back to my regularly scheduled programming. I missed the actual launch date by a few days, but it’s still early so hopefully I’ll make it into the next round of App Store features!

Here are the design ideas I went through trying to make it work:

Spaceteam doesn’t make sense as a single-player game so you still need one or more other devices to play, but an Apple TV with Wifi gives you pretty ideal conditions for getting a game connected and set up.

The Siri Remote lets you swipe up/down/left/right and “click”, so that’s what I had to work with. Dials don’t really make sense, and even simpler actions like pressing buttons feel different since they’re one step removed from directly touching a thing you can see.

I wanted to experiment with a few different “game modes” for the TV player since I didn’t know what would be fun.

NOTE: I only had time to finish two of the new game modes in time for launch (Controller and Observer), but I did a bunch of work on some of the others so they’ll probably make it into an update soon.

Observer mode: This was the most obvious use case to me. The TV shows an overview of the game (ie. a large viewscreen and everyone’s panels) but doesn’t actually control anything. Good for spectators at festivals, tournaments, etc.

Navigator mode: TV gets a single navigation stick that can be swiped up, down, left, and right. It comes with special instructions “Hard to port!”, “Hard to starboard!”, “Pull up! Pull up!”, “Dive! Dive! Dive!” and new obstacles to avoid. Turns out the navigation control was just too boring to use so I cut it. But my artist G.P. made some cool new obstacles for this mode so I’ll find some other way of including them.

Controller mode: TV is just a regular player. They have a wide horizontal panel with simple push/toggle controls, operated by swiping a cursor left and right and clicking. This feels the most like classic Spaceteam and required the least amount of custom design, so I focused on this and included it as the default.

Thwarter mode: TV player is an antagonist who controls asteroids, wormholes, disasters, and anomalies. I first considered it as a non-cooperative mode but then realized it might be more interesting as a cooperative mode where the TV player had to carefully manage these disasters by preventing them, choosing the timing, or being forced to decide between them under pressure. I didn’t have time to finish it.

Cat Wrangler mode: TV controls the paw of the ship’s cat by swiping on the remote. The cat just gets in the way and makes it harder for the other players, but also has a goal of its own. I really want this to work and I still think it can somehow, but I didn’t have time to make it feel good for the first release.

Commander mode: TV gets ALL the instructions and others players only get controls. TV player does all the shouting :) This eliminates the two-way communication dynamic, but might still be fun. Didn’t have a chance to try it yet, but I’d like to.

Do you have any suggestions for how to incorporate the TV in an interesting way? Let me know!

While I was writing this post I had another idea for a mode with a massive control board on the TV, much too big for a phone screen. The players with phones would each have a “window” onto this board that could be moved around to get to the individual controls. Instructions would all be delivered on the TV. Players would have to coordinate which sections of the board to cover, either by themselves or with a dedicated “dispatcher”.

But I think some of these mechanics would be better served by a game designed up front for a TV player, instead of shoehorned into Spaceteam. So I’m going to save them for the co-op TV heist game I want to build!


Admiral’s Club “Year 1” Retrospective

It’s been a whole year since the campaign ended so it’s time to take a look back and also answer some questions about the future.

Where Are The New Games??

Wasn’t I supposed to have two new games finished by now? Actually, no.

First of all, I want to clarify that while a calendar year has passed, there is still time (and money!) left in my productive “funded” year. There were several periods of downtime due to vacation and external projects, and I haven’t been counting these in the total. Meanwhile, these projects (and Spaceteam itself) have independently been making some money so I still have about 4-6 months left of the “one year of development time” that my backers paid for.

Second, while the plan was (and still is) to finish Blabyrinth before the “year” is up, I knew I would only have time to start on Shipshape, which is much more ambitious. In the original rough schedule it was listed as “(to be continued…)”. So that game is still quite a ways out.

I was also anticipating priorities to shift as I found a good balance for making things work long-term. I tried to make it clear in the campaign description and video that not only is game development unpredictable, but I reserved the right to follow interesting opportunities if they came up. I hope this doesn’t come as a surprise to anyone.

Now that I’ve been living this experiment for a while, it seems like the best way for me to stay sustainable while planning for the future is to make money from three main sources:

  1. Crowd-funding from faithful Admiral’s Club supporters (you!), through Kickstarter and eventually Patreon when I re-open the club.
  2. In-game “tip jar” (i.e. Upgrades) for ongoing support from those more comfortable with the App Store model.
  3. Commissions from external projects. Note that I only accept these projects if they pay enough to add to my total development time. My rule of thumb has been 2 weeks of work == (must pay for) ==> 4-6 weeks of dev expenses. If a project only pays for itself, then it’s not worth it.

So What Did I Do This Year?

Here’s what my original schedule looked like:

Here’s what my actual schedule looked like (click through for full size):

(The stuff outside the white box is not being funded with Kickstarter money)

Rewards!

It wouldn’t be a real club without embroidered patches, certificates, membership cards, shiny medals, and Spaceteam magnetic poetry. I spent a lot of time preparing source material, ordering supplies, building the member database, printing, stuffing and mailing over 700 packages.

The Lexicogulator

I built an online editor that connects to a database which can also be read by the game. Ensigneers have been creating and sharing Lexicons on their own, without me having to make any changes to the app, which is awesome. Here are some fun ones:

  • MedicineTeam
  • aussieteam
  • Minecraft
  • BountyTeam
  • coachella

If you make your own Lexicons, please share them on this thread in the forum!

The Character Creator

This mild-mannered personalization feature also doubles as a testbed for potentially uploading other kinds of images or data… interesting possibilities!

Developed Useful Skills!

I learned how to build basic web apps, in this case using Node.js, Angular, and MongoDB. This was a good investment in my own coding skills, since I’d like to add customization support to Blabyrinth too. Now that I have this experience I can do more complex things with future games.

Took over Android support

My porting partner Apportable made great efforts to get Spaceteam working with Google’s latest updates but our contract is now over so I can no longer rely on them. I now have to investigate and handle Android issues myself, which takes time.

Six new languages

Thanks to my volunteer translators, people can now shout at each other in:

  • Russian
  • Japanese
  • Hebrew (right-to-left text support was a huge pain!)
  • Czech
  • Polish
  • Brazilian Portuguese

Spaceteam ESL

The ESL version of Spaceteam has 5 levels of vocabulary taken from the 1000 most common English words. It has adjustable speed and difficulty. It has a pronunciation practice mode. And it comes with reference material showing teachers how to use it in a classroom setting. We’re launching to the public (for free) in a couple of weeks! Stay tuned.

Spaceteam Kids

Using Spaceteam ESL as a base, I’ve been working with the High Commissioner to make a more general purpose Kids version, also with adjustable difficulty settings. This should also be ready soon.

“Breach Defender”

A customized version of Spaceteam with a hacking theme (commissioned by Big Monocle on behalf of Intel) used to promote computer security at a conference. This was a fun small project that helped extend my development time.

The Spaceteam Board Game!

Taking Spaceteam to a new plane of existence. I’m actually just consulting on the game, it’s being designed and produced by another team. They will be launching their own Kickstarter soon, sign up for news here!

The Humble Bundle version

This may not seem too exciting but I got two nice things out of it:

  • A version of the app that can be downloaded and purchased outside the Google Play store. This may not affect a whole lot of people, but I think it’s appreciated by those who need it.
  • $11k in additional sales (not bad for a two-week promotion!)

CaptainsMess

I want to share the Spaceteam networking code in a way that’s useful to people so I’ve been carefully untangling it so it can be reused. I’ll post the initial version later this month, but unfortunately it will be iOS only. Hopefully it will still be helpful.

Blabyrinth

Blabyrinth is well under way and it is now my primary project. I’m starting to solidify the framework for the game. Players can connect, move around a simple maze, interact with scenery, pick up and drop items. It’s not that interesting to look at yet. But I’m getting ready to start building the generators for the labyrinths and puzzles, which should be a lot of fun!

These Things Also Happened…

One Last Thing

If you like the music in Spaceteam, my composer Phil has started his own fund-raising campaign to support his independent music. Check it out here: https://www.patreon.com/couteaupapillon

Onwards!