Baba Is You is a push-block puzzler in which words change the rules of the game. Push a
baba block next to an
is, and then push a
you on the end, and now you’re controlling a four-legged, long-eared critter. Add another rule,
flag is win, and you can beat the level by moving Baba on to the flag.
Baba Is You is therefore a game about creating game logic from language. And it’s a remarkable example of the thorny mechanical and metaphysical problems that arise out of trying to encode meaning into words, and then words into a game. These are some that caused its maker, Arvi Teikari, his biggest headaches.
Baba Is You began life as a game made for Nordic Game Jam in April 2017. Teikari had the idea of a turn-based puzzle game with a block of ice and a block of lava. The lava could melt the ice, but you could stop the ice melting by somehow stating ‘ice is not melt’.
“So words were there from the beginning,” says Teikari. “There would be objects with inherent properties, like ice would be meltable by default, and lava would be hot. Then you’d remove those qualities with this
But though part of Baba Is You’s founding concept, Teikari decided to dump
is not for the jam version of the game because it seemed to only serve the function of disabling rules.
”That’s not a very interesting thing to do with a word,” he says. After all, if you have a rule
baba is you, all arranging
baba is not you elsewhere would do is to simply negate it. Later, though, as he began to make the commercial version of Baba Is You, he realised that
not could have wider use in expanding the game’s logic.
But conditionals, the class of words in which
not fits, caused all manner of headaches. “Like
on, such as
baba on grass is you, where Baba becomes you only when standing on grass.” Since the full game’s release, he’s had to issue various fixes to get the game to understand things like
baba not on not rock is you.
is not does exist in the jam version, but it doesn’t work. To see it, press \ or | on a UK or US keyboard to access its level editor mode.)
Some obvious Baba Is You meta-level tomfoolery stems from Teikari’s early choice to let you control the words themselves with
text. “So you can say
text is you and control the words in the game. That was a very logical meta-level addition to the game,” he says.
But even more fundamentally than that, Baba Is You’s deep playfulness with words is a result of his decision to detach objects from having any inherent rules. Along with his decision to ditch
is not during the jam, he also decided not to give ice inherent meltability and lava inherent heat. Instead, rules set by words would define these qualities.
This means that objects - rocks, walls, Keke, Baba - are all just visual objects, and otherwise entirely interchangeable with each other. “So there’s no reason why I couldn’t add as many as I wanted, and in any theme I wanted, because they’re not important to the mechanics.”
One of the words that was featured in the original jam version but not in the final release is
slip. The idea was that since he’d included
ice, Teikari figured that he could have slippery surfaces.
slip caused a lot of problems. Certain parts of Baba Is You’s code are particularly complicated. Its rules system, which governs the way it interprets arrangements of words in the level and implements them, is one. The other is the movement system.
Movement is Baba Is You is tricky because turn-based games have to be very precise about the order in which stuff happens. And those in which you can push objects around are especially tricksy. Baba Is You, however, is a game in which a object can push another object, so it’s even more so.
Teikari, therefore, had to think about what happens when two objects that are approaching a pushable object from different directions, and when there’s an object on a teleportation pad that’s also about to be pushed off it.
“Even now there are several situations where I couldn’t resolve it logically, I had to leave it arbitrary,” he says. Other games, such as Deadly Rooms Of Death feature a turn order indicator, which makes clear to the player the game’s arbitrary rules, but Teikari didn’t want players to have to engage with something so technical in Baba Is You.
“I wanted to try to make it so that as much as possible, if two things seemingly move at the same time, they actually do. That posed a lot of trouble.”
The idea for
slip was that it would force any object that began moving on a slippery surface to only be able to continue in that direction until it either hits a wall or arrives on a material without the
slip property. But making sure the game slips things in the right order was “surprisingly difficult”. What if an object is about to slip into a tile that is also about to be occupied by another slipping object? Which moves into the tile? Do they continue moving? How can the player intuitively grasp what happened?
Teikari decided not to pursue it. “Early on, the movement system was way too fragile to support that kind of word, but I’m considering maybe trying to re-add
slip, now the system is more robust.”
Teikari was interested in adding a word that could rewind objects’ movement, so that if you have
rock is push, move it around, then set
rock is back, the rock will move backwards through time.
“When I thought of words, a big part was looking for ones that sounded cool? So
back was an exciting word to add, but when I implemented it, you can probably guess that it was kind of difficult.”
Aside from the bugs and logical weirdnesses and corner cases,
back also tended to introduce puzzles that involved too much busywork -moving and then rewinding - to solve them. And a tester pointed out that if you make a mistake, you have to do it all again.
But Teikari couldn’t leave
back alone. He tried designing levels that minimised the busywork, and then encountered a new problem. Say you have a key object and a door, and you push the key into the door, opening it and destroying the key. Then you state
key is back.
The logical result is that the key is retrieved from limbo. But for the game, it would mean creating a system by which it can remember that things once existed so it could put them back again. “That turned out to be kind of difficult.”
Still, though, Teikari isn’t quite done with it. “The idea is too cool”, he says. “I will probably try it again but it’s on hold right now.”
“Probably the biggest example of having an idea and not implementing it because of the work involved was
if,” Teikari tells me. “But I still really want to say
baba is you if rock is push.”
Some of Baba Is You’s words caused him to add vast arrays of additional code to existing systems to account for the ways they’d interact.
if would also mean adding a whole new chunk of code to a rules system that Teikari already finds big and scary to work with.
back, Teikari can’t stop thinking about
if. “It’s been on my mind for at least two years now, and I never gathered the courage to actually try adding it. I heard that a fan modded in a working
if conditional, which is pretty cool. There are a lot of people who are way better coders than I am, so it’s nice they do it, but I’m also slightly envious.”
The first idea Teikari had for
empty was that you could say
baba is empty and make it disappear, and say
empty is baba to make lots of Babas appear from empty spaces.
But that meant having to thinking about some deep shit. “What is the internal logic for emptiness?” Teikari says.
Since the early game didn’t have a concept for emptiness, he had to write code for everything that deals with
empty is push. “It turned out to require a lot of extra code, because I need to make checks not only for objects being pushed but also for empty air. It was very satisfying when I got it working.”
To get a sense of the complexities behind
empty, consider a tile that’s empty. When something moves into it, the emptiness goes away. The game jam version, didn’t work like this: if you say
empty is win, you win if Baba moves into an empty space.
“A tester pointed out that this shouldn’t happen,” says Teikari. Because as soon as Baba enters the empty space, it’s no longer empty. So the only way to win when
empty is win is to state
empty is you.
“So that was another, fundamental design decision that took a lot of time to get figured out,” says Teikari. “Actually, this also led into a design problem between how different words interact with each other.” The concept of not being able to stand on empty tiles highlighted the fact there are two ways you interact with blocks, depending on their properties.
For example, if
rock is push, Baba can push a rock. But since Baba and a pushable rock can never inhabit the same tile, pushing is something that happens one tile away from the rock. And yet, if you state
rock is win, you only win when you move on top of the rock.
I wonder if having to sink so deep into these weird metaphysics drove Taikari to distraction. It didn’t. “I have to admit that Baba Is You is the most fun I’ve had working on a game project ever,” he says. And he’s happy that the result of digging into its logical rabbit holes has resulted in a more robust system. “I get a lot of satisfaction from knowing that the game systems are robust and dynamic.”
Robust enough to support its upcoming official level editor, which is where Baba Is You’s words will face their toughest challenge yet.