Baba Is You

From Esolang
Jump to navigation Jump to search

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 rule
  • Assign multiple rules to a noun
  • Assign a noun to be multiple nouns or properties
  • When 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