Skip to main content

AGS 3.75.0 Release Notes

Last updated on September 6, 2024

Release date: June 18th, 2024

AccelByte Gaming Services (AGS) Game SDK latest version

Extend SDK (previously known as Server SDK) latest version

DSuploader latest version

  • Armada DS Uploader: 1.6.4

Highlights

  • Improved UX on Admin Portal for AGS Premium customers.
  • Introduced inventory integration with AGS E-commerce, enabling you to use AGS Store and Entitlement data as the main source for item metadata. By enabling the integration, Entitlement will be used as the source of truth data for users' owned items. This centralization helps prevent issues such as duplicate actions on items, e.g., buying, consuming, or discarding.
  • Introduced the new Profanity Filter service in early access, supporting the integration of custom third-party profanity filters for IAM Input Validation via Extend.
    • In the Admin Portal:
      • To access the configuration menu, go to Game Setup > Profanity Filter > Customizations.
      • To access the toggle to enable the profanity filter in IAM Input Validation, go to Admin Task > IAM Input Validation.
  • Added new endpoints in the General Data Protection Regulation (GDPR) service to support server-to-server (S2S) integration that allow trusted services to perform GDPR requests on behalf of users.
  • Neon Pay is now supported as an additional payment provider.
  • Google Play Games and Apple Account are now natively supported as login methods for mobile.
  • [Unreal Engine] Added the following functions for the Inventory service:
    • To list all inventories: ServerInventory::GetInventories.
    • To create inventory: ServerInventory::CreateInventory.
    • To get an inventory: ServerInventory::GetInventory.
    • To update inventory: ServerInventory::UpdateInventory.
    • To delete inventory: ServerInventory::DeleteInventory.
    • To list all items: ServerInventory::GetInventoryAllItems.
    • To get an item: ServerInventory::GetInventoryItem.
    • To consume item: ServerInventory::ConsumeInventoryItem.
    • To bulk update items: ServerInventory::BulkUpdateInventoryItems.
    • To save item to specific inventory: ServerInventory::SaveInventoryItemByInventoryId.
    • To bulk remove items: ServerInventory::BulkDeleteUserInventoryItems.
    • To save item: ServerInventory::SaveInventoryItem.
    • To sync user's entitlements to e-commerce: ServerInventory::SyncUserEntitlement.
  • [Unreal Engine] Added the following low-level and OSS functions to cancel invitation for party or session:
    • Low-level functions:
      • Session::CancelGameSessionInvitation
      • Session::CancelPartyInvitation
    • OSS function:
      • FOnlineSessionV2AccelByte::CancelSessionInvite
  • [Unreal Engine] Added the following functions to claim rewards on behalf of the user:
    • ServerChallenge::GetUserRewards
    • ServerChallenge::ClaimReward
  • [Unreal Engine] Added the following low-level and OSS functions to support turn server quality of service (QoS):
    • Low-level functions:
      • TurnManager::GetTurnServersV2
      • TurnManager::GetClosestTurnServerV2
      • TurnManager::GetTurnServerLatencyByRegion
      • TurnManager::GetTurnServerLatencies
      • TurnManager::GetCachedLatencies
    • OSS functions:
      • FOnlineSessionV2AccelByte::StartMatchmaking
        • Added the new StartMatchmaking function that supports SearchSettings with FOnlineSessionSearchAccelByte and added bIsP2PMatchmaking inside FOnlineSessionSearchAccelByte to start matchmaking with turn server QoS.
  • [Unreal Engine] Added the following low-level and OSS functions to support storage in matchmaking tickets:
    • Low-level functions:
      • Added Storage field in FAccelByteModelsV2MatchTicketOptionalParams.
      • Added Storage field in FAccelByteModelsV2TicketInformation.
    • OSS functions:
      • Added SearchStorage in FOnlineSessionSearchAccelByte.
  • [Unreal Engine] Marked the unused UnreadChats parameter in FAccelByteModelsChatTopicQueryData as deprecated. This parameter will be removed in AGS 3.78.
  • [Unreal Engine] Updated the Challenge Service data model.
    • New models:
      • EAccelByteModelsChallengeMatcher: Enumeration for comparing the challenge goal with the statistics of the user in the challenge service.
      • FAccelByteModelsChallengeResetConfig: Information of the challenge rotation reset time.
      • FAccelByteModelsChallengeSchedule: Schedule of the challenge activation
      • FAccelByteModelsChallengeGoalMeta: Challenge goal metadata containing all of the information on the requirement for achieving the goal.
  • [Unreal Engine] Added request validation for the Challenge Service to check:
    • Empty challenge code.
    • Empty reward ID.
    • Query parameters validity (sort by, challenge status, tags).
  • [Unreal Engine] Added a new function Agreement::ChangePolicyPreferences to call changePreferenceConsent API in order to accept or change the User Policy Preference.
  • Added a new field for storage in CreateMatchTicket and OnMatchmakingStarted notification.
  • Added a new endpoint to cancel a party and game session invitation.
    • Game session: DELETE /session/v1/public/namespaces/{namespace}/gamesessions/{sessionId}/users/{userId}/cancel
    • Party session: DELETE /session/v1/public/namespaces/{namespace}/party/{partyId}/users/{userId}/cancel
  • Added the Turn Server Configurations menu to the publisher namespace in the Admin Portal. To access this menu, go to AGS Settings > Turn Server Configurations in your publisher namespace.
  • Player Portal, Login Website, and Launcher now support localization (multi-language support). The translation files and list of available languages are managed through the Admin Portal's App Editor. App Editor settings can be found under the publisher namespace.

