Skip to content

Releases: heroiclabs/nakama

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.

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.