Skip to main content

AGS 3.76.0 Release Notes

Last updated on September 2, 2024

Release date: July 24th, 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.23

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. Please follow the required migration steps for each deprecation or removal.

(Unity SDK) Functions

The following functions in Unity SDK have been deprecated and will be removed in AGS version 3.79:

  • ApiClient.GetServiceVersion: migrate to ApiClient.GetVersionService
  • ApiClient.GetHeartBeat: migrate to ApiClient.GetHeartBeatService
  • ApiClient.GetStoreDisplay: migrate to ApiClient.GetStoreDisplayService

(Unity SDK) AccelBytePlugin and MultiRegistry interfaces

To improve and centralize the user access experience, AccelBytePlugin and MultiRegistry interfaces will be removed in AGS version 3.79. These interfaces will be replaced by AccelByteSDK.

We recommend enabling support for multiple registries in your game before the interfaces are removed.

IAM ListUserIDByPlatformUserIDV3 endpoint

The IAM ListUserIDByPlatformUserIDV3 endpoint has been marked as deprecated and replaced by ListUserIDByPlatformUserIDV4, which accepts a maximum of 100 users per call.

As a result of this deprecation, the following functions have been updated in this release accordingly:

  • Unreal Engine

    • User::BulkGetUserByOtherPlatformUserIds now warns when the requested number of User IDs is above 100.
    • Modified the following OSS functions to automatically batch requests in groups of 100 user IDs when the requested list of user IDs is more than 100.
      • QueryExternalIdMappings in FOnlineUserInterfaceAccelByte
      • QueryUsersByPlatformIds and QueryUsersByAccelByteIds in FOnlineUserCacheAccelByte
  • Unity

    • GetApi().GetUser().BulkGetUserByOtherPlatformUserIds() now warns when the requested number of user IDs is above 100.
note
  • Beginning AGS version 3.79, if more than 100 User IDs are passed to this function, only the first 100 will be included in the backend request.
  • Rate limits may apply if call frequency becomes excessive. We recommend optimizing your calling patterns to only request enough data to populate your UI. For more information, refer to Use best practices for game integration.

Roles field in access tokens

In AGS version 3.77.0, the roles field in access tokens will be deprecated and no longer populated. It will be 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:

note

The roles field will still be populated in access tokens for AGS version 3.76.0.

Highlights

  • Added an optional parameter to login functions to support server-side validation of game or app ownership when logging in on Sony PlayStation 5. XBox and Steam login do not require this parameter to be populated.

    • [Unreal Engine] Set the field ServiceLabelForPSN value to FAccelByteLoginWithOtherPlatformOptionalParameters field, then pass it to FOnlineAccountCredentialsAccelByte::OptionalParams when trying to login with FOnlineIdentityAccelByte::Login(int32 LocalUserNum, const FOnlineAccountCredentialsAccelByte& AccountCredentials) to validate Playstation 5 Sign-in.

    • [Unity] Use serviceLabel in the following functions User.LoginWithOtherPlatformV4 and User.LoginWithOtherPlatform to validate Playstation 5 Sign-in.

      note

      AppId should be configured in the PS5 Login Method in the Admin Portal using the EntitlementID obtained from SIE DevNet. Your game needs to use this value as the ServiceLabelForPSN parameter for Unreal Engine or serviceLabel parameter for Unity parameter when calling Login as described above. Contact your AccelByte Account Manager for guidance on how to obtain the AppId from SIE DevNet.

  • [Unity] Added support for authentication using Google Play Games Services (PGS).

  • [Unity] Added support for the Apple Platform sign-in.

  • [Unreal Engine] Added StatisticCodePredicate to EAccelBytePredicateType.

  • [Unity] Added new predicate type StatisticsPredicate to Models.ItemInfo.purchaseCondition.conditionGroups.predicates.predicateType.

  • Introduced support for server-side validation of game or app ownership via setting up an AppID for a login method (Auth & Account Linking) configurations. This feature currently only supports Steam, Xbox, and PS5.

  • Introduced the Matchmaking X-Ray tool to debug the matchmaking configuration during game development. This tool can be accessed on the AGS Admin Portal through Multiplayer > Development & Utilities > Matchmaking X-Ray. The Matchmaking X-Ray page contains two tabs:

    • Overview: displays the matchmaking data, providing insights into the matchmaking process of your game.
    • Timeline: queries matchmaking data by Match ID, Match Pool, Ticket ID, and User ID to get matchmaking process information.
  • Introduced a way for admins to remove account linking restrictions for users via the Admin Portal. In a user's Linked Accounts tab (under Lookup Users), there will be a new Status column set to one of the following:

    • Linked: the user is currently linked to the specific third-party platform.
    • Unlinked (Restricted): the user has unlinked from the specific third-party platform and is restricted from linking to a different account on the same platform.
    • Unlinked: the user has unlinked from the specific third-party platform and is able to link to another account from the same platform.
