Skip to content

Creating Levels

Super edited this page Jul 2, 2023 · 5 revisions

When starting the game, Open Manifold will scan the assets/levels directory for folders, and then check within those folders for a valid level file. If it finds one, the level will be made available in the stage select menu. By creating new folders and properly-formatted files within those folders, new levels can be created.

File Structure

A level in Open Manifold consists of a folder which contains several files. These folders are scanned and listed in alphabetical order, even if the stages they contain are not named identically to their respective folder.

The files that make up a level are:

Filename Description
level.json Main level data, contains shape data and timing info
song.ogg Song that plays during level
[various].ogg Sound effects that play during level (see below)
tile.png / tile.json Tile data used in some background effects
character.png / character.json Character data

level.json

The main component of a level is a text file named level.json, This file uses standard JSON syntax and contains information including a level's name and authors, timing information such as BPM and time signature, and all of the shapes and their properties.

See level.json for details.

Audio

Audio files must be in Ogg Vorbis (.ogg) format; the format was chosen as it offers superior compression rates to MP3, does not contain a delay at the start of playback, and is widely supported by audio programs and conversion tools.

For consistent volume levels, it is recommended to normalize your audio files to a peak of -2.4 dB; most DAWs have some way of achieving this (either at the time of render or by using a limiter on the master track), and it is also possible to do this using FFMPEG.

A level can also contain up to 12 sound effects to be played when certain actions are performed; if they aren't found, defaults will be used instead. These files are:

Filename Description
up.ogg Moving a shape up
down.ogg Moving a shape down
left.ogg Moving a shape left
right.ogg Moving a shape right
scale_up.ogg Making a shape bigger
scale_down.ogg Making a shape smaller
square.ogg Creating a square
circle.ogg Creating a circle
triangle.ogg Creating a triangle
xplode.ogg X-plode
combo.ogg #x Combo message
success.ogg Completing a shape (unused currently)

Characters

Characters are the names for the "dancers" seen on the side of the grid during play. They consist of two files: a PNG file which contains a sprite sheet, and a JSON file which defines the sprite boundaries for each of the poses a character has.

See Characters for details.

Playlists

Playlists are a way of organizing levels in an arbitrary order. They consist of a JSON file placed in assets/levels, rather than in the folder of a specific level. See Playlists for details.

Tools

As of this writing, there does not yet exist a dedicated tool for creating or editing Open Manifold level data specifically. As level data consists of standard formats, conventional editing tools should suffice as long as they support the formats used (PNG, OGG, JSON).

Sato Shapes is what the level.json format was originally derived from, and can be used to create shape data more easily than raw text editing. Data from Sato Shapes can technically be read by Open Manifold as-is, but it's strongly recommended to manually edit exported files using a text editor to add essential data such as timing information.

Clone this wiki locally