Skip to main content

AGS 3.77.0 Release Notes

Last updated on October 7, 2024

Release date: September 10th, 2024

AccelByte Gaming Services (AGS) Game SDK latest version

Extend SDK (previously known as Server SDK) latest version

AccelByte Multiplayer Servers (AMS) CLI latest version

  • AMS CLI: 0.245.25

Deprecated and removed features

This section lists features, SDK functions, endpoints, and other AGS tools that are deprecated and removed in this release and in upcoming releases.

important

Please follow the required migration steps for each deprecation or removal.

Unity SDK interfaces

The following interfaces are deprecated and will be removed in AGS 3.80:

  • SyncMobilePlatformPurchaseGoogle(syncRequest, callback)
  • SyncMobilePlatformPurchaseApple(syncRequest, callback)

We recommend migrating to the following interfaces, created to improve mobile sync entitlement interface experience:

  • SyncMobilePlatformPurchaseGoogle(orderId, packageName, productId, purchaseTime, purchaseToken, autoAck, optionalParameters, callback)
  • SyncMobilePlatformPurchaseApple(transactionId, receiptData, optionalParameters, callback)

Roles field in access tokens

  • The roles field in access tokens has been deprecated and no longer populated. It is now replaced by the namespace_roles field. If you are currently using the roles values from the access tokens, you will need to migrate to the new field: namespace_roles. This change will also affect the following endpoints:

Pricing, Limits, and Free Trial Updates

Free Trials for Extend and AMS with AGS Shared Cloud

For AGS Shared Cloud free trial users who want to try the Extend add-on or the AccelByte Multiplayer Servers (AMS) add-on, you'll need to provide payment information (such as a credit card) to access their free trials. Please note that providing payment details will immediately unlock AGS and end the AGS Shared Cloud free trial. However, you'll still receive the free trial benefits for the add-ons.

Pricing and Limits Updates for AGS Shared Cloud and Extend Add-On

New customers who signed up on or after August 12th, 2024 are subject to the updated pricing models for AGS Shared Cloud and the Extend add-on.

  • AGS Shared Cloud
    • Free Trial Limit Update: The new free trial limit is 25,000 play hours, with no restrictions on the number of player accounts.
    • Pricing Scheme Update: Pricing will now be based on PCCU (Per-Consumer Compute Unit).
  • AGS Add-on: Extend
    • New Limits: The updated limits are 888 VM hours, 50 GB of data egress, and 15 GB of logs ingested.
    • Pricing Scheme Update: Pricing will now be based on VM hours, data egress, and logs ingested.
note

For customers who signed up before August 12th, 2024, you can opt to switch to the new pricing model. For more information, contact your Account Manager.

Highlights

Leaderboard

  • Introduced two new Leaderboard endpoints to let game admins delete user ranking in a specific leaderboard cycle. These functionalities have been seamlessly integrated into our Admin Portal, simplifying the process of user ranking management.
  • Introduced a new configuration field called Show in Legal Website in the Admin Portal to configure whether a legal document should be displayed in the Legal Website or not. This is only available in game namespaces.

Matchmaking

  • Implemented configurable region selection logic by considering latencies.

Session

  • Added new endpoints to kick a user from a game session:

    • Admin endpoint: DELETE /session/v1/admin/namespaces/{namespace}/gamesessions/{sessionId}/members/{memberId}/kick

    • Public endpoint: DELETE /session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/members/{memberId}/kick

      note

      Only game session leaders can kick out members.

    This feature was implemented on Unreal Engine by introducing the following new methods:

    • SDK:
      • Session::KickUserFromGameSession
      • ServerSession::KickUserFromGameSession
    • OSS: FOnlineSessionV2AccelByte::KickPlayer

User and Role Management

  • Introduced a new menu called Default User Role Override in Admin Task in the Admin Portal that allows admins to override the permissions within the default User role provided by AGS.

    note

    You can only enable or disable the predefined actions that come with the permissions. Actions that are not predefined cannot be added to these permissions.

  • Introduced a new menu called Feature Flags in Admin Task > Account & Profile Setup in the Admin Portal. This menu contains a feature flag for Mandatory Email Verification. When the Mandatory Email Verification feature is enabled, players will be required to verify their email during the account creation process.

    This feature was implemented on Unreal Engine through the following updates:

    • Added support for configurable account creation using Email Verification.
    • Added optional parameter code to User::Register and User::Registerv2 for optional verification code before registering as a new user.
    • Added new IAM config key EAccountConfiguration::MANDATORY_EMAIL_VERIFICATION_ENABLED to User::GetAccountConfigurationValue to retrieve the mandatory email verification config used by the IAM service.
    • Added User::SendVerificationCodeToNewUser to send a verification code to the email of the unregistered user.