note
  • Removing an account linking restriction for a platform will revoke all DLC owned by the user for the specific platform.
  • Linking again to the same third-party platform account will re-grant the revoked DLC.

Quality of life changes

  • Introduced a Create From Preset option in the Admin Portal for challenge creation. This feature enables game admins to easily configure challenges using existing settings from the statistics cycle. It ensures that challenge configurations are synchronized with the statistics cycle, allowing for simultaneous resets.

  • Introduced a new endpoint to retrieve past player progression in a challenge. This endpoint operates by index: 0 indicates the current or latest active rotation, with higher values referring to specific past rotations. For example, in a daily challenge with three schedules, if the last schedule is still active today, an index of 0 refers to the current active schedule, 1 refers to yesterday's schedule, and 2 to the day before yesterday. This indexing system is similarly applied to weekly and monthly rotations.

  • Introduced a new method for randomizing challenge goals. Previously, AGS would randomize goals from the early rotations to ensure each rotation had a unique goal. However, this could result in some rotations lacking goals if there weren't enough to go around. With the new randomization option, each rotation is guaranteed to have goals, even if it means some goals may repeat across different rotations. This ensures that all rotations will have goals based on the set of goals created.

  • Introduced new Fulfillment endpoints:

  • Added the inclusion of a payment provider's discount information (e.g., discount amount and discount codes) within the Order Details page of the Admin Portal. This feature currently only supports the NEON payment provider.

  • Statistics is now available as an additional condition option for an item's purchasing requirements.

  • Added a new field in the configuration page for an OIDC login method (Auth & Account Linking) called Include Platform User ID in Token Claim. Enabling this would result in platform user IDs to be returned as part of an access token. The default value is disabled.

  • Both studio and game namespace user IDs will now be shown in a user's Overview tab within Lookup Users.

  • Items are now allowed to have up to 20 tags, up from the previous maximum limit of 5.

  • IAM/AdminGetUserPlatformAccountsV3 now supports platform group filters via the platformId parameter.

  • [Unreal Engine] Added a function to set the AMS session timeout from a dedicated server. The function is used for changing the default session timeout specified in the AMS deployment configuration directly from the dedicated servers.

    • SDK function: ServerAMS::SetDSTimeout
    • OSS function: FOnlineSessionV2AccelByte::SetServerTimeout
  • [Unreal Engine] Added Code to FAccelByteModelItemPredicate

  • [Unreal Engine] Added a new function for users to retrieve user-specific chat configurations. The configuration currently has a single field indicating if the profanity filter is disabled.

    • OSS function: FOnlineChatAccelByte::GetUserConfiguration
    • SDK function: Chat::GetUserChatConfiguration
  • [Unreal Engine] Added a new function for users to update user-specific chat configuration. The configuration currently has a single option to disable the profanity filter in the chat.

    • OSS function: FOnlineChatAccelByte::SetUserConfiguration
    • SDK function: Chat::SetUserChatConfiguration
  • [Unreal Engine] Added an extended version of FOnlineFriendsAccelByte::ReadFriendsList that supports pagination.

  • [Unreal Engine] Raised query limit on FOnlineAsyncTaskAccelByteReadFriendsList from 20 to 100 for:

    • Lobby.QueryFriendList()
    • Lobby.QueryIncomingFriendRequest()
    • Lobby.QueryOutgoingFriendRequest()
  • [Unreal Engine] Added new functions in SDK:

    • Lobby::BulkGetUserPresenceV2: Retrieve the presence status of multiple users without being limited to friends only.
    • UserProfile::BulkGetPublicUserProfileInfosV2: Retrieve public profile information for multiple users.
    • UABPresence::BulkGetUserPresenceV2: Blueprint function to retrieve the presence status of multiple users without being limited to friends only.
  • [Unreal Engine] Added improvements in the OSS:

    • FOnlineAsyncTaskAccelByteReadFriendsList: Use the v2 function (Lobby::BulkGetUserPresenceV2) to allow multiple userIDs inside the request body.
    • FOnlineAsyncTaskAccelByteBulkQueryUserPresence: Use the v2 function (Lobby::BulkGetUserPresenceV2) to allow multiple userIDs inside the request body and request looping with a limitation on user IDs.
    • FOnlineAsyncTaskAccelByteQueryUserProfile: Use the v2 function (UserProfile::BulkGetPublicUserProfileInfosV2) to allow multiple userIDs inside the request body and request looping with a limitation on user IDs.
  • [Unreal Engine] Added error details in case of FOnlineIdentityAccelByte::Login timeout.

    • FOnlineIdentityAccelByte::AccelByteOnLoginCompleteDelegate will contain the error code EOnlineErrorResult::RequestFailure and an error message that states "Login task timeout while waiting for the Backend response."
  • [Unreal Engine] Added a function called ServerUser::BulkGetUserInfo for Server SDK to get bulk user information.

  • [Unreal Engine] Implemented a new type called FOnlineEntitlementAccelByte derived from the FOnlineEntitlement in OSS.

    • Added BackendEntitlementInfo to store FAccelByteModelsEntitlementInfo data from Backend services.
    • Added the ENTITLEMENT_ATTR_KEY_SKU as the entitlement attribute to get the entitlement SKU in OSS.
  • [Unreal Engine] Added the FOnlineSubsystemAccelByteUtils::IsValidLocalUserNum function to the AB OSS utility to check if the number of local players is within the allowed range for the current platform.

  • [Unreal Engine] Added validity check for identity interface and user interface pointers in FOnlineUserCacheAccelByte::QueryUsersByAccelByteIds to avoid accessing invalid pointers.

  • [Unreal Engine] Added a validity check for local user numbers in FOnlineUserCacheAccelByte::QueryUsersByAccelByteIds to prevent accessing UserInterface->OnQueryUserProfileCompleteDelegates beyond the allowed range of local players for the current platform.

  • [Unreal Engine] Added TicketID to FAccelByteModelsV2MatchmakingCanceledNotif in SDK.

  • [Unreal Engine] Fixed the matchmaking stopped after receiving late cancel notification in OSS.

  • [Unity] Added new enum FriendRequestAlreadySent to the SDK ErrorCode.

  • [Unity] Added all miscellaneous endpoints of basic services:

  • [Unreal Engine][Unity] Synchronized the telemetry timestamp with server time (UTC) as the time reference.

  • [Unreal Engine][Unity] Added additional fields for the game telemetry payload: DeviceType and flightId.

  • Introduced the Starter Self-Service Billing on the AGS Admin Portal, which allows you to manage your subscription, add-ons, and payment methods as follows:

    • Upgrade plans to unlock limits on Starter.
    • Unlock unlimited access to Add-Ons: AMS and Extend.
    • Manage subscription, billing email, and invoices.
    • Update payment methods.

