We are making a rhythm game with custom songs, noteskins, and themes!
The game will load each type of content from its own dedicated folder. By default these will be in a subfolder of the main install location, titled Songs, Noteskins, and Themes respectively.
Songs
Within the songs folder, each song should have its own subfolder. Each subfolder should contain:
- The music file, in either .mp3, .ogg, or .wav format
- Either a .rm or a .sm file that dictates the structure of the notes to be hit
- Any other resources you wish to use
We currently do not have support for background images or videos, and we also do not display song banners, but this is planned for the future.
Noteskins
In the Noteskins folder, each noteskin should have its own subfolder. In each subfolder there should be:
- A .toml file, this file should contain:
- The location of an image file for each part of the noteskin
- A line for each aspect of the noteskin you wish to vary from default.
- Any resources specified within your .toml.
While we aim not to break backward compatibilty, it is early in development and the format may change before final release.
Themes
The theming capabilities of RustMania are currenly in their very early stages, so the format for a theme is currently not set. So we omit a detailed description of the format, and instead outline the plan for themes going forward.
A theme will consist of a list of Screens, these screens will themselves consist of a list of Elements, and these elements determine what will be displayed on the screen. Here is a list of currently implemented Elements:
And here are some elements that are currently being planned:
- Text Box
- Image
- Element List
The number of elements is likely to expand considerably as the capabilities of RustMania grow. We will keep this list updated whenever new Elements are added.
To allow variation between Elements of the same type, most types of Elements accept one or more Resoureces. A Resource is a piece of data that is specified by a theme, the exact value of this data can be changed based on the Resource's associated script. Resoureces can be divided into two types:
Screen Resoureces - Resources that are only available to the current screen
Global Resoureces - Resources that are available to all screens, but that can only be changed when going between screens
The exact details of the Resource system are currently a work in progress, so we do not currently have a list of Resource types available.