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!

Autumn Cleaning

Captain's Mess

I was recently encouraged to give my open-source networking library CaptainsMess some more love. It's still missing Bluetooth and Internet support so I've been transferring those features from Spaceteam, generalizing the code, and making it more user-friendly so the 3rd-party libraries that I use can be added/removed/replaced.

In fact, while doing this I discovered that my current Android Bluetooth plugin is no longer being supported by its developer :( so I'm looking for a new one to integrate before I release the changes. Since the existing plugin costs money I can't recommend that people pay for it if it might stop working in the near future. It does still work for now, but it's only a matter of time before it will need an update...

Blabyrinth Progress

After a bunch of complicated technical work on the LevelGraph re-architecture, it's now up the same state the game was in before (exciting, I know...). So it generates the same kind of levels but they are easier to test/debug and extend.

I'm still not 100% happy with it but it's much better than it was and I'll only need to make small changes from here on instead of big ones.

One thing I can do now is create an editor to choose which components the level generator picks from. I did this before in code, but this way is sooo much faster and easier. I can turn everything off except for a few settings to get a really simple level with only certain features (for testing). For example:

  • only keypad locks using numbers
  • only clues split up onto multiple items (eg. scraps of paper) hidden in plain sight
  • nothing else

Or I can turn everything on for a complete level.

But I'm also planning to use this system to change the difficulty of levels by excluding or including harder puzzle types and obscure features. The final game will start easy (to introduce new players) and then there's a secret way to access harder puzzles that needs to be discovered within the game :)

Music & SFX

I'm starting to work with Phil (Philippe Lachance, the musician for Spaceteam) to add music and sound. It's a tricky game to write music for because there might be four devices all playing audio at once, at different volumes and with a slight delay (due to network latency). Also people need to hear each other talking, so the in-game music will mostly be atmospheric/ambient.

Next time hopefully we'll have some music samples for you but for now here are some random sound effects.

Secret Passage opening

Portcullis

Collapse!

~ Henry


Summer Status Report

Spaceteam News

"Safe Team"

To my pleasant surprise I continue to get approached by companies wanting to commission a custom version of Spaceteam for their office/event. These short jobs help pay the bills and the process is pretty streamlined now so I keep taking them.

The latest is Électricité de France which, as you might expect, is a French utility company. They wanted a safety-themed version to use for team-building exercises. Each level has different safety reminders like "Reduce coffee intake!", "Get enough sleep!", and "No texting while driving!". Hopefully it will make their exercises more exciting.

EDF Safe Team app icon

I usually charge around $10,000 for a basic customization with just new words and phrases. The price increases if they also want new control panel graphics, characters, logos, etc. The first time I did this I lowballed the price, but I've since learned to charge for my time and the lost opportunity cost and to overcome my reluctance to do yet another Spaceteam reskin :)

Technically you can change the words in the game with a $5 Admiral's Club membership (get yours today!) but it wouldn't be a separate app with company branding, and often they want changes that can't be done with the Lexicogulator. Also most of these companies have budgets for this sort of thing. Sometimes I wonder if I could charge a lot more and they wouldn't even blink...

Video Chat

I often get asked if there's a way to play Spaceteam with people who aren't in the same room. Ever since I added "Internet" mode this has been possible, even though it's not designed for this purpose (it's just another way to connect if Wifi and Bluetooth aren't working). But you still had to find some external way to communicate: voice call, Skype, etc.

Now I'm working with a service that will give the game built-in video and audio chat, making remote play much easier. I'll be making an official announcement in a few weeks when the integration is ready.

Video chat


Blabyrinth title text

Blabyrinth Progress

Mostly I'm trying the make the game more stable and the code cleaner before going wild with all the puzzle ideas I have planned.

LevelGraph

I've been working on a big architectural change which I'm calling the LevelGraph. It's an intermediate representation of a level describing the dependencies of each piece, that I can refer back to from other systems.

By dependencies I mean things like: this item is here because it's part of a ritual --> the ritual is needed to open a secret door --> the secret door is needed to access a secret area --> the secret area is needed because that's where the treasure is

Example section of a LevelGraph

I can use the LevelGraph as a blueprint to:

  • Construct the level by placing sprites into the scene
  • Hook up interaction rules for things that need them
  • Make sure the level is solvable, and output the solution (for testing)
  • Add context-specific hints for each step
  • Easily find out how and why something was generated, if it's causing problems
  • Defer parts of level generation until later (eg. the LevelGraph might specify that a puzzle needs a set of 8 unique symbols, but not specify what those symbols are. The symbols can then be chosen later by a system that picks the 'theme' of the level)

Previously all these systems were mixed together and it was hard to disentangle them and difficult to make changes without breaking things.

Custom Editors

With the art getting closer to final quality I've also been spending more time on custom editors inside Unity, so I can edit the visual properties of scenery and items. Certain game mechanics like clues and markings depend on what the final art looks like, so this has been a bit time-consuming as the art goes through various iterations.

Custom Scenery editor in Unity

I'm giving my artist Sam a bit of a break while I stabilize the core game. There's still a bunch of art I need for the beginning and end of the game but those are both still very much in flux so I'll call on him again when things are more finalized.

Space out!

~ Henry


Game Feel

Hi everyone,

GDC was great, I’ve been away from the conference circuit for a while now and it felt good to reconnect with the broader community. I gave demos every day to other indie developers and got some useful feedback.

It’s always hard to show off a work-in-progress, there are so many things that I know are broken or incomplete, but enough of the game is working now to show the potential and I know how critical it is to get feedback before it’s too late to change things.

One of the things I need to work on is to make the basic interactions of the game more intuitive and natural. Two of the main things you do in the game are moving around and examining things and these actions are still not obvious.

This is a mobile game so I don't have a joystick or arrow keys for movement. You move around by tapping on things but previously you could only move to objects of interest: doors, scenery, and items. My thinking was that it would simplify things. I didn’t see an obvious need to move to arbitrary points on the floor, so why even allow it?

Now from watching people play and hearing their comments I’m changing it so you can move anywhere in the room by tapping. This actually solves several problems:

  • You could always move to some places by tapping, so not being able to move everywhere felt limiting and frustrating.
  • It removes the confusion between interactive scenery (which you could move to) and decorative scenery (which you couldn’t).
  • It allows for more expressive freedom when communicating with other players. You can now say things like “stand here” or “follow me this way” while moving your character to the place you want to indicate.

Moving around by tapping

Similarly, I’m making it possible to examine everything, including purely decorative scenery and the floor. Currently this is done by pressing & holding, but I’m still experimenting with other gestures like pinch to zoom, and dragging a magnifying glass around the view (see below). Being able to pan the view around when you’re zoomed in makes it less frustrating to examine a bunch of things one after the other.

Experiment with draggable magnifying lens

Another problem with player communication was not being able to explain where you are in the level to the other players. The random layout is confusing and there still aren’t many landmarks (yet).

So I’m adding a ‘shout’ feature that lets you broadcast your location by showing everyone a speech bubble on the edge of the screen coming from your direction. The game was already doing this for environmental sounds (portcullises opening, scenery sliding, etc) so it was a natural extension.

Shouting

More Art!

Sam is churning through the art assets faster than I can integrate them. I’m really happy with how they’re turning out :)

Lots more scenery and items:

Furniture and carpets Gargoyles AnimalParts

And a first look at some characters!

Characters

Random Unity tip: Don’t reorganize/rename your Script folders outside of Unity (eg. in the Finder). I did this and had to fix a whole bunch of 'Missing Script' references afterwards.

~ Henry