Manual:GMCP Extensions

From Mudlet
Jump to navigation Jump to search

Automatic package installation

Mudlet supports automatic download and setup of Mudlet packages should the MUD server offer it. These packages could consist of graphical additions to your game or anything else you'd like your players to have loaded on their Mudlet profiles by default. This setup is automatic and carefree on part of the user, and handles package updates in a transparent manner as well.

setup

After GMCP is negotiated, the server should send a message via GMCP with:

Client.GUI {
  "version": "<package version>",
  "url": "<url>"
}

When Mudlet receives the message, it will do everything necessary to make the latest UI appear: if the user does not have a package, it will be downloaded and installed from the <url>, and if they do, but of an older version - it'll be upgraded. If they're already on the latest, nothing happens.

Ensure that the filename is the same as the package name, as Mudlet will use the filename in determining if the package is already installed.

For example:

Client.GUI {
  "version": "39",
  "url": "http://www.stickmud.com/mudwww/StickMUD.mpackage"
}

Note Note: Mudlet 4.18+ The JSON "version" parameter may also be an integer value

Note Note: there is an older, not preferred but still supported way is to send a message via GMCP with:

 Client.GUI <package version>\n<url>

demonstration

Enable GMCP in settings, connect to Midnight Sun 2 (midnightsun2.org on port 3000) and create a character. A GUI will automatically install over GMCP once you finish character creation, and an overview of it is available here - a good idea to consider to make your MUD more visually appealing.

For an ATCP demo, connect to godwars2.org on port 3000. Mudlet will download the GW2 interface and set it up automatically.

Sample string sent by GodWars 2:

 "Client.GUI 1\nhttp://www.godwars2.org/download/mudlet/GW2_GUI.mpackage"

updating

If you change the package version to any other text than what it previously was, Mudlet will consider it an update - it'll uninstall the old package and install the new package. This happens without prompting the user (since it can be kind of tricky if they decline), thus any modifications they would have done would be wiped - encourage users to make any modifications outside of the package and provide hooks for doing so.

For package versioning you can use any text you seem appropriate. Simple version numbers (start with 1, then 2, then 3) will do, as well as minor and/or patch versions like 1.2 and 1.2.3 or even 1.2.3-alpha (see https://semver.org/ for inspiration). You could also easily use the current date of release (like 2021-06-17 now - but make sure to indicate if you happen to release multiple versions on the same day), or even fancy special names for each release (how about http://sentimentalversioning.org/ for inspiration?)

Automatic map download

Mudlet can download a map for the user as soon they open the mapper for the first time, as well as re-download the map from the Mapper tab in settings:

Start own map.png

The map can be either in the MMP standard (indicated by .xml at end of file name) or one exported from Mudlet.

setup

To let Mudlet know where it can download your map, send the following after GMCP has been enabled:

Client.Map {
  "url": "https://..."
}