Skip to content

Releases: heroiclabs/nakama

v2.7.0

12 Sep 11:03
Compare
Choose a tag to compare

Notables changes

Added

  • Enable RPC functions to receive and return raw JSON data.
  • Status follow operations now also accept usernames to follow.
  • Pagination support for friends listing operations.
  • Filtering by friend state in friends listing operations.
  • Pagination support for group users listing operations.
  • Filtering by user state in group users listing operations.
  • Pagination support for user groups listing operations.
  • Filtering by group state in user groups listing operations.
  • Allow max count to be set when creating groups from client calls.
  • Log better startup error message when database schema is not set up at all.
  • New "check" command to validate runtime modules without starting the server.
  • Add discrete channel identifier fields in all messages and message history listings.
  • Session tokens now allow storage of arbitrary string key-value pairs.
  • New runtime function for programmatic GDPR account data exports.

Changed

  • Use Go 1.13.0 on Alpine 3.10 as base Docker container image and native builds.
  • Update devconsole lodash (4.17.13), lodash.template (4.5.0), eslint-utils (1.4.1), set-value (2.0.1), and mixin-deep (1.3.2) dependencies.
  • Errors from runtime before hooks no longer close the session.
  • Switch prometheus metrics to use labels instead of a prefix.
  • Add flag on realtime socket messages that will support optional reliability.
  • Friends listing pages are now limited to max 100 results each.
  • Group users listing pages are now limited to max 100 results each.
  • User groups listing pages are now limited to max 100 results each.
  • Group users listing now includes disabled (banned) users.
  • User groups listing now includes disabled groups.
  • Remove hard cap on maximum number of users per group.
  • Return deterministic ordering for edge relationship listings.
  • Return deterministic ordering for storage listing operations.
  • Return deterministic ordering for leaderboard scores where both score and subscore are identical.
  • Consistent default database address between migration command and main server startup.
  • Return deterministic ordering for group listings without filters.

Fixed

  • Handle updates during leaderboard schedule reset window.
  • Ensure the matchmaker cannot match together tickets from the same session.
  • Handle leaderboard deletes shortly before a scheduled reset.
  • Listing user groups no longer returns an error when the user is a member of zero groups.
  • Go runtime group creation now correctly validates max count.
  • Consistent expiry calculation in leaderboard records haystack queries.
  • Convert custom SQL query and exec parameters to integers when necessary in Lua runtime.
  • Correctly validate users before adding them to groups.
  • Add missing group chat channel message when a user joins the group.
  • Add missing group chat channel message when a user leaves the group.
  • Add missing group chat channel message when a user is added to the group.
  • Add missing group chat channel message when a user is kicked from the group.
  • Add missing group chat channel message when a user is promoted in the group.
  • Handle TIMESTAMPTZ return types in Lua runtime custom SQL queries.
  • Use consistent upper bound for authoritative match label size.

NOTE: The Go 1.13 release has changed how we build the the server so it can accommodate Go modules for dependency resolution with the builtin Go server runtime. We recommend Go modules be used to manage dependencies on projects which use the Go runtime moving forwards.

v2.6.0

01 Jul 22:06
Compare
Choose a tag to compare

Notable changes

Added

  • Explicitly set cache control header in all API responses.
  • Add support for CockroachDB 19.1.
  • Add tournament start active timestamp to the API response.
  • Add overridable expiry time when listing leaderboard/tournaments records.

Changed

  • Tournament start time can be set to past time.
  • Update GRPC (1.21.1), GRPC-Gateway (1.9.2), Protobuf (1.3.1), Mux (1.7.2), and OpenCensus (0.22.0) dependencies.
  • Use Go 1.12.6 as base Docker container image and native builds.
  • Move from dep to Go modules for dependency management.
  • Switch database driver from pq to pgx.
  • Update devconsole handlebars (4.1.2) and js-yaml (3.13.1) dependencies.
  • Update community link in console sidebar.

Fixed

  • Fix delayed first time invocation of tournament and leaderboard callbacks.
  • Expired tournaments will no longer be listed nor any records will be returned.
  • Unlink device identifiers on console user account details page.
  • Add missing index drop on migrate down.
  • Handle query and parameter resets on wallet update retries.
  • Reset list of friend IDs in Facebook import when retrying the operation.
  • Reset notifications in friend add when retrying the operation.
  • Do not return storage list cursor unless there are further objects.
  • Attempt fast user and storage count on partitioned tables in console API.

v2.5.1

03 May 17:05
Compare
Choose a tag to compare

Notable changes

Changed

  • Storage object get operations now also return the user ID if the owner is the root user.
  • Status view on console no longer refreshes if server is not reachable.
  • Adjust default socket ping and pong heartbeat frequency.

Fixed

  • Display updated counters on console status page.
  • Render friend names on console user details page.
  • Render group names on console user details page.
  • Do not attempt to navigate to groups from console user details page.
  • Render changed wallet value after update on console user details page.
  • Display custom ID, email, and verification time on console user details page.
  • Add missing placeholder text to fields on console user details page.
  • Re-render the console storage view when deleting records.

v2.5.0

25 Apr 22:51
Compare
Choose a tag to compare

Notable changes

Added

  • New developer console UI available on http://127.0.0.1:7351.
  • New Lua runtime functions to generate JWT tokens.
  • New Lua runtime functions to hash data using RSA SHA256.
  • Print max number of OS threads setting in server startup logs.

Changed

  • Log more information when authoritative match handlers receive too many data messages.
  • Ensure storage writes and deletes are performed in a consistent order within each batch.
  • Ensure wallet updates are performed in a consistent order within each batch.
  • Increase default socket pong wait time.
  • Ensure leaderboard record metadata, number of scores, and update time are only changed during leaderboard write operations if the score or subscore change.

