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!

Generator to Maximum Power

It’s been a while since my last post so thanks for your patience! This year I'll make an effort to post more often, which will be easier as I get closer to launching Blabyrinth and have more to show. Soon I can also start showing real art from the game because I now have an artist! I’ll make an official introduction next time and showcase some of the work so far.

For now, in the game (and these blog posts) all the art is still placeholder.

The Level Generator is now building “complete" levels with all the critical components: treasure, an exit, secret sections behind locked doors, main puzzles, side puzzles, decorations, traps, and meta-game elements. There are still only a few examples of each thing. eg. ~6 puzzle types, a handful of decorations, etc. and at the moment the levels are quite convoluted and random, but it’s enough to start testing the game as a whole so I can make sure it's a strong foundation on which to flesh out the details.

Here’s the kind of content it’s generating now, presented as an abridged walkthrough.

Overhead map of the whole level, which won’t be seen by the players:

You start in the central room with the four torches.

Scattered throughout the level are a set of mysterious stone crosses with musical instruments engraved on them.

You also find a door with a keypad, with musical symbols on the buttons. Could they be related? … Yes, they could.

For this particular puzzle you need to count the number of symbols on all the crosses together and you’ll get:

The numbers correspond to the order of symbols in the keypad code, so the final sequence that will open the door is:

Behind the locked door you find more symbols on the floor and a fragment of a larger clue:

Combining this with other fragments hidden around the level will reveal the complete clue, “Two must walk North South North East from The Sigma”.

Phrasing is a bit awkward but the idea is that if two players move together in these directions in sequence, a hidden door will unlock. In this case "The Sigma” refers to a greek letter engraved into the floor of another room.

The hidden door leads you to the Treasure Room! But you still need to find the Exit and escape.

Elsewhere you find a lever that opens a portcullis (requiring two players to work together) and a red key that unlocks a red door.

Behind the red door is another clue:

Again this is badly worded. I’m experimenting with generated clues that sound “poetic”. But hopefully you get the idea. This clue refers to four jewelled items that can be found in the level and “Flower Sun Leaf Trees” indicates the four symbols on the floor found earlier. If you place a jewelled item on each symbol then another secret door will open: the Exit!

Now you all have to work as a team to carry the Treasure (which is very heavy) to the Exit and freedom. This will trigger the “end" of the game.

The whole process takes 5 or 10 minutes but the puzzles are pretty bare bones right now. Even so, tasks that seem simple can suddenly get a lot more complex when you have three or four people trying to coordinate while lost in a maze :)

Set Pieces

One of the ways I’m making the levels more interesting is by adding a few partially-handcrafted “set pieces” made up of scenery in preset arrangements. So instead of having a room with a random bookshelf in it, the room might become a Library. More examples from the level above:

  • An underground oasis
  • A throne room
  • A henge
  • A bridge over a chasm (which is only considered if the room has exactly two opposite doorways)

These elements can still seem out of place so the next step is to tie things together thematically by making the entire level feel more like a temple or a cave or a castle, or with some other unifying theme. And then if the items and clues can also tie into the theme then the levels should be much more coherent.

Family Playtest

Over the holidays I prepared a build to play with my family. There are still a lot of bugs so they only got through one full playthrough from beginning to end without anything going wrong. But they had several partial game sessions and I got a lot of good feedback. It’s clear that I need even more cooperative elements or it’s too easy for one player to act like an "alpha gamer” and boss the other players around. Or, just as bad, for two experienced players to go off on their own and leave someone behind with nothing to do. I already had a lot of planned mechanics to encourage cooperation but it seems like I should be forcing it in more places.

Random Gifts

In the spirit of the holidays I have few random game codes to give away to the first people to claim them! I didn’t work on any of these games but they’re all made by friends or local Montreal studios. If you’d like one just try redeeming it and if it works (ie. it hasn’t been taken) maybe make a post to let people know. And please be courteous and don’t take more than one!

Happy New Year spacefriends!

~ Henry

Full Production

Full Production