Bug fixes and minor changes

Admin Portal

  • Added Repetitive Randomized option to challenge creation.
  • Fixed the pagination not working properly for cloud saving player records.
  • Fixed the permission checking on the Cloud Save menu.
  • The edit button for the durable item quantity is now hidden when managing an inventory item.
  • Added confirmation modal when deactivating inventory integration.
  • Updated the page title and sidebar menu title for inventory for consistency.
  • Improved the inventory onboarding pop-up wording.
  • Aligned the inventory slot ID tooltips with service validation for consistency.
  • Revised the tooltip positioning in inventory to prevent them from extending off-screen.
  • Adjusted the statistic cycle reset time to local time.
  • Fixed double toast message when approving UGC.
  • Improved the challenge menu and fixed various issues.
  • Fixed the inability to create game records when no record exists.
  • Adjusted column length for statistics configurations and statistics value tables.
  • Added toggle to enable or disable persistent sessions for AMS.
  • Added DS Status information in the session details.
  • Improved Exposed Method view in Customization.

Achievement

  • Updated the internal health check library.
  • Updated the internal common library to provide details when accessing the endpoint with insufficient permission.

IAM

Platform

  • Virtual currency (VC) will now correctly be returned to a user's wallet if an order creation did not succeed.
  • Refunds for real money purchases now properly revoke entitlements and virtual currencies gained from those purchases.
  • The refundOrder API now allows refunds of free orders.
  • The walletCredited, walletDebited, walletPaid, and walletExpired events now include details for wallet balance changes.

