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!

Announcement
9 years ago

Launch Tip #1: Version Enforcement


   
This post is the first of our new series on best practices to observe before launching your app.

It’s an exciting feeling… Features are complete. Beta feedback incorporated. Final bits of polish applied. You are ready to launch.

Or are you? Are you sure that you have… Tested for every usage scenario? Every race condition? On each of thousands of device variations? Under unpredictable network conditions? Accounted for changing performance characteristics as your user base ramps?

Luckily you are using brainCloud – so you know your servers will handle the loads. But what about your client app? Your dev team is prepared to react and fix issues quickly – but how will you ensure that important updates make it to your users quickly?

Sure – the app stores support automatic software updates – but even so, it can take 3 weeks before the majority of your user base is using the new version of your app. That’s far too long if your app is crashing, corrupting data, and/or generally frustrating your users. In those 3 weeks your app’s ratings will take a huge hit.

This is why it is essential to implement Version Enforcement before you go live.

launch_tip__1__version_enforcement

The good news is that brainCloud makes it easy.

 


 

Version Enforcement

brainCloud has built-in support for enforcing minimum client versions.  During authentication, in addition to transmitting information about the user that is logging in, the brainCloud client library sends two key pieces of information:

  • platform – the type of device that the user is logging in from
  • gameVersion – the version of the client game or app

These parameters aren’t just informational – brainCloud’s Version Enforcement feature allows you to ensure that only users of a specified version and above can log into your application. This forces out-of-date users to upgrade their clients before proceeding.


Version Enforcement is configured via the brainCloud Portal, and works in collaboration with integration code that you add to your app.


bc_version_app

 


Above – the Design | Core App Info | Platforms screen

Note –  you can specify this minimum version on a per-platform basis, allowing you to accommodate staggered release schedules, different app approval processes, etc.

 


 

Integrating Version Enforcement

Integrating Version Enforcement into your app is very simple.

Follow these steps:

  1. Set the app version in your client app. In most of the brainCloud client libraries, this is done via the BrainCloudClient.Initialize() function. In Unity, you can use the brainCloud Settings dialog.
    bc_version_unity
    In either case, the version should be a string of format of “X.X” or “X.X.X” – for example, “1.0.0”.
  2. Go to Design | Core App Info | Platforms, and temporarily set the minimum app version to something higher than your current app version.
  3. Enhance the Authentication error handling of your app to catch the out-of-date error response – and display an appropriate message to the user. Ideally you should redirect the user to your apps store page so that he/she can trigger the update immediately. The brainCloud portal allows you to datafill the upgrade URL along with the minimum version.

  4. Test to ensure that it works!

That’s it. Once this is in place, you will rest easier knowing that if (when) your users find problems in the field, that you’ll be able to push fixes to them in no time!

releaseAnnouncement
9 years ago

Apple TV, Unreal 4 and Redemptions! (Release 2.17)

BC_TwitterPromo_39

Release Highlights

Key features in this release:

  • Apple TV Support! We’ve updated our libraries to support the new Apple TV. We can’t wait to see what you build!
  • Unreal Blueprint Support! It’s been a long time coming, but we’re pleased to finally announce the availability of our Unreal plug-in, with Blueprint, C++, and [basic] Online Subsystem support.
  • Redemption Codes – Planning to distribute individual codes to unlock characters / cards / etc. in your game? brainCloud’s new redemption code system is exactly what you need. More info on the feature and it’s API here.
  • Long-running Cloud Code – we’ve added support for long-running Cloud Code scripts, and adapted our Cloud Code billing strategy to better support this use case.  More details below.

Those are the biggies, but there are a bunch of other changes and improvements in this release. Read on.

Portal Changes

Changes to the portal:

  • Improved Timezone support – you can now specify the timezone used for viewing date+time data in the portal.  Note that the timezone will initially default to UTC – but it will remember what you set it to. Use the control in the top-right-hand corner of the portal to change the displayed timezone at any time.
  • Redemption Code Screens – you’ll find new screens for the Redemption Code feature under Design | Marketplace, Global Monitoring and User Monitoring.
  • Apple TV platform support – you’ll find Apple TV entries in Design | Core App Info | Platforms, as well as iTunes pricing component of Design | Marketplace | Products
  • Cloud Code Timeouts – you can now set custom timeouts for your cloud code scripts from the Design | Cloud Code | Edit Scripts screen.
  • Updated API Usage page – the Reporting | API Usage page has been updated to support the new cloud code billing formulas

