Skip to content

Releases: heroiclabs/nakama

v2.2.1

20 Nov 17:21
Compare
Choose a tag to compare

Notable changes

Added

  • New duration field in the tournament API.

Fixed

  • Set friend state correctly when initially adding friends.
  • Allow tournaments to be created to start in the future but with no end time.
  • Join events on tournaments with an end time set but no reset now allow users to submit scores.

v2.2.0

12 Nov 00:03
Compare
Choose a tag to compare

Notable changes

Added

  • New runtime function to send raw realtime envelope data through streams.

Changed

  • Improve error message on database errors raised during authentication operations.
  • Set new default of 100 maximum number of open database connections.
  • Friendship state is no longer offset by one when sent to clients.
  • Group membership state is no longer offset by one when sent to clients.
  • Set new default metrics report frequency to 60 seconds.

Fixed

  • Account update optional inputs are not updated unless set in runtime functions.
  • Fix boolean logic with context cancellation in single-statement database operations.

v2.1.3

02 Nov 02:34
Compare
Choose a tag to compare

Notable changes

Added

  • Add option to skip virtual wallet ledger writes if not needed.

Changed

  • Improved error handling in Lua runtime custom SQL function calls.
  • Authoritative match join attempts are now cancelled faster when the client session closes.

Fixed

  • Correctly support arbitrary database schema names that may contain special characters.

v2.1.2

24 Oct 14:37
Compare
Choose a tag to compare

Notable changes

Added

  • Ensure runtime environment values are exposed through the Go runtime InitModule context.

Changed

  • Log more error information when InitModule hooks from Go runtime plugins return errors.
  • Preserve order expected in match listings generated with boosted query terms.

Fixed

  • Improve leaderboard rank re-calculation when removing a leaderboard record.

v2.1.1

21 Oct 05:11
Compare
Choose a tag to compare

Notable changes

Added

  • More flexible query-based filter when listing realtime multiplayer matches.
  • Runtime function to batch get groups by group ID.
  • Allow authoritative match join attempts to carry metadata from the client.

Changed

  • Improved cancellation of ongoing work when clients disconnect.
  • Improved validation of dispatcher broadcast message filters.
  • Set maximum size of authoritative match labels to 2048 bytes.

Fixed

  • Use leaderboard expires rather than end active IDs with leaderboard resets.
  • Better validation of tournament duration when a reset schedule is set.
  • Set default matchmaker input query if none supplied with the request.
  • Removed a possible race condition when session ping backoff triggers concurrently with a timed ping.
  • Errors returned by InitModule hooks from Go runtime plugins will now correctly halt startup.

v2.1.0

08 Oct 20:32
Compare
Choose a tag to compare

Notable changes

Added

  • New Go code runtime for custom functions and authoritative match handlers.
  • New Tournaments feature.
  • Runtime custom function triggers for leaderboard and tournament resets.
  • Add Lua runtime AES-256 util functions.
  • Lua runtime token generator function now returns a second value representing the token's expiry.
  • Add local cache for in-memory storage to the Lua runtime.
  • Graceful server shutdown and match termination.
  • Expose incoming request data in runtime after hooks.

Changed

  • Improved Postgres compatibility on TIMESTAMPTZ types.

Fixed

  • Correctly merge new friend records when importing from Facebook.
  • Log registered hook names correctly at startup.

v2.0.3

10 Aug 12:01
Compare
Choose a tag to compare

Notable changes

Added

  • New "bit32" backported module available in the code runtime.
  • New code runtime function to create MD5 hashes.
  • New code runtime function to create SHA256 hashes.
  • Runtime stream user list function now allows filtering hidden presences.
  • Allow optional request body compression on all API requests.

Changed

  • Reduce the frequency of socket checks on known active connections.
  • Deleting a record from a leaderboard that does not exist now succeeds.
  • Notification listings use a more accurate timestamp in cacheable cursors.
  • Use "root" as the default database user if not specified.

Fixed

  • Runtime module loading now correctly handles paths on non-UNIX environments.
  • Correctly handle blocked user list when importing friends from Facebook.

v2.0.2

09 Jul 12:50
Compare
Choose a tag to compare

Notable changes

Added

  • New configuration option to adjust authoritative match data input queue size.
  • New configuration option to adjust authoritative match call queue size.
  • New configuration options to allow listening on IPv4/6 and a particular network interface.
  • Authoritative match modules now support a match_join callback that triggers when users have completed their join process.
  • New stream API function to upsert a user presence.
  • Extended validation of Google signin tokens to handle different token payloads.
  • Authoritative match labels can now be updated using the dispatcher's match_label_update function.

Changed

  • Presence list in match join responses no longer contains the user's own presence.
  • Presence list in channel join responses no longer contains the user's own presence.
  • Socket read/write buffer sizes are now set based on the socket.max_message_size_bytes value.
  • Console GRPC port now set relative to console.port config value.

v2.0.1

15 Jun 14:08
Compare
Choose a tag to compare

Notable changes

Added

  • New timeout option to HTTP request function in the code runtime.
  • Set QoS settings on client outgoing message queue.
  • New runtime pool min/max size options.
  • New user ban and unban functions.
  • RPC functions triggered by HTTP GET requests now include any custom query parameters.
  • Authoritative match messages now carry a receive timestamp field.
  • Track new metrics for function calls, before/after hooks, and internal components.

Changed

  • The avatar URL fields in various domain objects now support up to 512 characters for FBIG.
  • Runtime modules are now loaded in a deterministic order.

Fixed

  • Add "ON DELETE CASCADE" to foreign key user constraint on wallet ledger.

v2.0.0

14 May 10:45
Compare
Choose a tag to compare

Notable changes

This release brings a large number of changes and new features to the server. For more news about this release see the announcement.

Added

  • Authenticate functions can now be called from the code runtime.
  • Use opencensus for server metrics. Add drivers for Prometheus and Google Cloud Stackdriver.
  • New API for users to subscribe to status update events from other users online.
  • New API for user wallets to store and manage virtual currencies.
  • Realtime multiplayer supports authoritative matches with a handler and game loop on the server.
  • Matches can be listed on the server for "room-based" matchmaker logic.
  • "run_once" function to execute logic at startup with the code runtime.
  • Variables can be passed into the server for environment configuration.
  • Low level streams API for advanced distributed use cases.
  • New API for export and delete of users for GDPR compliance.

Changed

  • Split the server protocol into request/response with GRPC or HTTP1.1+JSON (REST) and WebSockets or rUDP.
  • The command line flags of the server have changed to be clearer and more explicit.
  • Authenticate functions can now take username as an input at account create time.
  • Use TIMESTAMPTZ for datetimes in the database.
  • Use JSONB for objects stored in the database.
  • Before/after hooks changed to distinguish between req/resp and socket messages.
  • Startup messages are more concise.
  • Log messages have been updated to be more useful in development.
  • Stdlib for the code runtime uses "snake_case" consistently across variables and function names.
  • The base image for our Docker images now uses Alpine Linux.

Fixed

  • Build dependencies are now vendored and build system is simplified.
  • Database requests for transaction retries are handled automatically.

Removed

  • The storage engine no longer needs a "bucket" field as a namespace. It was redundant.
  • Leaderboard haystack queries did not perform well and need a redesign.
  • IAP validation removed until it can be integrated with the virtual wallet system.

This release is not a simple upgrade from v1.0 so reach out to us for help to upgrade.