Skip to content

Releases: heroiclabs/nakama

v2.14.0

03 Oct 13:38
Compare
Choose a tag to compare

Notable changes

Added

  • Publish new metric for presences count.
  • Use a "tool dependency" to specify the protoc-gen-go, protoc-gen-grpc-gateway, and protoc-gen-openapiv2 required versions. See here.

Changed

  • Build with Go 1.15.2 release.
  • Update to Protobuf 1.4.2, GRPC 1.32.0, and GRPC-Gateway 2.0.0-beta.5. This enables us to take advantage of the new Protobuf runtime. See here.
  • Replace shell script with Go generate commands to run protoc toolchain.
  • Update protocol definitions to remove warnings from stricter Go package import paths. See here.
  • Move some Go packages to be internal.
  • Improved rank caching strategy.
  • Separate authentication error response code and message for banned accounts.
  • Pin to an older certs store in the Docker container to work around an issue with GeoTrust certificates.

NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.8.0 must be used with this release.

env GO111MODULE=on go get "github.com/heroiclabs/nakama-common/runtime@v1.8.0"

v2.13.0

31 Aug 15:03
Compare
Choose a tag to compare

Notable changes

Added

  • Add Sign in with Apple authentication, link, and unlink.
  • Wallet operations now return the previous and updated state of the wallet.
  • New multi-update runtime function to handle batched storage, wallet, and account updates in a single transaction.
  • Groups now have a demote API for convenience.

Changed

  • Build with Go 1.15.0 release.
  • Sanitize metric names and properties fields.
  • Wallet updates now use int64 values to ensure precision in all numeric operations.
  • Update to nakama-common 1.7.3 release.
  • Optimize how session IDs are stored in presence structs.
  • Friend listings now allow a page size of up to 1000 objects.

Fixed

  • Prevent bad presence list input to dispatcher message broadcasts from causing unexpected errors.
  • Extra HTTP headers in RPC responses are set before the response is written to the buffer.
  • Fix an issue in the Lua runtime nk module's "jwt_generate" function that would prevent it from accepting a key in RS256 format.
  • Fix an issue in the Lua runtime nk module's "rsaSHA256Hash" function that would prevent it from parsing the input private key.
  • Unmatched routes in the Nakama Console server now return a 404 rather than a 401 response.

NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.7.3 must be used with this release.

env GO111MODULE=on go get "github.com/heroiclabs/nakama-common@v1.7.3"

v2.12.0

25 May 18:04
Compare
Choose a tag to compare

Notable changes

Added

  • Print a log message when all authoritative messages have stopped during graceful shutdown.
  • New option in Lua runtime for read-only globals to reduce memory footprint. This is enabled by default.
  • Separate server config flags for socket read and write buffer sizes.
  • Add user session scoped fields to authoritative match join attempt contexts.
  • Add group ID to content of in-app notifications sent with user changes in groups.
  • New runtime function to get a single match by ID.
  • New runtime functions for link and unlink operations.
  • New Lua runtime function to print a log message at debug level.
  • Add disable time to account get operations in the server runtime.
  • Expose last user relationship update time when listing friends.
  • Expose caller information in logger messages.
  • Expose node name in all runtime contexts.

Changed

  • Rebuild metrics implementation.
  • Validate GOB encoded authoritative match create parameters.
  • Eliminate user account writes to database if fields have not changed.
  • The gauges in the Developer console status view more accurately reflect current server metrics.
  • Disconnect match participants when a Lua runtime authoritative match ends due to an error.
  • Sort wallet ledger listings by creation time from newest to oldest.
  • Do not update leaderboard and tournament record timestamps when scores have not changed.
  • Build with Go 1.14.3 release.
  • Update to nakama-common 1.5.1 release.

Fixed

  • Fetch account in Lua runtime function now includes Facebook Instant Game IDs.
  • Don't duplicate runtime environment values in the devconsole configuration view.
  • All low-level channel presence events now populate room, group, and direct message fields.
  • Developer console status graphs correctly show a fixed time window of metrics.
  • Fix friend deletion in developer console user detail view.
  • Fix group membership deletion in developer console user detail view.
  • A user's password is no longer expected when unlinking emails.

NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.5.1 must be used with this release.

env GO111MODULE=on go get "github.com/heroiclabs/nakama-common@v1.5.1"

v2.11.1

29 Mar 16:37
Compare
Choose a tag to compare

Notable changes

