Release Notes #

See the updates and improvements in the latest releases of Nakama and supported client libraries.

Nakama #

This section covers new releases and their features for the nakama and nakama-common packages jointly.

Compatibility matrix #

Developers using the Go Server Runtime must ensure the correct nakama-common version is used for their Nakama version:

Nakama VersionNakama Common Version
3.21.01.31.0
3.20.11.30.1
3.20.01.30.1
3.19.01.30.0
3.18.01.29.0
3.17.11.28.1
3.17.01.28.0
3.16.01.27.0
3.15.01.26.0
3.14.01.25.0
3.13.11.24.0
3.12.01.23.0
3.11.01.22.0
3.10.01.21.0
3.9.01.20.0
3.8.01.19.0
3.7.01.18.0
3.6.01.17.0
3.5.01.16.0
3.4.01.15.0
3.3.01.14.0
3.2.11.13.1
3.2.01.13.0
3.1.21.12.1
3.1.11.12.1
3.1.01.12.0
3.0.01.11.0

3.21.0 #

Released: March 18, 2024

New features #

  • A new Fleet Manager API is now available to power session-based multiplayer adapters. See the session-based multiplayer documentation for more information.
  • Added the following functions to the Lua and TypeScript runtimes:
  • Added the following functions to the Go runtime:
  • Added support for storage deletes in runtime multi-update functions.

Improvements #

  • Reduced number of memory allocations in leaderboard cache.
  • Listing leaderboard records can now return up to 1,000 records per request.
  • Simplified query planning for storage object read operations.
  • Improved comparison operation for leaderboard rank cache ordering.
  • Extended extraction of purchase data from Apple IAP receipts.

Fixes #

  • Fix leaderboard rank cache inconsistencies/race that could arise under heavy load.
  • Prevent players from requesting duplicate joins to the same party.
  • Prevent players from requesting joins to parties they are already members of.
  • Ensure runtime user deletion function rejects the system user.

3.20.1 #

Released: February 3, 2024

Improvements #

  • Improved handling of messages being sent while sessions are being closed.
  • Build with Go 1.21.6.

Fixes #

  • Skip Google refund handling for deleted users.
  • Regression in storage engine version check.
  • Handling of owner ID parameter in JavaScript runtime tournamentRecordsList function.
  • Fix regression in tournament end active time calculation when it coincides with reset schedule.
  • Better handling of concurrent wallet update operations for the same user.

3.20.0 #

Released: December 15, 2023

Improvements #

  • The maximum limit of storageIndexList has been increased from 100 to 10,000.
  • The JavaScript runtime function localCachePut now only accepts primitive types. All other values will throw an error.
  • Upgraded GRPC-Gateway, Tally, Zap, crypto, oauth2, GRPC, and related dependencies.
  • Build with Go 1.21.5.

Fixes #

  • Fix pointer slices assertions in JavaScript runtime Nakama module function arguments.
  • Fix caller ID parameter index in Lua runtime storage_list function.
  • Fix incorrect GOARCH flag in Dockerfiles for arm64.

3.19.0 #

Released: November 11, 2023

New features #

  • In-app Purchase Validation now supports Facebook Instant Games. See the corresponding runtime function:
  • Added the following function to the Lua and TypeScript runtimes:
    • localcacheClear
  • Per-key TTL is now supported in the JavaScript and Lua runtime localcache.
  • Support for optional client IP address passthrough to runtime Satori client.

Improvements #

  • Removed unused configuration matchmaker.batch_pool_size.
  • RPCs now allow omitting the unwrap parameter for requests with empty payloads.
  • Upgraded GRPC dependency.
  • Writing tournament scores now updates number of scores even if the submitted score is not an improvement.
  • Moved internal queries with variable number of args to a fixed number of args syntax.
  • Better handling of num_score and max_num_score in tournament score updates.
  • Removed unnecessary curl, git, unzip, rsync, and schroot tools from Docker images.
  • Build with Go 1.21.4 and use Debian bookworm-slim for base docker images.

Fixes #

  • Handling of empty email field when authenticating via Apple Sign In.
  • Rank cache may have stored duplicate ranks for some score inputs.
  • Fix issue related to accepting party members.
  • Fix HTTP request timeout usage in JavaScript runtime.

3.18.0 #

Released: October 26, 2023

New features #

  • The HTTP key can now be read from an HTTP request’s Basic auth header if present.
  • Added prefix search for storage keys in console (key%).
  • Runtime functions to build a leaderboardList cursor to start listing from a given rank.
  • Improved support for TypeScript/JavaScript runtime profiling.

Improvements #

  • Improved how start and end times are calculated for tournaments occurring in the future.
  • Switched session cache model from whitelist to blacklist for improved usability.
  • Use Steam partner API instead of public API for Steam profiles and friends requests.
  • Added create_time and update_time to returned storage engine writes acks.
  • Added storage index create flag to read only from the index.
  • Added caller ID param to storage listing and storage index listing runtime APIs.
  • Facebook Graph API updated from v11 to v18.
  • Added support for refresh token rotation.
  • JS runtime storage write operation version inputs can now be undefined.
  • Build with Go 1.21.3

Fixes #

  • Storage index listing results were sometimes returned with incorrect order.
  • Calculation of leaderboard and tournament times for rare types of CRON expressions that don’t execute at a fixed interval.
  • Users incorrectly received friend request notifications when being added by users who have blocked them.
  • Registration of matchmaker custom override hook function in the Go runtime.
  • Fully remove corresponding matchmaker tickets after custom matchmaker process completes.
  • Incorrectly documented default value for matchmaker flag.

3.17.1 #

Released: August 23, 2023

New features #

Improvements #

  • Prefix storage index values with value. for query input namespacing purposes.

Fixes #

  • Ensure graceful log handling during Lua runtime check operation.
  • Fixed Satori client response body resource handling.

3.17.0 #

Released: July 19, 2023