API Changes / Additions

Changes and additions to the API:

  • Redemption Code API – added methods for Redeeming codes and retrieving the list of codes that have been redeemed by a user. The key client api methods are RedeemCode() and GetRedeemedCodes().
  • Push Notifications to Segments – you can now programmatically (via the Server-to-Server API) send push notifications to all of the members a Segment.
  • Authentication Timeouts – a new client method has been added to override the authentication timeout.
  • Retrieve Multiple Social Leaderboards – building a game with a Candy Crush-style map? We’ve got a new API call that retrieves the top friend entries from up to 20 leaderboards that you specify. Great for putting profile pics of the lead scores onto your map! Check out GetMultiSocialLeaderboard().

We’ve also made two more important changes to the Client Libraries:

Error Handling Changes

We’ve made some enhancements to how the brainCloud Server and Client libraries work together to communicate error information.  Specifically, we’ve enhanced the parameter for the error callback method to contain not only the textual message associated with the error, but actually the entire json result of the error.

This allows us to return more detailed error information, whose structure may vary on an operation by operation basis.  For example, if authentication fails because the client app’s version is obsolete, the returned error information can include a link to the app in the appstore to use to perform the software upgrade.

If by any chance your client app was parsing the – most apps weren’t, because it wasn’t very useful – you can still get the old data by referencing “statusMessage.statusMessage”.  Or, you can turn this new behaviour off using the BrainCloudClient.SetOldStyleStatusMessageErrorCallback() method.

Unified Rewards Processing

In addition, we’ve unified our rewards processing to invoke a standard Rewards Handler whenever rewards (achievements, xp, milestones and quests) are awarded from one of the many APIs that do so (i.e. authenticate, increment stats, stats event, etc.).  You can now hook into that single handler to splash Achievement Unlocked onto the screen, Quest Completed!, etc…  instead of duplicating that functionality across multiple handlers.

As part of this change, brainCloud no longer automatically triggers the associated local platform Achievement.  This platform-specific code was causing porting issues as we continue to expand the list of devices that we support. By centralizing the error handling it becomes very simple for the client apps to integrate what is in most cases a single line of code to trigger the local achievement.

To register for the new Rewards Callback, call RegisterRewardCallback() in your local library.

[Important note – the standard success and failure callbacks for the API calls still trigger. The rewards callback will trigger afterwards. Usage of the rewards callback is entirely optional.]

Miscellaneous Changes / Fixes:

Additional improvements to this release:

  • Fixed match expiry not working in certain situations
  • Added missing reason codes to clients
  • Improved timeout checking on errors in C++ client
  • Improved handling of iTunes subscriptions
  • Minor fix to version comparisons during authentication
  • Universal authentication no longer accepts blank passwords!
  • Removed entity sub-type from Player Monitor | Entities screen
  • Improvements to french translations in our portal!
  • Added Portal Warning for Microsoft Edge browser – stick with Chrome, Firefox or Safari for now
  • Improved the links to API docs in the Explorer
  • Miscellaneous documentation improvements

Cloud Code Timeouts

When we first added Cloud Code support, we envisioned folks using it primarily for optimizing their client-server calls, and/or implementing sensitive logic on the server. For that sort of usage, our standard 10-second watchdog timer made sense.

But then we added support for Scheduled Cloud Code jobs – and you guys blew the doors off our Cloud Code usage scenarios! All of a sudden folks could schedule daily, hourly, etc. scripts – and some of these scripts were making hundreds and even thousands of API calls when they run.

It didn’t take long before folks started to hit the 10-second watchdog timer, which kills your script if its still running when the timer expires. The watchdog is there to ensure that our server doesn’t get hit by javascript coding errors (think “infinite loops!”). Needless to say, it’s an important part of ensuring that our servers remain safe and reliable when executing custom scripts.

In the short-term we had to raise that 10-second timeout globally across the system to keep some of our leading clients apps running properly.  We’re pleased to have our long-term solution in place now – which allows developers to set a custom timeout value for their individual scripts.  All new scripts will default to 10-seconds – but you can individually raise the timeout as high as 60 seconds. Note – if required, it’s possible to raise it even higher. Just message our team to have them raise your limit.

