v0

% 0.1.1 Release

MUGS 0.1.1 Released!

The Raku-MUGS org is proud to present our first development release on the way to our next major milestone. This release includes many changes since 0.1.0, but the majority of the milestone work is yet to be done. :-)

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.

Improvements

After the 0.1.0 "Proof of Concept" milestone release, development toward the next milestone has mostly focused on low-level infrastructure improvements, with a few game and genre improvements mostly to exercise these changes. Detailed Changes files can be found in each source repo, but the following summarizes the changes so far:

Bug fixes

  • More required MUGS::App::LocalUI and MUGS::UI::Game methods stubbed

  • nop actions no longer recorded as game events

  • Session connect de-clever-ized (was giving LTA connection errors)

  • ^U in CLI input fixed to bind delete-to-start (instead of delete-line)

  • Naming and character/player confusion fixed in several places

Identities

  • All identity types now do MUGS::Identity role

  • All identity names now validated, deconfused, and universe-reserved

  • Persona and Character stringify to their screen-name

Universes

  • Support for schema versioning, meta-state, and introspection

  • Schema bootstrapping generalized

  • Support for mugs-admin update-universe

  • Schema metadata checked when validating database

Messages/Protocol

  • More details and better filtering in active-games info bundle

  • Serialized MUGS::Server::GameEvents sent to all participants

  • %update flattened into game-update %data to improve message format consistency

  • Winloss status refactored to handle both PvP and co-op play

Clients

  • Most recently seen gamestate cached in client (where UI can access it)

  • LocalUIs always create a Lobby client before any game UIs

  • Lobby client available game types list improved and active games list added

  • Game startup push messages tracked and handled, and now trigger show-initial-state

Servers

  • Helper method added for overriding a game config form default

  • Hook for post-processing added at the end of process-action, just before returning the game status

  • Overrideability of maybe-(start/stop)-game improved

  • Server connection debug-name added and displayed in WebSocket debug info

Genres and Games

  • TurnBased

    • Initial play order randomized and tracked

    • After a valid turn, play moves to next character and sends game-updates

    • nop actions allowed out of turn

  • Other

    • Error test "game" added, designed to generate errors in specific ways

    • Per-participant winloss status supported

    • Refactored/unified behavior of turn validation, submission, and error handling

    • Simple BoardGame, RectangularBoard, and MNKGame genres added

    • TicTacToe added as a simple configuration of MNKGame genre

MUGS-UI-CLI

  • MUGS::UI::CLI::Input

    • Extensive cleanup and maintainability refactoring

    • New features/bindings supported, including expected Readline-style bindings for ^D, ^V, ^Y, and ^Z

  • App

    • MAIN multi simplified, allowing user to specify an arbitrary game-type

    • More UI output helper methods added

  • UX

    • Game help stubbed as needed for all game UIs

    • Special handling for NotStarted in play loop and when asking for help

    • Better handling of leaving games, especially avoiding leaving lobby when other game UIs remain active

    • Active game list shown in lobby at start and in lobby help

    • /game <id> supported to join games as well as switch to them

    • When a game starts, show a notice and the initial state

    • BoardGame players reminded whose turn is next

    • Push message handling completely revamped

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 stick around and allow some time for response if you don't get one immediately.

If you are interested in the more general world of game development on Raku, we are also on the #raku-gamedev channel, also on Libera.Chat IRC.

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.