Unity

  • Exposed the WebSocket API on AMS service to set and reset the session timeout values:

    • Set the timeout: AccelByteSDK.GetServerRegistry().GetAMS().SetDSTimeout
    • Reset the timeout: AccelByteSDK.GetServerRegistry().GetAMS().ResetDSTimeout
  • Added a feature to accept or revoke the existing marketing preference consent. This feature only accepts marketing preferences and does not affect previously-agreed legal agreements. For more information, refer to Legal Agreements.

    • Related interface: Api.GetAgreement().ChangePolicyPreferences
  • Added Api.GetTurnManager().SendDisconnectedMetric to send a metric when the TurnManager disconnects.

  • Exposed all the remaining endpoints of both client and server to offer full coverage of the Challenge API.

  • Added the RandomizeDeviceId toggle option in client configuration to generate the device ID for login using random GUID.

  • Added new fields to AccelByte.Models.TurnServer:

    • CpuUsage
    • MemUsage
    • NetUsage

    Impacted interface: Api.GetTurnManager().GetClosestTurnServer

Unreal Engine

  • For customers developing on Android and transitioning from AccelByte SDK to OSS, we have provided an overloaded FOnlineEntitlementsAccelByte::SyncPlatformPurchase that accepts FAccelByteModelsPlatformSyncMobileGoogle as a parameter.
  • FOnlineEntitlementsAccelByte::SyncPlatformPurchase() now accepts iOS and Android purchase receipts to synchronize with the AccelByte entitlement service.
  • Added new functions and adjusted some existing functions for improved Multi-Factor Authentication (MFA) support.
    • SDK
      • Added an optional MFA code parameter to User::Disable2FaBackupCode, User::Disable2FaAuthenticator, and User::Enable2FaAuthenticator functions.
      • Added new User:: functions:
        • UpdatePassword to update the user's password.
        • EnableMfaEmail to enable MFA using email.
        • DisableMfaEmail to disable MFA using email.
        • SendMfaCodeToEmail to send the code via email after performing sensitive actions, such as enabling or disabling MFA and updating email or password.
        • GetMfaStatus to retrieve the user's MFA status.
        • VerifyMfaCode to verify MFA code.
    • OSS
      • Added new FOnlineIdentityAccelByte:: functions:
        • VerifyLoginMfa to verify the user's login using MFA.
        • UpdatePassword to update the user's password.
        • GetMfaStatus to retrieve the user's MFA status.
        • EnableMfaBackupCodes to enable MFA using backup codes.
        • DisableMfaBackupCodes to disable MFA using backup codes.
        • GenerateMfaBackupCode to generate MFA backup codes.
        • EnableMfaAuthenticator to enable MFA using authenticator.
        • DisableMfaAuthenticator to disable MFA using authenticator.
        • GenerateMfaAuthenticatorSecretKey to generate the secret key for MFA using authenticator.
        • EnableMfaEmail to enable MFA using email.
        • DisableMfaEmail to disable MFA using email.
        • SendMfaCodeToEmail to send an MFA code via email after performing sensitive actions, such as enabling or disabling MFA and updating email or password.
  • Added a new public function SessionHistory::QueryGameSessionHistory to allow players to query their game session history.

Quality of life changes

Admin Portal

  • Super Admins (or admins with permissions to access the publisher namespace) are now able to override the email verification status of a user, changing it to from "Not Verified" to "Verified."

Admin Portal and Player Portal

  • The Account History page in both the Admin Portal and Player Portal now tracks changes and timestamps for usernames (when enabled), display names, email addresses, passwords, countries, and dates of birth.

Cloud Save

  • Enhanced the gRPC connection handler and introduced a mechanism for capturing gRPC error calls between the Cloud Save service and the Extend service. This improvement aims to boost overall reliability and provide better debugging capabilities.

Code Redemptions

  • Admins can now create a batch name when generating codes in the Admin Portal for code redemptions, to associate multiple codes with a more easily identifiable batch name should it be desired.

Configuration Migration

  • Export rules can now be defined during migrations to select which configuration is included in the migration, instead of the whole module. This can be accessed through Development Utilities > Configuration Migration in the Admin Portal. For more information, refer to Export Rules.

    note

    This feature is currently in Early Access and may have minor issues.

