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
6 years ago

Release 3.11 is live!

Release 3.11 provides some key feature requests with some under-the-hood improvements that will be delivered upon in Release 4.0 (coming soon!).

Release Highlights

SendGrid Dynamic Templates

We have updated our Mail APIs and integration code to work with Sendgrid’s new Dynamic Template format, which includes support for Handlebars syntax.

This means that you can:

  • Use Dynamic Templates for brainCloud’s Email Authentication and Tournament Notification 
  • Use Dynamic Templates with brainCloud’s SendAdvancedEmail*() APIs
  • Take advantage of the Handlebars syntax (with substitution, conditions and iterations) in your templates
  • Even send attachments!

And of course, Sendgrid’s legacy templates still work.

Please note – the substitution parameter format of SendGrid’s API for new dynamic templates is different. So if you are using the SendAdvancedEmail*() calls and are changing from legacy → dynamic templates, you’ll need to modify the serviceParams JSON that is provided with the call.

UniversalId Wildcard Searching

If your app supports looking up other users (for friends, challenges, etc), we highly recommend that you identify and lookup users by UniversalId instead of by user name.

UniversalIds are better than user name because:

  • They guarantee uniqueness
  • They are case insensitive
  • Searching is 3 – 5 times faster! (because they are unique, case insensitive, and we anchor all searches at the beginning)

But… until now we really weren’t providing you with enough search flexibility. Which is why we have added some new methods:

  • FindUserByUniversalIdStartingWith() – use for wildcard-like searches
  • FindUserByExactUniversalId() – use for exact searches

And remember, we do provide a handy method that allows your app to use UniversalId’s (to identify/lookup users) without using them as authentication methods – check out AttachNonLoginUniversalId().

A few notes:

  • We have deprecated the old FindUserByUniversalId() – its spec was pretty misleading (looked like an exact search – but performed like a wildcard search – and an unoptimized one at that!). Note – it will still work if your app was already using it.
  • For those of you stuck with already-implemented user name searching, we’ve added some improvements as well: 
    • FindUsersBySubstrName() is now 10-20% faster 
    • FindUsersByNameStartingWith() (new!) is ~50% faster than FindUsersBySubstrName() – so switch to this one if you can! 

Improved Cloud Code Debugging

Good news for you cloud code developers – we’ve added some new smarts to the API Explorer and Cloud Code Editor that makes it a lot easier to trace and debug your scripts!

The two big additions are:

  • Activity Window Logs – log entries that your script creates are now visible in the activity window on the right-hand-side of the Cloud Code Editor and API Explorers
  • Debug Log-level – we have also added a new debug log level that only prints to the Activity Window log. This is perfect for analyzing and debugging your scripts, without unnecessarily clogging up your logs otherwise.
  • New JSON context methods– we have also expanded to provided Logging APIs to provide new methods that allow you to log JSON contexts directly (without stringifying them first)
  • Bridge access– finally, we have added all these new logging methods directly to the bridgefor maximum convenience!

Check out the GIF below to get a feeling for how the new script logging works.

Miscellaneous

Plus a few more shiny features, including:

  • Lobby Event Optimizations – a bunch of the data in the Lobby RTT events was unnecessary – we’ve trimmed it down to be more efficient
  • Faster user name lookups in the Design Portal
  • View WebHooks calls in the Server Logs
  • Filter the Server Logs
  • Export a user’s data from the User Summary page
  • and more!

Portal Changes

Design

  • Cloud Code | API Explorer
    • Activity pane now shows log messages
  • Cloud Code | Scripts | Script Editor
    • Activity pane now shows log messages
  • Segmentation | Segments
    • Page should load faster now

Monitoring

  • Global Monitoring | Server Logs
    • Incoming WebHooks calls are now captured here
    • Added ability to Filter the logs shown by type, source, date, etc.
  • User Monitoring | User Summary
    • Select User– faster searching by user name! ← Popular Customer Request!
    • (beta!) Debug data export – new ability to export a user’s data. Very useful for debugging!

