Category:Config pack



The Game Configuration package is a foundational component for all games that will work with Moondust Project: it's a set of game resources, item settings, and scripts. A configuration package includes item definitions, gameplay settings, game content, and other miscellaneous information.

Types of configuration packages
Configuration packages for the Moondust Project have two types: standalone and integrational.
 * Standalone configuration packages contain the full set of all necessary resources and don't require any external programs and/or resource packs for working with any component of the Moondust Project.
 * Integrational configuration packages are a special type of configuration package that re-use resources from external programs or games. Those config packs have a smaller size. However, they are dependent on external software. Integrational config packs may have a unique configure tool called "configure.js" which is a helper to assist with selecting the path to the target software and creating things, such as the example to copy additional files. A config pack for the SMBX2 project is an example of an integrational configuration package.

Structure
All configuration packs must use this tree structure:

Note: italic folders can be customized by main.ini config

/ - the config pack root directory
 * /data - config pack resources storage.
 * /graphics - generic graphics resources.
 * /characters - playable characters sprite resources.
 * /common - common engine graphics resources (for example, logos, titles, design elements, etc).
 * /level - graphics resources for levels.
 * /worldmap - graphics resources for world maps.
 * /music - music resource storage.
 * /sound - sound effects resource storage.
 * /tilesets - config pack wide tilesets storage.
 * /group_tilesets - config pack wide tilesets storage.
 * /characters - playable character calibrations.
 * /fonts - collection of in-game fonts (Moondust Raster fonts, or TTF).
 * *.font.ini - raster font declaration files
 * *.png - raster font textures
 * *.ini - font maps for each texture, depends on a general settings *.font.ini file
 * *.ttf/*.odf/*.etc - TrueType vector fonts
 * /items - collection of individual item configs (not used when elements definitions are using nested style).
 * /backgrounds - collection of level backgrounds individual configs. (See the specification for entries).
 * /bgo - collection of level background objects individual configs. (See the specification for entries).
 * /blocks - collection of level blocks individual configs. (See the specification for entries).
 * /levels - collection of world map level entrance objects individual configs. (See the specification for entries).
 * /npc - collection of level NPCs individual configs. (See the specification for entries).
 * /paths - collection of world map path cells individual configs. (See the specification for entries).
 * /scenery - collection of world map scenery objects individual configs. (See the specification for entries).
 * /terrain - collection of world map terrain tiles individual configs. (See the specification for entries).
 * /script - Config pack lua scripts are programming the game.
 * /npcs - NPC-AI lua scripts.
 * /player - Playable characters lua scripts.
 * main.ini - main configuration pack description and settings.
 * engine.ini - main settings of game engine application.
 * configure.js - config pack configure tool (integrational configuration packages only).
 * music.ini - configuration and list of music.
 * sounds.ini - configuration and list of sounds.
 * sound_roles.ini - association of built-in sound roles with sound-ID's from sounds.ini.


 * rotation_table.ini - transformation rules which apply to items when rotating or flipping actions are applied to them.
 * lvl_characters.ini - Playable characters list definition.


 * lvl_bgo.ini - definition of background objects for levels.
 * Single entry config - definition (or customization) of a single entry of background object for levels.


 * lvl_bkgrd.ini - definition of backgrounds for levels.
 * Single entry config - definition (or customization) of a single entry of background image for levels.


 * lvl_blocks.ini - definition of blocks for levels.
 * Single entry config - definition (or customization) of a single entry of block for levels.


 * lvl_effects.ini - Graphical effects list definition.
 * Single entry config - definition (or customization) of a single entry of effect for levels.


 * lvl_npc.ini - definition of non-playable characters for levels.
 * Single entry config - definition (or customization) of a single entry of a non-playable character for levels.


 * lvl_section.json - Extra settings for level sections (see Extra Settings JSON Layout for specification).
 * lvl_settings.json - Level-wide extra settings (see Extra Settings JSON Layout for specification).
 * global_block.json - Global extra settings for all types of level blocks (see Extra Settings JSON Layout for specification).
 * global_bgo.json - Global extra settings for all types of level background objects (see Extra Settings JSON Layout for specification).
 * global_npc.json - Global extra settings for all types of level NPC (see Extra Settings JSON Layout for specification).


 * wld_tiles.ini - World map terrain tiles list definition.
 * Single entry config - definition (or customization) of a single entry of a terrain tile for world maps.
 * wld_scenery.ini - World map scenery objects list definition.
 * Single entry config - definition (or customization) of a single entry of a scenery for world maps.
 * wld_paths.ini - World map path cells list definition.
 * Single entry config - definition (or customization) of a single entry of a path cell for world maps.
 * wld_levels.ini - World map level entrance objects list definition.
 * Single entry config - definition (or customization) of a single entry of a level entrance point for world maps.

Additional specs

 * Extra settings JSON Layout - additional JSON file format which declares a GUI layout for extra settings of the element.