Quality of life changes

  • Updated the Challenge service as follows:
    • Introduced the ability for a game admin to set a specific reset time for Challenges, allowing for customization that aligns with each game scenario.
    • Added entitlement as a new additional requirement for goals to enable admins to set requirements to check if the item is owned by the player.
    • Introduced two new admin endpoints on the Challenge service for reward claims, enabling game admins or dedicated servers to claim user rewards on their behalf.
    • Improved the Challenge service to support event emission for the Challenge goal. Upon completion of the challenge goal, the service will trigger an event. This event integration is complemented by the Extend Event Handler.
  • [Unreal Engine][Unity] Added a validation check to ensure that server addresses returned by QoS are valid before resolving. If a server address is in IP format, it will be used directly.
  • [Unreal Engine] Added ServerECommerce:BulkGetItemsById function.
  • [Unreal Engine] Added an adjustment for OnMatchmakingExpired to indicate that the ticket was canceled by the leader instead of being "expired."
  • [Unreal Engine] Added a new parameter called "Latency" to the TurnManager::SendMetric.
  • [Unreal Engine] Moved the chat connection close handler to the chat interface (FOnlineChatAccelByte).
  • [Unreal Engine] Unbound the chat delegates on FOnlineAsyncTaskAccelByteConnectChat::Finalize.
  • [Unreal Engine] Added support for FOnSessionParticipantJoined and FOnSessionParticipantLeft delegates in the FOnlineSessionV2AccelByte starting from UE 5.2.
  • [Unreal Engine][SDK] Removed the empty fields from the request JSON on SyncMobilePlatformPurchaseApple.
  • [Unreal Engine] Added a guard to the empty ResolvedIp on Qos::ResolveQosServerAddress() and FAccelByteUdpPingThread::CreateAddress() to prevent crashes when the IP address for Address->SetIp is empty.
  • [Unreal Engine] Added ResolvedAddresses Map to store previously resolved server IPs, eliminating the need to perform the resolve action repeatedly.
  • [Unreal Engine] Improved the following delegates to use thread-safe SharedPointer delegates over lambdas or raw pointers:
    • Changed lambda delegates to thread-safe SharedPointer delegate for OnTokenRefreshed in SetNativePlatformTokenRefreshScheduler method in FOnlineSubsystemAccelByte and store the DelegateHandle in NativeTokenRefreshHandles.
    • Changed raw pointer delegates to thread-safe SharedPointer delegate for AddOnLoginCompleteDelegate_Handle and AddOnConnectLobbyCompleteDelegate_handle during FOnlineSubsystemAccelByte initialization process.
  • [Unreal Engine] Improved the lifetime management for the following:
    • FAccelByteMessagingSystem class inherits TSharedFromThis so it can be used as TWeakPtr in the Credentials class.
    • Pass TWeakPtr of OnlineIdentityInterface in a lambda capture for FLogOutFromInterfaceDelegate in OnlineSubsystemAccelByte.
  • [Unreal Engine] Cleaned up the following delegate handles on destruction:
    • NativeTokenRefreshHandles were removed on OnlineSubsystemAccelByte shutdown.
  • [Unreal Engine] Added additional guards to check the validity of the following Online Interfaces before access:
    • Inside OnNativeTokenRefreshed method in OnlineSubsystemAccelByte.
    • Inside lambda function for FLogOutFromInterfaceDelegate.
    • Inside SetNativePlatformTokenRefreshScheduler method in OnlineSubsystemAccelByte.
  • [Unity] Improved the Lobby web socket stability by adding an automatic fallback flow to retrieve dropped messages.
  • [App Editor] Added a new feature flag to display or hide the See Account History button located on the My Profile page in the Player Portal and Launcher.
  • [Player Portal] Added a checker and prompt to require a player to provide a display name upon login when the "Unique Display Name" environment variable is active.
  • [Legal Website] Optimized the mobile view for the legal website.
  • [Admin Portal][Platform] An additional field called "Granted Code" has been added to the More Details menu of any entitlement (with an item type of Code) to show the code that was used to redeem the entitlement. The More Details menu can be accessed from the Entitlements tab on the User Management or Lookup Users page.
  • [Admin Portal][IAM] The OpenID Connect (OIDC) login methods now support custom logos.
  • [Admin Portal][Login Queue] The Login Queue configuration now supports Polling Time adjustments, which is the maximum polling time for refreshing the queue info for a player.
  • [Admin Portal][Player Portal] Disabling a 2FA method now requires a 2FA validation. For example, if a player wants to disable 2FA using an authenticator app, the player must provide the code from the authenticator app before being submitting the disablement request.
  • [Admin Portal][Player Portal] Changing passwords now requires a 2FA validation for users with 2FA method enabled.
  • [Configuration Migration] Extend migration is now supported.

