Baba Is You
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 refer to in-game objects, like how
BABArefers to the white critter called Baba, and how
ROCKrefers to the brown rock.
Operators reside between nouns and properties - i.e
BABA is YOU,
isis the operator, defining that the noun
BABAis the property
YOU- or between other operators.
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
PUSHcan be pushed around by other objects.
Prefixes are placed before rules to (typically) conditionally affect a rule.
POWEREDwill only let the proceeding rule take effect if an object in the level is the property
SELDOMare RNG based, and will sometimes allow the proceeding rule to take effect.
Letters are... letters. Not too special, but can be used to form nouns and properties. Do note that
C L O C Kwill 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 are what makes the game functional in the first place.
||Defines a noun to be something else.|
||Used to do one of such:|
||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.|
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.
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.