Beamable is happy to announce the release of our Unity SDK 0.18.0. The full changelogs can be found below. Here are the highlights of the release.
Beamable 0.18.0 introduces a new feature called Content Baking. Previously, the first time players launched a Beamable game, they’d have to download every piece of Beamable content to their devices. For games that had significant amounts of content, the download could cause considerable lag time in-game startup speeds. Now with Content Baking, you can bundle an initial version of content with your game, removing the need for users to download anything. You can configure how the content is bundled with the application, choosing either GZIP compression, or no compression. To enable automatic Content Baking, go to the Content section of your Project Settings. Or, to do it manually, use Window / Toolbox / Beamable / Utilities / Bake Content. Content Baking lets your users start playing your game faster, which reduces friction in your onboarding process. No one likes loading screens.
Webhooks and APIs as Content
Microservices can be used to implement features specific to your game’s needs. In Beamable 0.18.0, we’ve added the ability to represent your own [ClientCallable] methods as Beamable Content. Our vision is to allow you to attach these API Content Objects to Beamable events, like when a player claims their Tournament rewards, reads an announcement, or makes an in-game purchase. Today, you can register a custom API Content as a reward in an Announcement. You can use this feature to execute custom logic when a player claims the gifts in an Announcement. For example, you could write a custom C# function that increments an item’s property value, or resets a stat timer for a player. We’ll be expanding the places you can use API Content so that you have as much control over your game’s logic, flow, and state as possible.
Leaderboard Prefab and BUSS Preview
Beamable is dedicated to giving you fully functioning prefabs that leverage entire Beamable feature sets. In Beamable 0.18.0, we’ve added a new Leaderboard prefab that is more performant, scalable, and configurable than the previous. Similar to the old Leaderboard, all you need to do is assign a Leaderboard Content Ref to the prefab, and you’re ready to go. The new prefab is built using our new User Interface technology. We call it the Beamable Unity Style Sheet, or BUSS for short. BUSS is a tool that gives you full control over the styling and theming of your drag-and-drop prefabs while optimizing performance. It uses a Signed Distance Field rendering technology under the hood to give your UI’s modern aesthetics like drop shadow, borders, gradients, and more. We are going to continue building tools for BUSS so that you have easy and powerful ways to customize and personalize your game’s look and feel.
Beamable 0.18.0 is bursting with various workflow improvements and SDK enhancements. In the Unity Editor, you’ll notice that you see less Asset Importing as you enter and exit Playmode. We’ve fixed a bug deep in our Content system that was erroneously causing asset imports.
The schedule editor for Listing and Event Content has also been extended to support more of the cron syntax. In fact, you can now enter your schedules as cron strings directly in the Inspector if you need to express a more nuanced schedule than the UI can represent. If you aren’t familiar with cron, check out this excellent third-party website, https://crontab.guru/.
Beamable 0.18.0 also moves the BeamableEnvironment class from the Editor namespace, to the Runtime namespace. The BeamableEnvironment class contains data about the Beamable package you are using, like what version you have, what API URL you are using, and more. You can use this information to write robust code that responds to Beamable’s version number.
C# Microservice Enhancements
The Microservice feature continues to mature and offer more ways to configure your workflows. In Beamable 0.18.0, you can use the [InitializeServicesAttribute] to decorate a static method as an application startup method. If your method is static, returns a Task or a Promise, and accepts a single IServiceInitializer as a parameter, then it will be invoked exactly once when the Microservice starts up. The method will be called before the service can receive traffic from players, but after a secure connection to Beamable has been established. This means that you can reference Beamable data as part of your initialization. There are a few other Microservice improvements, such as the ability to collapse the log view in the Unity Editor, and the ability to return simple Dictionary types from your [ClientCallable] methods.
Content can be prebaked with game builds to speed up content initialization
ScheduleDefinition now supports CRON expression
Minute support for scheduled listings
Announcement content includes gifts in addition to attachments. Gifts support webhook calls.
scheduleInstancePurchaseLimit field to the ListingContent to enable setting a purchase limit scoped to the schedule instance
SearchStats() admin method is usable from client and microservice code.
ApiContent classes and execution methods allow you to invoke microservices with data
InitializeServicesAttribute can now be used over static methods to declare initialization hooks in microservices. Supported signatures are async/regular Task(IServiceInitializer), async/regular Promise<Unit>(IServiceInitializer) and synchronous void(IServiceInitializer). void methods must be fully synchronous --- it is not possible to guarantee that any promises started within a void initialization method will have been completed by the time the microservice is receiving traffic.
Exposed CreateLeaderboard methods in IMicroserviceLeaderboardsApi to enable the dynamic creation of leaderboards in microservices (can take a LeaderboardRef as a template or explicit parameters).
Folding/Unfolding services cards in Microservice Manager
Added clearer unsupported message for microservice's implementation of IAuthService.GetUser(TokenResponse)
Added support for Dictionary serialization in ClientCallable methods using SmallerJSON
BeamableEnvironment has moved to the Runtime to enable SDK version checking at runtime
Removed unnecessary Unity asset reimport for identical content data.
list_content Admin Command displays limited results. You can specify start index for list_content command
Renamed build and run to play buttons in Microservice Manager to be more intuitive
Can have multiple ConfigureServicesAttribute and InitializeServicesAttribute explicitly ordered via ExecutionOrder property of the attributes.
Renamed Beamable's iOS plugin for Google Sign-In from GoogleSignIn to BeamableGoogleSignIn to prevent name collisions with public plugins.
InventoryService.GetCurrent is no longer limited by URI length
only use InitializeOnEnterPlayMode in Unity 2019.3 or higher