Setting cloud code timeouts
Setting cloud code timeouts


Billing Changes

We’ve also tweaked how we count API calls to better reflect these new Cloud Code usage scenarios.

As you know, the power of cloud code is that combining a collection of API calls together into a single cloud code script performs better than making the calls individually from the client – and also taxes our servers less – so it’s win:win. The new formulas for counting API calls under Cloud Code take this into account, and provide a fair balance of cost to the developer (you) and covering brainCloud server utilization (phew!).

The updated rules are as follows:

  • Calling a cloud code script counts as 1 API call (same as today)
  • The first three API calls from within an invoked cloud code script are free
  • Any remaining calls from within cloud scripts are discounted to 1/2 an API call

If your app makes moderate use of cloud scripts, using them to string together common server requests (e.g. making a combined call to post a score, update player stats, and update a user entity describing the player’s progress) – this pricing update likely doesn’t affect you at all.  This includes the great majority of our customers today.

This new strategy allows our customers the flexibility of running much more ambitious Cloud Code scripts – at a greatly reduced cost per API call invoked.

If you have any questions or concerns, don’t hesitate to contact us through the support messaging system.

releaseAnnouncement
9 years ago

Parent Currencies and an Authentication Fix (Release 2.16)

Release Highlights

Key features (and a fix) in this release:

  • Parent Currency Enhancements – you can now link parent currencies to the IAP Products in child apps. This means that if you’re implementing a meta-currency across all your apps, you can configure products in the child apps that award the parent currency. This completes the currency enhancements to our Shared Accounts feature.
  • Parameterized Notification Templates – by popular request, you can now include parameters in your notification templates, and invoke them using the new SendRichPushNotificationsWithParams() method. This is especially useful when you want to keep the definition of the notification text (with associated localizations) separate from the app code that invokes it.
  • Authentication Fix:  We’ve made some key changes to how Authentication Timeouts are handled in all of the client libraries. The authentication timeout has been extended from 3 seconds to 15 seconds – and automatic retry has been disabled for Authentication requests. The app can still retry, but that’s at the discretion of the app developer (and assumably the user).

Authentication Fix Background:
We were finding that a small minority of (mostly slower) clients were timing out before receiving the response for Anonymous Authentication calls, especially during new account creation. When this occurred, the automatic retry behaviour of the clients was accidentally causing duplicate accounts to be created. This only applies to Anonymous Authentication calls – the other Authentication methods were not impacted by this behaviour.

We strongly recommend that all developers upgrade to the 2.16 version of the brainCloud Client Libs.

Portal Changes

Changes to the portal:

  • Multiple Currencies in Products – While we were already upgrading products, we decided to add an often-requested feature. You may now link multiple virtual currencies to your in-app-purchase products – so if you want to give 5 bonus elixer with every bundle of 1000 coins that a user purchases, you can now easily do so.  We applied some overall polish to the screen as well.
  • Push Button Deploy – you can now deploy changes from the development versions of your apps, straight to the production versions, without going through the export -> import process! Quicker and more reliable. Available under Design | Core App Info | Admin Tools.
  • Improved Cloud Code Editor – we’ve improved the layout of our Cloud Code Editor. We’ve moved the informational portion of the cloud code script (name, description, test parameters, etc.) onto a separate page – thus maximizing the editor space. And while we were at it, we improved the automatic sizing of the window itself.
  • Job Queue – we’ve enhanced the Cloud Code Job Queue screen to show both the date+time that a job was created, as well as when the job is scheduled to run.  The list is sortable by either, of course.
  • Reset Device Tokens – you can now clear the device tokens for a user from the User Summary screen. Device tokens are used when sending push notifications to a user.

Cloud_code_editor_two_pane

API Changes / Additions

