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!

I'm Still Here!

I'm Still Here!

My silence on this blog has been unprecedented, but that seems to be true of so many things in the world right now so I hope you'll forgive me. Thankfully my family and I are all safe and healthy. I certainly have less time to work now than I did before the pandemic, but mostly I've been quiet because I'm working on a contract project that I still can't talk about yet!

Blabyrinth is still on hold, because "Project M" (not its real name) is taking all of my time. I had once hoped to split my time half-and-half but that turned out to be wishful thinking. But don't dismay, the wait won't be for nothing: when this project is finished it will be another local-multiplayer game to keep you distracted, and shouting at each other!

I can't share too many details but I'll give you some teasers.

Project M

Project M is a cooperative local-multiplayer party game like Spaceteam. In fact, I was approached to develop it because the people I'm working with liked Spaceteam. It's not Spaceteam 2... but you are a team... and you are in space (sometimes) ๐Ÿš€

The core of the game consists of mini-games, some individual and some cooperative. I've been doing some research by playing games like Mario Party and Mucho Party (my 3-year-old loves playing this with us and it lets you adjust the difficulty per-player which means she actually has a chance!)

With the cooperative mini-games I'm getting the opportunity to experiment with different co-op mechanics: sharing information, doing things in a certain order, doing things at the same time.

The individual mini-games test different faculties like dexterity, memory, reflexes, etc. and they can be assigned to different players depending on their strengths. I wanted this task allocation to feel a bit like The Crystal Maze (one of my favourite TV shows as a kid).

Here's a sneak peek at some out-of-context artwork from the game so far:

Networking changes

Because of the pandemic we've been prioritizing remote play instead of local play, but the final game will have both. I'm currently using Photon as the back-end technology for remote play and it's working well. You still need to communicate with the other players so we've been playing together over Zoom in our tests, but I'm also planning to include more integrated video/voice chat via Bunch.

Spaceteam still uses GameSparks Real-Time Multiplayer for remote play but they no longer offer the service I was using (I was grandfathered into their old "Indie" plan) so I really need to give it some love and convert it over to Photon.

For local networking I'm still planning to use Hype but the pandemic delayed my integration and it's now a lower priority (at least until we can play together in person again).

Monetization ๐Ÿ˜ฑ

Since I'm building this game on contract with another company we're interested in actually making money with this game, which is something I don't have much experience with ;) Spaceteam was never designed to make money. Even though the game and its various spin-off projects have helped me stay indie for almost 10 years now (!), the in-app purchases from the mobile app only make about $15,000 (Canadian) per year. Which I still find pretty amazing but it's not quite enough to support a family. If you're interested, the rest of my income is made up of board game royalties, Patreon support, occasional contract work, andโ€”sometimesโ€”withdrawing money from my retirement savings at a penalty... (yes I know I'm lucky to have retirement savings at all, I was able to save some money while working at Bioware for 7 years)

So anyway for Project M we're consulting with some monetization experts, who are helping us modify the game design and will help us with "Live Ops" (which means keeping the game alive and kicking after launch, with special events, new content, etc).

I'm pretty confident that the base game will still be free, but we'll spend more attention on things we can offer to improve the experience while still respecting the player. I'm very wary of scaring people away with traditional F2P tactics which are often exploitative and insulting to the player.

Also... I'll be sure to include some special rewards for Admiral's Club members :) ๐ŸŽ–

Incidentally, Sara and I have both been enjoying the game Hades a lot recently, and I found it interesting that they use a bunch of techniques that seem to come from Free-to-Play design and yet it's a standard premium game with no in-app purchases at all.

Useful tools I've discovered

  • Stateless: An easy way to write hierarchical state machines in C#
  • SRDebugger - I used to use the excellent LunarConsole for on-device logging and debugging, but I'm finding this tool even more useful!
  • JSON.Net: Handy JSON parsing library. Better than Unity's built-in JSON support.
  • Localazy: Nice (and inexpensive) crowd-sourced localization platform. I'm finally upgrading my Spaceteam localization process which until now has been 20+ languages in a big Google Sheet!

Game Giveaway!

