Skip to content

iLPdev/discMapper

Repository files navigation

discMapper

Travis (.com) branch GitHub release (latest SemVer including pre-releases) All Contributors Issues GPL License standard-readme compliant GitHub release (latest SemVer)

Discworld MUD mapping script for Mudlet

The discMapper project gives Discworld MUD players improved access to the advanced mapping features of the Mudlet MUD client. By leveraging the specific "out of band" packets sent by Discworld MUD's server, discMapper correctly identifies rooms, stops creation of duplicate rooms, and accurately tracks your character's location on the map as you move about the disc. Additional convenience features include autosetting colors and symbols on the map based on the room type.

Project Link: [https://github.com/iLPdev/discMapper]

Table of Contents

Background

History

The discMapper project was unofficially started sometime during the early weeks of April 2020. The Coronavirus Pandemic and Stay-at-Home orders prompted @Stack to make an unexpected return to MUDs after more than two decades. A robust and stable LPmud derivative under continuous development since 1991, Discworld MUD seemed like a promising quarantine-life distraction from our collective global trauma. Various MUD clients were tested. Among them, Mudlet appeared the most desirable. Unfortunately, of the regular 80-100 online Discworld players, almost none appeared to be using Mudlet due to a severe lack of game-specific scripts relative to an old, alternative MUD client. A college try was made with the amazing scripts available for the alternative client, but it was too late... Mudlet's clean, modern appeal and advanced features had already won out -- if only there were Mudlet scripts for Discworld MUD.

Inspired and seeking assistance in learning, the Mudlet Discord chat server was found to be a friendly, engaging community of creative and dedicatedly caring coders. After several weeks of struggling to achieve reliable mapping with text-based detection routines, a basic GMCP room detection approach was developed as possible solution. Considerable progress was made in learning and incorporating game-specific GMCP support into an existing generic mapping script.

On May 24, 2020, @vadi2 was gracious enough to volunteer three hours helping @Stack live on a public audio chat. After initial assessment of the unique challenges of developing a custom mapping script for Discworld MUD, we spent a brief period exploring extension of the IRE mapping script, but affirmed the lack of GMCP exit data supplied by FluffOS was too great an obstacle. A return was made to the hybrid approach of adding GMCP room detection/indexing to the text-based exit detection of the generic mapping script included with Mudlet. At the end of three hours, we had achieved basic functionality with only a couple minor issues.

Unfortunately, it was soon realized that cleanly installing this initial version of the discMapper to a new Mudlet profile with no prior mapping settings caused the script to break entirely. Many confused hours were spent chasing quasi-solutions and residue problems until it became painfully clear that a more rigorously tracked and structured approach would be required: Enter this project's GitHub repository.

Having a wealth of various IT-related and HTML/CSS development experience but virtually no experience in modern software development, frustration has (mostly) been overcome by an eagerness to learn and true enjoyment of the process -- especially the Mudlet community (see Acknowledgments).

The repo started with a README-first approach to conceptualize how best to go about this project. discMapper was open-sourced upon conception.

Milestones

  • v0.1.0-alpha - Initial
  • v0.1.2-alpha - Core mapping features with GMCP support
  • v0.2.1-beta - Help system and configuration functional
  • v0.3.0-beta - Automated updates implemented
  • v0.4.0-beta - Room Styling implemented
  • v0.5.0-beta - Clean install process and initial default colors

Vision

As complement to a planned Mudlet UI for Discworld MUD, the aim of this project is to provide existing and potential players with a newbie-friendly (accessible) and reliable means to map and navigate the Discworld MUD in an elegant, modern MUD client. In line with that aim, the goal of this project is to release a Mudlet package with all the requisite aliases, triggers, and scripts. Ultimately, my hope is that discMapper might become a part of a larger Mudlet package for Discworld MUD, including guild-specific UI feature sets.

Features

  • Auto GMCP handshake on connection to Discworld MUD
  • GMCP Core Supports for Discworld MUD's server:
    • Precision Room Indexing using GMCP Identifier data - No more duplicate room creation!
    • Character Tracking using GMCP Identifier data - No more misidentified player locations on map!
    • Room Name detection using GMCP Room Name data
  • Quick style rooms based on the type of room (e.g., shop, player house, food, etc.)
    • Set Map Room Color based on Room Type - Defaults to Kefka's Discworld MUD Maps color scheme
    • Set Map Room Symbols based on Room Type - Choose and apply your preferred room symbols
  • Self-updating package - Set it and forget it!
  • Speedwalking and pathfinding - Efficiently get where you're going - and fast!

Built With

  • Lua is the programming language
  • Edbee Library provides the text editor component for Mudlet
  • Mudlet is a cross-platform, open source, and super fast MUD client
  • Git is the version-control system for tracking changes and project management
  • ImgBot provides GitHub-integrated image optimization

Versioning

Version numbering approximates the Semantic Versioning approach.

Project Status

Status Ventis Travis (.com) branch

  • Project State: discMapper is under active development. The application can be used, but may be unstable. We are in need of beta testing prior to moving forward with the v1.0.0 release.

  • Current Release: v0.5.0-beta introduces Kefke map matched colors, Street room defaults, cleaner install process, and various minor bugfixes.

^Top

Install

The Mudlet Makers could not have made it easier to install preconfigured custom aliases, triggers, scripts, keybindings, and UIs.

One-Click Install Method

Copy/paste the following command into Mudlet's input line to install discMapper:

lua function d(a,b)if not b:find("oci",1,true)then return end installPackage(b)os.remove(b)cecho("<lime_green>discMapper package installed!\n")end registerAnonymousEventHandler("sysDownloadDone","d")downloadFile(getMudletHomeDir().."/oci.mpackage","https://github.com/iLPdev/discMapper/releases/download/v0.5.0-beta/discMapper_v0.5.0-beta.mpackage")

Package Install Method

Just like any other package as of Mudlet v4.8+, you may install discMapper by simply dragging and dropping the package file into Mudlet. discMapper will then be merged into your active Mudlet profile, and you may delete the original file.

To install discMapper, just follow these steps:

  1. Locate the latest release of discMapper.
  2. Download the .mpackage file listed under Assets.
  3. Open Mudlet on your operating system of choice.
  4. Open an existing Discworld MUD profile or create a new one.
  5. Locate the saved file on your PC.
  6. Drag and drop the file into your open Discworld MUD profile.
  7. Optionally, delete the .mpackage file from your computer.

Dependencies

Mudlet

  • Game-icons.net Font v20200315 by Todd Fast provides 3,000+ map room symbols
  • Mudlet MUD Client application must obviously be installed on your operating system (Windows, MacOS, and Linux)

Getting the Source

The discMapper project is hosted on GitHub. All versions of the repository are available as releases.

You can also clone the entire project directly with this command: git clone [email protected]:iLPdev/discMapper.git

^Top

Usage

To get started, connect to Discworld MUD in Mudlet and then enter map basics at the prompt.

A simple help system covering basic usage, most commands, and configuration options is available by issuing the map help command at the prompt.

^Top

Roadmap

The primary initial objective is to develop and test a Minimum Usable Mapper (MUM) that returns the functionality we had previously achieved but maintained across Mudlet profiles and time.

Planned new features include:

See also the open issues for a list of proposed features (and known issues).

^Top

Maintainer

@Stack - Stop by and say hello on the Mudlet Discord Server!

^Top

Acknowledgements

  • @vadi2 for initial logic development, seemingly unending patience with me, tireless support, general camaraderie, and what seems to be steadfastly optimistic and effective leadership
  • @demonnic for initial perl regex trigger for map.prompt.room solution to room names, being genuinely happy to help others, general camaraderie when I've been down, a familiar sarcasm to spare me embarassment from all my "stupid" questions, fine taste in music, and an appreciation for complexities in life
  • @SlySven for his humor and living next door to one of my personal heroes from Wiltshire! ;-P
  • @Eraene for the Mudlet Dark Theme package and hours of general mapping/code support and camaraderie
  • @Delra and @Kebap for unwavering encouragement and for promoting an engaging and creative community
  • Generic Map Script (aka generic_mapper) by @JorMox was forked from the 10/20/2019 v2.0.16 as included in Mudlet 4.8.2
  • Simple Discworld Mapping Script for Mudlet V3 by Carudan - The Autoset Map Room Color and Character (Symbol) script routines were ported directly
  • README.md:

^Top

Contributing

Contributions are what make the open source community such an amazing space to be learn, inspire, and create. Any contributions you make are greatly appreciated -- that’s the main reason discMapper is open-sourced! There are so many ways to contribute, even if you’re not a technical person. All contributions--no matter how small---are always welcome. Adding an independent CONTRIBUTING.md remains on a to-do on my list.

See the open issues for a list of ideas, questions, proposed features, and known issues.

There is not an explicit workflow requirement for this project, yet. I'm currently experimenting with the Gitflow approach and Conventional Commits, but you don't need to.

Basically, to contribute to this project, you're invited to:

  1. Create an Issue (bug report / feature request)
  2. Fork the Repository
  3. Create your Branch (optionally reference issue in branch name; git checkout -b feature/AmazingFeature)
  4. Code Code Code
  5. Commit your Changes (incrementally with detailed commit messages; git commit -m 'Add some AmazingFeature')
  6. Push to your Branch (git push origin feature/AmazingFeature)
  7. Submit a Pull Request

Ethics

Contributor Covenant

This project follows the Contributor Covenant Code of Conduct and operates under the W3C's Code of Ethics and Professional Conduct:

W3C is a growing and global community where participants choose to work together, and in that process experience differences in language, location, nationality, and experience. In such a diverse environment, misunderstandings and disagreements happen, which in most cases can be resolved informally. In rare cases, however, behavior can intimidate, harass, or otherwise disrupt one or more people in the community, which W3C will not tolerate.

A Code of Ethics and Professional Conduct is useful to define accepted and acceptable behaviors and to promote high standards of professional practice. It also provides a benchmark for self evaluation and acts as a vehicle for better identity of the organization.

The expectation is that our community group acts according to these guidelines, and that participants hold each other to these high standards. If you have any questions or are worried that the code isn't being followed, please contact the maintainer of this repository.

Contributors

We following the all-contributors specification: Contributions of any kind are welcome!

Thanks go to these amazing folks (emoji key):


Stack

💻 🎨 📖 🚇 🚧 📆

^Top

License

Copyleft (2020) iLP development. Distributed under GPL v3.0-and-later. For more information, see license in COPYING.

^Top