Changes and additions to the API:

  • Paged User Entities – we now have a paged API for User Entities, akin to the paged Global Entities API.  See the APIDOCs for info on GetPage() and GetPageOffset().
  • Matchmaking API return results trimmed – turns out that there was a defect in our matchmaking APIs, and we were inadvertantly returning the entire player object.  This has been trimmed back to return the appropriate data as designed.
  • Parameterized Notifications – as mentioned in the highlights section, we now support passing dynamic parameters to rich notifications.  See the SendRichPushNotificationsWithParams() call.
  • Parent Currencies – the Product APIs have been extended to accomodate parent currencies. To keep things compatible with current code, any parent currencies returned by these methods will be in their own json section, at a level peer to the current node.
  • BrainCloudFriend.UpdateSummaryFriendData() method has now been moved to BrainCloudPlayerState.UpdateSummaryFriendData(). The method in the Friend class has been deprecated.
  • BrainCloudGamification.ReadGameStatisticsByCategory() now moved to BrainCloudGlobalStatistics.ReadGlobalStatsByCategory()
  • BrainCloudGamification.ReadPlayerStatisticsByCategory() now moved to BrainCloudPlayerStatistics.ReadPlayerStatsByCategory()
  • BrainCloudMatchMaking methods GetOneWayPlayers() and GetOneWayPlayersWithFilter() have been renamed to FindPlayers() and FindPlayersUsingFilter() as these APIs can be used to find players for OneWay and Async matches.
  • Retries and timeouts are now configurable using the BrainCloudClient.SetPacketTimeouts() method. By passing in an array of values you can set both the timeout for each attempt, and consequently the number of attempts. The default is 3 attempts with 10 second intervals between (e.g. {10, 10, 10}).

Misc. Changes / Fixes

Additional improvements in this release:

  • New Client Library – a Linux i386 library is now available
  • Miscellaneous fixes and performance improvements.
releaseAnnouncement
9 years ago

Introducing Shared Accounts! (Release 2.15)

Release Highlights

Highlights of this release include:

  • Shared Accounts – highly requested feature – brainCloud now allows you to share user accounts across applications. This is achieved by creating a master profile (associated with a separate App ID), which is associated with individual child profiles for each app. This is extremely powerful for companies looking to link the players across a collection of games together, or to model sub-accounts under a single Home account for a household. [i.e. think set-top box].
    For more information, see our Shared Accounts page in the API Docs.

Shared Account Overview

 

  • Facebook Notifications – we’ve always had them, but you couldn’t properly enable/disable them. Now you can turn them on/off in the Design | Notifications | Settings page on the portal. And note of course, that your app will need to ask for the appropriate Facebook permissions for them to work.
  • Billing changes (Boo!) – we’ve now added support for monitoring and billing for excess file transfer usage. All Standard Plan apps get 10GB per month of free downloads. After that, it’s $0.10 USD per GB. And note, we’re only charging for the S3 file downloads – not for any of the data otherwise associated with API — that’s all covered by the API counts.

Portal Changes

Changes to the portal:

  • Shared Accounts – configure parent-child app relationships under Design | Authentication | Shared Accounts.
  • Parent Currencies – a child app can include parent currencies in rewards for XP level-ups, Milestones, Quests and Statistics Events. All configurable under Design | Gamification.  Parent Currencies are also visible on the Design | Marketplace | Virtual Currencies page.  Note that you cannot yet award parent currencies for IAP Product Purchases [that will come next release].
  • Leaderboards – we’ve added a few additional “Are you sure?” checks to the process of resetting / deleting leaderboards, especially for live apps.
  • Improved Error Reporting – we’ve improved our logging system to show errors from more sources, including Server-to-Server calls and Scheduled Cloud Code.  We’ve also added a new error category, “Sys Warnings”.  Check it out in Global Monitoring | Recent Logs.
  • Profile Relations – profiles with parent or child profiles will see them listed at the bottom of the User Monitoring | User Summary page, in a section called Relations.  We’ve also moved the [Login as User] button to the top of the page for convenience.

API Changes / Additions

Changes and additions to the APIs:

  • Shared Accounts– related API enhancements:
    • Authenticate() and GetPlayerState() methods now return the id of the parent profile (if there is one), as well as any parent currency balances
    • New Identity methods for switching to/from parent and child accounts – SwitchToChildProfile(), SwitchToSingletonChildProfile(), SwitchToParentProfile() and GetChildProfiles().
    • Enhancements to currency methods to support Parent Currencies – AwardParentCurrency(), ConsumeParentCurrency(), GetParentCurrency() and ResetParentCurrency()
    • New RunParentScript() call to run a parent’s Cloud Code script (in the context of the parent profile)
  • EnableLogging now implemented for Windows Comms library
  • Objective-C library – better handling of optional parameters
  • Java library – callback mechanism has been refined to better match the other libraries. Also, you can now receive separate error callbacks for individual API calls.

