Skip to content

Releases: heroiclabs/nakama

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.

v1.4.1

30 Mar 14:09
Compare
Choose a tag to compare

Notable changes

Added

  • Allow the server to handle SSL termination of client connections although NOT recommended in production.
  • Add code runtime hook for IAP validation messages.

Changed

  • Update social sign-in code for changes to Google’s API.
  • Migrate code is now cockroach2 compatible.

Fixed

  • Fix bitshift code in rUDP protocol parser.
  • Fix incorrect In-app purchase setup availability checks.
  • Cast ID in friend add queries which send notifications.
  • Expiry field in notifications now stored in database write.
  • Return success if user is re-added who is already a friend.

v1.4.0

16 Dec 14:23
Compare
Choose a tag to compare

Notable changes

Changed

  • Nakama will now log an error and refuse to start if the schema is outdated.
  • Drop unused leaderboard 'next' and 'previous' fields.
  • A user's 'last online at' field now contains a current UTC milliseconds timestamp if they are currently online.
  • Fields that expect JSON content now allow up to 32kb of data.

Fixed

  • Storage remove operations now ignore records that don't exist.

v1.3.0

21 Nov 18:30
Compare
Choose a tag to compare

Notable changes

Added

  • Improve graceful shutdown behaviour by ensuring the server stops accepting connections before halting other components.
  • Add User-Agent to the default list of accepted CORS request headers.
  • Improve how the dashboard component is stopped when server shuts down.
  • Improve dashboard CORS support by extending the list of allowed request headers.
  • Server startup output now contains database version string.
  • Migrate command output now contains database version string.
  • Doctor command output now contains database version string.

Changed

  • Internal operations exposed to the script runtime through function bindings now silently ignore unknown parameters.

Fixed

  • Blocking users now works correctly when there was no prior friend relationship in place.
  • Correctly assign cursor data in paginated leaderboard records list queries.
  • Improve performance of user device login operations.

v1.2.0

06 Nov 18:57
Compare
Choose a tag to compare

Notable changes

Added

  • New experimental rUDP socket protocol option for client connections.
  • Accept JSON payloads over WebSocket connections.

Changed

  • Use string identifiers instead of byte arrays for compatibility across Lua, JSON, and client representations.
  • Improve runtime hook lookup behaviour.

Note: You will need to update client libraries with this server release:

  • For Unity use 0.10.0 or greater.
  • For Java/Android use 0.4.0 or greater.
  • For Swift use 0.3.0 or greater.
  • For JavaScript use 0.1.0 or greater.

v1.1.0

17 Oct 11:23
Compare
Choose a tag to compare

Notable changes

Added

  • Advanced Matchmaking with custom filters and user properties.

Changed

  • Script runtime RPC and HTTP hook errors now return more detail when verbose logging is enabled.
  • Script runtime invocations now use separate underlying states to improve concurrency.

Fixed

  • Build system no longer passes flags to Go vet command.
  • Haystack leaderboard record listings now return correct results around both sides of the pivot record.
  • Haystack leaderboard record listings now return a complete page even when the pivot record is at the end of the leaderboard.
  • CRON expression runtime function now correctly uses UTC as the timezone for input timestamps.
  • Ensure all runtime 'os' module time functions default to UTC timezone.

v1.0.2

29 Sep 17:59
Compare
Choose a tag to compare

Notable changes

Added

  • New code runtime function to list leaderboard records for a given set of users.
  • New code runtime function to list leaderboard records around a given user.
  • New code runtime function to execute raw SQL queries.
  • New code runtime function to run CRON expressions.

Changed

  • Handle update now returns a bad input error code if handle is too long.
  • Improved handling of accept request headers in HTTP runtime script invocations.
  • Improved handling of content type request headers in HTTP runtime script invocations.
  • Increase default maximum length of user handle from 20 to 128 characters.
  • Increase default maximum length of device and custom IDs from 64 to 128 characters.
  • Increase default maximum length of various name, location, timezone, and other free text fields to 255 characters.
  • Increase default maximum length of storage bucket, collection, and record from 70 to 128 characters.
  • Increase default maximum length of topic room names from 64 to 128 characters.
  • Better error responses when runtime function RPC or HTTP hooks fail or return errors.
  • Log a more informative error message when social providers are unreachable or return errors.

Fixed

  • Realtime notification routing now correctly resolves connected users.
  • The server will now correctly log a reason when clients disconnect unexpectedly.
  • Use correct wire format when sending live notifications to clients.