Inventory

  • Provided item metadata when retrieving inventory items, including items from the E-commerce service.

  • Added new endpoints:

    These features were implemented on Unreal Engine by introducing the following new functions to ServerInventory:::

    • UpdateAllUserInventories
    • BulkSaveInventoryItems
    • BulkSaveInventoryItemsByInventoryId
  • Improved the index implementation on the Inventory service.

Statistics

  • Enhanced the flexibility of the Statistics Cycle feature by allowing game admins to manually assign a Cycle ID during Cycle Configuration creation. This update enables the use of readable and memorable identifiers for Cycle IDs across namespaces or environments, facilitating smoother configuration migrations and improved cycle management. Additionally, the Leaderboard service now supports these user-defined Cycle IDs.
  • Improved the Import Statistics Configuration endpoint by upgrading the import mechanism to an asynchronous process. This enhancement allows for batch operations, increasing efficiency and performance compared to processing each entry individually.

UGC

  • Introduced a UGC copy content feature, allowing game admins to easily duplicate and transfer content between channels. This feature improves efficiency and accuracy by eliminating the need for manual downloads, new content creation, and re-uploading of content binaries.

Unity

  • Added a checkbox option in SDK client settings to enable the fallback matchmaking ticket polling feature, improving matchmaking reliability.
  • Implemented a retry backoff mechanism for refreshing user sessions.
  • Added checks to prevent UserSession from refreshing a session with a null token.

Unreal Engine

  • Added a new tags field to FAccelByteModelsPublicPolicy to specify the policy based on the user information or preferences.
  • FOnlineFriendsAccelByte::ReadFriendsList() now requests friends in batches of 100.
  • Increased the timeout on FOnlineAsyncTaskAccelByteReadFriendsList to prevent premature expiration waiting for all responses when calling friends in batches.
  • Enhanced the consistency of handling AccessToken within FUserOnlineAccountAccelByte by using the credentials data as the single source of truth.
  • Implemented automatic refresh of all active sessions after reconnecting from the Lobby service and introduced a new OSS function, FOnlineSessionV2AccelByte::RefreshActiveSessions, to refresh manually.
  • Enhanced the safety and robustness of the AsyncTask functionality.
  • Changed the timing of the Quality of Service (QoS) latency query: it now occurs when game instance is started (GameInstanceStarted) instead of during user login.
  • Added the DisableAutoGetQosLatencies=true configuration to DefaultEngine. This option disables the automatic QoS latency query that runs when game instance is started (GameInstanceStarted).

Unreal Engine and Unity

  • Added an optional header parameter, X-Ab-Custom, to indicate when the dedicated game server is not deployed to AMS or AGS services.
    • The X-Ab-Custom header parameter is included in the connection to DSHub under the following conditions:
      • [Unreal Engine] When bServerUseAMS is set to false in the DefaultEngine configuration.
      • [Unity] When ServerUseAMS is set to false in the server configuration.

Bug Fixes and Minor Changes

Admin Portal

  • Fixed the issue with the Save button being enabled on the Branding menu issue when there's no change made.
  • Updated the Role sub-menu name in Group into Group Role to differentiate it from the IAM Roles menu which is Roles & Permission.
  • Fixed the issue with the missing Add Record button for Cloud Save game records and admin game record when the record is empty.
  • Improved the Challenge menu and fixed various issues.
  • Improved the Leaderboard menu and fixed various issues.
  • Adjusted the Show Advanced Configurations dropdown that appears during an IAM Client creation process in the Admin Portal to be more visible.
  • Fixed the issue with the Save button on the Match Ruleset Detail page not disappearing after successfully updating the ruleset.
  • Removed the Platform Group column on the Match Pools page.
  • The Enable Custom Match Function toggle can now be adjusted only when editing or adding a new match ruleset.
  • Improved UI on Matchmaking configuration pages:
    • Party Details page on Session and Parties:
      • Added link to the Session Template page.
      • Added link to the Party History page on the Session & Party History page.
    • Session details on Session and Parties:
      • The Match Pool link is hidden if there is no data.
    • Match pool details on Match Configuration:
      • Shows the preview of the session template or ruleset information.
  • When searching data by User ID, clicking a Ticket ID data now opens a new tab in the browser to display the ticket details.
  • Adding more than 20 tags to a store item now shows an error in the Admin Portal. The message informs users that the limit of 20 tags has been reached and advises them to remove some tags before adding more.
  • Using an existing App ID for a new store item now returns a proper error message in the Admin Portal.
  • Users with a Super Admin role can now search for users in the Admin Portal by their user IDs on the Live Service Utilities > Lookup Users page.
  • Fixed minor UI bugs in the Grant Item modal during the item granting process via the User Entitlements menu in the Admin Portal.
  • Added a Forgot Password to the Current Password field during the password change process in the Admin Portal.

