Momo has a computer monitor for a face. Let’s investigate how to bring that to life.
Each robot in Stray has a relatively low-resolution monitor on the front of their head displaying a simply rendered face, made up of a pair of eyes and a mouth. They’re only a little removed from animated emoji. When thinking about how the final costume would look, getting the face right was my biggest concern. Painting or printing a static face wouldn’t do the character justice, so from the very start I wanted to integrate a real display of some sort. It would need to be self-contained, battery powered, and light enough to mount in the front of the mask without putting strain on my neck when wearing it.
Initially I investigated using a tablet for Momo’s face, and even secured an outdated-but-working iPad from work to experiment with. I felt that this didn’t fit the game’s 80’s-inspired technology aesthetic though, so I searched for other options.
My research led me to Adafruit, a company known for making hobbyist-level electronics parts and kits. They have a range of LED matrix displays in various configurations, as well as project boards to run them. Apparently, they’re the usually tiled into large advertising units but run perfectly well individually too. I bought a 64x64 LED grid with a 2mm pitch (the gap between each diode), which works out to be 128x128mm.
The perfect size.
To power it I also picked up Adafruit’s Matrix Portal board, that can be programmed in Arduino or CircuitPython. I’d not used either before but picked CircuitPython as it has less of a learning curve for me (I write ruby at my day job, so python isn’t too big a jump).
With the hardware chosen, I wanted to build a basic proo-of-concept to prove that this setup was suitable for the task. I went looking for the graphics I’d be displaying. Going back to the game files, I found the sprites used for the various expressions Momo has. As luck would have it, they were already 64x64 pixels in size. Pretty quickly, with the help of a tutorial on Adafruit’s site, I was able to produce the following proof-of-concept: Two face animations playing in a loop!
As you can see, this version has green features and no background, but it wwas enough to convince me to commit to the approach and start fleshing out the details. In my next post I’ll explain how the code works, then fix the colours as well as add the voice and controls to change expressions.