Fixed

  • Storage write batches now correctly abort when any query in the batch fails.
  • Rank cache correctly calculates record expiry times.
  • Return correct response to group join operations when the user is already a member of the group.
  • Fix query when selecting a page of leaderboard records around a user.

v2.4.2

25 Mar 13:43
Compare
Choose a tag to compare

Notable changes

Added

  • New programmatic console API for administrative server operations.
  • Initial events subsystem with session start+end handlers.

Changed

  • Update GRPC (1.19.0), GRPC-Gateway (1.8.4), and Protobuf (1.3.0) dependencies.
  • Use Go 1.12.1 as base Docker container image and native builds.

v2.4.1

08 Mar 17:29
Compare
Choose a tag to compare

Notable changes

Added

  • Strict validation of socket timeout configuration parameters.
  • New Go runtime constants representing storage permissions.
  • New runtime function to programmatically delete user accounts.
  • Allow multiple config files to be read at startup and merged into a final server configuration.
  • Storage listing operations can now disambiguate between listing system-owned objects and listing all objects.

Changed

  • Default maximum database connection lifetime is now 1 hour.
  • Improved parsing of client IP and port for incoming requests and socket connections.
  • WebSocket sessions no longer log the client IP and port number in error messages.
  • Go and Lua server runtime startup log messages are now consistent.
  • All schema and query statements that use the '1970-01-01 00:00:00' constant now specify UTC timezone.
  • Storage write error message are more descriptive for when values must be encoded JSON objects.
  • Storage listing operations now treat empty owner IDs as listing across all objects rather than system-owned objects.

Fixed

  • CRON expressions for leaderboard and tournament resets now allow concurrent usage safely.
  • Set console API gateway timeout to match connection idle timeout value.

v2.4.0

03 Feb 11:26
Compare
Choose a tag to compare

Notable changes

Added

  • New logging format option for Stackdriver Logging.
  • New runtime function to immediately disconnect active sockets.
  • New runtime function to kick arbitrary presences from streams.

Fixed

  • Fix return arguments for group user list results in Lua runtime function.
  • Leaderboard records returned with a previous page cursor no longer errors.

v2.3.2

17 Jan 22:18
Compare
Choose a tag to compare

Notable changes

Fixed

  • Set gateway timeout to match idle timeout value.
  • Reliably release database resources before moving from one query to the next.
  • Unlock GPGS certs cache in social client.

v2.3.1

04 Jan 22:37
Compare
Choose a tag to compare

Notable changes

Added

  • Make authoritative match join attempt marker deadline configurable.

Changed

  • Improve db transaction semantics with batch wallet updates.

Fixed

  • Initialize registration of deferred messages sent from authoritative matches.
  • Early cancel Lua authoritative match context when match initialization fails.
  • Update decoding of Steam authentication responses to correctly unwrap payload. Thanks @nielslanting
  • Parse Steam Web API response errors when authenticating Steam tokens.

v2.3.0

31 Dec 12:53
Compare
Choose a tag to compare

Notable changes 🎉

Added

  • WebSocket connections can now send Protobuf binary messages.
  • Lua runtime tournament listings now return duration, end active, and end time fields.
  • Lua runtime tournament end hooks now contain duration, end active, and end time fields.
  • Lua runtime tournament reset hooks now contain duration, end active, and end time fields.
  • New configuration flag for maximum number of concurrent join requests to authoritative matches.
  • New runtime function to kick users from a group.
  • Clients that send data to an invalid match ID will now receive an uncollated error.
  • The logger now supports optional log file rotation.
  • Go runtime authoritative matches now also print Match IDs in log lines generated within the match.
  • Email authentication client requests can authenticate with username/password instead of email/password.
  • Email authentication server runtime calls can authenticate with username/password instead of email/password.
  • New authoritative match dispatcher function to defer message broadcasts until the end of the tick.
  • New runtime function to retrieve multiple user accounts by user ID.
  • Send notifications to admins of non-open groups when a user requests to join.
  • Send notifications to users when their request to join a group is accepted.
  • New configuration flag for presence event buffer size.

Changed

  • Replace standard logger supplied to the Go runtime with a more powerful interface.
  • Rename stream 'descriptor' field to 'subcontext' to avoid protocol naming conflict.
  • Rename Facebook authentication and link 'import' field to avoid language keyword conflict.
  • Rejoining a match the user is already part of will now return the match label.
  • Allow tournament joins before the start of the tournament active period.
  • Authoritative matches now complete their stop phase faster to avoid unnecessary processing.
  • Authoritative match join attempts now have their own bounded queue and no longer count towards the match call queue limit.
  • Lua runtime group create function now sets the correct default max size if one is not specified.
  • Improve socket session close semantics.
  • Session logging now prints correct remote address if available when the connection is through a proxy.
  • Authoritative match join attempts now wait until the handler acknowledges the join before returning to clients.

Fixed

  • Report correct execution mode in Lua runtime after hooks.
  • Use correct parameter type for creator ID in group update queries.
  • Use correct parameter name for lang tag in group update queries.
  • Do not allow users to send friend requests to the root user.
  • Tournament listings now report correct active periods if the start time is in the future.
  • Leaderboard and tournament reset runtime callbacks now receive the correct reset time.
  • Tournament end runtime callbacks now receive the correct end time.
  • Leaderboard and tournament runtime callbacks no longer trigger twice when time delays are observed.
  • Check group max allowed user when promoting a user.
  • Correct Lua runtime decoding of stream identifying parameters.
  • Correctly use optional parameters when they are passed to group creation operations.
  • Lua runtime operations now observe context cancellation while waiting for an available Lua instance.
  • Correctly list tournament records when the tournament has no end time defined.