Custom level format
The custom level format is the format with which VVVVVV stores and interprets user-made levels. The format is XML-based and can be opened in a text editor, such as Notepad, as well as the game's own level editor or Ved. The extension for these files is .vvvvvv
.
All relevant data for levels lies within the <Data>
tag, itself a child of an otherwise empty <MapData>
tag. The <MapData>
tag also has a version
attribute, which is always set to a value of 2
.
Contents of “Data”
Contents of “MetaData”
These tags define metadata which is displayed when selecting a level in the custom levels list, as well as in the “CREW” section of the pause menu (substituting for the normal list of missing crewmates from the main campaign).
Tag(s) | Description |
---|---|
<Creator> |
Intended for displaying the name(s) of the level's creator(s). It is displayed underneath the title, and is prefixed with "by" prior to version 2.4, and with a Viridian head in 2.4 and later. |
<Title> |
Intended for displaying the level's title. It is shown above all other metadata at double font size, as well as in the levels list itself. |
<Created> <Modified> <Modifiers> |
Unused. <Created> and <Modifiers> always have a value of 2 .
|
<Desc1> <Desc2> <Desc3> |
Intended for displaying the level's description; each tag is on its own line. These are displayed under all other metadata. |
<website> |
Intended for displaying the URL of the author(s)' webpage. It is not actually an interactable element in-game, being mere plain text like all other metadata, and can be used to display any information desired. It displays under the creator(s)' name. |
Other contents
Tag(s) | Description |
---|---|
<mapwidth> <mapheight> |
Define the size of the map in rooms. The default value for both is The game limits maps to a maximum size of 20×20; trying to exceed this limit manually with a text editor will cause glitchy behaviour when reading the invalid rooms. |
<levmusic> |
Defines the music track that will play when starting a level for the first time. The tag itself uses internal song IDs, while the level options menu displays the IDs used with the simplified music() command; see List of music tracks for a list of these.
|
<contents> |
Contains a list of every tile comprising the level, separated by commas. There is no differentiation between rooms in this list; instead, the entire map's tiles are defined left to right, top to bottom. As opposed to |
<edEntities> |
Contains a list of editor entities as
|
<levelMetaData> |
Contains a list of room attributes as
|
<script> |
Contains the level's scripts, as a single string in the tag's contents. Line endings are defined with a pipe character (| ); lines that end in a colon (: ) are treated as the script ID, ending the previous script if applicable.
|