brainCloud Product Updates logo
Back to Homepage Subscribe to Updates

Product Updates

See the latest features, improvements, and product updates

Labels

  • All Posts
  • release
  • Announcement
  • Improvement
  • Fix
  • blog

Jump to Month

  • March 2025
  • January 2025
  • November 2024
  • September 2024
  • May 2024
  • February 2024
  • November 2023
  • September 2023
  • July 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • July 2022
  • June 2022
  • April 2022
  • March 2022
  • February 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • June 2021
  • May 2021
  • March 2021
  • November 2020
  • September 2020
  • July 2020
  • April 2020
  • February 2020
  • December 2019
  • November 2019
  • September 2019
  • June 2019
  • May 2019
  • February 2019
  • December 2018
  • October 2018
  • July 2018
  • March 2018
  • January 2018
  • December 2017
  • October 2017
  • July 2017
  • June 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • October 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • January 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • June 2014
  • May 2014
Changelog byAnnounceKit

Create yours, for free!

releaseAnnouncement
5 years ago

Release 4.1 is live!

Note – you can also view the highlights in our new Roadmap!

Release Highlights

Group Leaderboards

Although brainCloud has long supported filtering leaderboards to group members, it has not supported true Group Leaderboards – where each entry in the leaderboard represent’s a Group’s (not a Player’s) score. Until now that is.

Now, when creating a leaderboard, you will first choose whether it is a Player or a Group Leaderboard. 


Important notes regarding Group Leaderboards:

  • Any member of a group can post a score on behalf of their team
  • Post group scores via the new PostScoreToGroupLeaderboard() method. Additional new calls are described in the API section (below).
  • Group Leaderboards cannot be used as the basis for Tournaments or Divisions

Note – we are considering adding Group Tournament and Division support in the future. If it is important to you, vote for it in our Roadmap!

Group Enhancements

We have made a bunch of enhancements to Groups and the Group APIs to go along with the new leaderboard support:

  • Group Summary Data – we have added the concept of summary data to groups. This is an additional bit of custom JSON, associated with your groups, that can be read by non-members. This is useful when searching for groups with specific qualities and also when viewing group leaderboards ← the summary data gets returned in the leaderboard calls
  • Enhanced Searching – when searching for groups, you can now include additional fields (isOpenGroup, updateAt, createdAt, and summaryData) in the filter and sorting clauses.
  • Get Random Groups – we have added a new API call for retrieving a random selection of groups that fit the specified criteria. See GetRandomGroupsMatching().

Voting Leaderboards

Since we were already in the Leaderboard code, we thought we would cover another customer request.

Voting Leaderboards are special leaderboards where the user doesn’t post their own score – rather, a player increments the score of another player. This makes the most sense for a CUMULATIVE leaderboard (where posts from players increment a total). You can imagine using this system to allow players to vote on custom content created by other players – like custom maps layouts, etc.

Important notes:

  • This technically isn’t a new type of leaderboard – it’s merely a new leaderboard call – PostScoreToLeaderboardOnBehalfOf(). Note that this call be made from Cloud Code only.
  • The API does not prevent users from voting (i.e. posting on behalf of another user) multiple times. We leave that enforcement up to the app (if desired, of course).

Multi-Region Support

In V4 we introduced the ability to host Relay and Room Servers. When configuring your servers, you had the ability to choose which region to host them in.

This was a good start, but for global coverage developers would need to create individual server configurations for each of the regions they want to support. And if they’re using our matchmaking and lobby services, they would need to set up separate lobby configurations for each region as well.

Release 4.1 greatly improves things:

  • You can now select multiple regions for a Room or Relay Server configuration in My Servers
  • There are new Client APIs that allow you to retrieve the list of regions associated with lobby type(s), and calculate the latency (i.e. ping times) to them
  • When launching a Room or Relay Server from a lobby, the Lobby Service will now automatically choose the best region for the members of that lobby

Dynamic Chat Channels

And last but not least, this release introduces a new type of chat channel.

Dynamic chat channels are special channels that any user can create and/or join. They exist only for as long as there is activity. Once the channel inactivity timeout expires (typically 30 days), the history (and the channel itself) are automatically deleted and cleaned up.

Note that developers need to manage the “membership” to the channels themselves. If a user of an app connects to a dynamic channel during a session, and you want them to reconnect the next time the app launches as well – you’ll need to save that information somewhere in your app (likely in a user entity).


Portal Changes

We have made the following portal changes:

