Baba Is You

From Esolang
Jump to navigation Jump to search
This is still a work in progress. It may be changed in the future.

Baba Is You is an indie sokoban puzzle game developed by Arvi 'Hempuli' Teikari. First released itch.io in 2017 for the Nordic Game Jam. It was later fully released in 2019 a Steam game. Conceptually, it is a cellular automaton.

Levels

Levels in the game are a bounded rectangular space with unique positions for every "tile". Each tile is able to hold a finite amount of objects in its position, which by default are inert, including the bounds of the level and the level itself. The primary goal of a level is for any controllable object to exist on the same tile as any object that is defined as "WIN", which may also be itself. If an object is to leave the bounds of the level, it is immediately destroyed.

Any tile which does not have any objects on it implicitly has an Empty object in its place, which is subject to all the same rules like other objects.

Rules

Certain objects in the level, distinguished as "text", are able to define the rules that govern all the objects in the level. Text is parsed when nearby other text objects from left to right and top to bottom, and multiple rules are able to cross and overlap if the parsing rules allow for a valid statement. Rules typically apply immediately and unconditionally to all targeted objects, however can be scoped through the use of conditions.

The game distinguishes between six types of words.

Nouns

Nouns refer literally to all instances of the object they refer to, however may also refer to a general group of objects. For example, the noun "BABA" targets the character Baba, while "TEXT" targets every text object currently in the level, including itself.

Word Scope
ALL Targets all non-text objects within the level.
TEXT Targets all text objects within the level.
LEVEL Targets all level objects within the level, alongside the level itself.
GROUP, GROUP2, and GROUP3 Each target all objects with the respective GROUP# property.

Properties

Properties refer literally to the state an object can be in.

Actor(s) refer to any objects other than the current one.

Property State
YOU and YOU2 Allows the object to be controllable by the player using the WASD and arrow keys respectively.
PUSH Actors which move into the object will cause it to move in the direction that the actor entered from. If the object is unable to move, the actor will not perform its move.
PULL Similar to PUSH, any actors which move away from the object will cause it to move in the direction that the actor moved. Actors are only blocked when attempting to enter the object.
STOP Like PUSH and PULL, actors that attempt to enter will be blocked.
MOVE The object will move forward in the direction it is facing, turning around if it will not be able to.
SHIFT Any actors sharing the same tile as the object will be moved in the direction the object is facing.
RIGHT, UP, LEFT, and DOWN The facing direction of the object is turned to match the respective direction.
FALL The object will move as far as it can in the indicated direction.
NUDGE The object will move one tile in the indicated direction.
TURN The object's facing direction will turn one step in the indicated direction.
DEFEAT Any actors that are YOU or YOU2 are destroyed if they share the same tile as the object.
HOT and MELT Any objects which are HOT will destroy objects which are MELT when they share the same tile.
OPEN and SHUT Any objects which are OPEN will destroy itself and any objects that are SHUT when moving into them, and vice versa.
SINK The object will destroy itself and any actors with it when it shares a space with an actor.
BOOM The object will destroy everything in the tiles surrounding it, within a square that has a width and height equal to how many times the object is BOOM.
SAFE Prevents an object from being destroyed, excluding by way of exiting the level bounds.
FLOAT Any actors which are BONUS, BOOM, DEFEAT, END, HOT, MELT, OPEN, SHUT, SHIFT, SINK, TELE, WEAK, WIN, or acting upon it through EAT will not affect the object, unless it itself is also FLOAT with it.
PHANTOM Actors will not perform movement checks with the object, and is not targetable by SEEING.
HIDE The object appears invisible, and is not targetable by SEEING.
REVERSE The object will move in the opposite direction in which it is traveling.
AUTO Similar to MOVE, but only moves the object forward without turning. Applied to the level, it will not wait for user input before advancing one tick.

External Resources