New features #

  • Added support for Storage Object indexing and the following related runtime functions:
  • Pagination support has been added to the Leaderboard and Tournament endpoints of the Console API.
  • The Nakama Console Leaderboard view now includes pagination.
  • Rank counts from leaderboard/tournament score listings are now returned, if available.

Improvements #

  • Better formatting in the Nakama Console for Status graphed values.
  • Improved handling of large numbers of leaderboards and tournaments.
  • Improved memory usage and population time of leaderboard rank cache.
  • Build with Go 1.20.6.

Fixes #

  • Correct cursor usage in group listings using only open/closed group state filter.
  • Fix issue with delivery of non-persistent SendAll notifications to large numbers of users.
  • Removed incorrect category start and category end parameters from runtime leaderboardList functions.
  • Graceful handling of idempotent tournament creation operations.
  • Sorting of batched storage write and delete operations.
  • Indexing of channel message list responses in Lua runtime.
  • Handling of parameters submitted from the Console UI.
  • Remap original Google IDs to “next generation player IDs”.
  • Return ordered owner records in leaderboard/tournament records listings.

3.16.0 #

Released: April 18, 2023

New features #

Improvements #

  • Added the userID parameter to GroupUpdate function in the Go runtime.
  • Graceful shutdown of the Google IAP receipt processor has been improved.
  • Deleted users are now automatically logged out and disconnected from all sessions.
  • Banned users are now automatically disconnected.
  • IAP validations containing mismatched user IDs no longer return an error.
  • Better handling of matchmaker operations while the interval process is running.
  • Build with Go 1.20.3 and use Debian bullseye-slim for base docker images.

Fixes #

  • Direct message channel message listings are correctly scoped to participants only.
  • Validation of override operator in runtime leaderboard record writes.
  • Open and/or Closed groups are now correctly filtered in the listing API.
  • next and previous cursors of the leaderboardRecordsAroundOwner, leaderboardRecordsHaystack and tournamentRecordsAroundOwner, and tournamentRecordsHaystack operations consistent with record listing.
  • JavaScript and Lua runtime base64Decode functions now pad the input string by default (if needed).

3.15.0 #

Released: January 5, 2023

New features #

  • Added the DeleteAccountfunction to client API.
  • Added DeleteAccount before and after hook functions to all server runtimes.
  • Added In-App Purchase notification callback functions to all server runtimes.
  • The socket acceptor can now read session tokens from request headers.
  • Support for custom response headers set in server configuration is now available.
  • New members can now be added from the Groups page of the Developer Console.
  • Runtime HTTP request functions now allow DELETE and HEAD methods.

Improvements #

  • Stricter validation of limit in runtime storage list operations.
  • Allow subdomain variance in Facebook Limited Login token issuer field.
  • Renamed groupsGetRandom to groups_get_random in the Lua runtime for consistency.
  • Accept Google IAP receipts with or without wrapper structures.
  • Update Nakama logos throughout.
  • Stricter early validation of method parameter in Lua runtime HTTP request function.
  • Disabled SQL statement cache mode describe by default. This reverts to the same behavior as before 3.14.0 release.
  • Build with Go 1.19.4 release.

Fixes #

  • Added missing fields to tournament end and reset JavaScript runtime hooks.
  • Response structure in purchase lookups by identifier.
  • Ensure corresponding leaderboard rank cache entries are removed when a user is deleted.
  • Consistently update scheduler when leaderboards and tournaments are deleted.
  • Matchmaker tracking of eligible matches when downsizing for count multiples.
  • Handling of httpRequest calls in the JavaScript and Lua runtime Nakama modules.
  • Handling of users attempting to leave groups they’re banned from.
  • Handling of optional parameters in JavaScript runtime token generate function.
  • Ensure group count does not update when failing to add a member.
  • Handle Google IAP validation token caching when using credential overrides.
  • More graceful handling of no-op authoritative storage delete operations.
  • Ensure rank cache is correctly updated when joining tournaments.
  • Ensure default parameters for tournament listings are consistent between API and runtimes.
  • Incorrect Groups view visual removal of last group member in Developer Console.
  • Handling of In-App Purchase subscription notification.
  • Handling of party leader transition if previous leader and other members leave concurrently.
  • Fix exact enforcement of maximum party size.

3.14.0 #

Released: October 15, 2022

New features #

Improvements #

  • More consistent signature and handling between JavaScript runtime Base64 encode functions.
  • Group list cursor handling for messages with close timestamps.
  • Handling of database connections going through proxies.
  • Extraction of purchases and subscriptions from Apple receipts.
  • Signature of JavaScript runtime Base64 decode and Base16 encode and decode functions.
  • Token and credential inputs on unlink operations are now optional.
  • Runtime IAP operation errors now include provider payload in error messages.
  • Build with Go 1.19.2 release.

Fixes #

  • Graceful handling of storage list errors in JavaScript runtime.
  • More exact usage of limit parameter in leaderboard record listings.
  • Subscriptions are now included in all data deletion from the developer console.
  • Correct return format of JavaScript runtime account export function.
  • Add user ID to JavaScript runtime wallet operations returned results.
  • Subscriptions were not being stored when validating with persist set to true.

3.13.1 #

Released: August 18, 2022

New features #

Improvements #

  • Improved runtime handling of non-persisted purchases and subscriptions.
  • Improved validation of the count multiple matchmaker parameter.
  • Added stricter validation of Developer Console user email inputs.
  • Added next and previous cursor to results of leaderboard and tournament records around owner client operations.
  • Added next and previous cursor to results of leaderboard and tournament records haystack runtime operations.
  • Improve signature of JavaScript runtime HMAC SHA256 hash function.
  • Improve signature of JavaScript runtime Base64 encode functions.
  • Improve handling of JavaScript runtime context cancellation.
  • Runtime group updates can now increase max count above 100.
  • Build with Go 1.19.0 release.