Profanity filter

  • Proper error feedback will now be returned to users when inputting words that are flagged as profane in the Player Portal and the Admin Portal.
  • Added a userId param for the endpoint: AdminProfaneFilterV1

GDPR

  • A user's isComply status will now correctly change to false according to if a legal agreement has been withdrawn.

Login queue

  • Exempted users will now skip the login queue completely rather than being put on top of the queue, meaning exempted users will be able to log in regardless of the login queue configurations.

Challenge

  • Added validation for the schedule field when creating or updating goals for fixed challenges.
  • Added validation that prevents game admins from setting a reset time that is less than one hour from the start date of a challenge.
  • Updated the internal common library to provide details when accessing the endpoint with insufficient permissions.

Cloud Save

  • Updated the internal common library to provide details when accessing the endpoint with insufficient permissions.

Group

  • Updated the internal health check library.
  • Updated the internal common library to provide details when accessing the endpoint with insufficient permissions.

Leaderboard

  • Improved internal logging and reformatted it to be more readable.
  • Updated the internal health check library.
  • Updated the internal common library to provide details when accessing the endpoint with insufficient permissions.

Season Pass

  • Updated the internal common library to provide details when accessing the endpoint with insufficient permissions.

UGC

  • Updated the internal health check library.
  • Updated the internal common library to provide details when accessing the endpoint with insufficient permissions.

Session

  • Changed HTTP error response to 409 when the response is a session version mismatch in these endpoints:
    • PUT /session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}
    • PATCH /session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}
    • PUT /session/v1/public/namespaces/{namespace}/parties/{partyId}
    • PATCH /session/v1/public/namespaces/{namespace}/parties/{partyId}
  • Fixed an issue with a game session member status not updating to KICKED after being kicked by the game session leader.
  • Added backend validation for the session title localization on the session template.
  • Added the flag disableResendInvite to enable or disable resend a session invite notification in the session template.
    • "disableResendInvite": true will not resend the party or game session invitation event before the invitation timeout has exceeded.
    • "disableResendInvite": false will resend the party or game session invitation event before the invitation timeout has exceeded.
  • Fixed an issue with users' platform data being empty after they switch platforms in the same party session.
  • Added previousStatus field to the OnPartyMembersChanged notification. Allowed uninvited users to get session data with limited access if the session joinability is INVITE_ONLY.
  • Added InvitableUserType when updating PSN session config in session sync process.
  • Fixed an issue with LeaderID being empty after the session member is updated.
  • Fixed an issue with the session still being active when the dedicated server request has expired.
  • Added support for third-party DS management integration with Session Override. This update is currently in alpha release only.

Session Worker

  • Added previousStatus field to OnPartyMembersChanged notification.

Matchmaking (Previously Matchmaking v2)

  • Improved behavior for match option any.
  • Party session matchmaking now uses the party leader's player session attribute instead of party attribute.
  • Fixed an issue with blocked players still being able to be matched when the blocker and the blocked player are not a pivot.
  • Added field isActive in the match ticket details.
  • Changed match ticket isActive to false when it is deleted.
  • Deleted all active match tickets when the match pool is deleted.
  • Added flag blocked_player_option to check the matchmaking with the blocked players. The flag can be set in the match ruleset.
    • "blocked_player_option": "blockedPlayerCanMatch" will allow the blocked players to be matched and can be on the same team.
    • "blocked_player_option": "blockedPlayerCannotMatch" will not allow the blocked players to be matched.
    • "blocked_player_option": "blockedPlayerCanMatchOnDifferentTeam" will allow the blocked players to be matched, but only on different team.

Lobby

  • Added a new REST admin endpoint to unblock user by userId.
    • POST /lobby/v1/admin/player/namespaces/{namespace}/users/{userId}/bulk/block
  • Added a new REST endpoint to query users presence.
    • GET /lobby/v1/public/presence/namespaces/{namespace}/users/presence
  • Added user's platform information in userStatusNotif.

Chat

  • Players can now enable or disable the chat profanity filter in-game.
  • Fixed an issue where the dropped players are still able to query active party sessions.

