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>" MUGS

Source 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!

MUGS v0.1.4

Multi-User Gaming Services - A Raku-based platform for game service development

Authors

  • Geoffrey Broadwell

License

Artistic-2.0

Dependencies

MUGS::Core:ver<0.1.4>MUGS::Games:ver<0.1.4>MUGS::UI::CLI:ver<0.1.4>MUGS::UI::TUI:ver<0.1.4>MUGS::UI::WebSimple:ver<0.1.4>

Test Dependencies

Provides

  • MUGS

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.

Built with Podlite — the markup and publishing tools behind this site.