3.12.0 #

Released: May 22, 2022

New features #

Improvements #

  • Storage write ops now return acks in the same order as inputs.
  • Updated console path for Delete All data operation.
  • The HTTP Key is now checked before Authorization headers in RPC function invocations.
  • Exposed error message for Apple authentication JWT verification failures.
  • Improved user online status lookups.
  • Updated naming of delete notifications before/after hook registration functions.
  • Improved clarity of Nakama Console status view graph headers.
  • Improved log messages from failed social provider requests.
  • Improve concurrency with Lua runtime function registrations.
  • Authoritative match loggers correctly include only their own match identifier.
  • Improved handling of large tournament max size values.
  • Improve handling of channel removal on group leave/kick/ban.
  • UI improvements to the group membership view in the Nakama Console.
  • Improve JavaScript runtime authoritative match filtered broadcasts to large sets of users.
  • Build with Go 1.18.2 release.

Fixes #

  • StreamUserList in JavaScript runtime now returns the correct data.
  • Lists of presences can now be passed as match init parameters to Go runtime matches.
  • Fixed Nakama Console object counts when database statistics are not available.
  • Must generate username field in the token generator if not specified when called by the server runtimes.
  • Align optional parameters in JavaScript runtime bindings.
  • JavaScript registered match handlers were not available within the InitModule function.
  • Use unique notification ID handling for persistent notifications sent to all users.
  • Concurrent leaderboard creation requests are now handled idempotently.
  • Fixed a regression with matchmaker optimization when only two opponents are matched.

3.11.0 #

Released: March 21, 2022

New features #

Improvements #

  • A warning is now logged when a client IP address cannot be resolved.
  • Tagged Prometheus stats contains RPC function identifiers have been added.
  • Improved the Stackdriver log timestamp and and message field formats.
  • Crypto random is now used to seed global random instances when possible.
  • The migrate command now allows the use of database names containing dashes.
  • Leaderboard rank cache population at startup has been improved.
  • JavaScript global variables are now made immutable by default after the InitModule function is invoked.
  • For all runtimes, StorageWrite acks now return system user UUID string.
  • Real-time after hooks now include the outgoing and incoming payloads.
  • Real-time after hooks no longer run when the operation fails.
  • Build with Go 1.18.0 release.

Fixes #

  • The registered function name for nk.channelIdBuild in the JavaScript runtime.
  • Input validation for Steam link operations.
  • Incorrect link device behavior in JavaScript runtime.
  • JavaScript runtime multi-update execution consistency when part of the operation fails.
  • Handling of wallet ledger lookups with no limit during account exports.
  • Maximum count is correctly accounted for in matchmaker mutual match checks.
  • Matchmaker correctly prefers matches closer to the maximum count.

3.10.0 #

Released: December 17, 2021

New features #

Improvements #

  • Set JavaScript runtime custom error message as the returned payload message in RPC requests.
  • JavaScript runtime match data changed to use Uint8Array type.
  • Update Tally and transitive dependencies to resolve dynamic linker error in xxhash package.
  • Build with Go 1.17.5 release.

Fixes #

  • Gracefully close Lua matches when call queue fills up.
  • Better error handling for Lua runtime wallet update operations.
  • Better handling of leaderboard record writes that do not need to update the database.
  • Fixed parsing edge case in TypeScript/JavaScript runtime storage delete operations.
  • Better handling of leaderboard and tournament score submissions that result in no score change.
  • Named match creation now returns existing presences if the name mapped to an existing match.

3.9.0 #

Released: October 30, 2021

New features #

Improvements #

  • Periodic checks of underlying address changes to database hostname now occur more frequently.
  • Upgraded GRPC, GRPC-Gateway, Protobuf, PGX, and other dependencies.

Fixes #

  • Fixed optimistic email imports when linking social profiles.

3.8.0 #

Released: October 15, 2021

New features #

  • Added a final notification sent to sockets closed via the single socket configuration option.
  • Added matchSignal function to the server framework, now required by match handlers. Match signals allow the match handler to be sent a reservation signal to mark a user ID or session ID into the match state ahead of their join attempt and eventual join flow.
  • Nakama Console dashboard now displays node status icons.

Improvements #

  • Log status follow missing users at debug instead of warn level.
  • Build with Go 1.17.2 release.

Fixes #

  • Fixed input validation edge case in group listing operations.

3.7.0 #

Released: September 28, 2021

New features #

Improvements #

3.6.0 #

Released: September 9, 2021

New features #

  • Added more detailed logging when creating, updating, or deleting groups.
  • Added ChannelMessageUpdate function to server framework.
  • Added lua_api_stacktrace configuration option to toggle Lua runtime error stacktraces returned to clients.

Improvements #

  • Facebook Graph API v11.0 is now used.
  • Facebook email import execution is now deferred until after account creation.
  • Improved encode/decode checks in authoritative match creation parameters.
  • A warning is now generated when using deprecated configuration parameters.
  • Improve email import semantics when linking social accounts.
  • Log IAP provider API response payload when non-200 status code is returned.
  • Purchase validation functions now return a flag indicating if valid purchases are new or resubmitted.
  • Better handling of storage operations where OCC is not required.
  • Ledger updates now default to false in walletsUpdate function in all server runtimes.
  • Adjust Lua runtime pool allocation startup logs.
  • Build with Go 1.17.0 release.

Fixes #

  • Fixed log level in Lua runtime log calls which use structured logger fields.
  • Registered purchase validation before/after hooks in JavaScript and Lua runtimes.
  • Registered DemoteGroupUsers before/after hooks in the JavaScript runtime.
  • Added missing environment to JavaScript ValidatedPurchases type.
  • Fixed typos in error messages which mention empty input values.
  • Fixed resolution of exported time and latency metrics.
  • Optimized tournament lookup operations.
  • Fixed groupUpdate function incorrect parsing of open argument in the Lua runtime.
  • List JavaScript modules if loaded from the default entrypoint in the Console.

