All notable changes to this project are documented below.
The format is based on keep a changelog and this project uses semantic versioning.
- Async Future-based API.
- Missing Server-to-server methods.
- Auto-generation from Nakama/Satori schema.
- Extensive Integration Test suite.
- Function signatures (please refer to documentation).
- Component lifetimes are less coupled to Unreal Engine Garbage Collector.
- Improved consistency across the SDK.
- Revamped real-time websocket code.
This is a major release with a larger list of changes. For more information on the current version and the differences to previous versions, please refer to documentation and the migration guide.
- Server-side Satori events: #165
- Removed Legacy
*Core/code: #166
- Missing member initializations: #164
- List Parties API: #156
-
Client compilation issue: #160
-
Other minor improvements and fixes.
- Satori API: For CPP and Blueprints.
- Delete User Nakama API callback.
- Nakama Realtime client can be setup with a custom WebSocket implementation. Calling UNakamaRealtimeClient::UseCustomWebsocket(TSharedPtr) before Connect allows using a different implementation or configuring the current implementation differently than our default.
- Nakama Realtime client now has cpp native delegates alongside the already existing dynamic delegates, allowing binding to delegates from outside managed memory types.
- Removed unnecessary re-serialization when processing incoming messages.
- RPC Nakama API callback now returns a boolean indicating success or failure of the synchronous part of the function.
- Nakama Blueprint APIs now have a default, this means that have input array pins can be left empty if not used.
- Client compilation for Unreal 5.6 Engine.
- Fixed client compilation for Unreal 5.5 Engine.
- Fixed corner case memory leak.
- Fixed crash when searching for session variables that do not exist.
- Fixed const issues from using NakamSession given back by delegate.
- Changed
ENakamaErrorCodeenum casts to match official GRPC error codes. Any user client code checking against specific error values should be aware of this change.
- Added
UNakamaClient.BanGroupUsers.
- Fixed return payload of
UNakamaRealtimeClient.FollowUsers.
- Added
UNakamaSession.GetRefreshExpireTimeto get expiry time of refresh token.
- Fixed assignment of language tags when updating groups.
- Fixed checking of bound status of OnDisconnect callback in socket.
- Removed deprecated
NakamaCorefrom .uplugin module list. This will improve the build experience for mobile platforms.
- Fixed test suite compatibility with Unreal 4 Engine.
- Fixed unnecessary lambda capture of HTTP request object.
- Fixed serialization of party join requests.
- Fixed serialization of party join requests.
- Fixed realtime client compatibility with Unreal 4 Engine.
- Fixed automatic importing of steam friends during the Steam authentication process if
importwas passed.
- Fixed importing of steam friends.
- Fixed lifetime of socket request contexts.
- Fixed build warnings about enum default values.
- Tests are now only enabled in developer builds by default.
- Fix support for non-ASCII characters in session authentication tokens.
- Fixed an internal import and enum name that could cause compilation failures depending on the project's build flags.
- Added
TFunctionsupport to our API calls for more concise use of callbacks. - The implementation of the
NakamaUnrealhas been rewritten to use native Unreal types rather than the prebuiltNakamaCore. The user-facing API should remain unchanged.- This should resolve linking issues users have when depending on
NakamaUnreal.NakamaUnrealis the recommended way to use our library, butNakamaCoreis still available for users who want to usenakama-cppin Unreal Engine.
- This should resolve linking issues users have when depending on
- Introduced a Blueprint-based test project.
- Added feature parity with Nakama 3.17.
- Added use of
FDateTimefor reading session create and expiry time.
- Fixed x64 detection on pre-5.2.0 versions of Unreal.
- Fixed loading of Websocket Module.
- Added Windows Arm64 support to the NakamaCore module.
- Added Windows arm64/x64 debug support to the NakamaCore module.
- Fixed architecture detection code on pre-5.2.0 versions of Unreal.
- Fixed a compiler error in Android section of build script.
- Updated to nakama-cpp 2.8.0.
- Refactored Nakama Core test suite to run on target devices rather than editor host.
- Updated how nakama-cpp is pulled into nakama-unreal. It is now done using vcpkg rather than via custom builds from within nakama-cpp.
- Fixed Unreal Websocket transport throwing an exception if going out of scope without being explictly disconnected.
- Fixed how Unreal Engine finds and loads the Nakama Linux shared object library.
- Added Android support.
- Added Authentication Refresh node for Blueprints.
- Added Update Chat Message node for Blueprints.
- Added
IsConnectedfunction to Realtime Client. - Added
GetHeartbeatIntervalMsfunction to Realtime Client. - Added
SetHeartbeatIntervalMsfunction to Realtime Client. - Added
ALLtoENakamaGroupStateenum. - Added
RPCHttpKeyfunction to Client for calling an RPC via HTTP key.
- Updated transport logic for UE4 support.
- Various improvements to client logic.
- Fixed issue with create client node in demo project.
- Version property now copied correctly in
FNakamaStoreObjectAckconstructor. - Fixed compilation issue on Linux.
- Added support for Unreal native types. Use the
NakamaUnrealmodule and see the README for details on how to use it. - Added support for Blueprints. Use the
NakamaBlueprintsmodule if you are interested and see the README for details on how to use it. - Old functionality exposed in previous releases has been moved to
NakamaCore. The other modules depend onNakamaCore.
- Added realtime parties support.
- Fixed assignment of cursor in listing of storage objects.
- Support server 2.13.0
- Added authentication with Apple ID:
authenticateApple,linkAppleandunlinkApple - Added
demoteGroupUsers - Added
NClientInterface::rpcwithhttp key - Added
disableTimetoNAccount - Added
updateTimetoNFriend - Improve future-compatibility with server changes
- Fix listFriends failing on 2.3.0 against 2.13.0 server
- fix crash when response is received after NClient was deleted
- fix uint16_t is too small for our match data (#25)
- fix getUsername and getUserId in session wrapper
- RPC call fails when body is empty
- RPC payload differences between Rest and RT clients
- Support Linux
- Support server 2.7
- Support UE 4.23
- Following client API has been added/changed to support server 2.7:
- NSessionInterface
- getVariables
- getVariable
- NClientInterface
- authenticateDevice
- authenticateEmail
- authenticateFacebook
- authenticateGoogle
- authenticateGameCenter
- authenticateCustom
- authenticateSteam
- listFriends
- createGroup
- listGroupUsers
- listUserGroups
- NRtClientInterface
- joinMatch
- NSessionInterface
- Updated optional lib to v.3.2.0
- REST client (HTTP/1.1).
- Add tournament start active time to the API response.
- Add "Activity timeout" to Websocket.
- Now we use one C++ REST library for all platforms instead of Websocketpp and IXWebsocket.
- gRPC client is off.
- Fixed loading dynamic library on Mac.
- support Windows (VS 2015, 2017, 2019).
- enable SSL for IXWebsocket.
- Now targeting nakama 2.x on Mac and iOS
- Now targeting nakama 1.4.0
- Updated session parsing to look for "han" for handle keyword.
- Added correct purchase records processing.
- Now targeting nakama 1.3.0
- Advanced Matchmaking with custom filters and user properties.
- Expose Collation ID when client operations result in an error.
- Now targeting nakama 1.1.0
- Now targeting nakama 1.0.1
- A paging cursor can now be serialized and restored.
- New storage partial update feature.
- New storage list feature.
- A session now exposes
.ExpiresAtand.Handlefrom the token.
- Added 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.
- Add new In-App Notification feature.
- Add new In-App Purchase Validation feature.
- Update Client to support the new batching API.
- Support for Nakama API 0.13.0
- New matchmaking feature.
- Optionally send match data to a subset of match participants.
- Expose a way to toggle
TCP_NODELAYsocket 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.
- Update user fetch add handle method name to match changes in nakama-unity 0.6.1.
- Dispatch callbacks when sending match data.
- Improve leaderboard list message to handle multiple filters.
- Support for Nakama API 0.12.1
- Support for fetching groups by name.
- Support for Nakama API 0.12.0
- Blueprint support
- Add support for dynamic leaderboards.
- Add error codes for error messages in server protocol.
- Update session token parse code for user's handle.
- Update user presence protocol message to contain user handles.
- Initial public release - modeled after nakama-unity 0.4.2