AGS 2025.1.0 Release Notes
Release date: February 4th, 2025
Versions
AccelByte Gaming Services (AGS) Game SDK
To ensure the highest quality, the Game SDK is scheduled for release on February 17th, 2025.
Extend SDK (previously known as Server SDK) latest version:
Please refer to the respective GitHub releases page:
- C#: https://github.com/AccelByte/accelbyte-csharp-sdk/releases
- Go: https://github.com/AccelByte/accelbyte-go-sdk/releases
- Java: https://github.com/AccelByte/accelbyte-java-sdk/releases
- Python: https://github.com/AccelByte/accelbyte-python-sdk/releases
AccelByte Multiplayer Servers (AMS) CLI
- AMS CLI: 0.245.31
Highlights
[AMS] Support Bare Metal Servers.com in AMS (Shared Cloud)
Bare Metal Servers are now available in AMS for Shared Cloud customers—one of our most requested features! Powered by Servers.com, these servers offer stable and cost-effective performance with no data transfer fees, making them perfect for steady game workloads.
- How to access this feature from the Admin Portal
- Send a request via email to ams-bare-metal-support@accelbyte.net
- Go to fleet creation and find the Bare Metal provider option once the request has been approved
- Go to Game Namespace - Billing & Usage - Billing to see the billing report for Bare Metal
- How to access/use it from SDK
- Same flow as regular server configuration
- How to access it through the REST API
- Same flow as regular server creation
- How to access this feature from the Admin Portal
[Extend] VM Sharing Option
We introduce a new enhancement that makes managing your Extend apps more cost-effective and efficient! Previously, each namespace required a separate VM, increasing costs and complexity. With this update, Extend apps can now share VMs across all namespaces within the same studio, whether in a shared or private cloud environment. This means lower VM costs.
- How to access this feature from the Admin Portal
- Select the Extend Service - Open your app
- Below your app name, make sure that the label shows “CURRENT NAMESPACE VM” or “ALL-NAMESPACE VM”
- Click 3 dot menu - Setting.
- Change the “Host app in” menu to either “All-namespace VM” or “Current Namespace VM”
- Click Save
- How to access/use it from SDK
- n/a
- How to access it through the REST API
- Create a New Extend App
- Endpoint: POST /csm/v2/admin/namespaces/{namespace}/apps/{app}
- Description: Create a new Extend App with a specified VM-sharing configuration.
- The required field is vmSharingConfiguration to define the level of VM sharing with values:
- Game-level
- Studio-level
- Update VM Shared Configuration for an Existing App
- Endpoint: PATCH /csm/v2/admin/namespaces/{namespace}/apps/{app}/resources
- Description: Updates the VM sharing configuration for an existing Extend App.
- Modify the vmSharingConfiguration field with one of the following values:
- Game-level
- Studio-level
- Create a New Extend App
- How to access this feature from the Admin Portal
Option to Enable or Disable Virtual Currency Expiration (Japan Region)
By default, a 180-day expiration time is enabled for virtual currencies originating from Japanese regions. Under Japanese law, specifically the Payment Services Act (Act No. 59 of 2009), in-game currency (VC) and items that are bought with real money are subject to Prepaid Payment Instruments, requiring certain registrations, filings, and deposit guarantees (Article 3, 5, 7, and 14). Implementing a 180-day expiration period on virtual currencies originating from Japanese regions will exempt them from Prepaid Payment Instruments (Article 4).
For clients who can fulfill the requirements outlined in the Payment Services Act, it is now possible to disable the default virtual currency expiration period. For more details, please refer to the documentation.
- How to access it from the Admin Portal
- On the Admin Portal sidebar, go to Commerce > Wallets > VC Expiration Time Rules.
- Enable or Disable the VC expiration time depending on your needs.
- How to access it from the Admin Portal
Support for Searching, Grouping, and Categorizing Challenge Configurations Using Tags and Challenge Codes
Previously, there was no identifier available for users to efficiently query, categorize, or group challenge configurations. To address this, we’ve introduced tags to challenge configurations. Users can now filter the Challenge list by tags and perform keyword searches. Note: Keyword searches currently only filter by Challenge Code.
- How to access/use it from the Admin Portal
- On the Admin Portal sidebar, go to Engagement > Challenges > Configurations.
- Create a new challenge configuration or edit an existing challenge, then add tags to the configuration.
- GameSDK adjustment:
- Added new optional parameters
Tags
andKeyword
in the following functions to filter the list of challenges:- [Unreal Engine]
Challenge::GetChallenges
(for developers using Blueprints, please use the newly added Blueprint functionUABChallenge::GetChallengeList
). - [Unity]
Api.Challenge.GetChallenges(optionalParams, callback)
andServerApi.Challenge.GetChallenges(optionalParams, callback)
.
- [Unreal Engine]
- Added new optional parameters
- How to access it through REST API
- Tags can be configured via the following endpoints:
- Tags and keyword filtering can be used via the following endpoints:
- How to access/use it from the Admin Portal
New statistics cycle clamping behavior
Previously, the minimum and maximum values for Statistics and their associated Statistics Cycles were the same, which limited certain game design use cases. For example, if a game required a daily Statistics Cycle to have a maximum value of 10, but the overall Statistics configuration allowed a maximum value of 1,000,000, this setup could not be achieved because the limits were applied independently between the Statistics Cycle and the overall Statistics configuration.
With this new implementation, Game Admins can configure the clamping behavior for user Statistics and their cycles. This ensures that the min/max value of the Statistics configuration will also restrict the Statistics Cycle and vice versa, effectively preventing values from exceeding the defined limits. For more details, please refer to the documentation.
- How to access/use it from the Admin Portal
- On the Admin Portal sidebar, go to Progression & Inventory > Statistics > Configuration.
- Edit existing statistics, then activate the Cap Cycle Override.
- This field controls the capping behavior when a cycle reaches its maximum or minimum value during updates.
- It applies only if the statistics are tied to a cycle and the statistics cycle is being overridden.
- How to access/use it from the Admin Portal
Multi-Chat in Game Sessions: Enhanced Communication for Team-Based Games
Before this feature, communication during a game session was pretty limited. Every session had just one chat channel. Whether you were on Team A, Team B, or even playing solo, everyone was stuck in the same chat room. Imagine trying to strategize with your team while your opponents are also in the same room—it’s chaotic and not exactly ideal for team-based games. Developers had no way to give players the private chat spaces they needed. This was a big gap in functionality.
This new feature allow game developers to create multiple chat channels within the same game session. But the real game-changer? The ability to set up team-specific chat rooms. Players can now strategize privately with their own team without any distractions from opponents or other players. This adds a whole new level of collaboration and competitiveness to team-based games.
At its core, this feature has three main objectives. First, to enable private, team-specific chats that make communication seamless. Second, to give players an immersive experience where collaboration is key. And third, to provide developers with the tools they need to create truly engaging team-based games. It’s all about fostering connection and competition in the best way possible.
- How to access/use it from the Admin Portal
- Go to the admin portal
- Go to the session template
- Configure the multiple chat configuration
- How to access/use it from SDK
- no SDK functionality
- How to access it through REST API
- /session/v1/admin/namespaces/{namespace}/configuration
- How to access/use it from the Admin Portal
Added SDK support for the new Game Standard Events:
Mission
Events:mission_Started
mission_Step_Ended
mission_Ended
Matchinfo
Events:matchinfo
matchinfo_Player
matchinfo_Ended
Popup
Events:popup_Appear
Progression
Events:entity_Leveled
entity_Dead
Resource
Events:resource_Flow
All Game Standard Events can be found in:
Unreal Engine:
auto OnlineSubsystem = static_cast<FOnlineSubsystemAccelByte*>(IOnlineSubsystem::Get("ACCELBYTE"));
if(OnlineSubsystem != nullptr)
{
const auto GameStandardEventInterfacePtr = OnlineSubsystem->GetGameStandardEventInterface();
if(GameStandardEventInterfacePtr.IsValid())
{
GameStandardEventInterfacePtr-><Event Function>();
}
}Unity:
AccelByteSDK.GetClientRegistry().GetGameStandardEvents().*
[Unreal Engine] Added a new delegate
FOnlineSesionV2AccelByte::AddAccelByteOnReconnectedRefreshSession
that will be triggered if players refresh their session and sync it with the backend after they lose connection.[Unreal Engine] The SDK will query the Session info before handling the
autoJoin
, callingFOnlineAsyncTaskAccelByteFindV2GameSessionById
onFOnlineSessionV2AccelByte::OnGameSessionUpdatedNotification
andFOnlineSessionV2AccelByte::OnDsStatusChangedNotification
.[Unity] Added a new optional parameter
TeamId
on the request when creating and updating a game session. Affected interfaces:Api.Session.CreateGameSession(request, callback)
ServerApi.Session.UpdateGameSession(sessionId, request, callback)
[Unity] Added an automatic retry mechanism to
Lobby.Connect()
if the WebSocket fails to establish a connection.[Unity] Added
Api.Session.KickUserFromGameSession
andApiServer.Session.KickUserFromGameSession
interface. Reference: Integrate game session | AccelByte Documentation
Deprecated and Decommissioned Features
MARKING OF DEPRECATION FOR PII-LEAKING ENDPOINTS & UPCOMING DECOMMISSIONING
Several endpoints have been marked as deprecated (due to risks of them potentially leaking PII), but are still left as functional to prevent immediate breaking changes.
The affected endpoints are:
- /iam/namespaces/{namespace}/users/byLoginId
- Alternative endpoint(s): /iam/v3/public/namespaces/{namespace}/users
- /iam/namespaces/{namespace}/users/byPlatformUserID
- Alternative endpoint(s):
- /iam/v4/public/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}
- /iam/v3/admin/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}
- Alternative endpoint(s):
- /iam/namespaces/{namespace}/users/listByLoginIds
- Alternative endpoint(s):
- /iam/v3/public/namespaces/{namespace}/users/platforms
- /iam/v3/admin/namespaces/{namespace}/users/search/bulk
- Alternative endpoint(s):
- /iam/namespaces/{namespace}/users/{userId}
- Alternative endpoint(s):
- /iam/v4/public/namespaces/{namespace}/users/{userId}
- /iam/v3/admin/namespaces/{namespace}/users/{userId}
- Alternative endpoint(s):
- /iam/namespaces/{namespace}/users/{userId}/platforms
- Alternative endpoint(s):
- /iam/v3/public/namespaces/{namespace}/users/{userId}/platforms
- /iam/v3/admin/namespaces/{namespace}/users/{userId}/platforms
- Alternative endpoint(s):
- /iam/v2/public/namespaces/{namespace}/users/{userId}
- Alternative endpoint(s):
- /iam/v4/public/namespaces/{namespace}/users/{userId}
- /iam/v3/admin/namespaces/{namespace}/users/{userId}
- Alternative endpoint(s):
- /iam/v3/public/namespaces/{namespace}/users/{userId}
- Alternative endpoint(s): /iam/v4/public/namespaces/{namespace}/users/{userId}
- /iam/v3/public/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}
- Alternative endpoint(s): /iam/v4/public/namespaces/{namespace}/platforms/{platformId}/users/{platformUserId}
- /iam/v3/public/namespaces/{namespace}/users/bulk/basic
- Alternative endpoint(s): /iam/v3/public/namespaces/{namespace}/users/platforms
- /iam/namespaces/{namespace}/users/byLoginId
GameSDK Adjustment
[Unreal Engine] Deprecated the following functions:
User
:GetUserByUserId
GetUserByOtherPlatformUserId
BulkGetUserInfo
ServerUser
:BulkGetUserInfo
We have provided the following new functions for you to migrate to:
User
:GetUserPublicInfoByUserId
GetUserPublicInfoByOtherPlatformUserId
GetUserOtherPlatformBasicPublicInfo
ServerUser
:GetUsersInfoByEmails
[Unity] Deprecated the following functions:
Api.User.GetUserByUserId(userId, callback)
Api.User.GetUserByOtherPlatformUserId(platformType, otherPlatformUserId, callback)
Api.User.BulkGetUserInfo(userIds, callback)
We have provided the following new functions for you to migrate to:
Api.User.GetUserPublicInfo(userId, callback)
Api.User.GetUserByOtherPlatformUserIdV4(platformType, platformUserId, callback)
Api.User.GetUserOtherPlatformBasicPublicInfo(requestPayload, callback)
ApiServer.UserAccount.GetBulkUserByEmailAddress(emailAddresses, callback)
The affected endpoints will be decommissioned in AGS version 2025.4.
UPDATE THE "SCHEDULE" FIELD DEPRECATION PLAN IN THE “CHALLENGE” GOAL RESPONSE MODEL
We have updated the deprecation plan for the "Schedule" field in the Challenge Goal response model to ensure a smoother transition.
Key Updates:
- AGS Version 2025.1:
- New endpoints have been introduced to retrieve a list of schedules for a Challenge and for specific goals.
- GameSDK Adjustment:
schedule
information is deprecated from the Challenge goal. From 2025.4 it will no longer be populated, and the Challenge goal will not include the schedule information. The following models will be affected:Unreal Engine:
FAccelByteModelsChallengeGoal::Schedule
.Unity:
Schedule
field onGoalResponseInfo
.We have added new interfaces to enhance the experience to query the list of scheduled Challenge:
Unreal Engine
Challenge::ListSchedules
Challenge::ListScheduleByGoal
Unity
Api.Challenge.ListSchedules
Api.Challenge.ListScheduleByGoal
- AGS Version 2025.4:
- The deprecation of the "Schedule" field in the Challenge Goal response model has been rescheduled to this version, providing additional time for clients to transition to the new endpoints if needed.
For further context on the original deprecation announcement, refer to the AGS version 3.78 release notes.
- AGS Version 2025.1:
Unity SDK
- As a follow-up to the deprecation notice in Release Notes AGS 3.78, we removed the following functions from the Unity SDK:
Removed the
Api.TurnManager.GetClosestTurnServer
interface in 2025.1. To enhance your experience when fetching TURN servers, we recommend transitioning to theGetClosestTurnServer()
method from the result ofApi.TurnManager.GetTurnServers
. This change will streamline your workflow and improve overall performance. For more information, refer to the Configure P2P in Unity SDK guide.Removed the
MatchmakingV1
serviceApi.SessionBrowser
and MMv1 Lobby events in2025.1
. To enhance your experience, please migrate to the new interfaces and events listed below:- Affected interface:
Api.SessionBrowser -> Api.Session
- Affected Lobby events:
MatchmakingCompleted
->SessionV2InvitedUserToGameSession
ReadyForMatchConfirmed
->SessionV2PartyMemberChanged
MatchmakingRejected
->MatchmakingV2MatchmakingCanceled
RematchmakingNotif
->MatchmakingV2MatchmakingStarted
- Affected interface:
Removed
Api.GetPresenceBroadcastEvent
in 2025.1. To continue the usage of the presence event, please useClientRegistry.GetPresenceBroadcastEvent
.Removed
Api.GetMiscellaneous().GetCountryGroups
in 2025.1. The interface is moved toApi.GetUser().GetCountryGroupV3
.Deprecated the
Qos.GetServerLatencies
.To fetch active Quality of Service (QoS) servers, please use
Qos.GetAllActiveServerLatencies
.備考GetServerLatencies
will be decommissioned in 2025.4
- As a follow-up to the deprecation notice in Release Notes AGS 3.78, we removed the following functions from the Unity SDK:
Minor Changes
Profanity Filter
- Several UX improvements to the Profanity Filter page (now called ‘Profanity Management’ in the Admin Portal, previously called ‘Profanity Filter’).
IAM
- IP rate limiter is now supported on the following endpoints:
- /iam/v3/oauth/token
- /iam/v3/oauth/platforms/{platformId}/token
- /iam/v4/oauth/token
- /iam/v4/oauth/platforms/{platformId}/token
- Note: disabled by default. Please reach out to AccelByte Support for enablement.
- Introduced a new endpoint, /iam/v3/admin/namespaces/{namespace}/users/{userId}/state , to Get User State By User Id.
- IAM now sends an endDate value (in RFC3339 format) for the userAccountBanned (topic: userAccount) event payload.
- The password param of this endpoint, /gdpr/admin/namespaces/{namespace}/users/{userId}/requests/{requestDate}/generate , is now optional.
Admin Portal
- Made several enhancements to the Profanity Management system to improve usability and clarity:
- Improved Profanity Word Sorting.
- Improved Profanity Filter Database Dropdown.
- A tooltip was added to display allowed characters when configuring Store Categories.
- Removed Cloud Save validation for the $ (dollar) and . (dot) characters when used as field names.
- Improved the workflow for creating Challenge Configurations with the Custom role assignment.
- Provided clearer information about the default value applied when leaving the Reset Time field empty while configuring Challenge Rotations.
AMS
- Show changelog in Audit Log for AMS activity.
- Show Claim Timeout in the Admin Portal to set the maximum time allowed for your fleet to claim a server in-game session.
App Editor
- Added a new capability within the App Editor to support footer customization for Login.
Challenges
- Added Challenge metrics for event processing time to monitor service performance when handling event-based challenges.
- Adjusted the log level for the Challenge service background process to reduce unnecessary error noise.
- Added validation to handle searches for schedules using invalid dates.
Cloud Save
- Removed unused and duplicate metrics.
Login
- Improved the logic of 3rd party login list in Login by hiding the specific 3rd party login button that matches the originating platform in a one-time link code flow.
Platform
- Added a list of DLC IDs from the XBOX response to help verify ungranted items.
- Updated the API documentation for applyUserRedemption to include the latest error codes.
Player Portal
- Improved & standardized the language detection approach across Player Portal & Login
- Improved the legal document language detection to properly account for both user geography and language preferences, ensuring a unified user experience.
Sessions
- Adding missing fields for DSM extension override.
Chat
- Adding platform field addition in the chat personal message.
Statistics
- Added a new index to improve Statistic Configuration queries in the Shared Cloud environment.
GameSDK
- [Unreal Engine] Defaulted the
EventNamespace
to theGameNamespace
inFOnlineAnalyticsAccelByte::IsValidTelemetry()
if not specified. - [Unreal Engine] Changed the failed Quality of Service (QoS) region ping to return 9999 ms ping latency instead of 0 ms.
- [Unreal Engine] Refactored the OSS to use shared pointers for the API calls instead of direct references.
- [Unreal Engine] Correctly released the
AccelByteInstance
inFMultiRegistry
when theAccelByteSDK
module is shut down. - [Unreal Engine] Correctly released the
AccelByteInstance
inOnlineSubsystemAccelByte
when theSubsystem
is destroyed. - [Unity] Improved the reliability of lobby service by fixing race conditions for incoming concurrent events.
Bug Fixes
IAM
- The /iam/v3/oauth/authorize endpoint will properly redirect to decoded redirect_uri.
Agreements/Legal
- A Legal Policy with a history of user acceptances (i.e. acceptances/rejections) cannot be deleted.
- Legal policies that have been set as a ‘Mandatory Update’ in the Admin Portal will require users/players to accept them during the Sign-up &/or Sign-in process (if the policies have not been accepted prior to the current Sign-in) before users/players may continue the process.
Admin Portal
- Fixed an issue where the Stat value was not reset to its previous value after canceling the Edit Stat Value Override in the Stat Cycle.
- Removed unnecessary permission checking when Admin accesses the homepage upon login
- Fixed Debit Wallet's 'Reason' field does not allow spaces.
AMS
- Fixed broken link for Account Linking document.
- Fixed the issue of showing the wrong list when using “created at” sorting in the Log and Artifact page.
- Fixed imageID and image command are missing when querying development configuration.
- Fixed shows wrong logic when Filter based on “status” in the Fleet History.
Challenges
- Adjusted the placement of the offset and limit fields in the scheduled endpoint.
- Fixed the Goal Schedule List to ensure it returns sorted schedules.
- Resolved an issue that prevented Game Admins from changing the rotation type (e.g., from daily to others) without filling in the reset day, due to a validation error.
- Fixed an issue that prevented users from searching for specific goal codes in the list progression for challenges using the PERIOD ONLY configuration for goal visibility.
- Resolved an issue where disabled goals with Event-Based requirements could still be completed.
Matchmaking
- Fixed a bug where matchmaking shouldn’t backfill to the same session once it failed to propose for the game session.
Sessions
- Fixed an issue where creating a session with the empty region for local DS isn’t allowed.
- Fixed the bug where the session ended due to the host leaving nothing recorded in the session history.
Chat
- Fixed an issue where the namespace filter in the chat history isn’t working properly.
Session History
- Fixing age discrepancies for ticket details when querying by userID and ticketID.
GameSDK
- [Unreal Engine] Fixed the incorrect timestamp format in Enhanced Presence events to use ISO8601.
- [Unity] Fixed P2P exception when parsing packets that are too large between peers.
- [Unreal Engine] Updated the libjuice library to fix a linker error on Nintendo Switch.
- [Unreal Engine][OSS] Fixed an issue where
ApiClient
is being replaced with a new one for the same user, for example after accepting any User Agreement. - [Unity] Fixed the incorrect parameters of
ServerApi.Inventory.SaveUserInventoryItem()
.