3.5.0 #

Released: August 11, 2021

New features #

Improvements #

  • Apple Sign-In is now supported across both web and mobile tokens.
  • Status messages can now be up to 2048 characters (increased from 128 characters).
  • Improved SQL used in unfiltered group listings queries.
  • Throw error instead of panic when attempting to create a group with the system user.
  • Added userId field for permission check in JavaScript and Lua runtimes groupUpdate functions.
  • Allow standard space characters in usernames for direct compatibility with Steam display names.
  • Allow batch-only leaderboard and tournament score lookups from the server framework.
  • Return a better error message when single input wallet updates are performed for a user which does not exist.
  • Update to newer Apple guidelines on Game Center root certificate validation in authentication.
  • Build with Go 1.16.7 release.

Fixes #

  • Creator id was read from the wrong argument in JavaScript runtime groupUpdate function.
  • Incorrect validation of max count in groupUpdate JavaScript runtime function.
  • Fixed error handling when attempting to write records to a tournament that does not exist.
  • Missing fields from leaderboards/tournaments get, list, and write functions in JavaScript runtime.
  • Bad parsing of ownerId field in leaderboard/tournament records list functions in JavaScript runtime.
  • Fixed parameter usage in leaderboard score set operator.
  • JavaScript runtime storageList functions did not return a cursor.

3.4.0 #

Released: July 9, 2021

New features #

Improvements #

  • Party matchmaker add operation responses now include a ticket.
  • Replace Bleve gtreap in-memory store implementation with a more compact version.
  • Users kicked from parties now receive a party close event.
  • Log recovered panics in HTTP handler functions at error level rather than info.
  • Added new langTag, members and open filters to the group listing API.
  • Upgraded pgx to v4 for improved SQL performance.
  • Updated RegisterLeaderboardReset runtime function signature.
  • Cancel runtime context when graceful shutdown completes.
  • Added button to Nakama Console UI to allow device IDs to be copied.
  • Build with Go 1.16.5 release.

Fixes #

  • Ensure all members are correctly listed in party info when there are multiple concurrent successful joins.
  • Correctly set party ID in matchmaker matched callback input.
  • Send Party close messages only where appropriate.
  • Fix TypeScript/JavaScript match dispatcher presence list validation.
  • Fix JavaScript/Lua friendsList incorrect returned values.

3.3.0 #

Released: May 17, 2021

New features #

  • Tournaments and leaderboards now allow operator scoring to be passed in on updates.
  • Tournaments and leaderboards now support decrement score operator.
  • Added rpc_id and api_id to the structured logger output in API calls.

Improvements #

  • Store email, avatar URL, and display name provided by Apple, Facebook, and Google login providers if empty.
  • Change runtime group add/kick/promote/demote APIs to include optional callerID parameter for permission checking. If the caller ID is an empty string it defaults to the system user.
  • Default to use SSL mode prefer in database connections.

Fixes #

  • Reading of Lua and JavaScript authoritative match states that contain functions.
  • UNIX path representation for embedded migrations and console files on Windows systems are now used.
  • Updated Lua VM implementation to resolve nil reference caused after a VM registry resize.
  • Pointerize slice and map types when passed into the JS VM so they’re mutated by reference.
  • Fixed off by one error in leaderboard records returned by “around owner” queries.
  • Return null from within JS VM GetMatch function if match does not exist.

3.2.1 #

Released: April 19, 2021

Improvements #

  • User online indicators now observe status mode not just socket connectivity.
  • Updated sql-migrate library to a32ed26.
  • Reworked migrations for better compatibility with different database engines.
  • Updated to Protobuf v1.5.2, GRPC v1.37.0, and GRPC-Gateway v2.3.0 releases.
  • Updated to Bleve v2.0.3 release.
  • Various other dependency updates.

Fixes #

  • Fixed user scoping in Nakama Console purchase listing view.

3.2.0 #

Released: April 14, 2021

New features #

  • New API to logout and intercept logouts with session and refresh tokens.
  • Added a leave reason to presence events to handle transient disconnects more easily.
  • New API for IAP validation with Apple App Store, Google Play Store, and Huawei AppGallery.

Improvements #

  • Improved struct field alignment on types in the social package.
  • Improved memory re-use within the matchmaker and match registry structures.
  • Support for Facebook Limited Login tokens received into the standard Facebook login/link/unlink functions.
  • Updated JS VM to newer version. This resolves an issue with resizing some JS arrays.
  • Build with Go 1.16.3 release.

Fixes #

  • Matchmaker entries which were only partially matched together could not combine with larger player counts.
  • Fixed bad inputs parsed in some before/after hook executions made from the API Explorer in the Console.
  • Incorrect Unix timestamps in JS runtime functions returning users/accounts data were returned.

3.1.2 #

Released: March 4, 2021

Improvements #

  • Sort match listings to show newer created matches first by default.
  • Loosen status follow input validation and constraints to ignore unrecognized user IDs and usernames.
  • Do not import Steam friends by default on Steam authentication.
  • Do not import Facebook friends by default on Facebook authentication.
  • Improved match label update batching semantics.
  • Account object returned by some JS runtime functions are not flattened with user values anymore.
  • Build with Go 1.16.0 release.

Fixes #

  • The matchmaker matched callback did not function correctly in the JavaScript runtime.
  • Allow the console API to return large responses based on the configured max message size.
  • Allow JS runtime initializer functions to be invoked inside a try/catch block.
  • Fix Tournament Reset function hook schedules calculated on first write if the end active time must be computed with no reset schedule.

3.1.1 #

Released: February 15, 2021

Improvements #

  • Go runtime logger now identifies the file/line in the runtime as the caller rather than the logger.
  • Newer CA certificates package within the Docker containers are now used.
  • Build with Go 1.15.8 release.