Here are some more Steam game keys, if you want one just post a comment or email me at henry@sleepingbeastgames.com

  • ๐ŸŽ Baba Is You
  • ๐ŸŽ Hyper Light Drifter
  • ๐ŸŽ BioShock Remastered
  • ๐ŸŽ Spelunky
  • ๐ŸŽ Kerbal Space Program
  • ๐ŸŽ Jackbox Party Pack 4
  • ๐ŸŽ FTL
  • ๐ŸŽ System Shock: Enhanced Edition
  • ๐ŸŽ System Shock 2
  • ๐ŸŽ Broken Age
  • ๐ŸŽ Elite Dangerous
  • ๐ŸŽ MirrorMoon EP
  • ๐ŸŽ Neo Cab
  • ๐ŸŽ Regular Human Basketball
  • ๐ŸŽ FRAMED Collection

Project Y

For those of you still reading, the other reason I've been slow to update the blog is that... I have a new baby! Her name is Yoshi. She is now 4 months old and her head size is in the 86th-percentile. Here's a picture:

Baby Yoshi

Space out!

~ Henry


What's Happening?

What's Happening?

๐Ÿ‘‹ Hello. It's been several months since my last confessionโ€”I mean blog post. I usually try to update more frequently, but... well, you know. Things are happening.

Spaceteam VR is out now!

Spaceteam VR Trailer

Get it! Play it! Share it! Tell your spacefriends โค๏ธ The team at Cooperative Innovations have been working hard for years on this game and it's surreal to see it come to life.

It works on most PC VR headsets like the Vive, Oculus Rift, and Oculus Quest. PSVR is coming a bit later.

There are several ways to play:

  • Full VR mode with up to six players
  • A mix of VR and mobile devices (eg. 1 player in VR and 4 other players on phones). You might need to bring-your-own-voice-chat if you're playing remotely.
  • You can can also play single player with robots! ๐Ÿค–

Quarantine Spaceteam

