ModManager fileformat specifications

Introduction / Usage

This document is the current specification for .modinfo, repository file format and package format
used by ModManager for CIM.
This html file uses HTML5 features, so a recent Browser is required.

Types of informations:

Description

Example

Warnings

Planed feature

Comments

Version History

Table of contents

General Information

ModID

A ModID is a unique identification string, only letters a-z (lowercase), numbers 0-9 and _- are allowed, a version information doesn't belong to the modid.

Package

Each Package must consist of one .modinfo file in a gs file.

The gs file can't have any path information attached.

Mod

A mod or addon is called ModManager compatible when:

A mod or addon package can be installed and removed via ModManager:

The installation location may be defined in the .modinfo file via installto.

.modinfo

Is the controlling information, it's filename without extension defines the modid for this Mod or Addon

.modinfo

The filename consists of the basename (a valid ModID) and the extension .modinfo.
Example (modid = mytestmod):

mytestmod.modinfo

Format

Each .modinfo file is a well-formed CIM script, loadable without warnings or errors in CIM.

The file has no functions, threads or other long running processes.

It has one variable called "mod" whose type is a map.

Example:

$mod = map [];

Only defined key value pairs in the specs are allowed to be used in this map:

name

Typ: string, required

The name of the Mod in English Language

version

Typ: array of integers

Each array item is a versions number, from highest to lowest significance.

A version number component has to be an integer between 0-99.

The version number components of two Mods with the same ModID are compared one by one, a Mod with a higher versions number is considered newer. ModManager will try to use the newer Mod, but is free to use either version if the version number is considered equal.

Example:

[1,0,2]

A version string may be simply converted by replacing any dots by commas, so "2.1" would be [2,1]

description

Typ: string or map

A description of this mod as string in English.

When the value is a map, at least the map key en_US has to exists with an English description.

A map may have any other key for any additional language description. The key has to be a valid CIM language id

Examples:

"My description telling what my mod provides"

or

map ["en_US", "My description telling what my mod provides",
"de", "Eine Beschreibung der Funktionen meines Mods"]
author

Typ: name

Name of the author

Example:

"Test"
modmanagerversion

Typ: array of integers

Version of ModManager required

Example: (Atleast ModManager 2.0.2 is required)

[2,0,2]

Current versions of ModManager won't check this yet.

This feature is planed to be removed

runtimeload

Typ: boolean

Set to true if this mod can loaded while the game or editor is running.

Can't be used with legacy addon scripts!

Default value is false and should not be explicit set to false

runtimeunload

Typ: boolean

Set to true if this mod can unloaded while the game or editor is running.

Can't be used with legacy addon scripts!

Default value is false and should not be explicit set to false.

installto

Typ: integer

Sets the installation location, defaults to 0.

Default value is 0 and should not be explicit set to 0.

Creating Mods/Addons in a way it's path neutral is highly recommend and allows easier installation without ModManager as well.

requires

Typ: map

Defines dependencies of this mod, each entry consists of a modid and version pair. The version should be in array format.

"requires", map["othermod", [1, 0, 2]]

Defines dependencies of this mod, each entry of the map consists of a modid and map describing this dependency.

"requires", map["othermod", map[]]

Only the following map keys describing this dependency are allowed:

KeyTypDescriptionExample
versionarrayminimal version as array, inclusive.
Current versions of ModManager won't check the version yet
[2,0]

Example, if othermod is older then 1.0 this mod can't be activated:

"requires", map["othermod", map["version", [1,0]]]
conflicts

Typ: map

Defines conflicting other mods, each entry of the map consists of a modid and map with details.

Example, if othermod is active, this mod can't be activated

"conflicts", map["othermod", map[]]

Only the following map keys describing this conflict are allowed:

KeyTypDescriptionExample
maxversionarraymax version as array, inclusive deny activating
Current versions of ModManager won't check the version yet
[2,0]

Example with setting a version, if othermod 1.0 or lower is active, this mod can't be activated.

"conflicts", map["othermod", map["maxversion", [1,0]]]
homepage

Typ: string

A full http url to more information to this mod, no spaces are allowed.

As ModManager tries to be cross platform use only urls that can be represented in ascii, if there is really not other way, use a punycode representation

Examples:

map[
	"version", [0,2],
	"name", "My new Mod",
	"description", "This is a new mod",
]

Example with description with two languages, setting the installation folder

map[
	"version", [1,0,2],
	"name", "My new Mod",
	"description", 
["en_US", "This is a new mod",
"de", "Mein neue Modifikation"],
	"installto", 1
]

Repository fileformat

A repository file is a loadable CIM script file without warnings or errors.

Version 1

The file starts with:

/* ModManager Repository 1 */

Only variables should be defined, as this file may be parsed by other programms.

$name

Typ: string

English unique name for this repository

$baseurl

Typ: string

A baseurl to prepend to urls that are relative.

ModManager will use the base of the repository url if not set and a relative url is found.

Generally this variable can be omitted and should only be used when really needed, as ModManager will try to determine the baseurl automatically from the repository url.

$mods

Typ: array, required

A list of Mod Packages this repository describes,
each entry is a map entry with following possible key value pairs:

id

Typ: string, required

The modid of this package

name

Typ: string, required

The name of the Mod Package in English language

description

Typ: string or map

See .modinfo ≫ description

author

Typ: string

See .modinfo ≫ author

url

Typ: string, required

A full url to a http resource, or a relative path

Example:

map[
	"id", "",
	"version", [],
	"name", "",
	"description", "",
	"url", ""
]