Design

  • Core App Info | Application IDs
    • Renamed “Facebook Secret” to “Facebook App Secret” to better clarify what it is
  • Core App Info | Admin Tools
    • Added new options to the Deployment section to prevent overwriting the Lobbies and MyServers page settings. This is important because you very likely want to configure different performance + availability settings for dev vs. prod environments
  • Cloud Code | My Servers
    • Enhanced the Room Server and Relay Server configuration screens to support multiple regions
    • Note that each region can use the default configuration settings (server size, # containers, etc); or you can override those settings on a region-by-region basis
  • Leaderboards | Leaderboard Configs
    • When creating a new Leaderboard config, you can now choose between Player and Group entry types (default is Player).
    • Once the entry type has been set, it cannot be changed
    • Tournaments and Division Templates cannot be enabled for Group leaderboards
    • The entry type has been added to the Leaderboard Config list screen as well

Monitoring

  • Global Monitoring | Leaderboards
    • Have been enhanced to show the results of Group Leaderboards
    • The column displayed now automatically change depending upon the leaderboard type being displayed
    • Clicking on a group id will bring you to the group.

General

  • DOCS menu
    • Added a link to the new Roadmap site

API Changes

The following changes/additions have affected the brainCloud API:

  • Chat Service
    • SysCreateChannel() can be used to create a new dynamic chat channel. Cloud code only.
    • SysDeleteChannel() is used to delete the specified chat channel. Cloud code only.
  • Group Service
    • [New!] CreateGroupWithSummaryData() allows the creation of a group with summary data.
    • [New!] GetRandomGroupsMatching() returns a list of random groups that match the supplied criteria
    • [New!] SysChangeGroupType() changes the group type of a group. Useful for leveling up the maximum number of players in a group. Cloud code only.
    • [New!] UpdateGroupSummaryData() allows a member to update the summary data of the app. Note that the user must be the owner of the group; or the group’s data ACL must be set to “member”: 2 to perform the update.
    • [Update] ReadGroup(), GetMyGroups(), ListGroupsPage(), and ListGroupsPageByOffset() will now return the summaryData associated with groups
    • [Update] Additional fields (updatedAt, createdAt, isOpenGroup, and summaryData) can now be used as filter and sort criteria in group calls.
  • Leaderboard Service
    • [New!] GetGroupLeaderboardView() and GetGroupLeaderboardViewByVersion() for retrieving the leaderboard results, relative to the specified group
    • [New!] PostScoreToGroupLeaderboard() for posting scores to group leaderboards. Note that the user must be a member of the specified group.
    • [New!] PostScoreToLeaderboardOnBehalfOf() for posting scores to a leaderboard on behalf of another player. Cloud code only.
    • [New!] RemoveGroupScore() for removing a group score.
  • Lobby Service
    • [New!] GetRegionsForLobbies() retrieves a list of super-set of regions for the specified list of lobbies. Is used by the client app to determine with regions to ping test.
    • [New!] PingRegions() tells the client to ping the retrieved set of regions. Should be called after GetRegionsForLobbies() has completed.
    • [New!] CreateLobbyWithPingData(), FindLobbyWithPingData(), FindOrCreateLobbyWithPingData() and JoinLobbyWithPingData() are enhanced versions of the regular calls, with the obvious addition of ping data that the server will use to select the best region when launching a Room or Relay Server. Note that the library will automatically provide the ping data for those calls (there are no additional parameters)
    • [New!] SysSendSignal() allows cloud code scripts to send signals to members of a lobby.
    • [New!] SysDisbandLobby() allows cloud code scripts to disband a lobby.
  • Tournament Service
    • [New!] PostTournamentScoreOnBehalfOf() for posting scores to a leaderboard on behalf of another player. Cloud code only.

Note that we have also made a small change to GetGlobalLeaderboardViewByVersion() and GetGlobalLeaderboardPageByVersion() to allow you to once again pass in -1 as the version id. That behaviour had regressed in 4.0. Apologies for the inconvenience!


Miscellaneous Changes / Fixes

  • Updated libraries
    • All libraries have been updated for the 4.1 release! Go get ’em!
    • The Unreal Library now includes beta-level support for our Relay Communications protocol!
    • Warning – there is a known issue with Unity 2019 on IOS devices that affects brainCloud (and really any app making web requests). More info here!
  • Documentation updates
    • New Roadmap Site – https://portal.productboard.com/braincloud/1-braincloud-baas-roadmap/tabs/35-coming-soon/tabs/4-coming-in-4-1
    • Significant updates to the S2S sections of the API Reference 
    • Docs updated with all 4.1 APIs
  • Important Fixes
    • BCLD-4714 Mismatch of Service and Operation on API Explorer after quick authenticate
    • BCLD-4833 Importing an invalid script zip file and choosing “Full Sync” deletes all existing scripts
    • BCLD-4832 Facebook transactions – some transactions are being displayed as “null”
    • BCLD-4812 Need ability to preserve My Servers and Lobby configurations on Deploy and Import
    • BCLD-3193 SendEvent operations gives a positive response without entering profileID
    • BCLD-4751 Descriptive text on “Edit Lobby Type” popup is out-of-date
    • BCLD-4737 Can’t delete a group after using “Delete Users”
  • Plus miscellaneous fixes and performance enhancements…