Even though Spaceteam is normally local multiplayer, in these dark times of social distancing it's even more important to work together, so there are a couple of ways you can still play:

  • Internet mode: using the blue button at the top-left you can switch to Internet mode which will let you connect to players around the world. Just pick a Team Password together and make sure you all enter the same one. It's like a "room code" in other games. When you use this mode you will have to bring-your-own-voice-chat (eg. Zoom, Skype, Hangouts, Jitsi) so you can hear each other.
  • Bunch: Spaceteam has an official integration with Bunch, which provides in-game video chat (you'll see little bubbles with your faces at the top of the screen). Just pick the "Bunch" option from the same blue button in the top-left. You'll need to download the Bunch app before you can play. Give it a try!

[๐Ÿ‘‰ If you're on Android and having trouble installing the latest update (v2.9.1) please uninstall/reinstall the app and it should work fine.]

Internet mode

Blabyrinth is on hold (for a bit...)

I haven't touched Blabyrinth for a few months, but not just for the obvious reasons. My productivity has certainly been affected by the pandemic, especially since we have an almost-3-year-old that now needs extra childcare. But my wife's parents have been helping out a lot so I've been able to work more than I expected.

However... the work I've been focusing on is actually a short contract project I've accepted, and it's taking most of my time. I can't give details just yet, so for now I'm going to refer to it as Project M.

Project M

I don't normally take on projects for other people, and I feel bad delaying Blabyrinth. But I'm excited about this idea and what it could become, and there's a bit of money in it, so I decided it was a good business decision.

It's another local-multiplayer game, so I'm working in my element and it can share technology with Spaceteam and Blabyrinth. If you like Spaceteam, you'll probably like this one too.

Even more Spaceteam

I've also been approached by no less than three companies who are interested in custom versions of Spaceteam for their platforms. One is with a team-building company, and two are ports to specialty game consoles/devices.

If I had a team and a budget then these are the kind of things I would delegate to other people while I keep working on new stuff. But it's just me. In the past I've said "no" to such things, but... it's been a while since I've been able to really save money, and with circumstances the way they are I think I'm going to take the offers. They will tie me up for a few more months, delaying Blabyrinth even more, but I should come out in a better place financially.

Just wanted to warn you all before I take the plunge!

Treats ๐ŸŽ‰

Since you've been very patient waiting for Blabyrinth, I'll end with some free Steam codes to give away. First come first served! Just let me know which one you want in the comments or by email (henry@sleepingbeastgames.com) and I'll send you a code.

Space out!

~ Henry


Back to Work

Big Money

I'm a bit late posting about this but back in November at the MEGA+MIGS festival here in Montreal Blabyrinth won another award, for Innovation! And to my surprise it came with some money which was presented as a GIANT NOVELTY CHEQUE! Thank you so much to MEGA+MIGS and Ville de Montrรฉal (the award sponsor)! โค๏ธ

Giant Novelty Cheque

Not quite Blabyrinth

I was hoping to have a Blabyrinth beta ready for Christmas but it didn't happen. I'm eager for people to play but it doesn't make sense to push it out before it's ready or the feedback I get won't be as useful. Don't worry, you'll hear about it when the beta is ready.

I did make some progress on cleaning up some core systems, and I'm halfway through adding a new low-level system to make the game feel snappier called "Client-side Prediction". I might be using this term slightly wrong but it's close enough.

Client-side Prediction

In networked multiplayer games like this if the network connection isn't fast or consistent enough then there will be a delay between touching the screen and seeing a result (like your character moving). It's usually only a few milliseconds but if it gets longer then it becomes noticeable and frustrating. This is generally known as "lag" or "high latency".

In Spaceteam lag doesn't really matter because everything is so chaotic and you don't know what the other players are doing. Also Spaceteam sends very little data. So I got away with it. But Blabyrinth sends more data on the network and you can see more of what's going on so delays are more obvious.

Blabyrinth and Spaceteam use a "Client/Server" network architecture (as opposed to "Peer-to-Peer"). This means that one player's device (the Server) is more important than the others and considered to have authority over the game state. When you tap on the screen in Blabyrinth your character won't actually move to that spot until the Server gives you permission to move. The sequence of events looks like this:

  1. ๐Ÿ‘‰ Player taps on floor
  2. ... Player's device (the Client) sends message to Server that we want to move
  3. ... Server decides if the move is allowed
  4. ... Server sends message back to Client that the move is allowed
  5. ๐ŸšถCharacter moves to tapped position

If the delay from steps 2โ€“4 is more than half a second then the game feels sluggish, or the player doesn't think the tap was recognized so they tap again which can be confusing if the second tap does something else. So to improve this I'm changing it so that the character moves immediately after the tap, before getting permission from the Server. The Client is "predicting" how the Server will respond (hence Client-side Prediction).

Here's what happens now:

  1. ๐Ÿ‘‰ Player taps on floor
  2. ๐ŸšถCharacter moves to tapped position ( โฌ… prediction! )
  3. ... Client sends message to Server
  4. ... Server decides if player can move
  5. ... Server sends message back to Client
    1. โœ… if the move was allowed: Great! We saved some time.
    2. โŒ if the move was not allowed: FIX IT!

The complicated part is the "FIX IT" step. It means the character moved when they weren't supposed to and so we need to quickly move them back to their previous position. This can look awkward depending on the situation. For example, the character is supposed to be trapped in a cage but they start to move through the bars and then quickly snap back inside.

Luckily the client predictions are usually accurate. Even though the clients aren't the authority, they still know most of the game state so they can make very educated guesses. And the occasional glitchy movement is a small price to pay for a responsive interface with immediate feedback.

I used character movement as the example here but this Client-side Prediction change also applies to other actions in the game that have to wait for Server confirmation. It's a broad change that touches lots of code which is why I was waiting until after all the festival demos to do it.

Spaceteam Android crash

The latest version of Spaceteam (2.8) on Android is causing some issues on startup. I haven't figured out what's causing the crash yet but if you go into App Settings (in system settings) and clear the cache and data for Spaceteam it should work again.

Mailing List Transition

I talked about wearing many hats in my last post. Here are some more hats! I would love to spend all of my time doing design & programming but I also have to maintain my mailing list, website, blog, and forum. I used to use MailChimp for sending newsletters but it's getting very expensive now that I have more than 2000 subscribers (> $100/month) so I needed to find a replacement. I finally decided on Sendy, which is self-hosted for a one-time fee of $59 (plus a $5/month DigitalOcean droplet that I'm also using for other things).

It took me a few days to get it running properly because I had to find another way of generating nice HTML emails (I settled on Topol.io) and then figure out how to personalize the messages with member-specific IDs, rewards, etc.

I finally got it working, so that's one less thing to worry about, but the time spent doing little things like this all adds up.

Is the Hype real?

Another task taking me away from Blabyrinth is a potential opportunity with the folks at Hype Labs to use their mesh networking system (called the Hype SDK). If it works for my needs it will solve a lot of my networking issues and I can rest easy knowing that a team of experts is maintaining and improving this technology so I don't have to. This is one hat I will gladly give to someone else.

I'm hoping it will work fine for Spaceteam and Blabyrinth but they don't have a Unity plugin for Hype yet so in order to test it properly I have to build one myself (for iOS and Android). I'm in the process of doing this, and I'll soon find out if it's worth it!

~ Henry