v0
% 0.1.0 Release, "Proof of Concept"
MUGS 0.1.0 Released!
The Raku-MUGS org is proud to present our first MUGS milestone release: 0.1.0, codenamed "Proof of Concept". As the codename indicates, this release is not yet a full prototype -- more of a proof of concept -- but there is still quite a lot in this first release.
Packaging
MUGS is available in both source and package form, via these methods:
zef
To simply play with what's already there, use zef to install all of MUGS
from the zef/fez ecosystem. To prevent failure due to an unneeded
transitive dependency that does not exist on all systems, use the following
command:
zef install --exclude="pq:ver<5>:from<native>" MUGSSource Repos
The source for all released MUGS repos can be found in the
Raku-MUGS org on GitHub. Note that if you are
working on a UI repo, you will probably want to install MUGS with zef as
described above to satisfy dependencies, or at least install both
MUGS-Core and
MUGS-Games.
Docker
MUGS does not yet have prebuilt Docker packages, but each source repo includes
two Dockerfile scripts. The main Dockerfile simply installs the relevant
MUGS libraries, scripts, and resources on top of a rakudo-star official image
and creates a default MUGS identity universe. Dockerfile.test builds on that
by also installing test identities into the default universe.
Features
As befits a first milestone, most of 0.1.0 is core infrastructure, basic documentation, and a few test games. In particular, you'll find the following:
Servers
MUGS 0.1.0 includes two network servers, both of which support TLS:
mugs-ws-server
: WebSocket-transport game engine and identity universe server
mugs-web-simple
: HTTP gateway for the WebSimple UI
UIs
Two text-based UIs are available in MUGS 0.1.0. Both have been tested with all four simple games below, and both have been tested to be playable (though not yet ideal) with the Orca screen reader. Additional UIs will be added to support real-time games relatively soon.
CLI
: A simple line-at-a-time turn-based command-line interface
WebSimple
: A low-bandwidth, low-resource, all-text HTML UI
Games
Four very simple games are included, mostly to test the core infrastructure; expanding this list is a core part of the next major milestone.
echo
: Echoes back messages sent to it
number-guess
: Simple number-guessing game
snowman
: Progressive multi-round letter-guessing game (gets harder by selecting shorter words)
adventure
: The very beginning of an interactive fiction-style adventure game
Genres
Common functionality for games in the same general genre has been factored out of the above games.
Test
: Games intended for performance and core functionality testing
TurnBased
: Turn-based games of all types
Guessing
: Simple turn-based guessing games
IF
: Turn-based Interactive Fiction games
Tools
MUGS 0.1.0 includes three basic utilities for managing MUGS and its source:
mugs-admin
: Manage MUGS identity universes
mugs-release
: Automate several steps for releasing new MUGS versions
mugs-tool
: Create stub files for developing new games and new UIs
Storage Drivers
A MUGS universe can be stored either in memory or in SQLite databases, using one of the following drivers:
Fake
: In-memory, transient storage intended mostly for testing
Red::SQLite
: SQLite storage (either in-memory or on-disk) via the
Red ORM
Transports
MUGS 0.1.0 has two possible client-server transport mechanisms:
Supplier
: In-memory direct object transfer via paired supplies
WebSocket
: JSON-over-WebSocket network transport
Identity Types
All currently-planned identity types are supported:
Account
: Container for related users, personas, and characters
User
: Logging in, security, and access control
Persona
: Managing characters and interacting with players outside games
Character
: Joining and playing games
Doc Sections
Major doc sections:
Announce : Announcements (such as this release announcement)
Design : Design docs, sketches, diagrams, and ruminations
TODOs : TODOs broken up by work area
[Other] : README, CONTRIBUTING, CODE_OF_CONDUCT, LICENSE
Utility Modules
Four basic utility modules are included:
ImplementationRegistry
: Roles to support registration and introspection for game and UI classes
StructureValidator
: Simple validation of arbitrary JSON-like structures against an expected schema
File
: Utilities to load and write YAML files, and ensure that they have correct permissions
Config
: Multi-level YAML-based config files, with builtin defaults
Additional Base Classes and Roles
MUGS::App::CroServer
: Base class for network servers based on Cro
MUGS::App::LocalUI
: Base class for local (non-web-based) UI apps
MUGS::Client
: Base classes and core functionality for game clients and client sessions
MUGS::Server
: Base classes and core functionality for game servers and server sessions
MUGS::UI
: Base class for game UIs
MUGS::Authentication
: Roles for authentication credentials, with a driver for hashed password support
MUGS::Connection
: Roles for client and server connection drivers
MUGS::Identity
: Identity roles
Miscellaneous Modules
MUGS::Core
: Global enums, subsets, and other such definitions
MUGS::Message
: Message serialization and validation
MUGS::Universe
: Configuration, validation, and management of identity universes
MUGS::UI::CLI::Input
: Horizontally-scrolling input line editor for CLIs
Contributions
This first milestone is largely the work of Geoffrey Broadwell (japhb on
Libera.Chat and GitHub).
If you'd like to contribute to future releases, please take a look at our CONTRIBUTING doc; we'd love to have you!
Contacting Us
We are on the #mugs channel on Libera.Chat IRC; please come and ask questions or offer suggestions! Please note that we do not yet have 24-hour round-the-clock coverage, so please allow some time for response if you don't get one immediately.
Future
The next few milestones have been sketched out in our release roadmap. Future releases are of course subject to change, but the most likely changes are deferral of iffy changes or incomplete features that are holding up release of finished work.
Thank You
THANK YOU to everyone who worked on the many projects on which MUGS is built, to the awesome and supportive Raku community, and of course to Larry, Damian, Jonathan, and all the other Raku designers for creating a language that brings joy day after day!