Baba Is You

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.
== Introduction ==
Baba is You is a spin on the popular sub-genre of puzzles called "Sokobans", where the defined rules are modifiable, and anything can be redefined.
Objects in Baba is You are layed out as objects on the same two-dimensional level grid. The rules of the level (more commonly known as Text) are also laid out on the same grid, and define how objects behave.
When text parses correctly, it forms a "rule".
Text is split into six categories.
Nouns
Nouns refer to in-game objects, like how BABA refers to the white critter called Baba, and how ROCK refers to the brown rock.
Operators
Operators reside between nouns and properties - i.e BABA is YOU, is is the operator, defining that the noun BABA is the property YOU - or between other operators.
Properties
Properties define how nouns should behave. In the instance for YOU, any noun with that property takes in player input for movement, and any noun with the property PUSH can be pushed around by other objects.
Prefixes
Prefixes are placed before rules to (typically) conditionally affect a rule. POWERED will only let the proceeding rule take effect if an object in the level is the property POWER. OFTEN and SELDOM are RNG based, and will sometimes allow the proceeding rule to take effect.
Letters
Letters are... letters. Not too special, but can be used to form nouns and properties. Do note that C L O C K will refer to both the Clock and Lock objects if parsed correctly. This is true for other examples too.
Text in a level typically is formatted as so (left to right or top to bottom):
PREFIX NOUN OPERATOR (NOUN OR PROPERTY)
== Operators ==
Operators are what makes the game functional in the first place.
Word	Function
is 	Defines a noun to be something else.X is NOUN transforms X into NOUN.X is not X removes all instances of X from the level.Alternatively, X is X does not allow X to transform into other nouns.
and 	Used to do one of such:Assign multiple nouns to a ruleAssign multiple rules to a nounAssign a noun to be multiple nouns or propertiesWhen dealing with NEAR, NEXTTO, ABOVE, FEELING, etc., defines that the noun(s) affected must be (operator) multiple things.
not 	Negates the properties of an operator, sets the scope to be everything but the selected noun, defines a noun to never be another noun or property, as well as other smaller cases.
== Examples ==
=== Infinite loop ===
Note: This is not referring to infinitely repeating loops. This refers to a special case where the game attempts to parse (a) rule(s) that never stops looping.
An example of the setup which can cause the infinite loop is provided below.
 [BABA object] is NOT WORD
 BABA is WORD
Here, Baba is being defined as WORD (which allows Baba to be parsed as it's text counterpart). As soon as that happens, Baba is defined as not WORD, which nullifies the statement BABA is WORD, in turn causing [BABA object] is NOT WORD to be unable to parse, which means BABA is WORD can define Baba as WORD again, and so on.
No, the Halting Problem is not solved, the game just stops parsing after it notices it's looping a liiiitle too much.
 
== Turing completeness ==
Baba is You is able to simulate Conway's Game of Life using only 6 text objects, and 3 rules.
 ROCK not near ROCK and ROCK is EMPTY
 ROCK near ROCK and ROCK and ROCK and ROCK is EMPTY
 EMPTY near ROCK and ROCK and ROCK and not near ROCK and ROCK and ROCK and ROCK is ROCK
Given an infinite play-area, Baba is You can run anything, essentially making it turing complete.
== External Resources ==
* Baba Is You on Steam
* Word walkthrough
* UNOFFICIAL Baba Is You Wiki
Category:Languages
Category:2017
Category:Two-dimensional languages
Category:Implemented
Category:Self-modifying
Category:Turing complete
Category:Object-oriented paradigm