Misc. Changes / Fixes

Additional improvements in this release:

  • Upgrade Push Notifications service – we’ve upgraded our underlying Push Notification libraries for greater reliability
  • Updated game examples – we’ve taken a pass through our examples to ensure that they’re using our latest and greatest libraries
  • Match expiry – plugged some holes in our completion of matches on Expiry timeouts
  • Improved handling of database connections under load
  • Miscellaneous performance improvements – mostly improvements under-the-hood to our logging subsystems
  • Miscellaneous documentation improvements
releaseAnnouncement
9 years ago

New Linux Libs! (Release 2.14)

Release Highlights

Highlights of this release include:

  • New Client Libs* – new Linux C++ Client, Visual Studio 2008 and Visual Studio 2010.
  • New Unity Example – we’ve built a UNET version of brainCloud Bombers
  • Performance optimizations – ongoing optimizations to tune performance and scalability

* All other clients updated with the latest APIs, of course.

Portal Changes

Changes to the portal:

  • Linux is now a selectable platform – see Design | Core App Info | Platforms
  • Disable Event-checking – If you aren’t using events, you can disable checking for them in each message by unchecking the option in Design | Core App Info | Compatibility Settings
  • Flexible User Deletion – ability to Delete all Test Users, and All but Test Users.  In portal under Design | Core App Info | Admin Tools
  • File transfer usage – now being reported in API Usage section of Reporting

API Changes / Additions

Changes and additions to the APIs:

  • We’re reworking our Events system a bit:
    • GetEvents() method added to support directly polling for new events
    • Authenticate() and GetPlayerState() continue to return incoming and sent events.

Misc. Changes / Fixes

Additional improvements in this release:

  • Apple push notification certificates without passwords now work (before a password was *required*).
  • Improved error logs – script failures being more consistently logged now, and with more information
  • Improved matchmaking – we’ve improved the randomness of our matchmaking routines
releaseAnnouncement
9 years ago

Improve all the things! (Release 2.13)

Release Highlights

Highlights of this release include:

  • New-and-Improved Objective-C Client – we’ve rebuilt our Objective-C client to support all our latest APIs.
  • Twitter Authentication Support – your users can now use Twitter to log into your app. How social!
  • API Calls from Cloud Code are now free!* As per our original intent, API calls from cloud code scripts are now free*. This incentivises you to write simple scripts to aggregate multiple calls – reducing round-trips to our servers, which reduces our costs – and in turn reduces yours!

* Minor adjustments to the Cloud Code billing strategy were introduced in 2.17 to accommodate long-running Cloud Code scripts.

Portal Changes

Changes to the portal:

  • Developers can now set their brainCloud App Secret directly (see Design | Core App Info | Application IDs)
  • Developers can now view and edit the Indexed ID property of their Global Entities in the portal (see Monitoring | Global Monitoring | Global Entities).  This field is useful for creating quick lookup keys for your entities.
  • The Recently Added Users page has been optimized (see Monitoring | User Monitoring)
  • API calls from within Cloud Code scripts are now displayed separately on the Reporting | API Usage page of the portal

API Changes / Additions

Changes and additions to the APIs:

  • New Twitter Identity APIs – AuthenticateTwitter(), AttachTwitterIdentity(), DetachTwitterIdentity() and MergeTwitterIdentity().

Misc. Changes / Fixes

Additional improvements in this release:

  • Updated Javascript Client – added missing Identity APIs, misc fixes, etc.
  • Performance optimizations:
    • Improved Multiplayer Matchmaking performance
    • Improved Leaderboard performance
  • Documentation Improvements:
    • Java/Javascript Gamification methods
    • Improved Multiplayer documentation
    • Improved Push Notification documentation
    • Improved Facebook IAP documentation
  • Misc. fixes and optimizations
    • Fixes to push notifications subsystems to improve reliability
    • Fixes to deletion of users – some credentials (e-mail + universal) were not always being deleted
    • Improvements / fixes to leaderboard processing at high player counts
releaseAnnouncement
9 years ago

Scheduled Cloud Code, Paged Global Entities and Lower-Is-Better Leaderboards! (Release 2.12)

