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>" 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.
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::LocalUIandMUGS::UI::Gamemethods stubbednopactions no longer recorded as game eventsSession connect de-clever-ized (was giving LTA connection errors)
^Uin CLI input fixed to binddelete-to-start(instead ofdelete-line)Naming and character/player confusion fixed in several places
Identities
All identity types now do
MUGS::IdentityroleAll 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-universeSchema metadata checked when validating database
Messages/Protocol
More details and better filtering in
active-gamesinfo bundleSerialized
MUGS::Server::GameEvents sent to all participants%updateflattened intogame-update%datato improve message format consistencyWinloss 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 statusOverrideability of
maybe-(start/stop)-gameimprovedServer connection
debug-nameadded 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-updatesnopactions allowed out of turn
Other
Error test "game" added, designed to generate errors in specific ways
Per-participant
winlossstatus supportedRefactored/unified behavior of turn validation, submission, and error handling
Simple
BoardGame,RectangularBoard, andMNKGamegenres addedTicTacToeadded as a simple configuration ofMNKGamegenre
MUGS-UI-CLI
MUGS::UI::CLI::InputExtensive cleanup and maintainability refactoring
New features/bindings supported, including expected Readline-style bindings for
^D,^V,^Y, and^Z
App
MAINmulti simplified, allowing user to specify an arbitrary game-typeMore UI output helper methods added
UX
Game help stubbed as needed for all game UIs
Special handling for
NotStartedin play loop and when asking for helpBetter 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 themWhen a game starts, show a notice and the initial state
BoardGameplayers reminded whose turn is nextPush 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!