AresMUSH
A New Breed of MUSH Server

Submitting Contributions

  • [code]
  • [plugins]
  • [extras]
  • [contribs]

Anyone can make plugins or themes for AresMUSH. As long as you’re following the License requirements, go to town and share what you like however you like.

If you want to take advantage of Ares’ automated theme/plugin installers, and have your contributions easily found by others in AresCentral, you can submit your contributions to AresCentral. This guide will tell you how.

Sharing Plugins

In order to be compatible with the automated plugin installer, your plugin must have its own repository in GitHub. For example: Preferences Plugin. If you need help creating one, feel free to ask for help.

To have your plugin included in the AresCentral plugin directory, just contact us with the GitHub url.

Plugin Repo Structure

Plugin repos must follow a particular folder structure:

  • The repo must be named ares-YOURPLUGINNAME-plugin.
  • A plugin folder containing files organized into sub-folders matching the Plugin Folder Conventions (help, locales, etc.)
  • A webportal folder containing files organized into sub-folders matching the web portal’s app folder (templates, components, etc.)
  • A game folder containing files organized into sub-folders matching the aresmush game folder (config, text, etc.)
  • A README.md file explaining what the plugin does and how to use it. You can use one of the existing plugins as a model.
  • The installer ignores any other folders, so you can use them for examples, documentation, or whatever you want.

For example:

All folders are optional, so just omit any that don’t apply to your plugin.

Plugin Migrations

Sometimes your plugin will need a database field initialized, or a default config value set. There is no way to do this automatically; you will need to include instructions for game runners to do that manually.

The easiest way to do this is by including a code snippet that they can copy/paste into the tinker command handler.

For example, if you wanted to initialize a database value at install time, you could tell them to do:

Character.all.each { |c| c.update(your_db_field: 'default value') }

You can also provide tinker snippets to run when the code gets upgraded. The database migrator class has some utilities for reading/writing config files that are particularly useful here. For instance, if you added a new config option and want to set a default value, you could tell them to run:

DatabaseMigrator.read_config_file("yourplugin.yml", config)
config['yourplugin']['someoption'] = 'some value'
DatabaseMigrator.write_config_file("yourplugin.yml", config)

Make sure all hash values in the configuration use the arrow notation, NOT the symbol notation:

RIGHT: 'someoption' => 'some value'
WRONG:  someoption: 'some value'

Sharing Themes

In order to be compatible with the automated theme installer, your theme must have its own repository in GitHub. For example: Ares Dark Theme. If you need help creating one, feel free to ask for help.

To have your plugin included in the AresCentral theme directory, just contact us with the GitHub url.

Theme Repo Structure

In order to be compatible with the automated theme installer, a theme must follow a particular folder structure:

  • The repo must be named ares-YOURTHEMENAME-theme.
  • A styles folder with custom_style.scss and colors.scss.
  • An optional images folder with the theme images needed by the portal. You can supply all, any, or none of the images.
  • A README file describing your theme. It’s nice to include some screenshots as well.

Sharing Other Things

Code snippets, config files, and other things that are neither plugins nor themes can be posted on the Forum or contributed to the Ares Extras repo.

Submitting Patches

Coders may also submit patches to the main Ares codebase for bugfixes and/or new features using GitHub pull requests.