Beamable is excited to announce version 0.9 of the Unity SDK. It is packed with a number of new features and enhancements and comes on the tail of the March Server Release.
If you are new to Beamable, you can grab the SDK by signing up to develop on Beamable for free.
If you are an existing customer, you can just right to the migration guide.
Here are the comprehensive release notes!
New Editor Tools
The Beamable tools provided for the Unity Editor environment have seen substantial improvements in terms of workflow, developer experience, and feature set. They have also received a visual makeover to better blend in with the Unity Editor.
Content Manager 2.0
The Content Manager has seen substantial improvements in terms of workflow, developer experience, and feature set.
Visual makeover with support for thousands of content objects, better organization of content types in hierarchies, and a more unity-native feel
Content validation which appears alongside erroneous fields
New Publishing and Downloading dialog with visualization of progression and automatic validation
Support for tagging content objects to create groupings that span content types
Support for filtering content by tag, tag, and status
Support for searching for slices of content using a query language
Support for multiple content object selection and simultaneous editing
Context menu for creating, deleting, duplicating, and renaming
Automatic validation for missing/broken references
Enhanced performance and responsiveness
For many developers, the toolbox is their first contact with the Beamable-Unity experience. It has also sustained a visual makeover, as well as centralizing a lot of the key functionality.
New and enhanced registration & sign-in process
Ability to switch realms from within the Toolbox
Realms dropdown will pre-populate all the realms of a common game
Shortcuts to Content, Prefab Skinning, Configuration, Microservices, and Portal
Manage your account and sign in/out from the current organization
Access documentation from the toolbox
Auto-install of the Microservices package
Configuring the behavior of the SDK, including of the prefabs, used to be a fragmented experience where you had to directly edit scriptable objects in your project hierarchy. This has now all been centralized within the Unity Project Settings:
Unity Project Settings window will now include a searchable Beamable section
New Console Prefab Configuration
New Session configuration for defining which information to collect
Shortcut available in the Toolbox
New Feature - C# Microservices
Developers who seek to create custom server-authoritative gameplay without the burden of operating their own infrastructure can now do so with C# Microservices! C# Microservices are docker containers that can be run and debugged locally on your dev machine. Your server-authoritative code lives alongside your client code, enabling better re-use and source control.
Create a new C# Microservice from within the Unity Editor
Write server-authoritative code in C# from within the Unity Editor
Run and debug the code as a local docker container until you’re ready to deploy it
Deploy your C# Microservice from within the Unity Editor to run in the Beamable cloud
Promote the C# Microservice from your realm to another realm directly from the Portal
Serialization and networking is automatically handled
A C# Client to invoke functions on your Microservice is automatically generated for you based on your API
Share code between your Client and your C# Microservice
Beamable API remains consistent whether it is invoked from the client or server
Content can be shared between client and server seamlessly
Auto-scaling rules to spin up more services according to load
C# Microservice supports infrastructure metrics collection and visualization in Portal
Coming in 1.0 -- native storage for C# Microservices.
New Feature - Group Donations
Group Donations allows players of the same group/guild to donate currency to each other. A group member publishes a request for currency, and other players may contribute an amount up to a maximum. Donation requests also have a cooldown, which ensures that group members do not spam requests. Developers can specify what donations are allowed, as well as a variety of other constraints via Donations content.
Groups support players donating currency to each other
Groups support specifying allowed player donations via Donations Content
New Feature - VIP System
Developers can now define VIP Programs that entitle players to bonuses when they receive specific currencies. In a nutshell, VIP programs are defined as Content and track their progression via a designated currency (e.g. VIP points). Developers can then define multiple VIP Tiers, which players can qualify into (and disqualify from) based on specific thresholds. These Tiers in turn entitle players to multipliers on currencies they receive (e.g. 10% more). The VIP feature is automatically integrated with Inventory and Commerce/Offers.
New VIP System which supports multiple tiers and currency bonuses
Inventory update operations support an optional flag to apply or ignore VIP Bonuses (e.g. don't apply vip bonus when setting player currency from the portal)
Inventory supports automatically applying a VIP Bonus to currency updates if the player qualifies for a VIP Tier
Commerce supports automatically applying a VIP Bonus to offers if the player qualifies for a VIP Tier
Inventory API to preview what a currency grant will be with the player's vip bonus
Inventory API to get all VIP Bonus multipliers for a particular player
New Feature - Realm Workflow
We've introduced the ability to organize your game into a hierarchy of realms, each representing a distinct environment. Content and microservices can be copied/promoted from one realm to another. This way, each developer works in their own realm, and when they are ready can push their content to another realm (e.g. ci, staging) or pull content into their current realm. This has the added benefit of enabling producers to own the promotion of content deployments up to production.
Promote content and microservices from Unity to Beamable
Promote content and microservices from one realm to another
Change realms inside of Unity and easily download content from that realm to your local machine
New package name
Refactored and more consistent namespaces
Updated package dependencies (e.g. TextMeshPro, Addressables)
Updated sample projects
Updated API References (C# and HTTP)
More APIs exposed under Beamable.API
Semantic versioning of packages
BeamableIAP now automatically integrates with Unity IAP if the library is available. Initiate real-money transactions via Beamable.API.BeamableIAP
Integration of storefront with VIP System to provide bonus currency if the player qualifies
Leaderboard API supports setting entry stats, such as rate of growth to perform real-time animation (e.g. idle games)
Support write_self client-authoritative score updating
Support granting items and currency rewards
ChatService is now subscribable and automatically removes chatrooms players lose access to (e.g. leaving a group/guild)
New experimental API for matchmaking, which natively integrates with Game Relay service for synchronous multiplayer
Matches are configurable via content
Matchmaking API supports subscribing to updates
All Beamable default content has validation rules for every field and will notify developers/fail to deploy on validation failure
Common validation rules are available for use on custom content such as type constraints (e.g. MustBeCurrency), dates, numeric types, and more
Content service data uploading performance improvements
Content deserialization will resolve content type to closest parent if actual type is missing (e.g. items.swords is missing, will be treated as items as opposed to being ignored)
Developers can set a Customer Alias “slug” (e.g. disruptorbeam) and use it in place of a numeric and hard-to-remember CID
Developers can switch realms in Unity
When creating a new game, 3 realms will be created for those games by default, with the option to add more as needed (dev, staging, production)
Trials API is now available in the client library
Trials supports additional Stat "contains", Stat "contains any" and Stat "contains all" operations
Inventory can support a starting amount of currency beyond zero through Currency Content
Inventory, when queried, returns all currencies that exist with an amount that is either the starting amount specified by the developer or 0
Inventory automatically sets Player Stats for currency amounts to facilitate targeting
Integration with VIP system to automatically grant bonus currency
Optional API to opt-out of VIP bonuses when granting currency
Beamable ReadMe file no longers appears on each launch
Content serialization of null vs. empty array types in Unity Scriptable Objects is now consistent
Inventory service no longer errors when subscribing to large numbers of different content types
Inventory was ceasing to provide asynchronous updates when switching user accounts at runtime
Content downloading of 1000+ files no longer errors out with “too many files open” message
Cloud Saving was using incorrect path separators on Windows builds
Cloud Saving improved handling for high-contention files
ClientData in PlayerListingView now correctly serializes dictionary data
Content Manager no longer hangs for ~15 seconds when there is large volumes of content and a developer enters playmode
Content serialization of doubles has been improved
Switching realms no longer leads to access token errors
Account prefab no longer shows stale information when switching between saved accounts (alias and avatar)
Sending a chat message to a group room no longer results in an error
Facebook Games Graph Login flow flavor does not support name_format field leading to failure to login
Events that have extra long durations (run for years) now schedule and run correctly
As this is a major version update, there are some breaking changes that may lead to incompatibility with projects using the previous 0.0.x versions, or clients that are live with that version. See migration guide here: https://docs.beamable.com/v0.9.0/docs/migration-001-090
The 0.9.0 is a new generation of the package -- this is reflected in the fact that the package has a new identifier. Its content has also seen a substantial refactor in terms of code namespaces. This was a necessary step to sanitize the codebase, ensure that code could be shared with C# Microservices, and make it more intuitive to find what you’re looking for.
The 0.9.0 package version features a potentially breaking change on how content refs get serialized which may affect those of you who:
currently have a game in production using package versions 0.0.x (e.g. 0.0.141) AND
make use of beamable prefabs or content which uses ContentRef (i.e. content reference dropdown)
Content deployed via the Unity Editor content manager using the 0.9.0 version will write content references to Beamable in a way that is not backward-compatible with 0.0.x builds. Builds made with the 0.9.0 package, however, can consume content in both the old serialization format as well as the new format.
We recognize this may not be a trivial change for some games, as it would require a force upgrade to a client built with 0.9.0. For those of you for whom it is prohibitive but still want to adopt 0.9.0, you can restore the original serialization format by adding the following compilation flag to your Unity Scripting Define Symbols: BEAMABLE_LEGACY_CONTENT_REFS
See migration guide here: https://docs.beamable.com/v0.9.0/docs/migration-001-090
This upgrade is a massive step forward for Beamable and our customers. If you have any questions or concerns about migration, our team is standing by via email and on Discord to help you with anything you need.