Release 2.12.0 has gone public! There are some tasty goodies in this one – please read below for the highlights!

Release Highlights

Highlights of this release include:

  • Scheduled Cloud Code – you can now schedule cloud code scripts to run at a specific time. This tool is very powerful and gives you the ability to defer task execution as benefits your game/app.  See this page for more information on how to use this great new feature.
  • Paged Global Entity Fetches – it is now possible to retrieve more than 100 Global Entities. We’ve created a new paging system that allows you to navigate a larger set of Global Entities. The paging APIs use a sophisticated query syntax which gives you search and ordering flexibility. The query syntax is described here and the API itself can be found here.
  • Support for “Lower Is Better” Leaderboards – You can now create Leaderboards where the best score kept will be the lowest score the user has posted.
  • S3 File Listing – we’ve created a new API that makes it even easier to fetch the list of files uploaded to S3.

Portal Changes

  • Global Monitoring | Job Queue – this is where you’ll find details about scheduled cloud script jobs. We also keep a history of jobs that have run in the past which is useful when diagnosing issues with your scripts.
  • Design | Quests – now include Unlock Criteria, and Rewards which can use any combination of user level/XP, player statistics or global statistics. Rewards can also pay out currency and/or achievements.
  • Misc Fixes

API Changes / Additions

New APIs

  • Schedule Cloud Code – To schedule cloud code you can use one of these APIs.
    • BrainCloudScript.ScheduleRunScriptUTC() for an absolute date.
    • BrainCloudScript.ScheduleRunScriptMinutes() for scheduling x minutes from now.
  • Global Entity Paged Fetches – To fetch global entities by Page
    • BrainCloudGlobalEntity.GetPage() – Call this for the first fetch, specifying the fetch query
    • BrainCloudGlobalEntity.GetPageOffset() – Call this for subsequent fetches passing in the returned context variable
  • BrainCloudFriend.FindPlayerByName() – This API allows you to search for a player by their player name (settable using “BrainCloudPlayerState.UpdatePlayerName)
  • Attach/Detach Google Identity – To allow you to attach and detach Google identities.
    • BrainCloudIdentity.AttachGoogleIdentity()
    • BrainCloudIdentity.MergeGoogleIdentity()
    • BrainCloudIdentity.DetachGoogleIdentity()
  • BrainCloudS3Handling.GetFileList() – To retrieve the full list of S3 files stored on brainCloud

Modified APIs

  • BrainCloudSocialLeaderboard – Calls to TriggerSocialLeaderboardTournamentReward now require the use of a leaderboardId to identify the leaderboard.

Misc. Changes / Fixes

Addressed in this release:

  • Unity library IsAuthenticated – Session time outs will now cause this flag to be set to false.
  • Post score to dynamic leaderboard – APIs now take in the hour/minute to allow setting the rotation time.
releaseAnnouncement
9 years ago

Independence Day Release! (Release 2.11)

We’ve got a bunch of fixes and tweaks for you this week, plus a game to play with your family on the holiday week-end!

Icon_BCBombers

Release Highlights

Highlights of this release include:

  • brainCloud Bombers – we’re pleased to announce the availability of our new example game, brainCloud Bombers! Bombers is intended to show how well brainCloud works with other multiplayer tech, like Exit Games Photon. The source for the game is available here, and we’ve written several posts that talk about how the game was built and what features it uses. Check it out!
  • Leaderboard changes – we’ve made some changes to the way that leaderboard versioning / retention works. We used to version leaderboards based on a fixed start date + rotation period – which seemed pretty logical, but caused problems if you wanted to adjust the ration period/date+time, and *didn’t* want to lose all your old leaderboards – d’oh! So we’ve changed that. Now if you adjust your leaderboard settings, they affect the leaderboard behaviour going forward, but do *not* affect the old leaderboard data at all. We’ve also fixed some inconsistencies in our display of leaderboard date+time settings. Finally, to top it all off, we’ve added new APIs to request data from old leaderboards. 

Portal Changes

