Help language development. Donate to The Perl Foundation

MUGS::Core zef:japhb last updated on 2021-05-14

Changes
Revision history for MUGS-Core

0.1.2  2021-05-13
  [MAJOR CHANGES]
  - In this release, network serialization has been completely switched over
    from JSON to CBOR (via CBOR::Simple and Cro::CBOR).  This allows a much
    richer data model on the wire, more accurate round-tripping, and much
    faster handling for floating point and packed binary data.

    HOWEVER: This also means that some data will be coming through in native
    (or in the case of enums, numeric) format, rather than converted to strings
    as with JSON.  You may be assuming receipt of string data in some places;
    expect to undo any workarounds you may have added.

    ALSO: In order to provide easier-to-read debugging output, some debug code
    outputs messages in prettified JSON format, which as mentioned above can't
    represent the full richness of CBOR data.  The following JSON::Fast PR will
    at least prevent debug output failures; if you're having debug issues,
    apply the JSON::Fast PR, reinstall it, and try again:

        https://github.com/timo/json_fast/pull/73

  [Bug fixes]
  - Fix a race condition in game client/UI startup
  - Don't create a second lobby client if directly entering lobby
  - Slightly improve invalid structure error messages
  - Explicitly depend on Cro component versions to work around Cro packaging
    issue (https://github.com/croservices/release/issues/2)

  [Logging/Telemetry]
  - Track creation Instant for Message objects
  - Add GameStateUpdate as first Log::Timeline::Task in Server
  - Switch --debug default to False (off) for mugs-ws-server

  [Performance]
  - Depend on Cro 0.8.5+ to get significant WebSocket performance improvements
  - Much faster and perf-stable StructureValidator
  - Support fast path for validating packed arrays

  [Testing]
  - Add tests for validation of packed and numeric arrays
  - Add a 'local-test-insecure' server alias for non-TLS connections


0.1.1  2021-04-15
  [Bug fixes]
  - Stub more required MUGS::App::LocalUI and MUGS::UI::Game methods
  - Don't record nop actions as game events

  [Clients]
  - Record most recently seen gamestate in client (where UI can access it)
  - LocalUIs always create a Lobby client before any game UIs
  - Improve Lobby client available game types list
  - Add Lobby client active games list
  - Track and handle game startup push messages
  - LocalUIs now let game startup initiate show-initial-state

  [Identities]
  - All identity types now do MUGS::Identity role
  - Add identity name deconfusion and reservation
  - Identity names ensured valid according to PRECIS-style ruleset
  - Identity names limited to 63 characters
  - Stringify Persona and Character to their screen-name

  [Messages/Protocol]
  - More details and better filtering in active-games info bundle
  - Define serialization for MUGS::Server::GameEvent
  - Send serialized game events to all participants
  - Flatten %update into game-update %data to improve message format consistency
  - Refactor winloss status to handle both PvP and co-op play

  [Servers]
  - Add a helper method for overriding a game config form default
  - Add a hook for post-processing at the end of process-action,
    just before returning the game status
  - Improve overrideability of maybe-(start/stop)-game
  - Clear up confusing naming and character/player confusion
  - Add a server connection debug-name and display it in WebSocket debug info

  [Testing]
  - Add Error test 'game', designed to generate errors in specific ways
  - Add initial tests for Error 'game'

  [Universes]
  - Support schema versioning, meta-state, and introspection
  - Generalize schema bootstrapping operation
  - Support `mugs-admin update-universe`
  - Check schema metadata when validating database


0.1.0  2021-03-21
  [Bug Fixes]
  - Add dependency on Terminal::ANSIColor (for mugs-release)

  [Packaging]
  - Ensure mugs-release is run from repo root
  - Add 'check' subcommand to mugs-release to confirm repo is ready
  - Add more generated HTML files to .gitignore

  [UI/UX]
  - Improve clarity of output from mugs-release


0.0.6  2021-03-16
  [Bug fixes]
  - Handle undefined files better in MUGS::Util::File
  - Fix detection of empty config file keys
  - Exclude pq from dependencies install in README SYNOPSIS

  [Packaging]
  - Run tests during Docker packaging
  - Add a mugs-release tool to automate parts of the release process

  [Tests]
  - Allow tests to be run as root
  - Test remaining bits of MUGS::Util::File
  - Add tests for MUGS::Util::{Implementation,UI}Registry
  - Add tests for MUGS::Util::Config


0.0.5  2021-03-12
  [Packaging]
  - Factor MUGS::App::CroServer helper routines out of ::WebSocketServer


0.0.4  2021-03-10
  [Packaging]
  - Support Docker builds
  - Support `cro run`

  [Bug fixes]
  - Flush WebSocketServer startup messages immediately
  - Show data type name when throwing InvalidStructure from StructureValidator
  - Fix internal Seq escaping from get-info-available-game-types

  [Debugging]
  - Show Connection message debug output as pretty-printed JSON
  - Don't log X::MUGS typed exceptions in Server unless DEBUG is set

  [Other changes]
  - Refactor and improve MUGS::Server::Game {maybe-,}{start,stop}-game methods
    * Allow genre and leaf game classes to hook start-game and stop-game
    * Only start games that have enough participants
    * Abandon games that drop below minimum participant count


0.0.3  2021-03-04
  - First public upload