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.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.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.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.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.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.