Minor changes to the portal:

  • Design | Leaderboards – fixed the leaderboard rotation date/time display to focus on when the next leaderboard rotation occurs, and to clarify UTC vs. local time settings. We’ve also changed how the “Retained Leaderboards” setting works. It used to include the “current” leaderboard in the count – so you’d have to set it to “2” to retain “1” leaderboard in addition to the current one.  This was confusing, so we fixed it. Don’t worry – we’re retaining your previous setting – so if you had it set to “2” before, it will now show “1” – but the two are equivalent.
  • Global Monitoring | Leaderboards – leaderboard entries now show the exact date+time of the entry.
  • Design | Multiplayer | Offline Match-Making – the Match Expiry Timeout is now configurable on a per-game basis
  • Global Monitoring – the tabs have been reordered slightly.
  • Authentication | External Identities – minor changes to the screen

API Changes / Additions

Minor additions and behavioural changes to the APIs:

  • (New) Historical Leaderboard calls– we’ve added the ability to retrieve old leaderboards results.
    • To retrieve a list of older versions of the leaderboard, call GetGlobalLeaderboardVersions().
    • To retrieve the entries for a specific version, call GetGlobalLeaderboardPageByVersion().
  • (New) Looking up friends– we’re adding support for looking up friends. More methods will be added next release.
    • GetFriendProfileInfoFromExternalId() to look up other users based on their external id (returns the friend’s summary data).
  • (Change) User Entity Version exception handling
    • All variations of Update and Delete for user entities now throw an exception if the provided version is incorrect.  [Used to simply return a null object]
  • (Change) Cloud Code changes
    • Added the missing ServiceProxy for accessing Global Properties from cloud code
    • Script return format has been updated to include separate status + data, to better align with the Client API.
    • The old behaviour is preserved if [x] Use Legacy Script Result Format is checked under Compatibility Settings in Design | Core App Info | Advanced Settings. The old behaviour will be preserved by default for existing apps (though it is highly recommended that developers migrate to the new format when convenient).

Misc. Changes / Fixes

Addressed in this release:

  • Change to XP level processing – you can now configure rewards for Experience Level 1, and assuming the level’s XP requirement is set to 0 points, the player will automatically receive the rewards upon creation. This is very useful for setting initial virtual currency balances.
  • Global Stats Synchronization – fixed issue with Global Stats not being synchronized across app servers (and in the portal) in some circumstances
  • brainCloud now requires encrypted (HTTPs) connections for all new apps moving forward (this was optional before).
  • C++ and C# Client Libs – now retrieve heartbeat configuration settings from the server, and dynamically determine if a heartbeat needs to be sent. This should result in fewer API calls to keep your app sessions alive.
  • Unity Toolbar – An Enable logging option has been added
  • The old GetGlobalLeaderboard() API call has been deprecated (and removed from the API explorer and the documentation). It will still work for now, but you should use one of the newer methods, like GetGlobalLeaderboardPage() instead.
  • API Explorer – Gamification.UpdateRewards() method was missing – has been added Javascript client lib – Improved handling of optional parameters.
  • brainCloud Support Chat has been added to the API docs site – just click on the Chat button for help!
  • Database optimization – Improved sharding of Global Entities
  • Attributes – Fixed an issue where attempting to remove user attributes would fail.
  • Miscellaneous fixes and performance improvements
releaseAnnouncement
9 years ago

Because we like you! (Release 2.10)

This week we’re addressing a bunch of customer requests. If you’re lucky, maybe you’ll see your favorite new feature in here! Remember, keep the feedback coming – with your help we plan to make brainCloud the most flexible and friendly BaaS on the planet!

Release Highlights

Highlights of this week’s release include:

  • Leaderboard Monitoring – you can now view your game’s leaderboards in the Global Monitoring section of the portal. Super useful during development, support/operations (catching cheaters!) and even for manually administering tournaments. Features include:
    • Paging through the leaderboards
    • View previous leaderboard versions
    • Reset leaderboard – deletes all entries (only works for the active leaderboard, not for previous versions)
    • Delete leaderboard entry
    • View user – jumps to a view of the user associated with the score
  • Updated Javascript Client – we’ve revamped the Javascript Client to use native HTTP calls (instead of JQuery). Useful for embedded client environments where JQuery is not a viable option.
  • Cloud Code Enhancements – we’ve enhanced and improved the ability to call cloud code scripts from other scripts. (Yay!).  We’ve also normalized the returns from the cloud code API methods vs. the native client API methods. Basically, both now have separate and sections. Because this will break existing scripts, we’ve implemented a settings in Advanced Settings called [x] Use Legacy Script Result Format.  This setting defaults to [x] True for all existing apps with cloud code, but [ ] False for everyone else. We recommend migrating your scripts to work with the [ ] False setting when you have a chance.

