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
- Unity-native design
- 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 documentation
- 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.