I took some time off to be with my new baby (pictures at the end) but now I'm back in full production on Blabyrinth. I'm so lucky to be able to work from home, and you're a big part of making that possible. So thank you!! I can work while mum and baby are asleep in the mornings and the evenings, and even though there are more interruptions during the day I've still been very productive.

The vertical slice is almost done and has revealed, as expected, several aspects of the design that needed rework or refactoring. But now I'm a lot more confident that all the systems will mesh well.

There was a lot of unsexy behind-the-scenes work so I'll regale you with a random assortment of tidbits:

  • Players can now be trapped, and then rescued by their teammates. This is just one way the game forces you to work together.

  • Photoshop's "Content-Aware Fill" has been really useful for removing symbols from placeholder art so I can add my own adornments dynamically. I'm working on a shader that will make the clue text or image look like it's engraved into the surface.

  • Related to this, I had to make a custom "Clue Region editor" so the game knows where to draw clues and identifying marks on scenery and items.

  • Having large libraries of scenery, items, and symbols means I have to do a lot of categorization/tagging so I can randomly pick an appropriate context-dependent thing.

    • Symbol tags are things like: simple, complex, linear, solid, connector, abstract, pictogram, animal, unambiguously-named, ...
    • Scenery tags are things like: can-stand-on, can-slide, can-be-ritually-touched, musical, engravable, landmark, can-see-contents, ...
  • It's important that players be able to return the treasure they find to the "overworld" when the game is done and store it in their personal collection. While building support for this I realized it was necessary to have two parallel worlds (only a technical distinction, not exposed to the player): one shared world when you're connected to other players, and one local world when disconnected. I have to perform some sleights of hand to keep these worlds consistent, and moving items between them is a bit tricky. But there's a special reason I need it to work this way and I think the payoff will be worth it :)

  • I'm experimenting with a simple "hands" UI for showing the item(s) you're carrying. Building good puzzles for two players involves splitting up clues differently from three or four players, so one of the ways I'm making things simpler is by letting you carry two items each in a 2-player game.

I'm still using temporary art (this asset has been great for prototyping and inspiration) but the game is getting to a point where I'd like to start looking for a real artist. If you know any 2D artists who might be interested in some contract work making lots of scenery and items for a top-down Indiana Jones-style treasure hunt escape room labyrinth, please send them my way! I'll post a full job description with details sometime soon.

Also the levels are very bare at the moment because I'm just including the essential elements needed for the core puzzles. The next step will be to generate each level with decoration, extra scenery, side-puzzles, meta-puzzles, a few custom handmade set pieces, and maybe some red herrings for good measure :)

Spaceteam news

I just updated Spaceteam to work better with iOS 11. If you were having Wifi connection issues on iOS 11 please try again with this update.

I'm working with Concordia to finalize the new versions of Spaceteam ESL and the French-language equivalent "Astronautes FLS". They should both be ready for launch in early November. I had a tricky time getting good French pronunciations for the phrases in Practice mode since I'm just using my Mac's built-in Text-to-Speech service. For reference to nobody but myself: I ended up using a combination of the Amelie, Aurelie, and Chantal voices to get it sounding right :)

The board game is back in stock almost everywhere (still working on cheaper shipping to Canada...). It's also starting to show up at some Barnes & Noble locations, so if you've been looking for it maybe you should check your local B&N store.

And finally, some pictures of Nori. She is now almost 4 months old!


Space out!

~ Henry

Blabyrinth is not my only baby

Blabyrinth Progress

This post was slightly delayed for reasons which will become clear at the end :)

I've been working towards a "vertical slice" of Blabyrinth, which is supposed to cover a cross section of every component of the game to make sure all the systems work together well and nothing needs to be redesigned.