Changed

  • Update protobuf (1.3.5), websocket (1.4.2), opencensus (0.22.3), atomic (1.6.0), zap (1.14.1) dependencies.
  • Update devconsole minimist (1.2.2), acorn (6.4.1) dependencies.
  • Build with Go 1.14.1 release.

v2.11.0

27 Feb 12:45
Compare
Choose a tag to compare

Notable changes

Added

  • Return tournament end time in listing operations if one exists.
  • Add Facebook Instant Game Authentication.

Changed

  • Build with Go 1.14.0 release.
  • Update most server dependencies (particularly GRPC, GRPC Gateway, and Protobuf).
  • Upgrade to use nakama-common 1.4.0 release.

NOTE: For developers who use the Go server runtime support. The nakama-common package at v1.4.0 must be used with this release.

v2.10.0

13 Feb 13:48
Compare
Choose a tag to compare

Notable changes

Added

  • New metric for number of authoritative matches currently running.
  • New metric for total number of events dropped by the events processor pool.

Changed

  • Build with Go 1.13.7 release.
  • Update username on leaderboard and tournament records when processing a score update.
  • Automatically stop empty authoritative matches after a configurable amount of time.

Fixed

  • Fix calculation for 'can enter' field for newly created tournaments.
  • Ensure tournament reset callbacks carry the correct ID.
  • Ensure tournament end callbacks carry the correct end and reset times.
  • Expose match stopped state to the Lua runtime match dispatcher.
  • Fix calculation of tournament start active time for schedules with variable active durations.

v2.9.1

14 Jan 21:24
Compare
Choose a tag to compare

Notable changes

Changed

  • Build with Go 1.13.6 release.
  • Upgrade devconsole handlebars (4.3.0) dependency.

Fixed

  • Ensure tournament listing correctly uses the cursor on paginated requests.
  • Passthrough GRPC Gateway Console requests to GRPC internally with authentication middleware active.

v2.9.0

23 Dec 15:45
Compare
Choose a tag to compare

Notable changes

Added

  • New runtime functions to retrieve tournaments by ID.
  • Allow tournament duration to exceed reset window and cap the duration if it does.
  • Ban group users which prevents them from rejoining or requesting to rejoin.
  • New config parameter for max request message size separate from socket message size limit.

Changed

  • Do not use absolute path for tini executable in default container entry point.
  • Faster validation of JSON object input payloads.
  • Update IAP validation example for Android Publisher v3 API.
  • Relayed multiplayer matches allow echoing messages back to sender if they're in the filter list.
  • Upgrade Facebook authentication to use version 5.0 of the Facebook Graph API.
  • Upgrade devconsole serialize-javascript (2.1.1) dependency.
  • Ensure authoritative match dispatcher is no longer usable after match stops.
  • Deferred message broadcasts now process just before match ends if match handler functions return an error.

Fixed

  • Correctly read pagination cursor in notification listings.
  • Group user add no longer sends another channel message when an add operation is repeated.
  • Importing Facebook friends when there are no friends and reset is true now works as expected.

NOTE For developers who use the Go server runtime support. The nakama-common package at v1.3.0 must be used with this release.

v2.8.0

12 Nov 05:12
Compare
Choose a tag to compare

Notable changes

Added

  • New API for client and runtime events known as event signals.
  • Allow user account password updates from the developer console.

Changed

  • Default runtime HTTP key value is no longer the same as the default server key value.
  • A group create operation now returns a GRPC Code 6 (HTTP 409 Conflict) when the group name is already in use.
  • Allow Console API requests to return results above default size limit.
  • The presence count is no longer added together across nodes in the status view of the Developer Console.
  • Create tournament operations always returns the existing tournament after repeated calls with the same ID.
  • Upgrade to Go 1.13.4 and use Debian buster-slim for base docker images.
  • Rate limit the maximum number of concurrent leaderboard/tournament callback executions.
  • Allow Go runtime match listing operations min/max count to be optional.

Fixed

  • Handle (OCC) errors when concurrently writing new storage objects.
  • Fix optimistic concurrency controls (OCC) on individual storage objects under high write contention.
  • Time spent metrics are now correctly reported in milliseconds.
  • Password minimum length error message now correctly reflects the constraint.
  • Set specific response Content-Type header in successful HTTP RPC responses.

NOTE For developers who use the Go server runtime support. The nakama-common package at v1.2.0 must be used with this release.

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.