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!

Buzztime!

Spaceteam is now available for a limited time on Buzztime tablets in sports bars, pubs, and restaurants across the US. Check out the official launch page here: http://www.buzztime.com/spaceteam

They have a venue locator so you can find a Buzztime-enabled pub near you if you want to check it out. Most of them are Buffalo Wild Wings but there are some other locations too.

Buzztime promo image

To commemorate the launch we'll also be sharing some exclusive new features! More news about those coming soon.

Buzztime have been around since 1984 running trivia games in pubs but lately they have been branching out into tablet games you can play at your table. This is the first local multiplayer game on Buzztime tablets but it seemed like a great fit so I was happy to partner with them!

After all, Spaceteam is a great game to play while you wait for your food, or even as a drinking game!

I'll be sharing more news and announcing some special events related to the Buzztime promotion in the coming weeks.

Space out!

~ Henry


Connection Established

After a couple of months full-time on Blabyrinth I'm back on Spaceteam maintenance for a few weeks. I want to improve the connection issues, add support for Bluetooth, and a few other things. I don't want to get too sidetracked but I'm being paid for most of this work so it's easier to justify. Although I'm starting to wish I had some kind of 'employee' to help out! Here are my priorities:

Bluetooth

Complicated and boring, but I’ve put it off for too long. It’s time to get my hands dirty. Here’s why it’s difficult:

  1. The original Bluetooth code was in Objective-C on iOS, and I don’t have the Android code at all because of reasons. So... I can’t just port it to Unity.
  2. Unity’s High-Level Networking API (HLAPI) doesn’t support Bluetooth so... I have to find (or write) a plugin.
  3. There is a good Bluetooth plugin for Android that integrates with UNet HLAPI, but... it doesn’t work for iOS.
  4. The best iOS plugin I found that supports Bluetooth doesn’t integrate with the HLAPI so... I have to start using the Low-Level API. This requires modifying all the networking code (again) to use simple client/server messages instead of SyncVars, Commands, and ClientRPCs. Complicated, boring, and requires re-testing most of the game.
  5. On top of this, the iOS Bluetooth plugin seems to be broken. After further investigation it appears that it might be an Apple bug.
  6. At this point I’ve resigned to just writing an equivalent plugin myself. I haven’t written a Unity plugin before and while I’m sure I can figure it out, it’s not very exciting. Luckily I’ll only have to write it for iOS because I have no experience at all writing native Android code.

But once I get it working I'll be done with Bluetooth, I'll have a more flexible low-level networking layer, and I can reuse the code for Blabyrinth and CaptainsMess. It's a worthwhile investment.

Mysterious external project

More details later but a company has licensed Spaceteam in bulk to play in their venues and I’ll be doing some custom work to support it. It seems like a good fit and there is money involved so I think it's worth it!

Upgrading Spaceteam ESL

Spaceteam ESL is still on the older codebase (1.8) so it has the same Android incompatibility issues that plagued regular Spaceteam. It’s time I brought it up to code, but it also allows me to add the next interesting feature...

Internet Play

This will technically allow you to play with people who aren't in the same room, but I don't recommend it (you won't be able to hear each other!). This feature is designed for situations where neither local Wifi or Bluetooth will work, like school classrooms where Spaceteam ESL is primarily used. My plan is to use GameSparks Real-Time for this, but I’m also investigating other options (like Google Play Real Time Multiplayer) since GameSparks has user limits that I might eventually break.

Spaceteam FSL

The next logical step for Spaceteam ESL is to introduce an equivalent version for learning French! Concordia is rustling up some more grant money so I’ll be working on this for a few weeks. Since the code is mostly shared with the ESL version it won’t take too long.

...and One More Thing

The Spaceteam family is getting a little bit bigger... because Admiral Spaceteam and I are having a baby! She's almost 6 months pregnant and the due date is in June.

Space out!

~ Henry


Blabyrinth - The First Few Hints

Blabyrinth - The First Few Hints

I've now spent almost a month working full-time on Blabyrinth! This game has felt just out of reach for so long. Getting to work on small snippets was always a treat but now that I'm making actual progress it's having a noticeable (and positive!) effect on my mood.

I'm very aware that Spaceteam still has a bunch of connection issues and is missing Bluetooth. I will remedy those things soon but I also need to focus on finishing a second game so I can keep this little operation running. The Spaceteam tip-jar is still clinking away and the Patreon is getting started, but having more than a single game to rely on is going to help tremendously.

So what progress has been made?

Be aware that everything below uses placeholder art. I found a great set of flexible prototype sprites here that is evocative of the final vision: Oryx 16-bit Fantasy Sprite Set

A lot of the foundational work is getting done.

  • Players can connect and see each other and move around
  • Rooms are connected with passages that can be opened or closed
  • Items can be picked up and dropped and stored in containers
  • Locked doors can be opened with keys Key Unlock
  • Pressure plates can open doors while they are pressed Pressure Plate & Portcullis
  • Scenery can be examined, moved, and manipulated Sliding Boulder
  • Scenery can be touched in a certain sequence to trigger... something Secret Statue Sequence
  • Clues can be split across scraps of paper Torn Parchment Clue
  • Keypads can trigger things with a sequence of button presses Keypad Animals

This is a good example of the extensibility I talked about a couple of posts ago. The keypad in the example uses pictures of animals, but the button labels can just as easily be letters, numbers, astrological symbols, runes, whatever. Or they can be blank and the solution can involve their position on the grid. With a few simple changes similar puzzles can have a very different feel.

And importantly, all these behaviours and actions persist across the network.

Incidentally, my best advice for anyone building a multiplayer game: do not build a single player game and then add multiplayer to it later. Build multiplayer in from the start. Always code as if you are sending and receiving data across a network. It will keep your code better separated and save you a lot of headaches. I (claim to) know this and I still find myself taking shortcuts and making assumptions that I later have to throw away and rewrite to accommodate networking.

~

Next up is the Level Generator. It will begin by generating a random treasure and a secret ritual required to discover it. Clues to the ritual will be distributed throughout the level, themselves hidden in secret places, behind locked doors, or engraved onto scenery. This requires further clues, and then the process continues recursively until the labyrinth is sufficiently complex.

To help with testing I've hooked up my Palette hardware controls to the game. So far I'm just using the slider to zoom the camera in and out of the level so I can see how it has been generated. This feature will not be available to players ;)

I've only just started on the generator but I'm very excited to keep building on this foundation and see where it takes me.

Space out!

~ Henry