AMS

  • The total usage and schedule for deletion size on server image is now shown.
  • The total usage for Log and Artifact is now shown.
  • Fixed the issue where the dedicated server (DS) status was stuck at "Available" instead of updating it to "Ended."
  • Fixed the issue where artifact collection records could not be recorded if the upload size exceeded 2 GiB.
  • Added an Access Log for the AMS API in the Log Viewer.
  • Updated the Audit Log to include AMS endpoint.
  • Fixed the issue where the region and IP address were not displayed in the DS History Log.

Analytics

  •  Added device type to get events endpoint of game-telemetry service.

Challenge

  • Added ENUM validation for the assignmentRule when creating or updating challenge configuration.
  • Added validation for the reset time when creating or updating the challenge configuration. The first reset time cannot be less than one hour from the current time.
  • Fixed the period calculation logic for challenges with daily, weekly, and monthly rotation type.
  • Added validation to the Evaluate Admin endpoint for the maximum number of users to be evaluated per request. Currently, this is limited to 10 user IDs per request.
  • Updated the Evaluate endpoint to validate the User ID format.

Chat

  • Fixed the issue where muting and unmuting chat did not take effect immediately.
  • Fixed the issue where players were unable to receive messages from a player they had unmuted.
  • Chat service now sends close code 4003 when receiving a userLoggedOut event.
  • Added a new environment variable, USE_INTERNAL_CHAT_BLOCK, to enable or disable Chat service integration with Lobby block.
    • Set USE_INTERNAL_CHAT_BLOCK to false to activate the Chat and Lobby block integration.
    • Set USE_INTERNAL_CHAT_BLOCK to true to use the default chat block flow.

Inventory

  • Added reason text when Inventory service updates the user Entitlement to better differentiate the action on the user Entitlement history.
  • Added ENUM list for the source field on Chaining Operation endpoint.

Leaderboard

  • Updated the Delete user ranking endpoints to allow deleting the user ranking on Production environment. Only admins with the ADMIN:NAMESPACE:{namespace}:LEADERBOARD \[DELETE] permissions can perform this action.
  • Updated the API documentation to include a warning that using the Delete user ranking endpoints will permanently remove data.
  • Improved the UX by making the legal page display content from the default country if there's no legal doc available.

Lobby

  • The user's platform information in Lobby is now populated from the user's access token from the login process.
  • Fixed the issue where blockPlayerNotif was not triggered when an admin blocked players.
  • Added connection ID to userConnected and userDisconnected events.
  • Added topic in the socket logs for free-form notifications and session notifications.

Matchmaking (Previously known as Matchmaking V2)

  • Fixed the issue of a match ticket still being processed after a player gets a match from the backfill.
  • Fixed the issue of match tickets not being cleaned up properly in solo matchmaking.
  • Added a notification to the game server when a backfill ticket is deleted due to a full match being formed.
  • Added a feature flag to the crossPlatformNoCurrentPlatform in the PATCH /match2/v1/config/namespaces/{namespace} endpoint to enable or disable the current_platform validation per namespace.
    • When crossPlatformNoCurrentPlatform is true, it will ignore current_platform validation that has been set in the match_options.
    • When crossPlatformNoCurrentPlatform is false, it will check current_platform validation that has been set in the match_options.
  • Match tickets are now inactive when players receive OnSessionMemberChanged and OnSessionEnded notifications.
  • Changed the HTTP error from 500 to 400 on invalid payloads when creating backfill.
  • Added backend validation for the following fields in the ruleset:
    • Alliance
      • MinNumber
      • MaxNumber
      • PlayerMinNumber
      • PlayerMaxNumber
    • AllianceFlexingRule
      • Duration
    • MatchingRule
      • Attribute
      • Criteria
      • Reference
    • SubGameMode
      • Name
    • MatchOptions
      • Name
  • Fixed the issue where backfill tickets could not be created if cross-platform was disabled, even if the member's platform is different from the session leader's.
  • Improved the delete match ticket process.

Platform

  • Revocations and refunds for both publisher and game namespaces are now supported.
  • Wallet and Payment events are updated to correctly reflect the latest implementations.
  • When querying for active entitlements for a user with a high number of entitlements (higher than the limit value), the queryUserEntitlements endpoint no longer returns duplicate items in the paginated results.