Fixes #

  • Runtime hooks were not invoked correctly in the JavaScript runtime.
  • Leaderboard listing Delete button did not function in the Nakama Console.
  • GetUsers can fetch user accounts by Facebook ID the same as in the client API.

3.1.0 #

Released: February 4, 2021

New features #

Improvements #

  • Improve output of nakama migrate status command when database contains unknown migrations.
  • The socket status flag is now parsed as case-insensitive.
  • Build with Go 1.15.7 release.

Fixes #

  • The multiUpdate function did not work correctly in the JavaScript runtime.
  • The InitModule would be called twice in the JavaScript runtime.
  • Fixed how the JS runtime invokes matchmakerMatched and leaderboard/tournament related hooks.
  • JS VMs were not being put back into the pool after an RPC call.

3.0.0 #

Released: January 16, 2021

New features #

Improvements #

  • Rebuild Console UI with Angular framework. Manage user data, update objects, restrict access to production with permission profiles, and gain greater visibility into realtime features like active matches.
  • Matchmaker improvements to the process for matching and the handling of player count ranges.
  • Authoritative match handlers can now tick at 60 per second.
  • Support CockroachDB 20.2 release.
  • Build with Go 1.15.6 release.

Fixes #

  • Return rank field in Lua API for leaderboard record writes.
  • Return social fields for users in friend listings.

Client SDKs #

This section covers new releases and their features for the Nakama SDKs. Select your language using the drop-down above to view the relevant releases.

Remember that Nakama version numbering is not aligned with the SDK version numbering.

Contribute
All Nakama SDKs are open-source and contributions are welcome.

.NET/Unity #

These release notes include updates and improvements to the nakama-unity and nakama-dotnet packages.

3.11.0 #

Released: March 8, 2024

New features #
  • Added a new IClient event ReceivedSessionUpdated for when sessions expire and are refreshed.
  • Session objects can now be updated in-place via the new Session.Update method.
Improvements #
  • IsConnected and IsConnecting now read directly from the underlying .NET socket status. This allows application code to more easily detect connectivity loss arising from a lack of internet access.
  • Default socket adapter changed from WebSocketAdapter to WebSocketStdlibAdapter. This was done to utilize the native .NET Websocket library for improved stability and maintenance.
Fixes #
  • Trying to connect a socket that is already connecting now results in a no-op instead of an error.

3.10.1 #

Released: December 12, 2023

Improvements #
  • Restored retry functionality for UnityWebRequest.Result.ConnectionError errors.

3.10.0 #

Released: November 21, 2023

Nakama SDK #
Improvements #
  • Rank count is now returned with tournament record listings.
  • Added ability to delete tournament records with DeleteTournamentRecordAsync.
  • Hostnames passed to the client now preserve their hardcoded paths.
  • Create and update times are now returned with notifications.
  • Added Facebook Instant Games purchase validation.
Changes #
  • Mark socket as connected before event handler is called.
  • Limited scope of retry logic to very specific 500-level codes from the server.

3.9.0 #

Released: August 11, 2023

Satori SDK #
Improvements #
  • Added the recompute option to UpdatePropertiesAsync, allowing audiences to be recalculated on property update.
Changes #
  • Decreased the size of JSON payloads.
  • DeleteIdentityAsync no longer accepts an explicit ID.

3.8.0 #

Released: June 12, 2023

Nakama SDK #
Improvements #
  • Added the following functions and flags:
    • DeleteAccountAsync for deleting user accounts.
    • Authoritative flag for tournaments returned from the server.
    • RefundTime and UserIdfor purchases and subscriptions returned from the server.
  • Added raw subscription provider information.
Changes #
  • session.Username is used wherever outdated state might be returned.
Fixes #
  • Fixed an issue where outgoing payloads could include unnecessary JSON.
Satori SDK #
Improvements #

3.7.0 #

Released: March 10, 2023

Nakama SDK #
Improvements #
  • Added an UpdatePresences utility to IMatch and IParty. Use this method as a helper to update the local tracking of your match and/or party presences when an IMatchPresenceEvent or IPartyPresenceEvent is dispatched.
Fixes #
  • Fixed an issue where the OnClose event would not fire in Unity WebGL.
Satori SDK #
Improvements #
  • Default and custom properties can now optionally be attached to authentication requests.
Changes #
  • GetFlagDefault and GetFlagsDefault now use the apiKey passed to the client constructor rather than accepting it as a unique parameter.

3.6.0 #

Released: February 7, 2023

Improvements #
  • Now includes the .NET Satori SDK. Learn about Satori.
  • Added support for calling RPCs with an HTTP key via POST when a payload is provided.
  • The Logger object is now exposed on IClient.
Changes #
  • Added ability to specify path parameter to client urls.
Fixes #
  • 500 errors could cause parsing issues on the client.
  • Websocket would throw an exception on CloseAsync() in certain situations.
  • Prevent race condition when Close is called while receive loop has an incomplete read buffer.

3.5.0 #

Released: September 6, 2022

Improvements #
  • Added the following functions and features for In-app Purchase Validation:
    • Ability to persist Apple, Google, and Huawei purchase receipts in the Nakama database. Used to compute SeenBefore and protect against replay attacks. Set to true by default.
    • A SeenBefore property to IApiValidatedPurchase.
    • ListSubscriptionsAsync which returns a list of the user’s subscriptions.
    • ValidateSubscriptionAppleAsync which returns details about a user’s Apple subscription.
    • ValidateSubscriptionGoogleAsync which returns details about a user’s Google subscription.
    • GetSubscriptionAsync which returns a subscription for the provided product ID.
Changes #
  • ValidatedPurchaseEnvironment has been renamed to ApiStoreEnvironment.
  • ValidatedPurchaseStore has been renamed to ApiStoreProvider.
  • Removed obsolete client methods that accept a CancellationTokenSource. These have been replaced in favor of methods that accept a CancellationToken as added in v3.3.
