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.
- In the Admin Portal:
- 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.
- Data Deletions
- Data Retrievals
- 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
.
- To list all inventories:
- [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
- Low-level functions:
- [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 supportsSearchSettings
withFOnlineSessionSearchAccelByte
and addedbIsP2PMatchmaking
insideFOnlineSessionSearchAccelByte
to start matchmaking with turn server QoS.
- Added the new
- Low-level functions:
- [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
.
- Added Storage field in
- OSS functions:
- Added
SearchStorage
inFOnlineSessionSearchAccelByte
.
- Added
- Low-level functions:
- [Unreal Engine] Marked the unused
UnreadChats
parameter inFAccelByteModelsChatTopicQueryData
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 activationFAccelByteModelsChallengeGoalMeta
: Challenge goal metadata containing all of the information on the requirement for achieving the goal.
- New models:
- [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
andOnMatchmakingStarted
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
- Game session:
- 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
andFOnSessionParticipantLeft
delegates in theFOnlineSessionV2AccelByte
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
onQos::ResolveQosServerAddress()
andFAccelByteUdpPingThread::CreateAddress()
to prevent crashes when the IP address forAddress->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
inSetNativePlatformTokenRefreshScheduler
method inFOnlineSubsystemAccelByte
and store the DelegateHandle inNativeTokenRefreshHandles
. - Changed raw pointer delegates to thread-safe SharedPointer delegate for
AddOnLoginCompleteDelegate_Handle
andAddOnConnectLobbyCompleteDelegate_handle
duringFOnlineSubsystemAccelByte
initialization process.
- Changed lambda delegates to thread-safe SharedPointer delegate for
- [Unreal Engine] Improved the lifetime management for the following:
FAccelByteMessagingSystem
class inheritsTSharedFromThis
so it can be used asTWeakPtr
in the Credentials class.- Pass
TWeakPtr
ofOnlineIdentityInterface
in a lambda capture forFLogOutFromInterfaceDelegate
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.
- Inside
- [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 theQUANTITY
,QUANTITY_AS
,QUANTITY_DESC
enum fromEAccelByteUserItemsSortBy
.
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
- /iam/v3/public/namespaces/{namespace}/users will no longer return deleted users.
- /iam/v3/platforms/{platformId}/token/verify now supports PlayStation on PC (PSPC)
platformId
. userLoggedIn
event now containsplatformId
and platform information.- /iam/v4/public/namespaces/{namespace}/platforms/{platformId}/users is introduced to replace /iam/v3/public/namespaces/{namespace}/platforms/{platformId}/users.
- V4 will have a max count limit of 100, whereas V3 does not have this limitation.
- As of this release, both endpoints are still usable.
- Logins from disabled third-party login method configurations are now properly blocked.
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 istrue
, 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 theuserID
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
ifneedCount
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 enumEAccelByteModelsChallengeGoalProgressStatus
. - [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 forAccelByteSDK.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.