Releases: heroiclabs/nakama-dotnet
Releases · heroiclabs/nakama-dotnet
3.12.0
v3.11.0
Added
- Nakama: New
IClient
event calledReceivedSessionUpdated
when session expires and is refreshed. - Nakama: New
Session.Update
method to allow for in-place updates to the session object.
Changed
- Nakama:
IsConnected
andIsConnecting
will now read directly from the underlying .NET socket status. This will allow application code to more quickly and easily detect connectivity loss arising from a lack of internet access. - Nakama: Default socket adapter changed from
WebSocketAdapter
toWebSocketStdlibAdapter
. This was done to utilize the native .NET Websocket library for improved stability and maintenance.
Fixed
- Nakama: Trying to connect a socket that is already connecting now results in a no-op instead of an error.
v3.10.0
Notable changes
Added
- Nakama: Rank count is now returned with tournament record listings.
- Nakama: Added ability to delete tournament records with
DeleteTournamentRecordAsync
. - Nakama: Hostnames passed to the client now preserve their hardcoded paths.
- Nakama: Create and update times are now returned with notifications.
- Nakama: Added Facebook Instant Games purchase validation.
Changed
- Nakama: Mark socket as connected before event handler is called.
- Nakama: Limited scope of retry logic to very specific 500-level codes from the server.
v3.9.0
Added
- Satori: Added
recompute
option toUpdatePropertiesAsync
which allows audiences to be recalculated on property update.
Changed
- Satori: Decreased size of JSON payloads.
Fixed
- Satori:
DeleteIdentityAsync
no longer accepts an explicit ID.
v3.8.0
Added
- Nakama: Added
Authoritative
flag to tournaments returned from the server. - Nakama: Added
RefundTime
andUserId
to purchases and subscriptions returned from the server. - Nakama: Added raw subscription provider information.
- Nakama: Added
DeleteAccountAsync
for deleting user accounts. - Satori: Added
DeleteIdentityAsync
for deleting user identities.
Changed
- Nakama: Used
session.Username
wherever outdated state might be returned.
Fixed
- Nakama: Fixed issue where outgoing payloads could include unnecessary JSON.
v3.7.0
Added
- Nakama: Added an
UpdatePresences
utility toIMatch
andIParty
. Use this method as a helper to update the local tracking of your presences in your matches and parties when anIMatchPresenceEvent
orIPartyPresenceEvent
is dispatched. - Satori: Added optional default and custom properties that can be attached to authentication requests.
Changed
- Satori:
GetFlagDefault
andGetFlagsDefault
now use theapiKey
passed to the client constructor rather than accepting it as a unique parameter.
v3.6.0
Added
- Satori: Adds the Satori .NET SDK. Satori is our liveops server for game studios. Read more about it in the documentation.
- Nakama: Adds support for calling RPCs with a HTTP key via POST when a payload is provided.
- Nakama: Expose the
Logger
object onIClient
. - Nakama: Adds support for POST RPC requests when using HTTP key with a payload
Fixed
- Nakama: Prevent race condition when
Close
is called while receive loop has an incomplete read buffer. - Nakama: Fixed an issue where 500 errors could cause parsing issues on the client.
- Nakama: Added ability to specify
path
parameter to client urls.
Changed
- Nakama: Fixed an issue where our websocket would throw an exception on
CloseAsync()
in certain situations.
v3.5.0
Notable changes
Added
- Ability to persist Apple, Huawei, and Google purchase receipts in the Nakama database. This is set to
true
by default in order to allow the server to detect replay attacks. - Add a
SeenBefore
property toIApiValidatedPurchase
. - Add
ListSubscriptionsAsync
which returns a list of the user's subscriptions. - Add
ValidateSubscriptionAppleAsync
which returns details about a user's Apple subscription. - Add
ValidateSubscriptionGoogleAsync
which returns details about a user's Google subscription. - Add
GetSubscriptionAsync
which returns a subscription for the provided product ID. - Add support for
countMultiple
inAddMatchmakerAsync
andAddMatchmakerPartyAsync
.
Changed
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
that were added in v3.3.
Fixed
- Fix an issue with
SocketClosed
event taking a significant length of time or not firing at all when internet connection is lost. - Fix an issue that would occur when sending messages over the socket from multiple threads.
- Fix automatic retry seeding to be random across devices.
- Fix an issue when parsing unquoted numbers as strings in our bundled TinyJson dependency.
v3.4.0
Notable changes
Added
- Allow max message size limit with socket messages to be overridden in the adapter.
- Relayed multiplayer matches can now be created with a custom name (i.e. room name).
Fixed
- Fix background read loop to update 'IsConnecting' and 'IsConnected' when close is detected.
v3.3.0
Notable changes
Added
- Add overload methods in Client which take a CancellationToken. Thanks @gamecentric.
- Add WebSocketStdlibAdapter allows the codebase to be used in WASM and Blazor projects. Thanks @mattkanwisher.
Changed
- Use DualMode in TcpClient to handle NAT64 overlay networks (some mobile carriers).
- Refactor the socket adapter design to use Tasks (previously avoided for Unity WebGL compat.).
- Socket messages which exceed the internal buffer size now generate an "InternalBufferOverflowException" type.
- A socket connect made on an already connected socket will no longer raise an exception.
- Propagate up the "WebSocketException" type thrown on socket messages sent over a disconnected socket.
- Update bundled "Ninja.WebSockets" library to commit 0b698a733f0e8711da7a5854154fe7d8a01fbd06.
Fixed
- Expose base exception if retry handler fails.