Content Package

A content package is a file folder containing a managed assembly of sprites and tiles, a collection of graphics, sounds, as well as package settings and metadata information to piece together graphics objects. They are stored in. The folder contains the assembly file, a settings.txt file and any number of subfolders that can contain graphics, as well as sound and music folders. Episodes, worlds, and levels can modify elements of a content package by using an overrides file.

Settings
The settings file,  is a plaintext file that stores information about the content package. Comments begin with a semicolon and are removed before processing. The up-to-date specification for the content package settings format can be found here. It defines a name, author, path to the assembly, and a defined path name (like ) that can be used in file paths.

Graphics
Graphics will be stored in PNG format in subfolders of the package. Additionally, an optional text file with the same name as the image can be stored. For example, a  might have a   file with it. This text file defines several properties of the graphic and is used by the game or Sprite/Tile instance to determine how to set up the graphics objects.

If no text file is included, the graphic is assumed to be a single frame. If a text file is included, the information is used to determine how to set up the object. An animated graphics object uses this specification, and a complex graphics object uses this specification.

Usage
Levels specify the name of the folder of the content pack that they use. The game will check both the level's own folder and the

Large content packages with dozens or hundreds of sprites will be recommended to not be included in the download for a level. Instead, they should be released as their own packages, to be installed into Smaller content packages that only store a few sprites can be included with the level's download.

In the code, methods in  can be called to load graphics and sound objects using , with proper checks for overrides. These methods return loaded instances of the objects, and are called during  methods in the screen objects. The objects can have their content loaded through a normal  call.

Modification
Content packages are not meant to be modified directly. Rather, users can modify individual elements of a content package on a per-level, per-world, or per-episode (global) basis. Generally, users place their custom graphics in folders that are in the same folder as the levels (see File Structures). Then, they add a file called  that lists which levels are overriden by each folder (for example,  ). Multiple levels can be overriden by a single folder, and multiple folders can be used to override a level's graphics.

Folders are searched in the reverse order of their declaration; that is, the folder declared last is searched first. If the resource cannot be found in a folder, the folder declared before that is searched. If no override has the resource, the content package itself is searched. If the content package doesn't have the resource, an exception is thrown.

This allows people who make custom graphics to simply separate their graphics by folder, and users can simply take a folder and add it to the overrides. Additionally, new graphics (for normal blocks and level backgrounds, which do not need complex objects) can be added to the folder and specified by the level. The level editor may support adding overrides instead of doing it through a text editor.