Player Portal

  • Fixed the validation descriptions on the Update Display Name modal and My Account page to be displayed as a bullet list.
  • The Player Portal localization feature now defaults to the player's browser language preference when no other options are available.
  • The Player Portal's optional early age gate feature now supports localization.
  • Fixed localization support for remaining player account-related email templates.
  • Fixed the accordion menu display issue on mobile devices for Player Portal using the custom header and footer feature.
  • Fixed the issue where players had to refresh their browser for certain Player Portal errors and tooltips to display in their language preference.
  • Fixed the issue where the language dropdown menu remained opened after changing the language preference.
  • Fixed the issue where players' language preferences set within the Player Portal were ignored, and the browser language preference was used instead.

SDK

  • [Unreal Engine] Removed the reset matchmaking search handler after successfully leaving a party.
  • [Unreal Engine] Fixed leaderboard ranking retrieval for ReadLeaderboardsAroundRank when the rank is below the specified range.
  • [Unreal Engine] Fixed ServerSettings::LoadAMSSettings to explicitly check for empty configurations, returning false for any empty configurations.
  • [Unreal Engine] Fixed missing type field in FAccelByteModelsNotificationMessage causing some notifications to fail to be dispatched from the notification buffer.
  • [Unreal Engine] Fixed the issue where crashes would occur upon shutdown by changing the call from FHttpModule::Get().GetHttpManager().Flush(EHttpFlushReason::Shutdown) to FHttpModule::Get().GetHttpManager().Shutdown().
  • [Unreal Engine] Cleaned up objects using FCoreDelegates::OnPreExit in SDK and OSS to gracefully disconnect websockets.
  • [Unreal Engine] Ensured that delegates fired from sequential notifications are also fired in sequential order.
  • [Unreal Engine] The matchmaking ticket status now continues polling after a "matchmaking ticket canceled" response until the corresponding OnMatchmakingTicketCanceled notification arrives.
  • [Unreal Engine] Improved the matchmaking ticket status polling check for the "ticket canceled" status.
  • [Unreal Engine] Fixed the OSS async task error code for "matchmaking ticket not found" events.
  • [Unreal Engine] AGS OSS now determines whether to expect a "matchmaking canceled" notification based on the response to a "cancel matchmaking" call.
  • [Unreal Engine][Unity] Updated the telemetry payload field from flightId to FlightId.
  • [Unity] Fixed the lobby notification sequenceId data type and adjusted notification buffer sorting to use sequenceId for more accurate fallback lobby event triggers.
  • [Unity] Added an optional parameter ContentType to AccelByteNetUtilities.UploadBinaryTo with default value application/octet-stream.
  • [Unity] Fixed the incorrect callback model on BinaryCloudSave interface.
    • SaveUserBinaryRecord: Model changed from UserBinaryRecord to SaveBinaryRecordResponse.
    • RequestUserBinaryRecordPresignedUrl: Model changed from BinaryInfo to RequestUserBinaryRecordPresignedUrlResponse.
  • [Unity] Corrected data types for the following fields in the TurnServer model:
    • CpuUsage: Value from float to double
    • Current_time: Value from int to long
    • MemUsage.Total: Value from int to ulong
    • MemUsage.Used: Value from int to ulong
    • NetUsage.Rx: Value from int to ulong
    • NetUsage.Tx: Value from int to ulong
  • [Unity] Fixed the http client ClearCookies issue on multi-thread job.

Session

  • Fixed the issue with the OnPartyMembersChanged notification spamming.
  • Fixed issue with players not being removed from a party after joining a new one.
  • Fixed the error that occurs when manually setting dedicated servers (DS) to the "Ready" state using the endpoint PUT /session/v1/admin/namespaces/{namespace}/gamesessions/{sessionId}/ds.
  • Fixed the issue where players are not added as members to a game session they left and rejoined.
  • Fixed the issue with the tied session team lifetime configuration not being saved properly when creating a new session configuration.
  • Fixed the issue with the incorrect inviter name being displayed for PSN sessions.
  • Players with the "JOINED," "INVITED," "CONNECTED," or "DISCONNECTED" status are now included in the match and counted as session members when the matchmaking is created.
  • When a player leaves a game session using the endpoint DELETE /session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/leave after being kicked, it now returns an HTTP 400 error and does not trigger the OnSessionMembersChanged notification.
  • Fixed the issue with querying parties by user ID and isSoftDeleted in the GET /session/v1/admin/namespaces/{namespace}/parties endpoint.

Session History

  • Fixed the issue with retrieving session history data for specific players within a time range.