Launcher

  • The REMOTE_LOCALIZATION_BASE_URL envar is now optional for disabling localization from S3.

Login website

  • Fixed players being unable to finish the registration after changing the email address when the early age gate config is enabled.
  • The REMOTE_LOCALIZATION_BASE_URL envar is now optional for disabling localization from S3.

Email template

  • Added support for configurable localizations for for the player-facing customer support email template.

Player Portal

  • Enhanced the Player Portal performance by only sending one language resource instead of all, reducing the response size.
  • Fixed newly created accounts requiring to fill in the display name again upon login, even though the display name data is already provided during account registration.
  • Fixed the minor display issue on the account linking pop-up when the early age gate config is enabled.
  • Fixed the og:url (on HTML source) to always pointing to the actual URL instead of localhost.
  • Fixed the account deletion flow breaking if an account doesn't accept any legal docs during registration.
  • Fixed the mandatory display name pop-up layout on mobile view when clicking on the language dropdown.
  • Fixed the date of birth input field layout issue on one-time code account linking form.
  • The REMOTE_LOCALIZATION_BASE_URL envar is now optional for disabling localization from S3.

Analytics

  • Added indexes to fix the query performance issue.
  • Added S3 file compression support in the connector.
  • Increased the speed of retry delay in ETL.
  • Fixed to detection of new topics in mapping models.
  • Fixed the conflict in the monthly series of stickiness metrics.
  • Fixed the high latency issue in the connector v2 service.

AMS

  • Improved UI.
  • Added missing History tab in development fleets.
  • Added capability to delete images from the Admin Portal.
  • Fixed the issue of the -e parameter value not displaying in the creation summary of a new build configuration.
  • Added the option to search by fleet ID on the fleet list.
  • Increased claim key character limit from 50 to 128 characters.
  • On-demand servers are now claimed without retrying if the server launches within eight seconds.
  • Drained any watchdogs that are running with old configurations.
  • Deleted fleets that still have watchdogs running after initial deletion attempt.
  • Fixed issue where artifact collection records could not be recorded when the upload is larger than 2 GiB

SDK

  • [Unreal Engine] Fixed the get platform user ID on Entitlement::SyncPlatformPurchase and Entitlement::SyncSteamDLC.
  • [Unreal Engine] Fixed the FAccelByteModelsTimeLimitedBalance::ExpiredAt field to show the backend response value.
  • [Unreal Engine] Fixed the OrderPrice and DiscountedPrice on FOnlineAsyncTaskAccelByteCheckout to use the calculated full price instead of the per unit price.
  • [Unreal Engine] Fixed FOnlineUserPresence::GetPlatform() returning empty string after ReadFriendList and OnPresenceReceived in OSS.
  • [Unreal Engine] Fixed the AccelByteOnLoginTicketStatusUpdatedDelegate being triggered with a false negative success state.
  • [Unreal Engine] Fixed the FOnlineUserCacheAccelByte::GetUser(const FAccelByteUniqueIdComposite& UserId) function to check the AccelByte composite user ID.
  • [Unreal Engine] Fixed a race condition that triggered OnMatchmakingComplete twice.
  • [Unreal Engine] Fixed the sorting logic of the lobby notification buffer to use the SequenceID instead of SentAt.
  • [Unreal Engine] Fixed crashes caused by accessing destroyed FAccelByteMessagingSystem objects by changing some of them to TWeakPtr<FAccelByteMessagingSystem>.
  • [Unreal Engine] Fixed logout delegates being triggered after receiving a response, even if the game had shut down, by caching FAccelByteTaskWPtr to track and cancel any ongoing logout tasks during shutdown.
  • [Unity] Fixed the incorrect endpoint parameters for ServerUserAccount.GetUserByUserId() and Chat.GetGroupChatSnapshot().

Extend

  • Improved dashboards for AGS Premium and Starter customers. These dashboards are designed to help customers troubleshoot their Extend apps (including Service Extension, Override, and Event Handler) more effectively.
  • Added a Resource configuration feature that aims to help you manage your cost on resources while ensuring your applications can handle varying levels of traffic seamlessly. This feature enables you to:
    • Configure Replicas: manage the number of replicas to control costs and ensure performance scalability.
    • Optimize CPU and Memory: Fine-tune CPU and memory settings to efficiently utilize VM resources, balancing cost and performance effectively.