AGS 3.77.0 Release Notes
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.
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 thenamespace_roles
field. If you are currently using theroles
values from the access tokens, you will need to migrate to the new field:namespace_roles
. This change will also affect the following endpoints:- IAM/AdminGetMyUserV3 (
roles
will be empty) - IAM/PublicGetMyUserV3 (
roles
will be empty)
- IAM/AdminGetMyUserV3 (
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.
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.
- deleteAllUserRankingByCycleIdAdminV3: deletes all user rankings in a specific cycle.
- deleteUserRankingByCycleIdAdminV3: deletes a single user ranking from a specific cycle.
Legal Compliance
- 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
noteOnly 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.
noteYou 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
toUser::Register
andUser::Registerv2
for optional verification code before registering as a new user. - Added new IAM config key
EAccountConfiguration::MANDATORY_EMAIL_VERIFICATION_ENABLED
toUser::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
- Set the timeout:
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
- Related interface:
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 acceptsFAccelByteModelsPlatformSyncMobileGoogle
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
, andUser::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.
- Added an optional MFA code parameter to
- 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 new
- SDK
- 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.
noteThis 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:
- AdminUpdateUserInventoriesByInventoryCode: updates the maximum inventory slots using User ID and Inventory Code.
- AdminBulkSaveItem: bulk saves items.
- AdminBulkSaveItemToInventory: bulk saves items to a specific inventory.
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 toFAccelByteModelsPublicPolicy
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
withinFUserOnlineAccountAccelByte
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 toDefaultEngine
. 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.- 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 theDefaultEngine
configuration. - [Unity] When
ServerUseAMS
is set to false in the server configuration.
- [Unreal Engine] When
- The
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.
- Party Details page on Session and Parties:
- 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.
- Set
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.
Legal Website
- 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
anduserDisconnected
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 thePATCH /match2/v1/config/namespaces/{namespace}
endpoint to enable or disable thecurrent_platform
validation per namespace.- When
crossPlatformNoCurrentPlatform
is true, it will ignorecurrent_platform
validation that has been set in thematch_options
. - When
crossPlatformNoCurrentPlatform
is false, it will checkcurrent_platform validation
that has been set in thematch_options
.
- When
- Match tickets are now inactive when players receive
OnSessionMemberChanged
andOnSessionEnded
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)
toFHttpModule::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
toFlightId
. - [Unity] Fixed the lobby notification
sequenceId
data type and adjusted notification buffer sorting to usesequenceId
for more accurate fallback lobby event triggers. - [Unity] Added an optional parameter
ContentType
toAccelByteNetUtilities.UploadBinaryTo
with default valueapplication/octet-stream
. - [Unity] Fixed the incorrect callback model on
BinaryCloudSave
interface.SaveUserBinaryRecord
: Model changed fromUserBinaryRecord
toSaveBinaryRecordResponse
.RequestUserBinaryRecordPresignedUrl
: Model changed fromBinaryInfo
toRequestUserBinaryRecordPresignedUrlResponse
.
- [Unity] Corrected data types for the following fields in the
TurnServer
model:CpuUsage
: Value fromfloat
todouble
Current_time
: Value fromint
tolong
MemUsage.Total
: Value fromint
toulong
MemUsage.Used
: Value fromint
toulong
NetUsage.Rx
: Value fromint
toulong
NetUsage.Tx
: Value fromint
toulong
- [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 theOnSessionMembersChanged
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.