Breaking changes

  • Introduced breaking changes on the Inventory service which include removing filter items by quantity (qtyGte query parameter) and removing the ability to sort items by their quantity (qty, qty:asc, and qty:desc) on the AdminListItems and PublicListItems endpoints. This has the following impacts:
    • Cannot filter items by quantity (qtyGte query parameter). Items will now be returned by default if their quantity is one or more. If the qtyGte parameter is included in a query, it will be ignored by the service.
    • Cannot sort items based on the number of quantity (qty value). If the sortBy query parameter still uses the qty, qty:asc, or qty:desc value, the service will revert to the default sorting method, which sorts the items by the creation time (createdAt value).
  • [Unreal Engine] Removed the quantity parameter from Inventory::GetUserInventoryAllItems() and the QUANTITY, QUANTITY_AS, QUANTITY_DESC enum from EAccelByteUserItemsSortBy.

Bug fixes and minor changes

Admin Portal

AGS Admin Portal Starter

  • Added recent search user history feature for enhancing functionality on the following pages:
    • Publisher namespace: Admin Task > Admin Management, Admin Task > Lookup Users.
    • Game namespace: Live Service Utility, Game Setup, Multiplayer, and Extend.
  • Added AGS Setting menu with Email API Keys Submenu to the Super Admin sidebar.
  • Added Inventory tab to User Management.
  • Bugfix:
    • Resolved recurring page refresh issue.
    • Fixed 403 screen encountered by Game Admins when accessing game or ByteWars namespace homepage.

AGS Admin Portal Premium

  • Fixed issue that caused Invite Admin to not function correctly if App Editor's Early Age Gate feature is activated
  • Improved UX on Admin Portal for everyone. We are improving the UX on our Admin Portal with the following:
    • An enhanced user interface and experience with a new navigation sidebar.
    • Reorganized menu items.
    • Searchable navigation bar for easier access.
    • New home pages and a getting started section for simplified game configuration setup.
    • Embedded documentation and links to our official documentation for improved user guidance.
      note

      These improvements will be rolled out gradually as we enable a feature flag for each.

  • Added NPS survey integration in the Admin Portal for gathering customer feedback and insights.
  • Improved the Season Pass layout to follow the standard UI component.
  • Reduced the overall query to Inventory to avoid overloading the Inventory service.
  • Updated the behavior of the Inventory onboarding pop-up, to be displayed per namespace.
  • The AccelByte Intelligent Service (AIS) add-on is now in early access on the Admin Portal for AGS Premium customers.

IAM

Achievements

  • Updated the level of detail or information included in certain internal logs.

Challenge

  • Fixed the implementation of repeat after scheduling.
  • Fixed an issue preventing challenge progress from resetting after the period changes.
  • Fixed an issue causing the Challenge to incorrectly display a "TIED" status, even when the actions taken did not meet any of the listed requirements.
  • Fixed unhandled errors when providing invalid goal data.
  • Fixed the implementation of Coin and Bundle reward granting on Challenge service.
  • Fixed an issue causing users to only claim rewards one by one.
  • Fixed an issue where searching user progression using goal code might result in an empty goalProgressionId.

Cloud Save

  • Improved automation migration for Cloud Save service to support database sharding.
  • Fixed the AfterReadGameBinaryRecord validation method is not working.

Inventory

  • Fixed the service return "context deadline exceeded" error caused by the service not closing some database queries properly.

Leaderboard

  • Fixed unhandled errors when deleting user ranking data without leaderboard ranking.
  • Fixed the description on some leaderboard endpoints.

