client data handling

A MMORPG client such as the Mana client needs manage a lot of data. Mana tries to remain flexible, but easy to use, for server maintainers to make and maintain client data.

Data locations

Mana will load data from several places. Each has it's own purpose. Depending on the operating system, the Mana client won't locate its data in the same place, here is where each data type is stored, depending on the main supported OSes. '%appShort%' is a branding value (of the same name, taken from the branding file, if provided) used to provide branding-specific locations for certain settings.

Path type Operating System
::: Linux and Posix Mac Windows

Loading order

Client data is loaded from several sources into PhysFS. When the client is started, the following folders are added in order (later takes precedence): - application installation path - run/working directory - -d/--data from 'command line' options

After the client logs in to a server and updates are loaded, the following data sources are loaded: - updates files - custom data in the config/%appShort%/customData folder (zip files only; order undetermined)

Required data

The client requires that several pieces of data are in specific locations. Some is distributed with the client, others need to be provided by branding or updates. Data included with the client sources:

Folder Description
fonts Font files.
graphics/gui Default [GUI theme](gui_configuration) (gray).
graphics/images error.png and [wallpaper](wallpaper).
help Help files.
icons Icons files. Different formats are provided for different OSes.

The following files and folders are required by the client but not included with the client sources (as they are world-specific). Subfolders for files not listed are usable and recommended. The file types given are the types that need to go in the folders (ex: images for sprites can be anywhere, but their XML needs to be in graphics/sprites). The table:

Item Description
**graphics/**
graphics/items Item icons (images).
graphics/minimaps Minimap backup folder (images). Used when a map doesn't specify a minimap. File names taken from full map names (maps/a/b/c.tmx becomes graphics/minimaps/a/b/c.png).
graphics/particles Particle effects (xml).
graphics/particles/levelup.particle.xml Level up effect for the Mana server.
graphics/particles/warparea.particle.xml Warp/portal effect. Only used for warps in the TMX file.
graphics/sprites Sprites, status effect icons, emotes (all xml).
graphics/sprites/error.xml Loaded for missing sprite data.
maps Maps (tmx).
sfx Sound effects (ogg).
sfx/fist-swish.ogg Player unarmed attack sound effect.
music/system/Magick - Real.ogg Default system login music.
[colors.xml](hair.xml.md) Fallback for hair colors.
[effects.xml](effects.xml.md) Effect descriptions.
[emotes.xml](emotes.xml.md) Emote descriptions.
[hair.xml](hair.xml.md) Hair colors.
[items.xml](items.xml.md) Item DB. Hair and race sprites are treated like items for now.
[monsters.xml](monsters.xml.md) Monster DB.
[npcs.xml](npcs.xml.md) NPC view descriptions.
[status-effects.xml](status-effects.xml.md) Status effect descriptions.
[units.xml](units.xml.md) Unit descriptions. At the moment, just weight and currency.
**Files specific to the Mana server support - Specifications in progress**
[attributes.xml](attributes.xml.md) Attribute description. This file is only used by and required for playing with a Mana server.
[specials.xml](specials.xml.md) Special attack descriptions.
[skills.xml](skills.xml.md) Skills for manaserv.
[equip.xml](equip.xml.md) Equipment slot definition for manaserv.

Optional data

Item Description
[branding.xml](branding.xml.md) The branding file is used to brand (customize) the Mana client.
[paths.xml](paths.xml.md) The path file is used to override (customize) the default path used for configuration files (base xml files apart.).
[serverlist.xml](serverlist.xml.md) The server list file is downloaded by the client that lists available servers and some of their properties.
[config.xml](config.xml.md) Main configuration file. Generated by the client in the user config directory.