brainCloud 5.4 is live!
brainCloud 5.4 is a massive update - and furthers our goals of advancing brainCloud’s support for Product Management, Customer Support, and Multiplayer Developers.
This release includes:
- New EdgeGap Multiplayer integration!
- New Matchmaking Monitor screen for visualizing the performance of Online Matchmaking. Plus we’ve significantly improved the performance of matchmaking to boot!
- New Server Monitor screen for viewing hosted Room and Relay servers. We’ve added new launch progress events. And we have also added hosting capabilities for private deployments on Azure and Google Cloud!
- New Region, Language, and App Store analytics
- A bunch of API enhancements
- and much, much more!
Plus - we bid farewell to our legacy portal! Long live Portal-X! 😀
Notice - the new Region, Language, and App Store analytics screens will not be available until the nightly jobs can generate the required data.
Compatibility Notes
Ensuring stability and backward compatibility for existing apps is a key priority.
brainCloud 5.4 adds one new compatibility flag (enabled by default for existing apps) which allows devs to suppress the new server launch progress events. This is a safety measure in case the client apps don’t automatically ignore them.
Release Highlights
EdgeGap Multiplayer
As you know, brainCloud provides everything you need right out of the box for easy-to-implement multiplayer. We’ve got flexible Online Matchmaking, Lobbies, Peer-to-peer and Dedicated-Server Examples, and built-in support for Room and Relay Servers that can be launched in regions all around the world.
But what if I told you that with hardly any changes to your multiplayer container - you can level up your multiplayer even further? We’re talking lower latencies for players; faster cold starts; lower idle costs - and overall cost efficiency!
Too good to be true? Well - that’s what you get with our new EdgeGap Integration!
Just (1) set up an EdgeGap Account, (2) configure a server in brainCloud via the My Servers page (App > Design > Servers > My Servers), (3) link your lobbies to the new EdgeGap server type, and (4) modify your server code to tell EdgeGap when a session completes. That’s it - no client changes at all!
Pricing - requires a paid EdgeGap account. brainCloud does not add hosting fees on top of the EdgeGap charges. To compensate for matchmaking server usage, brainCloud adds 5 api counts per player matched to EdgeGap servers.
Matchmaking Monitor [Beta] & Sharded Matchmaking
brainCloud’s Online Matchmaking can be a tough process to visualize - until now!
Our new Matchmaking Monitor screen (App > Global > Multiplayer > Matchmaking Monitor) provides real-time insights on matchmaking load and performance. Just select a lobby type and voila - the stats start streaming in.
And brainCloud’s matchmaking is now dynamically sharded - so extra CPU resources are brought online when you need them.
Note that this is a beta version of our Matchmaking Monitor - additional stats, better memory handling, and some more UI polish will be added in future releases.
Server Monitor [Beta*]
For those using brainCloud’s native Room and Relay Server Hosting - we’ve added a new Server Monitor screen (App > Global > Multiplayer > Server Monitor) to help visualize the running nodes and containers. Just select a server type and the screen will start updating.
Note that this is a beta version of our Server Monitor - there are plans to add CPU and Memory utilization metrics in the future.
Additional Improvements
brainCloud 5.4 includes a ton of other improvements as well:
AppStore Transactions
- We’ve added new cloud code-only methods for retrieving purchases recorded in brainCloud. Note that this API does not return data from the legacy transaction collections.
Azure and GCloud Hosting
- Private and Platform Licensees on Microsoft Azure and Google Cloud can now natively host Room and Relay Servers in those environments. Customers should contact brainCloud support to deploy the feature.
Completed Divisions
- Divisions no longer immediately disappear from
getMyDivisions()
once they have been claimed. They will now remain available in a COMPLETED state for as long as the division results are available.
- Divisions no longer immediately disappear from
Dart & Flutter!
- Our client team is hard at work creating a Dart version of the brainCloud library - suitable for use in Flutter and other apps.
- It’s still early going - but feel free to check out the
develop
branch for an early look at things!
IfExists Methods
- Sometimes an error is okay - and there is no need to log it!
- We have added new IfExists versions of several key methods (in the Leaderboard and Event services) to help keep your logs clean.
Invisible Presence
- Devs can now configure Presence so that users are initially invisible. This is configured from the App > Design > Messaging > Presence screen.
Remote DevTool
- The Remote DevTool (remote to the brainCloud platform) allows developers to host Room Servers locally on their workstations for debugging purposes
- Added a new and improved Debug Mode to better debug dedicated servers and hit breakpoints
Replay System
- brainCloud Playback Stream service is normally used for one-way multiplayer match replays - as demonstrated in the brainCloud Clashers demo.
- This release adds new “Sys” and S2S-compatible APIs so that Playback Streams can be used by Custom Room Servers to directly enhance the gameplay experience. Think ghosts in racing games, crowds in hub worlds, etc.
- In addition to the APIs - we’ve got a new example game, Invaders, that demonstrates the feature - and a great knowledge base article that describes how to make it work for your game!
Server Launch Progress Messages
- New events will be sent to all lobby members when starting hosted Room or Relay Servers
- These events can be safely ignored – or can be used to communicate more information to clients as servers launch
/servertime endpoint
- A
/servertime
endpoint has been added to brainCloud, which returns the current server time in simple JSON format.
- A
Status Effect Behaviour
- Devs can now control, from the item catalog definition, whether status effects extend or replace the duration of the effect. ← Initially introduced as a patch in 5.3
WebHook Log Security
- As a security feature, devs can now configure webhooks so that key parameters received are not recorded in the server logs
Portal Changes
We continue to rapidly evolve the new Portal.
In addition to the new Matchmaking and Server Monitor screens (see above), 5.4 adds new Analytics, Usage, and Usability features!
Analytics
New & Returning Users
The new Daily Active Users chart added to the App Dashboard and App Analytics pages gives you immediate feedback on how your app community is evolving daily.
Region and Language Analytics
We have refactored our Region and Language analytics processing - and added new pages to better communicate who is using your app!
Notice - these screens will not be available until the nightly jobs can generate the required data.
Store Analytics
The new Store Analytics page shows your app’s financial performance by platform.
Notice - this screen will not be available until the nightly jobs can generate the required data.
Usage
API Usage
The API Usage screen now displays trend icons depicting how this month’s extrapolated usage compares with the previous month.
Monthly History
Speaking of previous months - you can now travel back in time to see what your app’s usage looked like in previous months!
Script Usage
We have added a new chart to the Script Usage screen to help you zero in on the cloud code scripts that could benefit most from optimization.
Just bring up the page - and work your way down the list from top to bottom!
Remember - fewer API calls → fewer server resources → faster responses → lower costs. It’s win:win:win!
Usability
API Explorer & Portal Authentication
We have replaced the default Authenticate and [Quick Auth] features in the API Explorer and Script Editor with a new Portal authentication type. This new identity type is only useable from within the Portal - and can be attached to any end-user account.
This change fixes an issue where [Quick Auth] would not work properly for apps that had Password Enforcement standards enabled.
Note that “Portal” auth is the new default authentication type for the API Explorer. The first time you use it it will by default create a new user account with that identity type. It uses the email address associated with your Portal account as the id.
If you would like to attach that Portal identity to an existing end-user account:
- Log into the API Explorer as that end-user account. This would normally be accomplished by finding the user via the User Browser, and then clicking the [Login as User] button.
- Attach your Portal identity to the account. In the API Explorer, navigate to the Identity service and Attach operation. Your portal email address will automatically be filled into the
externalId
. Leave all other fields as is. Click [Execute].
And voila - from now on, clicking [Quick Auth] will log into the account that you selected!
User Activity
We have added an informative preview pane to the User Activity screen. Now if you click on a login entry - you’ll see a summary of what changed during that play session! Increased/decreases in XP, purchases, virtual currencies - etc. Super helpful!
Advanced Settings > Compatibility Flags
This screen has been enhanced to make it easier for developers:
- Compatibility flags are now listed from newest to oldest - and we even display the brainCloud release in which a particular flag was added.
- By default - only the enabled flags are shown. [No reason to show old flags that do not apply for your app!]. Remember - when we add new compatibility flags to the system - they are automatically enabled for your app. We encourage devs to review whether they need a flag enabled though - and disabled it if they do not. brainCloud apps will perform best with all compatibility flags disabled!
- Flags are now searchable! ← note - be sure to uncheck the [x] Only show enabled option to search across all flags.
Filtered Global Entity Exports
The App > Global > Global Data > Global Entities screen now allows you to export a sub-set of a type of Global Entities.
Simply use the [Refine] button to find a subset of the entities - and then export as normal from the Bulk Actions menu. You’ll notice “filtered” in the export options - confirming that it is a subset of the objects that will be exported.
API Changes
The following enhancements have affected the brainCloud API:
AppStore Service
- [New!]
SysGetTransactionsPage()
,SysGetTransactionsPageOffset()
- new methods for returning a summary list of a users' purchases. Note - does not include all fields. - [New!]
SysGetTransactionDetails()
- returns additional information about the specified transaction.
- [New!]
Event Service
- [New!]
UpdateIncomingEventDataIfExists
() - a variant ofUpdateIncomingEventData()
- but doesn’t write an error log entry if theevId
specified no longer exists. Useful for keeping the error logs clean when that’s a normal use case.
- [New!]
Leaderboard Service
[New!] IfExists variants of calls won’t log an error if the leaderboard does not exist. Helps to keep your logs clean!
GetGlobalLeaderboardPageByVersionIfExists()
GetGlobalLeaderboardPageIfExists()
GetGlobalLeaderboardViewByVersionIfExists()
GetGlobalLeaderboardViewIfExists()
GetPlayersSocialLeaderboardByVersionIfExists()
GetPlayersSocialLeaderboardIfExists()
GetSocialLeaderboardByVersionIfExists()
GetSocialLeaderboardIfExists()
- [New!]
PostScoreToDynamicLeaderboardUsingConfig()
method has been added to all client libraries. This is a much more flexible version ofPostScoreToDynamicLeaderboard()
which is now deprecated. In particular,PostScoreToDynamicLeaderboardUsingConfig()
allows dynamically created leaderboards to have an expiry TTL - which is highly recommended for timed leaderboards!
Lobby Service
- [Improved!]
FindOrCreateLobby()
and its variations now send additional RTT events if/when hosted Room or Relay Servers are being launched. These events are entirely informational and can be ignored - though developers may want to use them to trigger on-screen updates for the end user.
- [Improved!]
Tournament Service
- [Improved!]
GetMyDivisions()
- now returns divisions that have been claimed in a newCOMPLETE
status… Completed divisions will be returned as long as the associated leaderboard data is still available.
- [Improved!]
We have also deprecated the following methods:
Leaderboard Service
PostScoreToDynamicLeaderboard()
- will be removed from the client libraries after September 2025. UsePostScoreToDynamicLeaderboardUsingConfig()
instead. The legacy method will continue to work for apps using old client libraries.
Libraries and Examples
Client Libraries
All Libraries
- Removed
cxId
parameter fromcancelFindRequest
function - Added “IfExists” versions of various leaderboard functions that do not return an error if a leaderboard does not exist or is expired)
- Added
PostScoreToDynamicLeaderboardUsingConfig()
function - Added “IfExists” version of
UpdateIncomingEventData()
function for Event Service
braincloud-csharp (C#/Unity/Godot)
Added conditions to correct country code to ensure consistent formatting
- “419” would become “_LA_”
- “Hans” and “Hant” would become “CN”
braincloud-unreal-plugin (Unreal)
- Fixed compatibility issues with Unreal Engine 5.4
braincloud-cpp (C++)
Added conditions to correct country code to ensure consistent formatting
- “419” would become “_LA_”
- “Hans” and “Hant” would become “CN”
braincloud-js (JavaScript)
- Fixed bug with usage of Node Buffer module
braincloud-dart (Dart)
- Pre-alpha version of our new Dart-based client library
S2S Libraries
brainclouds2s-cpp (C++)
- Added vcpkg.io to the S2S CPP library, allowing it to build for both Windows and Linux (MacOS still a WIP). With vcpkg dependencies are managed dynamically, so static libraries were removed from the repo and replaced with libraries that are downloaded through vcpkg.
Examples
Note: brainCloud example apps are dependent upon the brainCloud published client libraries - and are thus released in the two weeks that follow a new brainCloud release.
Stay tuned for updates!
Documentation and Tutorials
BootCamp
- Additional Godot tutorials are now available!
- Updated the Portal images in many of the Unity tutorials ← PortalX is moving too fast!
- Be sure to check out bootcamp.braincloudservers.com if you haven't already!
Documentation
- All the latest API additions and changes have been incorporated into our new doc site at docs.braincloudservers.com !
New knowledgebase articles available:
- Implementing a Replay System in brainCloud
- Implementing a Jackpot System in brainCloud