Portal Changes

  • Global Property Categories – You probably already know that Global Properties are super useful. They allow you to define all sorts of configuration and tuning parameters for your app, that can be adjusted and tweaked to adjust how the app behaves, without requiring new builds and client installs. Now – because some folks were building up large-ish libraries of these properties, we thought we’d give you a way to better organize them.  Voila: Categories!  Note – categories do not affect the namespace of properties – all property names are global to your app.
  • New Leaderboard Monitoring – go to Monitoring | Global Monitoring | Leaderboards to view your players’ accomplishments in all their glory! (see highlights section for details!)
  • New Compatibility section in the Design | Advanced Settings page

API Changes / Additions

  • Leaderboard API optimization – the json data returned by GetGlobalLeaderboardPage() and GetGlobalLeaderboardView() now includes the current Friend Summary Data for the players referenced by the leaderboard entries. Useful for when you want to display additional information about the ranked player in the leaderboard (i.e. xp level, faction, etc.) without requiring an additional brainCloud call for each entry.
  • Matchmaking optimization – Friend Summary Data has also been added to matchmaking results (for the same reason we did it for leaderboards!)
  • HTTP Client Service improvement – we’ve enhanced the HTTP client Service accessible from Cloud Code to allow passage of query parameters as a map
  • GetGlobalProperties() return data fixed – it no longer returns description data.  It was a defect (and a bandwidth hog) – so we’ve fixed it.

Misc. Changes / Fixes

  • Server optimizations – we’ve fixed our cloud code hook caching, so that it well, actually caches stuff now (whoopsie!). The unsurprising result is even faster processing of all API calls
  • Client packet retry improved – our clients now point to a new server end-point which better supports packet retries.
  • The API Explorer’s GetShieldExpiry() method has been fixed
  • Misc fixes and optimizations
releaseAnnouncement
10 years ago

Revamped Unity Client! (Release 2.9)

In celebration of this week’s Ottawa International Games Conference (OIGC), it’s brainCloud Release 2.9!

Nothing too earth-shattering in this release – some minor fixes and changes while we ramp up the development of some larger customer-requested features – coming soon!

Release Highlights

  • IAP Product Enhancements
    • Categories – Products can now be assigned to categories (i.e. “Gold bundles”, “Elixer bundles”, etc.), which is handy for retrieving lists of similar items for display in store screens.
    • Product Types – brainCloud now allows you to specify whether an IAP product is consumable, non-consumable or subscription (with sub-types for Apple’s free, non-renewing and auto-renewable subscriptions). This additional information allows us to handle the various product types appropriately, in particular fixing our handling of auto-renewable subscriptions.
    • Extra Data – developers are now able to append extra information (key + value pairs) to products
  • Unity Client
    • We have significantly overhauled our Unity Client – improving its communications infrastructure, and adopting a new Json processing library (JsonFx).Warning: as part of the Unity Client Refactoring, we have changed the Error callback/delegate signature so that you no longer have to parse the response Json. This change greatly simplifies your error processing, but is not backwards compatible. The older 2.8 libraries still function just fine though.

Portal Changes

  • Design | Marketplace | Products – added support for categories, product type / sub-type, and extra data
  • Officially Supported Browsers – the brainCloud portal is designed to work with Chrome, Safari and Firefox.  Users of other browsers (IE) will be warned that they may experience issues.  [There are known refresh issues with IE.]
  • API Explorer – the services and operations are now displayed in alphabetical order (FINALLY!) 🙂 

API Changes / Additions

  • GetSalesInventoryByCategory() method added to Products service – used to retrieve all IAP products of a certain type.

Misc. Changes / Fixes

  • Admin | Company Info page –  we now display the user id for the billing account for easy reference
  • JavaScript client – Async match parameters updated to match other clients, and fixed handling of optional parameters
  • Java client – missing product methods have been added to the Java client
  • Leaderboard configuration – the portal now warns you that changing the tournament refresh settings (start date, frequency, etc) requires that all leaderboard entries be deleted.
  • Miscellaneous documentation updates