Releases: heroiclabs/nakama
Releases · heroiclabs/nakama
v2.1.0
Notable changes
Added
- New Go code runtime for custom functions and authoritative match handlers.
- New Tournaments feature.
- Runtime custom function triggers for leaderboard and tournament resets.
- Add Lua runtime AES-256 util functions.
- Lua runtime token generator function now returns a second value representing the token's expiry.
- Add local cache for in-memory storage to the Lua runtime.
- Graceful server shutdown and match termination.
- Expose incoming request data in runtime after hooks.
Changed
- Improved Postgres compatibility on TIMESTAMPTZ types.
Fixed
- Correctly merge new friend records when importing from Facebook.
- Log registered hook names correctly at startup.
v2.0.3
Notable changes
Added
- New "bit32" backported module available in the code runtime.
- New code runtime function to create MD5 hashes.
- New code runtime function to create SHA256 hashes.
- Runtime stream user list function now allows filtering hidden presences.
- Allow optional request body compression on all API requests.
Changed
- Reduce the frequency of socket checks on known active connections.
- Deleting a record from a leaderboard that does not exist now succeeds.
- Notification listings use a more accurate timestamp in cacheable cursors.
- Use "root" as the default database user if not specified.
Fixed
- Runtime module loading now correctly handles paths on non-UNIX environments.
- Correctly handle blocked user list when importing friends from Facebook.
v2.0.2
Notable changes
Added
- New configuration option to adjust authoritative match data input queue size.
- New configuration option to adjust authoritative match call queue size.
- New configuration options to allow listening on IPv4/6 and a particular network interface.
- Authoritative match modules now support a
match_join
callback that triggers when users have completed their join process. - New stream API function to upsert a user presence.
- Extended validation of Google signin tokens to handle different token payloads.
- Authoritative match labels can now be updated using the dispatcher's
match_label_update
function.
Changed
- Presence list in match join responses no longer contains the user's own presence.
- Presence list in channel join responses no longer contains the user's own presence.
- Socket read/write buffer sizes are now set based on the
socket.max_message_size_bytes
value. - Console GRPC port now set relative to
console.port
config value.
v2.0.1
Notable changes
Added
- New timeout option to HTTP request function in the code runtime.
- Set QoS settings on client outgoing message queue.
- New runtime pool min/max size options.
- New user ban and unban functions.
- RPC functions triggered by HTTP GET requests now include any custom query parameters.
- Authoritative match messages now carry a receive timestamp field.
- Track new metrics for function calls, before/after hooks, and internal components.
Changed
- The avatar URL fields in various domain objects now support up to 512 characters for FBIG.
- Runtime modules are now loaded in a deterministic order.
Fixed
- Add "ON DELETE CASCADE" to foreign key user constraint on wallet ledger.
v2.0.0
Notable changes
This release brings a large number of changes and new features to the server. For more news about this release see the announcement.
Added
- Authenticate functions can now be called from the code runtime.
- Use opencensus for server metrics. Add drivers for Prometheus and Google Cloud Stackdriver.
- New API for users to subscribe to status update events from other users online.
- New API for user wallets to store and manage virtual currencies.
- Realtime multiplayer supports authoritative matches with a handler and game loop on the server.
- Matches can be listed on the server for "room-based" matchmaker logic.
- "run_once" function to execute logic at startup with the code runtime.
- Variables can be passed into the server for environment configuration.
- Low level streams API for advanced distributed use cases.
- New API for export and delete of users for GDPR compliance.
Changed
- Split the server protocol into request/response with GRPC or HTTP1.1+JSON (REST) and WebSockets or rUDP.
- The command line flags of the server have changed to be clearer and more explicit.
- Authenticate functions can now take username as an input at account create time.
- Use TIMESTAMPTZ for datetimes in the database.
- Use JSONB for objects stored in the database.
- Before/after hooks changed to distinguish between req/resp and socket messages.
- Startup messages are more concise.
- Log messages have been updated to be more useful in development.
- Stdlib for the code runtime uses "snake_case" consistently across variables and function names.
- The base image for our Docker images now uses Alpine Linux.
Fixed
- Build dependencies are now vendored and build system is simplified.
- Database requests for transaction retries are handled automatically.
Removed
- The storage engine no longer needs a "bucket" field as a namespace. It was redundant.
- Leaderboard haystack queries did not perform well and need a redesign.
- IAP validation removed until it can be integrated with the virtual wallet system.
This release is not a simple upgrade from v1.0 so reach out to us for help to upgrade.
v1.4.1
Notable changes
Added
- Allow the server to handle SSL termination of client connections although NOT recommended in production.
- Add code runtime hook for IAP validation messages.
Changed
- Update social sign-in code for changes to Google’s API.
- Migrate code is now cockroach2 compatible.
Fixed
- Fix bitshift code in rUDP protocol parser.
- Fix incorrect In-app purchase setup availability checks.
- Cast ID in friend add queries which send notifications.
- Expiry field in notifications now stored in database write.
- Return success if user is re-added who is already a friend.
v1.4.0
Notable changes
Changed
- Nakama will now log an error and refuse to start if the schema is outdated.
- Drop unused leaderboard 'next' and 'previous' fields.
- A user's 'last online at' field now contains a current UTC milliseconds timestamp if they are currently online.
- Fields that expect JSON content now allow up to 32kb of data.
Fixed
- Storage remove operations now ignore records that don't exist.
v1.3.0
Notable changes
Added
- Improve graceful shutdown behaviour by ensuring the server stops accepting connections before halting other components.
- Add User-Agent to the default list of accepted CORS request headers.
- Improve how the dashboard component is stopped when server shuts down.
- Improve dashboard CORS support by extending the list of allowed request headers.
- Server startup output now contains database version string.
- Migrate command output now contains database version string.
- Doctor command output now contains database version string.
Changed
- Internal operations exposed to the script runtime through function bindings now silently ignore unknown parameters.
Fixed
- Blocking users now works correctly when there was no prior friend relationship in place.
- Correctly assign cursor data in paginated leaderboard records list queries.
- Improve performance of user device login operations.
v1.2.0
Notable changes
Added
- New experimental rUDP socket protocol option for client connections.
- Accept JSON payloads over WebSocket connections.
Changed
- Use string identifiers instead of byte arrays for compatibility across Lua, JSON, and client representations.
- Improve runtime hook lookup behaviour.
Note: You will need to update client libraries with this server release:
- For Unity use 0.10.0 or greater.
- For Java/Android use 0.4.0 or greater.
- For Swift use 0.3.0 or greater.
- For JavaScript use 0.1.0 or greater.
v1.1.0
Notable changes
Added
- Advanced Matchmaking with custom filters and user properties.
Changed
- Script runtime RPC and HTTP hook errors now return more detail when verbose logging is enabled.
- Script runtime invocations now use separate underlying states to improve concurrency.
Fixed
- Build system no longer passes flags to Go vet command.
- Haystack leaderboard record listings now return correct results around both sides of the pivot record.
- Haystack leaderboard record listings now return a complete page even when the pivot record is at the end of the leaderboard.
- CRON expression runtime function now correctly uses UTC as the timezone for input timestamps.
- Ensure all runtime 'os' module time functions default to UTC timezone.