All notable changes to this project are documented below.
The format is based on keep a changelog and this project uses semantic versioning.
- Update to use Nakama and Satori .NET 3.14.0 release.
- Updated to use the Nakama and Satori .NET 3.13.0 release.
- Updated to use the Nakama and Satori .NET 3.12.1 release.
- Updated to use the Nakama and Satori .NET 3.12.0 release.
- Removed unnecessary reference to old Nakama Unity version in Demo scene.
- Default socket adapter changed from
WebSocketAdapter
toWebSocketStdlibAdapter
. This was done to utilize the native .NET Websocket library for improved stability and maintenance. - Updated to use the Nakama and Satori .NET 3.11.0 release.
- Retry functionality restored for
UnityWebRequest.Result.ConnectionError
.
- Updated to use the Nakama and Satori .NET 3.10.0 release.
- Restricted retry attempts to more specific 500-level error codes from the server.
- Updated to use the Nakama and Satori .NET 3.9.0 release.
- Updated to use the Nakama and Satori .NET 3.8.0 release.
- Updated to use the Nakama and Satori .NET 3.7.0 release.
- Fixed an issue where the OnClose event would not fire in Unity WebGL.
- Update to use the Nakama and Satori .NET 3.6.0 release.
- Fixed multiple race conditions that could occur when Unity web requests were cancelled.
- Update to use Nakama .NET 3.5.0 release.
- Don't parse response messages on 500 responses from the server.
- Updated to correct Nakama .NET 3.4.0 release binary.
- Update to use Nakama .NET 3.4.0 release.
- Update to use Nakama .NET 3.3.0 release.
- Use Task objects with the WebGL export.
- Add additional group listing filters.
- Add ability to overwrite leaderboard/tournament ranking operators from the client.
- Fix url-safe encoding of query params that were passed to the client as arrays of strings.
- Remove
autoRefreshSession
from overloadedClient
constructors. This can still be customized with the baseClient
constructor. This is a workaround for an internal compiler error in Unity's WebGL toolchain.
- Remove use of deprecated WWW fields in newer versions of Unity.
- Add ability for user to retry requests if they fail due to a transient network error.
- Add ability for user to cancel requests that are in-flight.
- The language tag for the user can be configured with the socket on connect.
- An
IPartyMatchmakerTicket
is now received by the party leader when they add their party to the matchmaker viaAddMatchmakerPartyAsync
. - Renamed
PromotePartyMember
toPromotePartyMemberAsync
.
- Fix issue where UnityLogger did not implement a Debug log method.
- Fix issue where refreshing a session with metadata threw an exception due to the key already existing.
- Fix issue where
IUserPresence
objects were not being deserialized properly by the client as part of theIParty
object.
- The
Socket.ReceivedParty
event can now be subscribed to in order to listen for acceptance events from the leader of a closed party.
- Fix incorrect .DLL version being pulled in from nakama-dotnet.
- A session can be refreshed on demand with "SessionRefreshAsync" method.
- Session and/or refresh tokens can now be disabled with a client logout.
- The client now supports session auto-refresh using refresh tokens. This is enabled by default.
- New socket RPC and MatchSend methods using ArraySegment to allow developers to manage memory re-use.
- Add IAP validation APIs for purchase receipts with Apple App Store, Google Play Store, and Huawei AppGallery.
- Add Realtime Parties feature.
- Use lock object with socket operations instead of ConcurrentDictionary as a workaround for a Unity engine WebGL regression.
- Avoid use of extension methods as a workaround for a Unity engine WebGL regression.
- Unity sockets now dispatch events on Unity's main thread by default. If you have been using code to move socket message to the main thread (e.g., UnityMainThreadDispatcher) you may now remove that code. This new default behavior can overridden by passing
useMainThread: false
toclient.NewSocket
. When passed this way, sockets default to their pre-2.9 behavior by dispatching messages in a separate thread.
- Parse HTTP responses defensively in case of bad load balancer configurations.
- Fixed a bug with parsing error responses that did not contain a message or grpc code.
- Made names of asmdef files more specific for easier searching inside the Unity editor.
- Listing tournaments can now be done without providing start or end time filters.
- Can now import Steam friends after authenticating or linking to a Steam account.
- HTTP Client now properly reads off timeout value.
Update Nakama .NET dependency. See release notes: heroiclabs/[email protected]. Added namespace to JavaScript web socket adapter internals.
Update Nakama .NET dependency. See release notes: heroiclabs/[email protected].
- Add support for the Unity Package Manager. See the README for usage.
- Update Nakama .NET dependency. See release notes: heroiclabs/[email protected].
- Update minimum required Unity version to 2018.4.26f1 LTS. While older releases may work YMMV.
- Add new scene as an example for WebGL basics. Thanks @humbertodias.
- Add a default error handler to the socket adapter to make common errors more visible.
- Update Nakama .NET dependency. See release notes: heroiclabs/[email protected].
- UnityWebRequest downloadHandler is null on DELETE methods. Thanks @hasbean.
- Update interface impl signatures with JS socket adapter.
- Update Nakama .NET dependency. See release notes: heroiclabs/[email protected].
- Update Nakama .NET dependency. See release notes: heroiclabs/[email protected].
- Update Nakama .NET dependency. See release notes: heroiclabs/[email protected].
- New example on how to manage the client/socket/session as a singleton.
- Various improvements to existing code examples.
- Update Nakama .NET dependency. See release notes: heroiclabs/[email protected].
- Support WebGL builds.
- Add new Leaderboard and Tournament API methods.
- Use new socket library instead of WebSocketListener.
- Update socket event names to match csharp style guide.
- Update TinyJson dependency.
- Socket logger must not disable the socket events.
- Deserialize data in stream messages correctly.
- Linker instructions to preserve code in dependent DLLs.
- New code snippets for multiplayer and matchmaker examples.
- Update dependent DLLs for lowlevel websocket driver and .NET client.
- New documentation on the client.
- Many new features and APIs.
- Support for Nakama 2 release.
- Rewrite client with async/await sockets.
- New project structure for simpler Unity builds.
- Use correct JS transport listener bindings.
- Correctly calculate session expiry client-side.
- MatchmakeAddMessage correctly follows C# naming scheme.
- Improve memory allocation profile when using UDP transport.
- Build system now includes
BCCrypto.dll
in.unitypackage
.
- New experimental rUDP socket protocol option.
- Use string identifiers instead of byte arrays for compatibility across Lua, JSON, and client representations.
- Advanced Matchmaking with custom filters and user properties.
- Expose Collation ID when client operations result in an error.
- A paging cursor can now be serialized and restored.
- New storage partial update feature.
- New storage list feature.
- A new Unity code example which shows how to dispatch actions on the main thread.
- A session now exposes
.ExpiresAt
and.Handle
from the token.
- Add default builder for notification list and remove messages.
- A group self list operation now return the user's membership state with each group.
- A group leave operation now return a specific error code when the last admin attempts to leave.
- The client interface now uses action delegates instead of event handlers to support a proxy pattern.
- A new Unity example scene which shows how to matchmake users.
- New
NIds
helper class and extension methods to compare byte arrays. - Add new In-App Notification feature.
- Add new In-App Purchase Validation feature.
- Update client to support the new batch-orientated server protocol.
- Accept SSL certificates.
- Improve handling transport errors.
- Improve fetching global storage records.
- Remove unnecessary headers from HTTP requests.
- Update user fetch add handle method name to avoid a type cast.
- Accept SSL certificates on Android devices.
- Improve leaderboard list message to handle multiple filters.
- New matchmaking feature.
- Optionally send match data to a subset of match participants.
- Expose a way to toggle
TCP_NODELAY
socket option. - Send RPC messages to run custom code.
- Fetch users by handle.
- Add friend by handle.
- Filter by IDs in leaderboard list message.
- Storage messages can now set records with public read permission.
- Dispatch callbacks when sending match data.
- Support for fetching groups by name.
- Add support for dynamic leaderboards.
- Add error codes for error messages in server protocol.
- Use preprocessor directive to skip WebGL specific code with other build profiles.
- Update session token parse code for user's handle.
- Update user presence protocol message to contain user handles.
- Repackage client with Unity 5.4.0 support.
- Setup logger in client transport.
- Add '.jslib' files to Unity package builds.
- Add WebGL support.
- Update the package structure generated by the build system for simpler Asset Store submissions.
- Add new impl of realtime match entities.
- Merge match entities into single
INMatch
.
- Incoming realtime messages do not need collation.
- Add event handlers to
INClient
interface.
- Add new impl and test cases for storage, friends, and groups.
- Add new impl for realtime and chat messages.
- Do not close the connection on logout. It will be closed by the server.
- Update client usages for friend messages due to changes in server protocol.
- Fix various small test cases caused by changes in the server.
- Initial public release.