API Changes

Client API

The following changes/additions have affected the client API:

  • Client
    • isRTTEnabled() convenience method added to allow apps to check their RTT state
  • Entity
    • GetSharedEntityListForProfileId()and GetSharedEntitiesForProfileId()now return entityListCount for convenience 
  • Friend
    • New Universal ID searches: 
      • FindUserByExactUniversalId()
      • FindUsersByUniversalIdStartingWith()
    • New name search methods
      • FindUsersByNameStartingWith()
  • Group
    • ReadGroupMembers() – now returns the profile picture URL (if present) for each member
  • Identity
    • SwitchToChildProfile() and SwitchToSingletonChildProfile() cloud code methods have been simplified to align with the client versions of these calls. To clarify, the new methods no longer require you to pass in values for platform, language, etc – these values are all inherited from the current session.

Cloud Code

  • Bridge
    • Added logging calls to the bridge for convenience – LogInfo(), LogInfoJson(), LogWarning(), LogWarningJson(), LogError()and LogErrorJson()
    • Also added new debug log calls – LogDebug()and LogDebugJson(). Note these calls are not available on the logging service itself, because they do write to the persistent logs. 
    • Added new context calls – getScriptName(), getAppName(), and getEnvironmentName().
  • HttpClient
    • Added new PostJsonOffboard() call – for efficient posting of HTTP requests in scenarios where it isn’t necessary to wait for the result
  • Logging
    • Added new JSON-context calls – LogInfoJson(), LogWarningJson(), and LogErrorJson()

RTT (Beta) Events

We have made some small changes to the Lobby events being returned – essentially just removing some redundant / unnecessary fields.

We largely removed:

  • Nested and redundant id information (i.e. nested fields like id, seq, appId, etc.)
  • lobbyTypeDev, settings, connectDataand occasionally members fields from events that didn’t require them 

Note – although RTT is still in beta, we don’t take changes like this lightly. Rest assured, we have reached out to our live RTT customers separately to give them a heads up re: these changes. 


Miscellaneous Changes / Fixes

  • Updated libraries 
    • All client libraries have been updated for this release. Be sure to grab them!
    • We have added additional killswitch code to prevent errant apps from endlessly spamming our servers on authentication failures. As a rule folks, retrying an operation in an endless loop is bad form! Do not do that! 🙂  
  • Updated examples 
    • Unity assets – we have recently updated brainCloud Space Shooter and brainCloud Bombers for Photon on the Unity Asset Store 
  • Documentation updates 
    • Improvements to content and accuracy of code examples 
  • Important Fixes 
    • BCLD-4163 – Presence cloud code proxies missing some methods
    • BCLD-4989 – File storage being reported on API Usage page as 0.0 or NaN
    • BCLD-4139 – Import script issue
    • BCLD-4105 – Added missing readUserStatsSubset() cloud code method
    • BCLD-4112 – Portal not editing / saving Steam IAP products properly in some cases
    • BCLD-4160 – lobbyService.switchTeam() can result in an NPE
    • BCLD-4159 – Improve speed of Use Monitoring – Select User – Search by Name
    • BCLD-4147 – Unable to save rewards in tasks (milestones) embedded in Quests in some circumstances
    • BCLD-4148 – Deleting an embedded task (milestone) from a Quest results in an orphaned Milestone
    • BCLD-4108 – Global Entities should allow filtering and sorting on entityId, version and expiresAt
    • BCLD-4118 – When performing SwitchToChildProfile(), a login log entry is now added for the child profile
    • BCLD-3969 – getRandomEntitiiesMatching() sometimes returns 0 items for max 1, even when items match – fixed.
    • BCLD-3267 – getChannelId() should confirm that a channel exists before returning the constructed id
    • And many, many more! 
  • Plus miscellaneous fixes and performance improvements