Trending
Opinion: How will Project 2025 impact game developers?
The Heritage Foundation's manifesto for the possible next administration could do great harm to many, including large portions of the game development community.
Machine Yearning is all about trying to convince machines that you aren't human, doing so by carefully navigating captchas to match shapes with nonsense words and then recall them later.
Game Developer spoke with developer Daniel Ellis of Tiny Little Keys to talk about its origins as a game where players make up the rules as they play, how the game creates memorable words out of "nonsense," and the nuances that went into making challenging puzzles out of shape-word combinations the player creates.
Game Developer: Machine Yearning is about humans trying to get robot jobs by passing captcha tests designed to weed out fleshy applicants. What inspired the creation of this game? Where did the idea come from?
Daniel Ellis: A friend and I were doing a game jam, and strangely enough, we both independently had an idea for a game where the user was creating the rules for the game as they played. Mine wasn't very developed, but my friend had the idea of a captcha system almost exactly like the one that ended up being the game.
What thoughts went into designing the shapes that players could use to stand in for words? How did you design many different shapes so that they would be distinct and memorable?
Ellis: The shapes are randomly generated during the game. The overall idea is that as the game progresses, the shapes become more complex and, thus, harder to memorize. Simpler shapes seem to be easier to remember, as do the ones that are more vertically symmetrical. I play with this a bit as the game gets harder, purposefully making the shapes more complex and more asymmetric.
Likewise, you had to design a whole nonsense language for players to work with. How did you design words in order for them to be memorable? How did you design nonsense words that still felt like words someone would use?
Ellis: Ooh, now we're getting into the secret sauce. There are actually two distinct algorithms mixed together here, and then we layer on some other logic for traditional memorization techniques later to try to help make it easier for the player to learn.
The first algorithm is very simple and is one that I was strangely interested in as a kid: alternating consonants and vowels back and forth. I used to enjoy using this method to come up with cool-sounding screen names and character names for video games.
The other algorithm is one I borrowed from a Usenet post nearly 20 years ago. It's close to the technique mentioned above but with more of a Markov Chain bent to it. In Machine Yearning, I add one little twist: "training" this algorithm based on two completely separate word lists, one for adjectives, and one for nouns. The adjectives are used for the colors, and the nouns are used for the shapes. The hope was there would be a subtle feeling that the color words were "descriptors" while the shape words were "objects."
For the decision on how to present the words, I wanted to use some of what I knew about memorization techniques. One of the most basic ones I'm aware of is spaced repetition. In initial testing, one thing that felt really unfair was defining a word and it not showing up again until much later in the game, at which point you'd already forgotten it.
To get around this, the game now presents a word very quickly after the player defines it, slowly backing off more and more as they get it correct, essentially reproducing Anki-style spaced repetition learning. The actual implementation is pretty simple: a weighted random algorithm, with the weight adjusted when the player gets the answer correct.
The word generation adds a nice difficulty knob to tweak as the game goes on, with the words getting more complex as the difficulty goes up. Although, in my experience, if you're wise about how you use the words, it can be a gift rather than a curse. The word "agnomecoffity" might seem like absolute gibberish, but since it's so long, I can choose to mentally grab the "coffity" part and associate it with a shape that looks like a coffee cup, and that works pretty well!
Once players have identified names and shapes, how did you design puzzles to trip them up using this information? How did you work to make these puzzles challenging while still feeling fair?
Ellis: These are really great questions. At its core, there are a few simple difficulty knobs the game tweaks as you enter harder stages: how quickly the timer goes down, how complex the shapes are, how complex the words are, how many options there are to choose from, and the ratio of "verify" rounds to "define" rounds, to name a few. These are all fairly obvious, but there's one that's a bit less intuitive.
In the original game jam version, we had planned to make more definition options than just shape and color, such as the number of objects and their physical relationship to one another (e.g. "above", or "to the right of"). On the surface, it seems like adding more of these would make the game harder, but if you present them at the same time, it actually makes things easier!
As an example, going back to just shape and color, let's say a player was presented with a series of colored shapes, and they were confident about the meaning of the color word. This would allow them to eliminate a large number of options from the board, leaving only a handful of shapes, thus making it even easier than a shape-only round.
Accounting for this is nontrivial because now simple algorithms for choosing random shapes or colors don't work. There needs to be "trick" answers—ones that are similar to the correct answer in shape but not color, or color but not shape. The appearance of these trick answers can't be too predictable, though, or else the player could intuit the correct answer just by looking for patterns.
This was a problem in earlier versions of the game: if a shape was repeated multiple times as a "trick", there was a good chance it was the correct shape, and if a color was repeated multiple times as a "trick", there was a good chance it was the correct color. Combine the two, and you'd have the answer!
The current version handles this much better. In some rounds, you might see repeated shapes and colors, with some or none of them being the same as the correct answer, making it much harder to guess what's correct just by looking at the answers independent of the words. Put another way: there are a lot more convincing red herrings.
The other option we have in every round for incorrect answers is familiarity. In general, the more incorrect answers that have shapes and colors the player recognizes (as opposed to random ones they haven't seen), the harder it will be. As the game progresses, you're far more likely to see these familiar-but-wrong answers, letting you rely less and less on simple recognition.
One funny side effect of this was a couple of early playtesters found themselves getting every answer correct on the first level while simultaneously saying, "I have no clue what I'm doing!" All they really were doing was picking the shapes that looked familiar, which works in the earliest stages.
So, we have all of these different ways to make the game harder, but there are a couple that I felt ultimately didn't feel great: the "define" round's time and the "define" round's number of answers.
The "define" round is really consequential since the player has to live with the choice they make for the rest of the game. The game is hard enough as is, and some players wished the "define" round didn't have a timer at all. I didn't want to eliminate it entirely since it keeps up the tension and pace of the game, so I decided that keeping the "define timer" the same regardless of difficulty was a good balance, especially considering the presence of power-ups that give you more control over it if you need it (e.g. skipping a round, deleting a word, or slowing down/stopping the timer).
For the "define" round's number of answers, as the difficulty of the game progresses and we add more answers to the "verify" rounds, making the game harder, we simultaneously add more answers to the "define" round, making things a bit easier. It doesn't 1:1 counteract the increase in difficulty—which wouldn't make much sense—but it hopefully gives the player a sense that at least the most stressful parts aren't getting worse.
What thoughts went into the game's presentation? How did you give it a visual presentation while keeping things clear and precise enough that visuals did not get in the way of the language-identifying play?
Ellis: From the beginning, I had a strong vision in my head of retro mixed with modern. I didn't want to force everything to be on a pixel grid, and I liked the idea of using more modern things like glow and animations that weren't on the pixel grid and sound and music that had some retro elements but felt high-quality, clean, and modern.
At the end of the day, the main driving force was: what do I like? When I first spoke with a pixel artist I really respect, Adam Younis, to get advice on this, he was surprised since this wasn't a standard style for mobile games. And I totally get it. I could picture this looking completely different—more simplistic and clean, for example.
That being said, I would have found that completely uninteresting to work on, so it wasn't an option for me. I had to consider my own personal motivation levels, and at the end of the day, I just wanted to make a cute pixel art robot, put him in a scene, and make music that supported that. Trying to grind through an aesthetic I wasn't passionate about was a non-starter.
In terms of keeping the design from getting in the way of the gameplay, I tried maximizing the size of the answers while keeping them where I hoped the player's thumb would be. I wanted to keep the most important interaction elements centered so it would work equally well for left and right-handed players.
The "getting in the way" element you bring up is a good one because there's one difference between this and the game jam version: you're not explicitly told in the game jam version whether you're in a definition or a verification round, whereas in this game you are. Initially, I just had a word at the top indicating which round you were in, but for some players, this wasn't enough. So, I also changed the background color of the screen. For some players, this still wasn't enough, but I stopped here since I didn't want to clutter the presentation too much.
I also threw in a few things that I'm sure 99% (100%?) of players will never notice, like the steam rising from the coffee cup and the clouds outside the window slowly drifting. I did this early on in the game's development when it absolutely wasn't what I should have been working on, but now that I look back, I like that it's there, and I know if I had waited until the end, I would have been out of energy and probably just wouldn't have done it.
Also, what thoughts went into the sounds and effects when players do something in the game? How did you make clicking on captchas feel appealing through sound and effects?
Ellis: Lots of little details and variations for both the UI and the sound effects that (hopefully) work well together.
I'm not really a UI person, but I found it really fun to rabbit hole into animations and try tweaking them this way and that. For instance: there's a slight rotation when the selector moves. How much of a rotation is too much? How much is too little? What happens if I always rotate it counter to the direction it's moving? Should the highlight particles move perfectly in sync with it or drag behind slightly? What easing should be applied to the movements? How does making the selector scale up a bit when you click feel? Should it be really quick on the scale-up and slow on the scale-down, and vice versa, or symmetrical?
And on the sound effects side, there's a lot of layering, variation, and reaction to the game's state itself. Every time you answer, the game determines a score based on how quickly you answered. Based on that, more exciting layers of sound are added to the submission noise, hopefully giving the player a bigger burst of excitement when they do better. And all of those layers are varied to keep it from sounding stale. I also wanted the effects to have a lot of crispy high end to make them more satisfying. Some of them are recorded from around the house, and my pet parrot makes a cameo in there too.
Oh wow, I almost forgot: I put painstaking effort into making the robot dance in sync with the song and making sure it stays in sync as the game progresses. Way too much effort. But like the coffee steam and the clouds, it was in that early phase of the game development where that seemed fun to work on, so I did it.
A lot of this is so subtle most players won't notice exactly what's driving one of the most consistent pieces of feedback I received: it's very polished.
This game was originally created for Ludum Dare. Can you tell us about any other changes you made to it for this release?
Ellis: Well, for one, this is essentially the third major version of the game. The code for the game jam was a complete mess. This game seems, on the surface, like it would be fairly simple, but I can assure you it's more complex than it seems to implement, especially in a couple of days. After the game jam, we talked about launching a full game using Adobe Cordova, so I rewrote it to make it easier to understand, but that project ended up getting scrapped. Thankfully that rewrite made it easier to rewrite for the third time when I brought it into C#/Unity.
Beyond that, there's a showing of whether the player is on a "define" or "verify" round, as well as all of the audio and visuals. I was considering keeping a version of the original song from the game jam since it was rated so highly, but I ended up creating all the music from scratch.
There weren't multiple game modes or multiple levels at all, no power-ups, no hats, and all of the difficulty scaling, word generation, and shape/color choice were significantly different.
So yeah, I guess it's extremely different! Kind of a Ship of Theseus at this point.
Machine Yearning offers some power-ups to help players throughout the game. What ideas went into designing power-ups for such a game? How did you create tools to help the player with your puzzling gameplay?
Ellis: I really wanted to give the player more choice. The game was already brutally hard and you really only had one choice at every round: the answer. If you didn't know it, you were completely out of luck. I wanted to give the player a feeling of agency; if they lost on a particular round, hopefully, there'd be a chance they'd remember a power-up they could have used better, or they'd have an idea of what power-up they'd rather take with them into the next game.
I really like roguelikes, so that was a significant source of inspiration here. I have no clue how often roguelike elements are in memory/language games like this, but the idea of mixing the two seemed cool to me.
Overall, I just wanted a way to counterbalance the difficulty in the game in a way that felt like it would add replayability. Some of the most powerful power-ups are unlocked later, so if you're having trouble beating a level, you can always work toward unlocking something that will make things easier.
The game is also filled with many playful unlocks to encourage long-term play. Can you tell us about how designed fun little things players could work toward? How did you design the ways players would unlock them to help keep players engaged?
Ellis: I really wanted to give players both an aesthetic and gameplay experience that varied, hence the unlockable hats and themes as well as the powerups. In an ideal universe, even a player that wasn't great at the game could keep playing at a difficulty level they felt comfortable at to continue unlocking goodies and move on once they became more skilled or their newfound power allowed them to.
You May Also Like