Fixes #
  • Fixed an issue with SocketClosed event taking a significant length of time or not firing at all when internet connection is lost.
  • An issue would occur when sending messages over the socket from multiple threads.
  • Automatic retry seeding is now random across devices.

3.4.1 #

Released: May 13, 2022

Fixes #
  • Updated to correct Nakama .NET 3.4.0 release binary.

3.4.0 #

Released: May 2, 2022

Improvements #
  • The max message size limit with socket messages can now be overridden in the adapter.
  • Relayed multiplayer matches can now be created with a custom name.
Fixes #
  • The background read loop now correctly updates isConnecting and isConnected when close is detected.

JavaScript #

2.7.1 #

Released: September 26, 2023

Fixes #
  • Regenerated nakama-js and nakama-js-protobuf distribution files to match v2.7.0.

2.7.0 #

Released: September 26, 2023

Nakama SDK #
New Features #
Changes #
Fixes #
  • Fixed typings distribution location for protobuf-js.
  • Fixed how newer bundlers (such as those used by ViteJs) discover Nakama’s type definitions.
Satori SDK #
New Features #
  • Added ability to schedule, update and delete outgoing messages for Live Events.
  • Custom and default properties can now be added for a user at the point of authentication.
  • Add recompute parameter to updateProperties.
  • You can now delete an identity.
Fixes #
  • The Live event ID is now returned when getting all live events.

2.6.1 #

Released: March 21, 2023

New Features #
  • A onheartbeattimeout can now be passed to the socket, which is called directly when a heartbeat timeout occurs. It also still calls ondisconnect once the socket is closed (which can take a few seconds for some browsers).
Fixes #
  • Fixed a NodeJS compatibility issue by no longer depending on XMLHttpRequest.

2.6.0 #

Released: March 6, 2023

New features #
  • The socket will now automatically heartbeat with the server from within nakama-js.
    • If the server doesn’t reply after a heartbeat timeout has elapsed, ondisconnect will be called. This should resolve issues with the socket detecting lack of internet connectivity in Chrome.
    • You can configure the heartbeat timeout with setHeartbeatTimeoutMs(ms : number) : void.
  • A connectTimeoutMs can now be passed to the socket connect call in order to set a connect timeout.
  • A sendTimeoutMs can now be passed to the socket constructor to detect timeouts for socket calls that expect a response.
Fixes #
  • Fixed an issue with dispatching of onpartyclose.

2.5.3 #

Released: January 31, 2023

Fixes #
  • Nakama and Satori ESM module files now correctly end in the .mjs extension.

2.5.2 #

Released: January 24, 2023

New features #
Changes #
  • Removed yarn in favor of npm for package management.
  • Updated dependencies for Node 18 support.

2.4.1 #

Released: June 7, 2022

  • Republication of 2.4.0 release with the cjs distribution provided.

2.4.0 #

Released: June 2, 2022

Improvements #
  • Changed the data structure used to pass session variables to authentication methods from Map<string, string> to Record<string, string> for serialization support.
  • StreamData.stream_presence changed to StreamData.sender, and this field is populated correctly now.
  • MatchData.presences changed to a singular MatchData.presence, representing the sender. This field should be populated correctly now.
  • Match and party data payloads are now serialized as protobuf when using the protobuf adapter.
    • Breaking Change:MatchData and PartyData have their data fields typed as a Uint8Array. Users who send a string as their match or party data will need to use a utility such as TextDecoder to deserialize the string. This change is enforced at compile time.
    • sendMatchState and sendPartyData can now receive bytes as input. If bytes are sent using the default text adapter they are base64 encoded to a string.
      • These functions can no longer receive data payloads of type any. Any object previously passed in must be serialized to a string or bytes. This change is enforced at compile time.
  • Improved comments and documentation on objects and methods.
Fixes #
  • Fixed an issue with the base64 dependency in React Native.

2.3.0 #

Released: August 3, 2021

Improvements #
  • The rpcHttpKey parameter list optionals and sequencing have changed, the new signature is: rpcHttpKey(httpKey: string, id: string, input?: object);
  • ApiOverrideOperator has been renamed to ApiOperator.
  • Query parameters are now formatted using snake_case rather than camelCase by the client.
Fixes #
  • 401 Unauthorized Response from the server due to rpcHttpKey.

2.3.0 #

Released: August 3, 2021

Improvements #
  • The rpcHttpKey parameter list optionals and sequencing have changed, the new signature is: rpcHttpKey(httpKey: string, id: string, input?: object);
  • ApiOverrideOperator has been renamed to ApiOperator.
  • Query parameters are now formatted using snake_case rather than camelCase by the client.
Fixes #
  • 401 Unauthorized Response from the server due to rpcHttpKey.

Cocos2d-JS #

2.1.0 #

Released: April 7, 2021

Improvements #
Fixes #
  • Removed usage of unsupported:
    • setter in XmlHttpRequest.withCredentials
    • XmlHttpRequest.responseType

C++ #

2.8.4 #

Released: November 25, 2023

Fixes #
  • Fixed an issue where NRtClient would throw an exception when connecting over poor Wifi connections.

2.8.3 #

Released: November 8, 2023

Improvements #
  • The NRtClient now exposes an isConnecting() method for checking if an active connection attempt is being made.
Fixes #
  • The NRtClient will now guard against multiple connection attempts without disconnecting from the socket.

2.8.2 #

Released: November 1, 2023

Fixes #
  • Fixed a race condition that could happen during socket connection which would cause an std::future_error to be thrown.

2.8.1 #

Released: May 25, 2023

Fixes #
  • Fixed a memory issue with retrieving HTTP response codes.

2.8.0 #

Released: May 15, 2023

New features #
  • Added an additional std::future-based API to NClient and NRtClient. All methods in these clients have future-based counterparts suffixed with Async.
  • Added static build support for Nakama SDK via package managers like vcpkg.
