Release 4.5
Big things are happening with brainCloud in 2020. Here’s what you will find in 4.5.
The executive summary:
- Shared Cloud Code Scripts (beta)
- Global Files V3 API (beta)
- Custom Entities Official Release + Templates!
- Improved Room Server Support for Unity and Unreal!
- Facebook Graph API v3.2
- New (better!) Batch User Processing API
- Updated UTC-based calls in Client Libs (see note immediately below)
- and more!
Release Highlights
Shared Cloud Code Scripts (beta)
At long last, our initial version of shared scripts is available for use! No more copy-and-pasting functions from script-to-script or loading them into custom properties!
Starting in Release 4.5, to include another script, you simply use the new bridge.include(“scriptname.ccjs”)
operation.
For example – say you have this script:
MathFunctions script
function sumNums( num1, num2 ) {
return (num1 + num2);
}
function prodNums( num1, num2 ) {
return (num1 * num2 );
}
You can include it from another cloud code script very simply:
"use strict";
bridge.include("MathFunctions.ccjs");
function main() {
var response = {};
response.answer = sumNums(data.number1, data.number2);
return response;
}
main();
The following rules apply:
- A script can import multiple scripts (of course!)
- The scripts must all be present within the app… (i.e. no including scripts from other apps)
bridge.include()
calls must come first in a script. The only lines allowed to be before bridge.include() are blank lines,//
comments, and/or the”use strict”;
directive- The extension is ignored by the call – but we recommend you append
.ccjs
anyway ← this may be helpful in the future (we have plans!)
Note – we consider this a beta release. The syntax is safe (feel free to use it!) – but there are a few more kinks to work out in future releases, namely:
- we don’t yet support arranging the scripts into sub-folders (coming soon!)
- we haven’t yet determined the best way to adjust our cloud code pricing. This capability will change the way devs use our scripts – opening the door to larger, more powerful scripts. We will need to adjust our pricing to accommodate the changes to server resource utilization. As always, anything we do will be cost-effective and elastic for our customers!
Global Files V3 API (beta)
We’ve got a new version of our Global Files API, with some significant improvements:
- Support for Folders
- Support for Uploads (i.e. migrating uploaded User Files → Global Files)
- Full File Management API
Important notes:
- Uploading of files is accomplished by Uploading a User File, and then migrating it to V3 Global Files. Note that we also included a method for migrating to the legacy Global Files as well.
- The V3 API is a clean break from the older Global Files / S3 API – you can use either API (for now), but files are not shared between the two.
- The V3 API does not have Design Portal support yet – so, for now, you would need to use the APIs to upload files, create directories, etc.
- V3 Global Files are also not currently included in imports/exports and deploys.
Custom Entities – Official Release + Templates!
Custom Entities are now fully live in brainCloud (yay!) – which unfortunately means that we will now begin charging for them (boo!). For pricing details, see our Deep Data Pricing article.
Note – as part of this change, access to Custom Entities now requires a Plus plan. We needed to make this change due to the Custom Entity feature’s ability to handle very large datasets (even in Development) – which could incur very large storage and backup costs. Note that the $4.99 Development Plus plan does include support for Custom Entities.
As a refresher, Custom Entities are our new, super-charged improvement to both Global Entities and User Entities.
Custom Entities offer:
- Custom Indexes for super-fast lookups
- Deployment support for easy migration of entities between Dev and Prod apps
- Owned vs. Un-Owned variations
- ACL support
- Time-to-live (TTL) support
- Import / Export Support
- Both Global and User Data Editors
And now – JSON Templates! You can now add a template for the data section of your type, along with a convenient field description. You can even use markdown! Super convenient when manually creating / editing entities!
Misc Changes
But wait – there is more! Release 4.5 also includes the following:
- Improved Unity and Unreal Room Server support – Now with spiffy new S2S libraries. Check out the all-new docs for creating Room Servers using Unity and Unreal.
- Facebook Graph API upgrade – we have updated our backend to utilize Facebook Graph API v 3.2
- Batch Improvements – we have added a new Batch User Processing call that allows you to specify a script to run once all of the specified users have been processed.
- RTT Optimizations – Improved Event and Disconnect handling
- Deep Data billing – usage billing for advanced data usage. Details in this article.
Portal Changes
We’ve made the following portal changes:
Design
- Core App Info | Application IDs
- Removed the [x] Enable Facebook Scores setting from the Facebook Platform options. Facebook’s APIs no longer support this functionality.
- Cloud Data | Custom Entities
- Added the ability to define (and describe) custom JSON templates for entity data.
- Important: A Plus Plan is now required to access this screen.
- Gamification | Achievements
- Removed the [Facebook Register Achievements] button from the main screen, as well as the Facebook specifics from the sub-screens. Facebook’s APIs no longer support this functionality.
Monitoring
- Global Monitoring | Custom Entities
- Updated the Create and Edit entity screens to support the new JSON templates.
- Important: A Plus Plan is now required to access this screen.
- User Monitoring | Custom Entities
- Updated the Create and Edit entity screens to support the new JSON templates.
- Important: A Plus Plan is now required to access this screen.
Reporting
- Analytics
- Split out and corrected the Total Users vs. Total Dormant Users stats.
- API Usage
- Added a new Deep Data Usage section.
General
- Login / Registration
- The Registration page is now more mobile-friendly.
- Personal Preferences
- Timezones are now specified via a region/city – hopefully no more issues when Daylight Savings Time changes!
- Portal Version
- We are now prefacing our Master Release versions with “R”.
API Changes
As mentioned in the executive summary, we found inconsistencies in the client-implementation of some of our time-based calls.
The following methods have thus been deprecated in the 4.5 libraries:
- Leaderboard
PostScoreToDynamicGroupLeaderboard()
– deprecated in favor ofPostScoreToDynamicGroupLeaderboardUTC()
PostScoreToDynamicLeaderboard()
– deprecated in favor ofPostScoreToDynamicLeaderboardUTC()
PostScoreToDynamicLeaderboardDays()
– deprecated in favor ofPostScoreToDynamicLeaderboardDaysUTC()
- Tournament
PostTournamentScore()
– deprecated in favor ofPostTournamentScoreUTC()
.PostTournamentScoreWithResults()
– deprecated in favor ofPostTournamentScoreWithResultsUTC()
- Script
ScheduleRunScriptUTC()
– deprecated in favor ofScheduleRunScriptMillisUTC()
In addition, the following new methods have been added to brainCloud API:
- Bridge
- There is a new
GetAppVersion()
call in the bridge to retrieve the version of your app (as provided by your app to the client library). Handy!
- There is a new
- GlobalFile (New V3!)
- Client APIs –
GetFileInfo()
,GetFileInfoSimple()
,GetGlobalCDNUrl()
,GetGlobalFileList()
, - The following methods are available from cloud-code only:
- File retrieval –
SysGetGlobalCDNUrl()
,SysGetGlobalFileList()
,SysGetFileInfo()
,SysGetFileInfoSimple()
- File management –
SysCopyGlobalFile()
,SysDeleteGlobalFile()
,SysDeleteGlobalFiles()
,SysMoveGlobalFile()
- Folder management –
SysCreateFolder()
,SysDeleteFolder()
,SysLookupFolder()
,SysMoveFolder()
,SysRenameFolder()
- File retrieval –
- Special mention – the
SysMoveToGlobalFile()
method can be used to copy/move a UserFile to a GlobalFileV3 file.
- Client APIs –
- S3 Handling
- We’ve added
SysMoveToLegacyGlobalFile()
to support moving a User File to the Legacy Global File system.
- We’ve added
- Script
- There are 3 new S2S APIs for running batch scripts on users with a completion scriptat the end:
RunBatchUserScriptAndCompletionScript()
targets all usersRunBatchUserScriptForProfilesAndCompletionScript()
targets specific users (specified viaprofileId
)RunBatchUserScriptForSegmentsAndCompletionScript()
targets the users in specific segments.
- There are 3 new S2S APIs for running batch scripts on users with a completion scriptat the end:
Miscellaneous Changes / Fixes
- Updated Client Libraries
- All supported libraries have been updated with the latest API enhancements. Go get ’em!
- Important Client Library Fixes
- BCLD-5686 – Automatically remove the trailing “/” if set by the client in serverURL
- BCLD-5718 – UTC fixes for all libs
- BCLD-5772 – Change the comms packet timeouts from 15,10,10 to 15, 20, 35, 50
- New S2S Libraries
- Documentation updates
- All new 4.5 APIs added to API Ref
- New Knowledgebase Articles:
- Important Server Fixes
- BCLD-5749 – Special characters in email or universal ID addresses were not being encoded correctly during URL creation
- BCLD-5748 – Both “identifier” and index keys (keysJson keys) need to allow period (.) in the Custom Entity configs
- BCLD-5787 – ‘Reference Price’ displayed in the Transaction screen is incorrect
- BCLD-5743 – Update APIServer containers to Tomcat 8.5.51 to fix Ghostcat vulnerability
- BCLD-5620 – Add cloud code support for various PushNotificationService methods
- BCLD-5779 – Remove double logging of tournament service errors
- BCLD-5763 – Optimized RTT Event Handling
- Plus miscellaneous fixes and performance enhancements…