The level editor allows creating custom levels!
To start making a level, just click Edit Singular Levels... -> Create a new level (or click an existing one to edit it).
Editor Control Settings
Not yet implemented.
Enable Advanced Words
Some words don't appear in the premade object list that the editor has unless this is enabled.
TODO: List what words are only available when enabling advanced words
Enable Advanced Features
This enables the "Edit Levelpacks" option.
TODO: Does it enable anything else?
This can also be accessed with the tab button. To switch to an object, simply click on it.
The "Pick nothing" button selects empty space, which can be used to remove objects.
The "new object" button allows adding objects to the list. Simply click the wanted object in the list, and viola!
- Adding an object will also add its respective text, and vice-versa.
- Some objects are not present unless "Enable Advanced Words" is enabled.
If "remove object" is enabled, the next tile clicked will be removed from the list.
Allows searching for an object by name. Currently only works properly in the "new object" menu. Search is shared between the two menus.
The "Edit search" button allows changing the string being searched. "Remove search" removes the search string. Trying to search an empty string does not work, so the remove search button must be used.
All of the objects are also placed into tags. This feature allows filtering for them. Currently only works properly in the "new object" menu. Search is not shared between the two menus.
Searching for multiple tags will only provide objects that meet all of them.
Allows compressing a noun/text pair into a single entry in the object list instead of two. Currently does not work in the "new object" menu.
The scroll wheel can be used to switch between an object and its text.
If "edit object" is enabled, an edit menu will open for the next tile clicked.
This menu includes the visuals (0/8/16/24 for objects, and both colors for text, and all 3 frames of each) at the left, and also shows the object's name, ID, and type.
Changing the sprite allows selecting any object in Data\Sprites, or Data\Worlds\worldname\Sprites if editing a level pack.
Sprites take the form of name_num_frame.png, and should be 24x24. Frames 1, 2, and 3 must exist for all sprites.
|Animation style||Required sprites||Description|
|Directions||0, 8, 16, 24||Changes based on direction.|
|Animated||0, 1, 2, 3||Has an actual animation beyond the wobble.|
|Anim. Direction||0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27||Animated, and is based on direction.|
|Character||Same as above, optionally 7, 15, 23, 31||Same as above, can also use sleep sprites.|
|Tiled||All from 0 to 15||Connects to nearby tiles of the same name, level tiles, and the border.|
Objects that are not tiled use 31 and 0-3 when facing right, 7-12 when facing down, 15-23 when facing left, and 24-28 when facing up. Based on mod8 of that, 0-3 gives a respective animation frame and 7 is the sleep sprite.
"Character" changes animation frame every time they move, while the "animated" options change animation every move in general.
Tiled objects sprites are gotten by calculating the value where down is worth 8, left is worth 4, up is worth 2, and right is worth 1, and summing the values that it should tile to. (TODO: word more clearly)
Text have two color options. The active color is its color when in a rule. Available colors are based on the palette.
The z-level determines what gets drawn on top of other objects, with higher being drawn on top. This is an integer clamped to [0,20].
An text is named text_name. An object's name determines what it's called, both in letter spelling and the name shown in the pause menu.
Nouns' text refers to the object named the same as it. All non-noun text will only function if spelled the proper name. Letters will spell words based on their name.
Having more than one object with the same name is a bad idea and will cause issues with undoing.
The text type refers to where things are able to form a rule. Things may still function properly if set to the wrong texttype (eg. property as type 0); however, buggy behaviours will likely occur.
The "BABA" "IS" "YOU" buttons can be used to easily set text type to 0, 1, or 2 respectively.
|Text type||Used for|
(object036) will accept things with texttype 2. (object116) will accept (based on name, not slot). If the slot these objects are in are changed, the object it is changed to will keep these parsing abilities. If these objects are moved to a different slot, they will not have these parsing abilities.
There are three layers, switchable with the L buttons at the top right. To stack objects, they must be placed on separate layers. All placement will only occur on the current layer.
Right clicking will change the held object to the object on the space clicked on that layer (aka a block picker). Switching objects otherwise is done through the objects menu.
The scroll wheel can be used to switch between an object and its text.
The objects menu has additional settings, which are used to determine how objects are placed.
The large arrows can be used to rotate the objects being placed. Pressing arrow keys on the keyboard will also do this.
In all modes except freeform and flood fill, releasing on the same tile as the clicked tile will cancel placement.
|Freeform||Anywhere left click is held down, objects will be placed.|
|Line||Draws a line from the center of the clicked tile to the center of the released tile, and places an object on every tile that line reaches.|
|Rectangle||Draws a hollow rectangle from clicked location to released location.|
|Filled Rect.||Draws a filled rectangle from clicked location to released location.|
|Flood Fill||Clicking a tile will change all tiles of that slot orthogonally connected to that tile on that layer to the selected tile.|
Levels can only be placed in level packs. They can only be placed in freeform mode. Existing levels can be edited by clicking a level (provided you're on the right layer). Otherwise, a prompt appears when placed.
Levels cannot interact with normal objects, and normal objects cannot interact with levels. (They can be treated as a different set of layers.)
The L3 button does not work when editing levels. There is also a special layer that is gone to when levels mode is enabled, and does not have a layer button.
Selecting a level opens a similar menu to that in the main editor. The selected level defaults at the current level.
Two colors can be set (TODO: What are the colors actually used for?). Left click sets both, while right click only sets the one with grey outline.
For information about state, see LEVEL.
The visual selector's outer arrows change the value by 10. The special icons can be configured in map settings > map icon setup.
See Paths to see how paths work. The gate count's outer arrows change the value by 5.
The object of placed paths is the object that is being placed of normal objects. The sprite in the editor also changes if it is a gate and what the gate is set to, but does not change based on its object.
When hovering over a path, the data of the path is displayed where the level name normally is.
These are not implemented yet, however they share many properties with levels.
This menu can also be reached with F1.
It has options for level name, author, and difficulty, which appear in the Custom Levels menu.
Level music can be changed. Displayed name is the filename (minus extension). Files are placed in Data\Music and are .ogg files.
Particles are background (or foreground) effects so it isn't a single flat color.
The palette sets the color scheme of everything while in the level. They can be found in Data\Palettes or Data\Worlds\worldname\Palettes.
The world size is capped at 35x20. Everything too far off to the right/bottom will be removed if the level shrinks.
Levels set to "Map" type don't have music stop when there are no objects, and the level name doesn't appear upon entry.
The "levels needed to clear" changes the amount of levels needed to receive the Blossom (and propogate paths) from the level. The outer arrows change the value by 10, and it is clamped to [0,99].
The map icon setup allows setting 20 sprites that level icons can have set as their icon.
Some levels have a custom parent. When these levels are won, the player goes to the custom parent instead of the level they came from. (This does not apply to transforms!)
This menu can also be reached with the escape key.
Testing the level allows the level to actually be played. The transform status of levels in the tester's savefile is used. Levels cannot be entered via select while testing a level. Beating or transforming a level will return you to the editor immediately. The Return to Map option is also replaced with a Return to Editor button.
Uploading levels is not yet implemented.
A theme is a collection of the included objects (and edits made to them), palette, music, and particles. Saving current theme will save those in the current level, allowing easy copying to another level.
There is a prompt to load a theme when creating a new level. Loading a theme will clear all objects in the level.
Themes are stored in Data\Themes or Data\Worlds\worldname\Themes.
This option is only enabled if Enable Advanced Features is enabled. It allows editing any world in Data\Worlds. Worlds on the list are sorted alphabetically by filename.
World editing is very similar to normal level editing, but it can make use of resources in that world's folders, and level tiles can be placed. Levels marked as a "map" type are colored differently on the level list.
The author and name change what is displayed in the custom levels menu.
The first level is the level the player spawns in upon opening the world for the first time.
The world map is the level the player goes to after beating (or quitting) that first level (it's the parent level).
Editing "baba" (named baba is you) will edit the main game, outside custom levels.
Levels not in a world are stored in the "levels" world, which can be edited as normal, and the levels can still be accessed in the individual levels section.
All string inputs provide a keyboard the user can click. However, the keyboard can be used as well. Punctuation symbols (-.?!,':_><) cannot be typed from the keyboard. Enter or the OK button confirms a string. Cancel cancels the option that led to the string input in the first place. Backspace or the left arrow removes the last character.
Lists with many pages have two page-swap buttons for each direction. The inner ones move 1 page, and the outer ones 5. If there is not enough pages left to move the full 5, the button is greyed out.
Levels in lists are stored alphabetically by filename.
In February 2020, a beta update came out that completely revamped the level editor. The old editor can still be used in the old-editor branch of the game. This is the old information from this page.
Baba Is You features a level editor used by the developer Hempuli. It is not fully finished and still has errors but it does work.
It allows the user to create both hub worlds and levels. It features a world theme and palette editor in addition to the basic level editing ability. This allows you to swap any sprite group with another and change its colours.
Enabling the Level Editor
Because the editor is not unlockable nor intended to be unlocked or used by a regular player, the user will have to enable it manually. This only works when selecting the old-editor branch on Steam.
- You can put this file into your Lua folder (located at SteamApps/common/Baba Is You/Data/Lua), and it will automatically enable the editor. It is also unaffected by updates so you don't have to worry about enabling it every time
- If you do not have a Lua folder, go to SteamApps/common/Baba Is You/Data and open syntax.lua, then add generaldata.strings[BUILD] = "debug" above the first end.
Using the Level Editor
Now that we've enabled the level editor, it's time to use it. Head over to the Guides section for more information.
An external level editor made by DevilSquirrel exists: https://github.com/ShootMe/BabaIsYouEditor. It allows you to do more than the current ingame editor, as well as edit things from a level's .ld file in the editor itself.
- Right click: Set brush to selection
- Left click: Make selection
- Left-ctrl Drag: Drag item under cursor (does not overwrite)
- 1/2/3: Select layer + see layer visible
- WASD: Translate level in direction (with wrap)
- Arrow Keys: Change object's direction
- Tab: Open Objects list
- Z: Set brush to secret
- F3: Switch between playing and editing (requires debug mode)
- E: Go to selected level
How to Use
To place down objects, click on OBJECTS and select what you want to use. Then left click to place it down.
If you want to erase, right click a space with nothing on it or the level border, which sets the brush to erase.
To test your level, click SAVE and then press F3 to switch to playing mode.
To place down levels for an overworld, click Add Level and then click the space you want to place it on.
The top option is what level you will be taken to.
The next option is whether the level is Hidden (can't be seen), Normal (where you can see the outline but not number/symbol), and Opened (level is fully open and visible).
Symbol style lets you choose to use numbers, text, dots, or a custom icon (which is set on MENU>Map-Related Settings>Map Icon Setup).
Symbol lets you advance the amount for the number/text/dots.
Set selector places the map cursor to the mouse position, which can be used to access levels.
For adding paths, first you want to click Set Path. This lets you choose whether your path is Hidden (not seen until adjacent level is unlocked) or Visible.
- You can then set whether it is locked by fluffs or full flowers, the arrows changing the amount required. Then all the objects let you choose what the path looks like if it's locked.
- You then click Add Path and place it however you want.
If you want to change the level objects, click on Menu>Change Level Theme. The theme determines what objects are in a level.
You can change the colours of the whole level using Menu>Change Level Palette.
To change an individual objects properties, use Menu>Object Settings. From here you can change the object sprite, name, type (Object, Text), animation style, text type, and others.
You have to do a bit of external work in order to change object colours. Here is a list of all the default palettes included with the game, upscaled so they can be easily seen.
Then go to your .ld file for your level, and you will see something like colour=x,y activecolour=x,y (when a rule is active), or clearcolour=x,y (when a level is completed). X goes horizontally and Y goes vertically, the top left square being 0,0.
You find your object you want to recolour, then look at the palette horizontally first, and then vertically.
Other Level Things
If you want to set music for a level, go to the .ld file and then add the line music=(your choice) under Settings. The music folder is Baba Is You>Data>Music
If you want particle effects in the background, add particles=(choices below) to your .ld