Release 2.11.0

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 ExplorerGamification.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

Release 2.10.0

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 <result> and <data> 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 optimizationFriend 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