Part of this is what I call the "Overworld" which is actually just a fancy term for the pre-game menu screens. I'm designing the pre-game screens to be similar to rooms in the game that you can move between and interact with, to introduce the player to the kinds of interactions they'll need for the game proper. The Overworld contains "rooms" like:

  • The Clearing, where the game begins (the one-sentence back-story for Blabyrinth is that you've followed a mysterious map deep into the forest/jungle and have finally reached the spot where the entrance to the labyrinth is rumored to be hidden)
  • The Tavern. Equivalent to the Waiting Room in Spaceteam. A gathering place where you join other players before starting a session.
  • The Vault. A place to collect and store treasures from previous sessions.
  • The Gift Shop. This is where I'll offer a few in-app purchases for players to support me in the traditional way. The game will still be free but, like Spaceteam, if people want to give me money (and aren't comfortable with a monthly Patreon pledge) then I'd like to reward them with some extra features. I'm toying with the idea of only letting you buy things for other players. Not sure if that will work.
  • ...and who knows, maybe the Overworld will contain secrets of its own!

Once your team is assembled in the tavern and ready to embark on their adventure, you'll raise your glasses in a toast, and a custom level will be generated, tailored to your group.

The Level Generator creates a labyrinth of interconnected rooms and passageways, an exit to the surface, and a series of secret sections hidden behind locked doors and other obstacles. Sometimes secret sections are only accessible through other secret sections so the generator has to keep track of dependencies so that a key doesn't get stuck behind its own locked door, for example.

Some sample layouts with sections colour-coded:

The level then gets populated with puzzles, items, and scenery. The biggest puzzles are the Treasure puzzle and the Exit puzzle. These always involve hidden passages and rituals where all players must work together. These puzzles need clues, which will physically manifest on scraps of paper, or be engraved on scenery or walls. Other items may also be involved: a key, a mysterious carved shape, a sacred candle, a glowing gemstone. These clues and items can themselves be locked behind obstacles with puzzles, and this process cascades until the whole level is built!

Each level is generated using a unique random seed, which is like a signature that can be used to generate the same level again. This is super useful for my own debugging, but also if someone discovers a particularly interesting or quirky level among the millions of combinations they can share the seed with others. This is one of the things I love about procedural generation. It creates this huge possibility space of content that I can explore without knowing exactly what will show up. It's easy to stay interested in your own games when you never know quite what you'll encounter.

At each step, the Level Generator works in concert with the Clue Generator, the Ritual Generator, and others to pick from an ever-growing selection of possibilities:

  • Locks can be opened with: keys, keypads, combination-style locks, levers and pressure plates, hidden triggers like false books or wall sconces, complex rituals, and more.
  • A key can be a literal key or a key-like object. eg. the perennial classic: gemstone in a statue's empty eyesocket!
  • Rituals can involve items, scenery, locations, and player actions performed simultaneously or in sequence.
  • Clues can refer to items and scenery by name, or by other properties like colour or an identifying mark.
  • Clues can be split up using various techniques, sometimes giving players a mini-puzzle to find the correct ordering.
  • Clues and codes can use letters, numbers, runes, shapes, or any number of other symbols. Once again I'm using graphics from the Noun Project, which is an awesome repository of icons and symbols covering thousands of concepts.
  • Clues can be encrypted into a different "alphabet" of symbols, requiring a legend in order to make sense of it.
  • If a clue needs to specify a location in the level it can use directions, landmarks, or diagrams to lead you there.

A keyword clue split into parts:

A keyword clue split into parts

Another split clue (I wonder what it says??):

Another split clue (I wonder what it says??)

A random assortment of other (out-of-context) clues:

When the vertical slice is finished, I'll start to flesh out the choices at each generation step and my plan is to continue adding new possibilities even after the game ships, making the levels richer and more varied with each update.

Also... I have a baby now :)

Nori Juniper Alethea Smith was born on June 11th at 4:20am. She came so quickly that the doctors almost didn't make it into the delivery room! But everything went well and she's healthy and strong and squirmy. Sara's also recovering well but we're still catching up on sleep. I've been off work for a bit to take care of the family but since I work from home I should be able to ease back in to working a few hours a day and then get a more regular routine going.

Thanks for joining me on this adventure!

~ Henry