Changes #
  • Simplified test suite and improved build system for proprietary platforms.
  • Upgraded Curl to 8.0.1.
  • Changed adapter on Windows from libhttpclient to libcurl.
  • Removed d suffix from the Windows debug library.
Fixes #
  • Fixed an errant compiler directive in NClient.

2.7.2 #

Released: March 17, 2023

New features #
Changes #
  • Improved build automation around the test suite.
Fixes #
  • Fixed encoding issue with some cursors sent to the server.
  • An exception could be thrown when the client sent match data over a bad network.
  • Upgraded libcurl to 7.88.1, fixing a rare Websocket SSL handshake issue on Unix systems.
  • Fixed base64 dependency in Android SSL for broader Android API level support.

2.7.1 #

Released: February 23, 2023

Fixes #
  • Restored armeabi-v7a Android support.
  • SSL certificates for the libcurl transport were not loaded properly if the JavaVM was shared with other libraries.

2.7.0 #

Released: February 17, 2023

New features #
  • Added Windows x86 support.
  • vcpkg consumption is now supported. See examples for more information.
  • Test suite is runnable on iOS and Android devices.
  • Added a libcurl network transport and specified it as the default for Android.
  • Android builds can now be made on ARM macs.
  • Nakama can now be included via users by CMake find_package(nakama-sdk) calls.
  • We now publish header and debug binaries for Windows.
Changes #
  • For users who use vcpkg or CMake to explicitly toggle off our default transports:
    • Removed ability to create default client and realtime clients if no default transport is specified for the platform (createDefaultClient, createDefaultRtClient).
  • Simplified the Android build toolchain. The entry point is now standardized with our other platforms using the cmake --preset ... pattern.
Fixes #
  • Platforms using our wslay adapter (Android, Linux, Mac, iOS) now trigger onDisconnect on error.
  • Fixed an issue where the web socket would hang on slower network connections.
  • Fixed authenticateRefresh in the GrpcClient.
  • Added CFBundleVersion to MacOSX frameworks, which is required for the app store upload process.

2.6.0 #

Released: September 8, 2022

Changes #
  • Rewrite of the C++ repository structure and build system. The user-facing API remains unchanged.

Read more about the changes in the accompanying blog post.

2.5.1 #

Released: January 16, 2022

Fixes #
  • Errors in Party and Matchmaker callbacks.
  • Fixed removeMatchmakerParty API.

Unreal #

2.9.7 #

Released: March 1, 2024

Changes #
  • Removed deprecated NakamaCore from .uplugin module list. This will improve the build experience for mobile platforms.
Fixes #
  • Fixed test suite compatibility with Unreal 4 Engine.
  • Fixed unnecessary lambda capture of HTTP request object.

2.9.6 #

Released: February 7, 2024

Fixes #
  • Fixed serialization of party join requests.

2.9.5 #

Released: February 5, 2024

Fixes #
  • Fixed realtime client compatibility with Unreal Engine 4.

2.9.4 #

Released: November 1, 2023

Fixes #
  • Fixed the automatic import of Steam friends when passing import during authentication.

2.9.3 #

Released: October 30, 2023

Fixes #
  • Fixed importing of Steam friends.

2.9.2 #

Released: October 23, 2023

Changes #
  • By default, tests are now only enabled for developer builds.
Fixes #
  • Fixed lifetime of socket request contexts.
  • Fixed build warnings about enum default values.

2.9.1 #

Released: October 11, 2023

Fixes #
  • Fixed support for non-ASCII characters in session authentication tokens.
  • Fixed an internal import and enum name that could cause compilation failures.

2.9.0 #

Released: October 5, 2023

New features #
  • Added TFunction support to our API calls for more concise use of callbacks.
  • The implementation of NakamaUnreal has been rewritten to use native Unreal types rather than the prebuilt NakamaCore.
    • The user-facing API remains unchanged.
    • This helps resolve linking issues faced when depending on NakamaUnreal. NakamaUnreal is the recommended way to use our library, but NakamaCore is available for users who want to use nakama-cpp in Unreal Engine.
  • A new Blueprint-based test project is available.
  • Added feature parity with Nakama 3.17.0.
  • FDateTime can now be used for reading session create and expiry time.
Fixes #
  • Fixed x64 detection on pre-5.2.0 versions of Unreal.

2.8.2 #

Released: September 1, 2023

Improvements #
  • The NakamaCore module now includes Windows Arm64 support.
  • Added Windows arm64/x64 debug support to the NakamaCore module.
Fixes #
  • Fixed architecture detection code on pre-5.2.0 versions of Unreal.
  • Fixed loading of the Websocket Module.

2.8.1 #

Released: July 26, 2023

Fixes #
  • Fixed a compiler error in Android section of build script.

2.8.0 #

Released: July 25, 2023

Improvements #
  • Updated to nakama-cpp 2.8.0.
  • Refactored the Nakama Core test suite to run on target devices rather than editor host.
  • nakama-cpp is now pulled into nakama-unreal using vcpkg rather than via custom builds from within nakama-cpp.
Fixes #
  • Fixed Unreal Websocket transport throwing an exception if going out of scope without being explicitly disconnected.
  • Added the ability to pass WebSocketModule to the Nakama Unreal websocket factory. This is useful if you want to connect/run the socket on a thread that is different from the game thread.
  • Fixed how Unreal Engine finds and loads the Nakama Linux shared object library.

2.7.0 #

Released: January 10, 2023

New features #
  • Added Android support.
  • Added the following Blueprints node:
    • Authentication Refresh
    • Update Chat Message
  • Added the following functions to the Realtime Client:
    • IsConnected
    • GetHeartbeatIntervalMs
    • SetHeartbeatIntervalMs
  • Added ALL to ENakamaGroupState enum.
  • Added RPCHttpKey function to Client for calling an RPC via HTTP key.
Changes #
  • Updated transport logic for UE4 support.
  • Various improvements to client logic.
