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 Version | Nakama Common Version |
---|---|
3.19.0 | 1.30.0 |
3.18.0 | 1.29.0 |
3.17.1 | 1.28.1 |
3.17.0 | 1.28.0 |
3.16.0 | 1.27.0 |
3.15.0 | 1.26.0 |
3.14.0 | 1.25.0 |
3.13.1 | 1.24.0 |
3.12.0 | 1.23.0 |
3.11.0 | 1.22.0 |
3.10.0 | 1.21.0 |
3.9.0 | 1.20.0 |
3.8.0 | 1.19.0 |
3.7.0 | 1.18.0 |
3.6.0 | 1.17.0 |
3.5.0 | 1.16.0 |
3.4.0 | 1.15.0 |
3.3.0 | 1.14.0 |
3.2.1 | 1.13.1 |
3.2.0 | 1.13.0 |
3.1.2 | 1.12.1 |
3.1.1 | 1.12.1 |
3.1.0 | 1.12.0 |
3.0.0 | 1.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
andmax_num_score
in tournament score updates. - Removed unnecessary
curl
,git
,unzip
,rsync
, andschroot
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
andupdate_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
tov18
. - 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 #
- Added an optional input parameter
recompute
to Satori property update operations.
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 #
- Added the following functions to all runtimes:
- Optionally skip TLS checks for runtime
http
functions using the newinsecure
flag. - An optional matchmaker function hook to override matches before proceeding is now available.
Improvements #
- Added the
userID
parameter toGroupUpdate
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 Debianbullseye-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/orClosed
groups are now correctly filtered in the listing API.next
andprevious
cursors of theleaderboardRecordsAroundOwner
,leaderboardRecordsHaystack
andtournamentRecordsAroundOwner
, andtournamentRecordsHaystack
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 following functions to all runtimes:
- Added the
DeleteAccount
function 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
andHEAD
methods.
Improvements #
- Stricter validation of limit in runtime storage list operations.
- Allow subdomain variance in Facebook Limited Login token issuer field.
- Renamed
groupsGetRandom
togroups_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 #
- Added the following functions to all runtimes:
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 #
- Added the following functions to all runtimes:
- Added subscription validation APIs for Google and Apple.
- Added the following to Nakama Console:
- Chat messages view
- Extended filtering options for Matches
- Extended filtering options for Accounts
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 #
- Added the following functions to all runtimes:
- Added the following functions to Lua and TypeScript runtimes:
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 #
- Added the following functions to all runtimes:
- Added a
senderID
parameter to the channelIdBuild function. - Added the Groups page to Nakama Console.
- Added the
countMultiple
option to the Matchmaker.
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 #
- Added
ctx
field to accessHTTP
request headers in all runtimes. - Added the following functions to the JavaScript runtime:
- Added a new configuration option for frequency of database DNS change scans.
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 #
- Relayed multiplayer matches can now be created with a custom name. Names are mapped to match identifiers.
- Nakama errors are now exposed to the server runtime.
- The Nakama Console wallet view now supports pagination.
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 ofwarn
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 #
- Added the following configuration options:
Improvements #
- Allow tournament creation operations to set the
authoritative
flag. - Build with Go 1.17.1 release.
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
inwalletsUpdate
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 JavaScriptValidatedPurchases
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 ofopen
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 #
- Handle thrown JavaScript runtime custom exceptions containing a message and a grpc code to be returned in the server response.
- Added the following functions to server framework:
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 runtimesgroupUpdate
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 runtimegroupUpdate
function. - Incorrect validation of
max count
ingroupUpdate
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 #
- Added the following functions to server framework:
- groupsList
- leaderboardList
- leaderboardsGetId
- Custom Metrics for counters, gauges, and timers.
- Added the
prev_reset
field to leaderboard/tournament functions. - Added an optional
passwordOverride
to Apple IAP validation function. - Added socket
lang
parameter to Go runtime contexts.
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 thaninfo
. - Added new
langTag
,members
andopen
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
andapi_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 VMGetMatch
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 #
- New API to import Steam friends when authenticating with Steam.
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 #
- Added JavaScript runtime for writing server code.
- Added refresh tokens that can be used to refresh sessions.
- New Realtime Parties for users to create teamplay in games.
- Added party matchmaking support to the matchmaker.
- Added configuration options to the Matchmaker to control how long tickets wait for their preferred match.
- Added Console UI permissions API.
- Added the following runtime functions:
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.
.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 toUpdatePropertiesAsync
, 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
andUserId
for 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 #
- Added
DeleteIdentityAsync
for deleting user identities.
3.7.0 #
Released: March 10, 2023
Nakama SDK #
Improvements #
- Added an
UpdatePresences
utility toIMatch
andIParty
. Use this method as a helper to update the local tracking of your match and/or party presences when anIMatchPresenceEvent
orIPartyPresenceEvent
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
andGetFlagsDefault
now use theapiKey
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 viaPOST
when a payload is provided. - The
Logger
object is now exposed onIClient
.
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 computeSeenBefore
and protect against replay attacks. Set totrue
by default. - A
SeenBefore
property toIApiValidatedPurchase
. 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.
- Ability to
Changes #
ValidatedPurchaseEnvironment
has been renamed toApiStoreEnvironment
.ValidatedPurchaseStore
has been renamed toApiStoreProvider
.- Removed obsolete client methods that accept a
CancellationTokenSource
. These have been replaced in favor of methods that accept aCancellationToken
as added inv3.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
andisConnected
whenclose
is detected.
JavaScript #
2.7.1 #
Released: September 26, 2023
Fixes #
- Regenerated
nakama-js
andnakama-js-protobuf
distribution files to matchv2.7.0
.
2.7.0 #
Released: September 26, 2023
Nakama SDK #
New Features #
- Matches can now be created with a custom name.
Changes #
- Improved how outgoing messages are logged in verbose mode.
- Updated signature for
authenticateGameCenter
.
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 toupdateProperties
. - 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 callsondisconnect
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
.
- If the server doesn’t reply after a heartbeat timeout has elapsed,
- 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 #
- Added the Satori client package (
satori-js
). See the Satori JS Client Guide for more information.
Changes #
- Removed
yarn
in favor ofnpm
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>
toRecord<string, string>
for serialization support. StreamData.stream_presence
changed toStreamData.sender
, and this field is populated correctly now.MatchData.presences
changed to a singularMatchData.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
andPartyData
have their data fields typed as aUint8Array
. 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
andsendPartyData
can now receive bytes as input. If bytes are sent using the default text adapter they arebase64
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.
- Breaking Change:
- 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 toApiOperator
.- Query parameters are now formatted using
snake_case
rather thancamelCase
by the client.
Fixes #
401 Unauthorized Response
from the server due torpcHttpKey
.
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 toApiOperator
.- Query parameters are now formatted using
snake_case
rather thancamelCase
by the client.
Fixes #
401 Unauthorized Response
from the server due torpcHttpKey
.
Cocos2d-JS #
2.1.0 #
Released: April 7, 2021
Improvements #
- Updated to the nakama-js v2.1.5 client.
- Added examples for Cocos Creator.
Fixes #
- Removed usage of unsupported:
- setter in
XmlHttpRequest.withCredentials
XmlHttpRequest.responseType
- setter in
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 anisConnecting()
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 toNClient
andNRtClient
. All methods in these clients have future-based counterparts suffixed withAsync
. - 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
tolibcurl
. - 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 #
- Match listing can now be performed with a query. See the C++ client guide for more information.
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
).
- Removed ability to create default client and realtime clients if no default transport is specified for the platform (
- 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 prebuiltNakamaCore
.- 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, butNakamaCore
is available for users who want to usenakama-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 onpre-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 theNakamaCore
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 intonakama-unreal
using vcpkg rather than via custom builds from withinnakama-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
toENakamaGroupState
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
. TheNakamaUnreal
andNakamaBlueprints
modules depend onNakamaCore
.
Released: September 10, 2022
2.5.0-r1 #
Released: January 20, 2022
Fixes #
- Added missing headers.
2.5.0 #
Released: September 14, 2021
Improvements #
- Added real-time parties support.
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 #
- Added real-time parties support.
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()
forbeta17
. Typehints
forenums
in Godot4.0-rc1
.Type check
andtypehint
for Godot4.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 #
- Added support for the following:
- Subscription validation APIs added in Nakama 3.13.1
- delete_account_sync() API added in Nakama 3.15.0
- Sending events API
- Allow disabling threads for making HTTP requests.
- 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.
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 toTYPE_INT
.- Fixed circular reference in Nakama singleton to itself.
3.1.0 #
Released: April 30, 2022
Improvements #
- Exposed the
seen_before
property onNakamaAPI.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
onNakamaSocket.add_matchmaker_async()
andNakamaSocket.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-basedDefaultClient
. - 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_*
andsocket.ERROR_*
constants
- Subscription validation for in-app purchases.
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.
- Socket creation and socket events, including sending events and adding socket event listeners, have been moved to
- Added message functions to the client and socket instances. Compare:
nakama.do_foo(client, ...)
andclient.do_foo(...)
.- The old approach of passing the client or socket instance as the first argument still exists for backwards compatibility.