Baba Is You

From Esolang
Jump to navigation Jump to search

Baba Is You is an puzzle video game that appeals specifically to esoteric programmers. It was released in 2019, but an early demo version with much fewer features was known in 2017.

Code and data in Baba is You is layed out as objects on the same two-dimensional level grid. Baba is you allows writing powerful programs, as evidenced by someone having implemented Conway's Game of Life in it.


Baba Is You is a puzzle game where the rules you have to follow are present as blocks you can interact with. By manipulating them, you can change how the game works, repurpose things you find in the levels and cause surprising interactions!

Baba Is You is a special variant of the Sokoban game, where the rules are present as pushable blocks in the game. In order to win, the player(usually Baba the rabbit) must reach the winning object (the object specified by the rule "is win").



This is the most significant word in the game. As long as the rules are not changed, the word "is" will assign the property to an object.

Noun1 IS Noun2 will replace all appearances of Noun1 to Noun2 immediately. If the rule is interrupted (the blocks are not in a single row/column), the action will not be cancelled. The object after the transformation will not retain any properties before it transforms. E.g. Baba Is You -> Baba Is Crab will transform Baba to Crab; Crab Is You allows the player to move as Crab.

Noun IS Noun (the two nouns are equivalent) will prevent the conversion of the noun. This will overload all conversions of the noun, but it will not cancel the previous conversions.


When combined with IS, this prevents the noun from getting a property. If the noun is mentioned by this rule, the noun will never get the specified property even if another rule provides it. One NOT will overload an arbitary number of rules.


Noun1 HAS Noun2 will make the destructed Noun1 generate Noun2.


Combines two words(nouns or properties) together, and apply both. I.e. Noun AND Noun AND Property, or Noun IS Property AND Property.


The behavior of Noun1 ON Noun2 is similar to single nouns, but it only applies to rules where Noun1 and Noun2 overlap.


The Object that specifies the player. Other objects will only be triggered when they are connected with [You]. There can be multiple objects triggered by this. If there is not a [You] and there is not a conversion that creates one, the player is frozen, and you have to undo or restart in order to continue.

As an exception, if nothing IS You, pressing the arrow keys will press every object in the column, if there is space in the opposite direction, then presses other interactions with [You]. (e.g. You may not collect [Win] when you are nothing.)


Wins the level if this overlaps with any of the [You] objects.


Avoids other objects from crossing it. These objects will not overlap.


When the player moves to the nearby position to the position of the object, the object backs away one position from the pusher. These objects will not overlap.


If this object overlaps with any other object, the other object and the object itself will be destroyed.


If it overlaps with another object or is blocked from moving, it will destroy itself.


Destroys any [YOU] touching the object, and does not destroy other objects. In contrary to nouns, if there exists other [YOU] 's, this wil not immediately fail the game.


Spreads vapor, and it has no other effects except for interaction with the object below.


If this overlaps with [Hot], it will be destroyed.


This tries to go down until it can't go down anymore.


Any object overlapping with [Tele] will be teleported to the other same kind of [Tele] object. If more than two of same kind of [Tele] object exists, destination will be randomly chosen from them.


[Float] will never be seen as overlapping with another object that is not [Float]ing (and vice versa), even if they are in the same position. Note that pushing will not be affected by Float.


If this overlaps with any [Shut] object, it will destroy itself and the overlapping [Shut].


It has no other effect other than interacting with the object above.


Shifts overlapping object along [SHIFT] object's direction by 1 cell. Shifting is done simultaneously so object from multiple direction that cannot overlap can be overlapped. [SHIFT] is accumulative so [BELT][IS][SHIFT][AND][SHIFT] makes shifts overlapping object along [SHIFT] object's direction by 2 cell.


Infinite loop

     [BABA][  IS][WORD]
Baba [  IS][ NOT][WORD]

Here, words are enclosed with brackets and objects are not enclosed with objects.
Another infinite loop:

Baba [  ON][BABA][  IS][WORD]

Turing completeness

If Baba Is You is played on infinite size, it is basically Turing-complete, since it can simulate Conway's Game of Life.

External Resources