Fixes #
  • Issue when creating client node in demo project.
  • Version property is now copied correctly in FNakamaStoreObjectAck constructor.
  • Fixed compilation issue on Linux.

2.6.0 #

This release builds upon the rewrite of the C++ repository structure and build system. Read more about the changes in the accompanying blog post.

Added #
  • Support for Unreal native types. Use the NakamaUnreal module and see the README for details on how to use it.
  • Support for Blueprints. Use the NakamaBlueprints module if you are interested and see the README for details on how to use it.
Changes #
  • Functionality exposed in previous releases has been moved to NakamaCore. The NakamaUnreal and NakamaBlueprints modules depend on NakamaCore.

Released: September 10, 2022

2.5.0-r1 #

Released: January 20, 2022

Fixes #
  • Added missing headers.

2.5.0 #

Released: September 14, 2021

Improvements #
Fixes #
  • Cursor assignment in storage object listing.

Cocos2d-x #

2.8.0 #

Released: June 28, 2023

Improvements #
  • Updated to use nakama-cpp 2.8.0..

2.6.0 #

Released: February 24, 2023

Improvements #
  • Updated to use nakama-cpp 2.7.1..
  • Removed buggy Cocos adapters. The new adapters are now native to nakama-cpp.

2.5.1 #

Released: January 17, 2022

Improvements #
Fixes #
  • Cursor assignment in storage object listing.
  • Corrected enum values of NChannelType for join group chat.

Godot #

3.3.1 #

Released: April 17, 2023

Fixes #

Fixed the following issues:

  • Arguments for HTTPRequest.request() for beta17.
  • Typehints for enums in Godot 4.0-rc1.
  • Type check and typehint for Godot 4.0-rc3.
  • N*ull byte array error in GodotHttpAdapter for C#.

3.3.0 #

Released: January 31, 2023

This release includes an experimental version for Godot 4, tested with Godot 4.0-beta16, with all the same features as the Godot 3 version.

Improvements #

3.2.0 #

Released: August 31, 2022

Improvements #
  • Added support for receiving binary data in NakamaRTAPI.MatchState.
  • Added support for sending and receiving binary data in NakamaRTAPI.PartyData.
  • Added NakamaMultiplayerBridge to integrate with Godot’s High-Level Multiplayer API.
Fixes #
  • Fixed NakamaSocket.add_matchmaker_party_async() and its tests.
  • MatchData.op_code type in schema changed to TYPE_INT.
  • Fixed circular reference in Nakama singleton to itself.

3.1.0 #

Released: April 30, 2022

Improvements #
  • Exposed the seen_before property on NakamaAPI.ApiValidatedPurchase. Any previously validated purchases are returned with this flag.
  • Relayed multiplayer matches can now be created with a custom name.
  • Added support for count_multiple on NakamaSocket.add_matchmaker_async() and NakamaSocket.add_matchmaker_party_async().
  • Added C# support classes to better integrate the .NET client with the Mono version of Godot, allowing HTML5 exports to work.
Fixes #
  • Receiving of NakamaRTAPI.PartyClose messages.
  • Sending and receiving of PartyData.

Java/Android #

2.4.0 #

Released: July 25, 2023

New Features #
  • Added DefaultSession.fromSigningKey(), enabling the creation of a Session from a signing key for server-to-server calls.

2.3.0 #

Released: July 18, 2023

New Features #
  • The Satori client now includes HTTP support via the HttpClient, alongside the gRPC-based DefaultClient.
  • Default values can now be provided when calling GetFlag.
Fixes #
  • Fixed handling of network errors when calling GetDefaultFlag and returning of default flag value in such cases.

2.2.1 #

Released: July 7, 2023

New Features #
  • Now includes the Java Satori SDK. Learn about Satori here.
Changes #
  • Update Shadow to 8.1.1.
  • Update to Gradle 8.2.0.

2.1.4 #

Released: April 20, 2021

Fixes #
  • protobuf-lite now properly exported to Maven and Gradle projects.

Defold #

3.1.0 #

Released: November 7, 2022

Improvements #

Added the following features and functionality:

  • Utility functions to store and restore tokens.
  • Refresh token to the session table and functions to detect expired or soon to be expired tokens.
  • Global and per-request retries of failed requests.
  • Cancellation token for Rest API requests.
  • Socket event on_party_leader().
  • socket.CHANNELTYPE_* and socket.ERROR_* constants

3.0.3 #

Released: May 20, 2022

Fixes #
  • Fixed issue with incorrect match data property being used in socket_send function.

3.0.2 #

Released: May 12, 2022

Improvements #
  • Allows optional parameters to be nil in socket functions.

3.0.1 #

Released: May 12, 2022

Fixes #
  • Fixed runtime error when an unhandled socket message is received.

3.0.0 #

Released: April 11, 2022

Improvements #
  • Breaking changes introduced in this version due to changes in code generation and interaction with Nakama APIs.
    • Socket creation and socket events, including sending events and adding socket event listeners, have been moved to nakama/socket.lua.
    • Message creation functions have been removed in favor or including all message arguments in the functions sending the messages.
  • Added message functions to the client and socket instances. Compare: nakama.do_foo(client, ...) and client.do_foo(...).
    • The old approach of passing the client or socket instance as the first argument still exists for backwards compatibility.

Swift #

1.1.0 #

Released: November 30, 2023

New features #
  • Added support for:
    • listFriends
    • deleteFriends
    • updateAccount
    • listChannelMessages
    • listMatches
Improvements #
  • Expose expiredTimeSpan in client initializer.
  • Change Int32 and Int64 parameters to Int.

1.0.0 #

Released: November 14, 2023

New features #
  • Complete client rewrite that has API and realtime feature parity with Nakama 3.0.
  • Support for the Swift async/await concurrency model.
  • Configurable automatic retry support on 500 level server errors.
  • Automated session refresh for expired tokens.