Statistics

  • Added custom badges on the Statistics Swagger UI.

Season Pass

  • Added custom badges on the Season Pass Swagger UI.
  • Fixed the Language data that is missing from LocalizedSeasonInfo response.

Session

  • The check blocked player process is now skipped when there is only one member in a party.
  • Introduced a new environment variable called AUTO_CANCEL_OUTSTANDING_INVITES to adjust pending party invites behavior. If the value is true, then any pending party invite will be canceled.
  • Fixed a bug that removed the disconnected party session member from the PSN session.
  • Fixed the issue that made the invitee join a session directly instead of being invited to the session.
  • Players can no longer join a session via session code when the session joinability is set to CLOSED.
  • Improved the GET /session/v1/admin/namespaces/{namespace}/users/attributes endpoint that queries player attributes. If the userID field is not provided with any data, it will throw an HTTP error 400.
  • Fixed the bug that prevented a player that directly joined a game session from being assigned to any team.

Session Worker

  • PSN session sync is now triggered when users are connected to the game.
  • Improved the reconnecting process.

Matchmaking V2

  • Party session now only sends the cross_platform value registered in Login Method.

Chat

  • Dropped players are now removed from the Chat topic.

Armada (Deprecated)

  • Modified the behavior in list DS status endpoint to resolve inconsistency.
  • Fixed wrong calculation in podAllocation if needCount is different with max allocations value
  • Optimized stuck session error log in the Dedicated Server Management Controller (DSMC).
  • Handled the "Unexpected response code: 500 (No cluster leader)" error from Nomad.

App Editor

  • Modified the layout of feature flag names and values for better readability. App Editor settings can be found under the publisher namespace.

SDK

  • [Unreal Engine][OSS] Fixed the issue that caused the started matchmaking delegate to be triggered with wrong session name for session members.
  • [Unreal Engine] Fixed the "Code: 14004; Message: Invalid JSON response" error when receiving a response from AccelByte::Api::Item::GetItemMappings.
  • [Unreal Engine][OSS] Fixed the inability to use the Displays feature on a namespace that doesn't have any IAP config when the FOnlineStoreV2AccelByte::QueryStorefront is called.
  • [Unreal Engine][OSS] Fixed the issue on Login with Steam when trying to run standalone mode from editor.
  • [Unreal Engine] Added padding enum to the last entry of EAccelByteStatisticUpdateStrategy. Due to a reserved keyword, the last entry of the enum will be removed and the UE code generator cannot generate the MAX enum.
  • [Unreal Engine] Added NOT_STARTED to the enum EAccelByteModelsChallengeGoalProgressStatus.
  • [Unity] Fixed the compile failure issue on Linux when the editor is targeting a dedicated server platform.
  • [Unity] Added the missing ShopId as a parameter for AccelByteSDK.GetClientRegistry().GetApi().GetItem().GetItemBySku.
  • [Unity] Fixed the AccelByteSDK.GetServerRegistry().GetApi().GetEcommerce().QueryItemsByCriteriaV2 to call the correct endpoint.
  • [Unity] Fixed the AccelByteSDK.GetClientRegistry().GetApi().GetUser().GetUserOtherPlatformBasicPublicInfo to call the correct endpoint.

Extend

All Extend apps

  • Any Extend app with a "Starting" status can now be stopped.

Fair usage limit

  • In Starter and AGS Premium, AccelByte only retains 100 images for Extend apps. When this limit is reached, the oldest image will be replaced by the new one.

Configuration Migration

  • You can now migrate your Extend app's configuration to another namespace or environment. The configuration includes the Extend application itself, environment variables, and secret variables.

Extend Helper CLI

  • The Extend Helper CLI now supports the following commands:
    • The "image upload" command to upload images of Extend apps.
    • The "get Extend app info" command to retrieve Extend app information such as Extend App URI.

Extend Codegen CLI

  • Released a docker image which can be run across the platform.

Extend Override

  • Implemented the use of "Customization" as the standard term for showing when a feature is overridable. If you see "Customization" on the side menu, that means the feature is overridable.

Bug Fixes

  • Extend Service Extension: AGS Starter customers can now see the correct service URL on the details page of an Extend App on the Admin Portal. The fixed service URL is {game namespace}.prod.gamingservices.accelbyte.io.

AMS

  • Added new API to mark image for deletion.
  • Added new API to mark image for deletion in bulk (by criteria).
  • Improved metrics labeling.
  • Fixed the long drains issue that prevented correct scaling behavior.
  • Fixed the empty status issue on the "get server" API response.
  • Fixed the issue of the missing logs and artifact sampling rules from the "get fleet" API response.