Marmalade Engine

Packages

[DRAFT] Packages and Plugins

Plugins are engine-wide and are used to modify the actual engine, e.g. add GUI components.

Packages are project specific and are used to add libraries and other code to projects, even assets.

File structure

marmalade-pkgs repo:

my-package/
    package/
        0.0.1/
            manifest.json
        package.json
    plugin/
        0.0.1/
            manifest.json
        plugin.json
    info.json
    README.md
    (other assets used in README.md)

A package does not need to have both package and plugin directories. A package can just a package or just be a plugin.

If a plugin and package is published in the same directory, both will be required to be installed by Marmalade. Typically, they will communicate with Marmalade APIs, i.e. the plugin displays the GUI to control the package. Both will need to be compatible with all versions of the accompanying package/plugin.

info.json

Basic package information.

{
  "name": "My Package",
  "description": "Description of my package",
  "authors": [
    "Marmalade"
  ],
  "keywords": [
    "scripting",
    "lua",
    "api",
    "c",
    "cpp",
    "c++"
  ]
}

package.json or plugin.json

Version information.

{
  "latest-version": "",
  "latest-dev-version": "0.0.1"
}

manifest.json

Download and install information.

{
  "version": "0.0.1",
  "channel": "dev",
  "min-engine-version": "0.0.1",
  "downloads": [ // What to download and where to map to
    {
      "name": "artifacts",
      "type": "tar.gz",
      "src": "https://diesbackwards.com/download/marmalade/my-package-plugin-0.0.1.tar.gz",
      "dest": "/" // '/' means plugin or package root
    }
  ],
  "artifacts": { // For plugins
    "linux": "my-package.so",
    "windows": "my-package.dll",
    "darwin": "my-package.dylib"
  }
}

[DRAFT] Templates