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.

Descriptions

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").

Words

IS

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.

NOT

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.

HAS

Noun1 HAS Noun2 will make the destructed Noun1 generate Noun2.

AND

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

ON

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

YOU

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.)

Win

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

Stop

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

Push

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.

Sink

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

Weak

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

Defeat

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.

Hot

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

Melt

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

Fall

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

Tele

Any object overlapping with [Tele] will be teleported to the other [Tele] object.

Float

[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.

Open

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

Shut

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

Examples

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]

External Resources