All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Prevent
WebSocketConnection
burst of exceptions by adding a delayed retry logic
- Baked content exists in a separate memory location than the deserialized
content.json
CDN cache
- Content cache evicts old content for new content id versions
PlatformRequester
will reattempt failed requests caused by SSL connection issues.- Fix renaming content throwing infinite warnings
- Disabling Content inspectors no longer causes compiler errors.
- Leaderboard
rankgt
field is not null when specifying outlier.
- CLI is only used if the global CLI matches the exact SDK version.
- Autogenerated SDK synced to match latest API (February 22, 2024).
- 502 and 504 requests containing HTML are received as
RequesterExceptions
. - Content alphabetizes fields on checksum calculation as well as publication.
- Listing content
activeFrom
field no longer resets every time it is viewed in the Inspector. RecoverAccountWithExternalIdentity
method includes a parameter,attemptToMergeExistingAccount
that will prevent automatic account merging.Json.Serialize
will treat nonIDictionary
values ofIEnumerable
as json arrays.
- added previously missing meta file for
BeamAssemblyVersionUtil
.
- Marked
EventView
endTime
field as obsolete, suggest usingGetEndTime
method instead. PlayerAccounts
,PlayerAnnouncements
,PlayerFiends
,PlayerParty
, andPlayerStats
automatically await their own initialization before running methods.
no changes
CommerceService
usesCoreConfiguration.CommerceListingRefreshSecondsMinimum
field to set a minimum delay between fetching store updates. The delay defaults to once a minute.
no changes
- Support for FederatedGameServer microservices
TournamentAPI
service starts using OpenApi bindings forGetStandings
andGetGlobalStandings
calls.
- Enums in microservices calls serialize correctly.
- Fix
BeamContext.Default
first call when called with extra define symbol defined:BEAMABLE_ENABLE_BEAM_CONTEXT_DEFAULT_OVERRIDE
- Classes in microservices calls serialize correctly.
- Classic SDK
TournamentEntry
has new fields:tier
,stage
,nextStageChange
, andpreviousStageChange
.
- OpenAPI
TournamentEntry
has new fields:nextStageChange
andpreviousStageChange
. - Autogenerated Session and Trial API.
no changes
no changes
- Content cache data is now saved in a namespaced path.
- Inventory is available on WebGL builds, and
IDependencyNameProvider.DependencyProviderName
uses a sanitizedPlayerCode
.
- New enum serialization wasn't compatible with older versions of published content, so it was reverted.
IsThirdPartyAvailable
,RemoveThirdPartyAssociation
, andIsExternalIdentityAvailable
methods no longer use invalid query args.- Websocket connection authentication in WebGL builds.
- Fixed ContentRef property drawer on Unity 2021 LTS.
PlayerAccounts.Current
updates correctly after account switching.
- Changed the unknown
PaymentService.ProviderId
value from "bogus" to "unknown". - Payment ProviderId can be changed by injecting a custom
IPaymentServiceOptions
into the Beam Context scope. Promise.Sequence
returnList<T>
in the same order as inputList<Promise<T>>
.PlayerAccounts.Current
is a distinct instance from any element in thePlayerAccounts
list.PlayerPrefs
are no longer the source of truth for CID/PID. Instead, use theIRuntimeConfigProvider
.ConfigDatabase
is no longer used to store and load CID/PID.
- Broken Console commands,
config set
,config reset
, andconfig useful
. ConfigDatabase
is deprecated.
- Script symbol,
BEAMABLE_ENABLE_BEAM_CONTEXT_DEFAULT_OVERRIDE
will setBeamContext.Default
's PlayerCode to the PlayerCode used to creat the firstBeamContext
, such as throughBeamContext.ForPlayer()
.
- Fixed
HttpUtility
throwing compilation error in Unity. Reset
command works for realms configured to use Beamable notification channel.
IBeamableDisposableOrder
interface allows services to dispose in configurable order.
- Add email validation
- Fixed wrong error code when providing wrong password while logging in.
- Fixed error when trying to get enum type from Microservice.
- Announcements clientData not being deserialized correctly.
- Content types from SAMS are visible in Content Manager in Unity.
IsExternalIdentityAvailable
no longer returns 'true' if user_id is already in use by another player and contains special charactersIsThirdPartyAvailable
no longer returns 'true' if user_id is already in use by another player and contains special characters- Avoid early initialization of
BeamEditor
whenResources
are not available in Editor. - Missing
TextReference
exception in theLoadingIndicator
when entering and exiting Playmode quickly - Disposed
CoroutineService
exception in theBeamMainThreadUtil
when entering and exiting Playmode quickly PlayerAccounts.SwitchAccount
method make sure that data is initialized before switching account
IsExternalIdentityAvailable
takes an optional stringproviderNamespace
instead of an optional string[] fornamespaces
parameter.PlayerAccounts.IsExternalIdentityAvailable
resolves theproviderNamespace
automatically from parametrized type.TextAreaAttribute
added toEmailContent
body.
- new
RecoverAccountWithRefreshToken
methods in thePlayerAccounts
class.
- GPGS compilation issue- move non static action invoke out of a static method
- Player Inventory PSDK no longer triggers
OnDataChanged
callbacks with incorrect empty list
- Unity 2022 LTS Support
- Core configuration allows
BeamCLIPath
to be configured. PerformLocalLogin
method inSignInWithGPG
class- Add gift field in
Announcement
class.
- Response serialization for external login request
- Autogenerated Scheduler API uses correct polymorphic serialization.
- Static method references non-static property in SignInWithGPG
- Beam CLI no longer leaves dangling processes.
- Intermittent
get_version can only be called from the main thread.
error due to uncachedBeamableDispatcher
.
- Allow
env-overrides
config to override single values instead of all of them. - Beamable's build preprocessor no longer runs in batch mode (CI/CD).
- Autogenerated Scheduler API uses correct polymorphic serialization.
- Cron expression preview now omits leading zeroes: for example " 1:23 PM" instead of "01:23 PM"
- Serialization of
DateTime
now supports optional format parameter for Beamable Serialization library. - Skip Buss and old styling OnValidate while playing
JsonSerialzable.Serialize
type constraints no longer requireclass
ornew()
.
- Autogenerated API layer for Beamable Proto-Actor based backend services.
- Beamable network requests use the combined
X-BEAM-SCOPE
header instead of theX-KS-CLIENTID
andX-KS-PROJECTID
headers. - Detect missing proguard rules during build.
- You can now create a SAMS with no Common Library (needed for UE)
- Added INSTANCE_COUNT to CLI BeamoService's Local Microservice Protocol for SAMS (default to 1)
- Added implementation to
beam services deploy --ids
command so that it now enables the given MS Ids when given any - Added Docker Container Updates to CheckStatus command in CLI
- Using portal to remove the last item in a group while listening to "items" with the Inventory PSDK will cause the SDK to notice the change.
- Do not init Pubnub Services until needed.
- Fix compilation errors on Standalone platform when using
com.unity.mobile.notifications
package.
- Detect issues with parsing baked content.
- Exiting playmode early no longer causes a service scope exception.
- Beamable Environment window leaves version number and environment label unchanged when using preset buttons.
- Added additional info about active listing limit default value in StoreContent.
- Limited Beam CLI bindings.
- Invalid package invalidations no longer occur for Beamable based assets.
- Content folders can be case insensitive.
- Beamable button includes Beamable SDK version.
- "Serialization depth limit" warning for
RealmView
on domain reloads. - Realms are reloaded if absent on domain reload.
- Realm secret is reloaded on login.
- User is able to publish after reverting from Change Environment.
ILoadWithContext
interface will obligate a service registered as a singleton to be instantiated onBeamContext.InitServices
call.IsExternalIdentityAvailable
method added to AuthAPI and used in PlayerAccounts SDK during attaching external identity.
ItemView
has newcontentId
field.DisableBeamableCidPidWarningsOnBuild
option in Project Settings/Beamable/Editor that will disable the CID/PID warning dialog on build.
- Editor no longer throws "Failed to refresh account" messages.
- AdminConsole works on webGL builds.
- CurrencyHud no longer throws exceptions.
- TournamentContent period field no longer loses focus.
- Switching environments will correctly sign out the current editor user.
- CID/PID warning at build time is more descriptive.
- Functions names in third party Websocket library so now they should not conflict when user is using other libraries that depends on that library
- Parse optional
proxyId
asFederatedId
field for items related toFederatedInventory
feature - Possibility to disable property order dependence for content checksum.
Beam.ChangePid
allows the game to change the assigned pid. The pid will reset when the game restarts.IPlatformRequesterErrorHandler
implementation can be added toIDependencyProvider
to handle any uncaught Beamable Network errors.PlayerInventory
has explicit methods for getting Items and Currencies with string references.PlayerInventory
has load methods for Items and Currencies that retrieve data and callRefresh()
.SDKRequesterOptions<T>
has a field calleddisableScopeHeaders
that will prevent CID/PID headers from being sent.
- Exception on using
BeamContext
outside playMode - The config-defaults.txt file no longer controls the which CID/PID are used while in Editor. The config-defaults.txt file will still control the CID/PID in a built game.
- Expose Google Play Game Services
ForceRefreshToken
option and set it totrue
by default Beamable.Common
assembly name changed toUnity.Beamable.Runtime.Common
to align with assembly definition file.
- The Toolbox signin flow no longer allows for guest accounts.
- Fixed slow SDK installation process.
- Fixed Error Code for
NoConnectivityException
atUnityBeamablePurchaser
on StartPurchase.
- Expose Google Play Game Services
ForceRefreshToken
option and set it totrue
by default
PlayerInventory
triggersOnDataUpdated
events.PlayerInventory
item properties can benull
without throwing aNullReferenceException
.
- All content will appear as modified. This is because the content checksum algorithm changed to use alphabetical field ordering.
PlayerInventory
supports storing player's inventory in offline modePlayerInventory
supportsUpdateDelayed
methodIFederatedLogin<T>
interface type available for Microservices- "external" identities section has been added to a
User
class BeamContext.Default.Accounts
now hasIsThirdPartyAvailable
andIsEmailAvailable
methods which check if given credentials are available for usage.- Added
BeamContext.Presence
layer to handle requesting/changing player's presence status BeamContext.Social
now contains an event for players changing their presence statusPlayerAccounts
supports external identity auth.BeamContext.Default.Instance
returns aPromise<BeamContext>
that returns the default context.
PlayerInventory
no longer duplicates items if retrieved with multipleGetItems()
calls.- Multiple calls to
PlayerInventory.Update()
will operate serially instead of compete for priority. - Update banner in Toolbox will link to changelog instead of blog post.
- Refactored
BeamContext
initialization logic.
IBeamableDisposable.OnDispose()
is only called once per service, instead of once per service usage.- Local Content Mode won't fail to load content if internet connection is lost mid-game.
- Fixed an issue with logging in and realm switching while being on an archived realm.
- Duplicate content is now displayed immediately in
Content Manager
- Update banner in Toolbox will update both
com.beamable
andcom.beamable.server
package. - Fixed issues with wrong content status and checksum on domain reload.
FilePathSelectorAttribute
no longer accessesApplication
in constructor.
IDependencyBuilder.Build()
acceptsBuildOptions
to control re-hydration options for dependency scopes
- non finite numbers such as
NaN
orInfinity
will throw aCannotSerializeException
exception if serialized by theSmallerJson
utility.
RecoverFrom404
andRecoverFromStatus
method respects HTTP status codes- Skipping content assets check for current directory in case if
currList
is not initialized - Corrected URL format for staging-portal in environment picker
- Tournament content can be scheduled for any ISO 8601 Period
- Detect using invalid AA assets inside
LoadTexture
helper method forAssetReferenceSprite
- possible
NullReferenceException
during Content Manager initialization
- Player Account PSDK
EditorDownloadBatchSize
setting in Content Configuration controls the batch download size for Content Manager. The default value is 100.- Added SDK support for a direct Websocket connection to Beamable services toggleable via realm configuration.
- Content Manager uses batch operations for better performance.
- Content Manager uses custom
ContentDatabase
instead ofAssetDatabase
to resolve assets. - Content Ref Property Drawer no longer loads assets.
- Autogenerated SDK serializes sub fields that are typed objects
ValidationContext
service not found bug when using Local Content Mode.
- Refresh Content Window process is more optimized
- Content with optional fields of misaligned type use default instance for target type.
- Content validation doesn't occur unless
ValidationContext
has been initialized.
- Add GPGS MonoBehaviour to AccountsFlow
- Domain Reload times are much faster when working with large amounts of content.
- Realm scoped permissions update in Editor view
- Corrupt cached content no longer crashes the game. Instead, the cache is invalidated.
- Default avatars use new style and theme
- Local content mode
- Added
OnLeft
,OnPromoted
andOnKicked
event support inPartyMember
class.
- Portal opens to
https://portal.beamable.com
instead ofhttps://beta-portal.beamable.com
- Content Manager and Toolbox have flat UI
NotificationService.Unsubscribe<T>
now correctly unsubscribes from events.- Content classes with properties with backing field properties serialize correctly when upgrading directly from 1.2.10
- Regression in parsing nested
OptionalString
objects for content.
- Fixed package updating error related to
Unable to add package
- Fixed error preventing user from switching between Beamable accounts
- no changes
- Fixed empty list for OnElementsAdded and OnElementRemoved events in ObservableReadonlyList type
- Party events will not fire more than once anymore
- Fixed error preventing user from switching between Beamable accounts
- Party state is nullified after leaving the party (either by
Leave
andKick
methods) - Beamable button shouldn't overlap experimental package option
- no changes
- Presence heartbeat may be disabled in Project Settings/Beamable/Core/Send Heartbeat.
- Content Manager's download button shows Reset Content option in dropdown.
SimNetworkEventStream
has aISimFaultHandler
parameter that exposes error handling and callbacks for network outages.PartyMember
andReceivedPartyInvites
observable lists inPlayerParty
sdk.
- Content Manager Filter does not log exception when type query does not match any types.
CloudSavingService
no longer uploads manifests with missing objects.- Fixed Content not getting resolved when
BeamContext.Default
is not used.
- The
[Agnostic]
attribute is now obsolete. It is still usable, but assembly definitions should be used instead for code sharing. - The
Stats
accessor onIBeamableAPI
is now obsolete. UseStatsService
instead.
- Editor tooling for
SerializableDictionaryStringToSomething<T>
has context menu. - Expanded/Collapsed state represented by icons in
Theme Manager
. - New customer registrations will send an analytic event to Beamable.
- Autogenerated Beamable SDK available through
IServiceProvider
under theBeamable.Api.Autogenerated
namespace. SearchStats
method can now accept criteria values forint
,long
,double
,bool
,string
, and their associatedList<T>
types.
- The default uncaught Promise handler no longer throws
IndexOutOfBounds
errors in high failure cases. - Unity Asset Store releases will show correct version number in Unity Package Manager.
- Fixed sending custom analytic events using
AnalyticsTracker.TrackEvent
- Utility apis for setting expiration on Mail Update and Mail Send requests
- VSP Package Attribution now uses requester.Cid rather than requester.AccessToken.Cid (which can be null at editor time)
- Game Type content has validation for minimum team sizes.
- Adding items to Inventory after changing authorized user works.
- Support for nullable types in Content serialization.
- Fixed issue with windows not refreshing after login to Beamable.
- Beamable requests have a 15 second application level timeout.
ClearCaches
function onStatsApi
to force invalidate stats cache.- Beamable version number is displayed in Login Window's footer.
- Added
GetCloudDataContent
method inICloudDataApi
to simplify getting cloud data.
UnityWebRequest
respect a 10 second timeout before reportingNoConnectivityException
- fixed issue with ChangeAuthorizedUser that cause the BeamContext to enter a bad state with respect to its MonoBehaviour systems
PaymentsService
now supports receipt verification through theVerifyReceipt
method.
- A leaderboard can now be frozen using
LeaderboardService.FreezeLeaderboard
method to prevent additional scores to be submitted.
- Editor tooling for
SerializableDictionaryStringToSomething<T>
now supports all subtypes
- iOS builds will no longer overwrite the Beamable user language preference.
- An expired token will no longer cause an unintended realm changes in rare cases.
- Logging into the editor will automatically put you in the realm (PID) defined in your
config-defaults.txt
file instead of incorrectly resetting you to your default realm. - Correctly exposed
GetCurrentProject
method inIAuthApi
to retrieve CID, PID and the project name. This functionality was already exposed in theAuthService
class; we just moved it to the interface level to make it easier to access viaBeamContext.Api
. - Microservices Manager window will now render correctly after importing the microservices module.
StopListeningForUpdates
andResumeListeningForUpdates
methods inContentService
to manual control content refresh on ClientManifest deployment.BeamableDispatcher
for editor scenarios to manage registering callbacks on the Unity Editor thread without needing an editor render frame.Latest update
field for content item in Content Manager.- Content items sort option by
Recently updated
in Content Manager. Window/Beamable/Utilities/Change Environment
path to change the Beamable host parameters- Added "experimental" package status support to the
PackageVersion
utility Cid
andPid
field toIBeamableRequester
interfaceSocial
list accessible through theBeamContext
- User's realm permission overrides apply in editor
- Added posibility of disable content serialization exceptions during content download to allow manual repair for corrupted files.
- Added to
ISocialApi
methods to make/accept/decline friend requests viagamertag
s. - Added Party SDK as a
PlayerParty
object insideBeamContext
to manage parties - Adds application version headers to all requests sent to Beamable
- Fields of auto-properties with attribute SerializeField are now serialized for content classes under the name of the property.
- List of available to create
ContentTypes
inContent Manager
contextual menu is now ordered alphabetically - The Beamable host URL is no longer sourced from
config-defaults.txt
. Instead, it comes from theBeamableEnvironment
class. - Changed
PackageVersion
to accept "preview" prefix strings instead of requiring a direct match of the string "preview" - Moved
JsonSerializable
to Beamable.Common assembly - Moved some parts of the
ChatService
to Beamable.Common assembly - Changed namespace of
Beamable.Pooling.ClassPool
toBeamable.Common.Pooling.ClassPool
- Account Management Flow will merge gamertags when existing login credential is detected, instead of always creating a new gamertag. This allows you to keep your gamertag on the realm.
- Improved performance of
PlayerInventory
sdk
- Beamable button in Unity toolbar should be in correct position for production packages
- Content validation callbacks now support invoking private methods in base classes
- BeamConsole accepts events after RESET command
- Too many
EventSystem
components on startup - Fixed Beamable login error for archived & not existing realms
- In Events and Listings schedule windows calendar buttons with days earlier than today can't be clicked
- The
RankEntry
for current player is now mapped correctly inLeaderBoardView
no changes
no changes
SetLanguage
function forIAuthApi
- The
Language
field on theIPlatformRequester
is no obsolete - Beamable no longer sends "Accept-Language" headers
- New players will now get a locale and a location stat based on the Unity
Application.language
field.
no changes
- CurrencyHUD no longer throws null reference error when associated currency content has no addressable icon.
no changes
- Content query strings are no longer case sensitive
- Content creation menu list is now sorted
- Editor will re-attempt failed requests before auto logging out
- DISABLE_BEAMABLE_TOOLBAR_EXTENDER directive now covers all scenarios
- Trying to rename a deleted content object will no longer log an exception
- Unity 2021 LTS support.
PreventAddressableCodeStripping
Core Configuration setting that automatically generates a link.xml file that will preserve addressable types.TryClaim
method inEventService
to attempt a claim, even if one is not invalid.GetDeviceId
method inAuthService
to retrieve the current device id.deviceIds
field onUser
object that provides all associated device ids.- Content sorting option in
Content Manager
. - Documentation to
IBeamableAPI
and all related accessors. Subscribe<T>
method toINotificationService
to avoid awkward serialization handling.- Implicit conversion operators from
Optional<T>
objects wrapping a value type to matchingNullable<T>
types. - Inline style editor in BUSS theme manager.
- Added
LobbyService
andPlayerLobby
to support new Lobby functionality.
ManifestSubscription
subscription no longer accepts the scope field- AccountHud logs a warning when pressed if there isn't an AccountManagementFlow in the scene.
- Increased the AdminFlow scroll speed
- InventoryFlow can now be configured at the GameObject level.
- Edit mode for Buss Style Card has been removed in favor of context menus for selector label, variables and properties.
- Claiming an event that a player never submitted a score for will report an accurate error message.
- Added tooltips to Microservice Manager elements which didn't have them.
- Microservice Manager buttons now highlight on hover.
- Beamable third party context systems register with a default order of -1000.
- Global style sheet is turned now into a list of global style sheets.
- Content tags are split on
','
characters in addition to' '
s. - A
IBeamableDisposable
'sOnDispose
method can now resolve services from theIDependencyProvider
that is being disposed. HeartBeat
will now send heartbeat requests faster for our newer live backend services such as Lobbies- Content validation for ID fields will now accept IDs without the prefix
- It is now possible to set background sprite as a main texture in SDF Image.
- It is now possible to choose 9-slice source and Pixels Per Unit multiplier in SDF image.
- StoreView prefab now works in landscape mode.
- Playmode ContentObject refresh with disabled domain reload on Unity 2019 and 2020.
- Reading content in offline mode will no longer throw an exception if there is offline cache available
- Android sign-in will always allow user to select an account.
- Editor time Content downloads ignore content where no C# class exists.
- Account management will no longer log an error after pressing change password button more than once.
- Content Manager no longer logs inaccurate warning after renaming content.
- Notification handling for multiple
BeamContext
instances. - Listing 'sku' price type was incorrect. Fixed to 'skus'.
- The player's location is detected automatically
- Matchmaking no longer breaks after user switch from Account Management flow.
- Unity 2018 LTS support.
- Documentation links no longer direct to missing web pages.
no changes
AccessTokenStorage
no longer throwsArgumentOutOfRangeException
when starting in offline mode
- The namespace for
PropertySourceTracker
no longer invalidates the usage ofUnityEditor.Editor
as a type reference
- Added
RecoverWith
extension method overloads toPromise<T>
that allow for configuring a promise to recover from failure over multiple attempts. - Selected Buss Element section in Buss Theme Manager
- Added
AddAsChild(VisualElement, string, params string[])
toBeamHintVisualsInjectionBag
to allowBeamHintDetailConverter
functions to build and inject dynamically createdVisualElements
into Hint Details.
- Behaviour of Add Style button in Buss Theme Manager
- Add Style button moved above Buss Style Cards section in Buss Theme Manager
- Buss Element selection improvement in Buss Theme Manager
- Application will check if there are redundant files in content disk cache on each start. All files but the one needed will be deleted to free disk space.
- All implementations of
[BeamContextSystem]
or[RegisterBeamableDependencies]
will be preserved durring Unity code stripping - Updated C#MS Publish window UI/UX
- Properties in Buss Style Card sorted alphabetically by default
- Constant "Invalid token, trying again" errors in the Editor after 10 days.
- Compilation error when using new
com.unity.inputsystem
- Deferred retry of failed uploads to the poll coroutine, to eliminate an infinite loop that could crash the app.
- Content string fields can contain escaped characters, and won't be double escaped after download
- Fixed issue with
ReflectionCache
that happened on certain platforms whenIEnumerable
returning functions had to be parsed forAttributesOfInterest
. - Possible
DivideByZero
exxception that was thrown durring Toolbox usage
CoreConfiguration.EnableInfiniteContextRetries
andCoreConfiguration.ContextRetryDelays
options to allow developers to override what happens when a BeamContext cannot initialize
This is a broken package. It includes changes from the 1.1.0 release. Please do not use this version.
- Optional parameter
mergeGamerTagToAccount
toIAuthService.LoginDeviceId
to support recovering an old account
- Unity IAP failure to initialize on device won't hang
BeamContext.Default.OnReady
IBeamableRequester
implementations no longer disposeUnityWebRequest
too soon
- All
IBeamableRequester
implementations disposeUnityWebRequest
after usage - Beamable.Platform assembly definition references Facebook.Unity dll if it exists
- Windows Microservices first time build issue regarding empty build directories
IDeviceIdResolver
is now a dependency of theAuthService
, and can be overriden to produce different device ids other thanSystemInfo.deviceUniqueIdentifier
- Content Baking feature now also bakes content manifest which is used when there is no Internet connection
- The
Promise.ExecuteRolling
function has been deprecated in favor ofPromise.ExecuteInBatchSequence
- The startup sequence runs startup requests at the same time for speed improvements
- All Beamable Assembly Definitions use the
OverrideReferences
flag so they don't automatically reference project DLLs
- The
ResolveAll
content function no longer exceeds stack frame size limits - Beamable assets are loaded with their full name so asset types won't collide
- Null references associated with Realm dropdown in Editor
BeamContext
classes and new player centric SDK types likePlayerInventory
- Beamable Assistant window
- BUSS Theme Manager window
- All Beamable Portal interactions use the new Beta Portal
- Consolidated internal assembly type scanning into
ReflectionCache
system. This improves editor time performance by an order of magnitude. ServiceManager
no longer provides Beamable types. UseBeamContext
instead.Beamable.API.Instance
now returnsBeamContext.Default.Api
after waiting for the context initialization
- Deleting all items from an inventory subscription notifies client
- Immediately failed promises throw uncaught errors on access
- Disabling multiple content namespaces setting will disable both Publish button dropdown and content namespace dropdown
- Content baking will process correct number of objects regardless of local changes
- Baked content meta file warning should not appear anymore
- Immutable prefabs are no longer dirtied by the legacy skinning system
- The Reset command works on unsaved scenes
EventContent.StartDate
is kept in sync with schedule definition
- Improved baked content performance by keeping data in a single file and limiting number of IO operations.
- The
Editor 'namespace' but is used like a 'type'
error has been fixed - The "Whats New" banner links to blog post if available
- Reference to Unity 2019.3 specific
HasOpenInstances
function removed in Unity 2018
- 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 theListingContent
to enable setting a purchase limit scoped to the schedule instanceSearchStats()
admin method is usable from client and microservice code.- Device ID Deletion APIs (bulk and selective)
BeamableEnvironment
has moved to the Runtime to enable sdk version checking at runtimelist_content
Admin Command displays limited results. You can specify start index forlist_content
command
- Renamed Beamable's iOS plugin for Google Sign-In from
GoogleSignIn
toBeamableGoogleSignIn
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 - Removed unnecessary Unity asset reimport for identical content data.
- no changes
- Added
RemoveDeviceId
method inAuthService
- Limit amount of elements displayed by
list_content
command in Admin console, allow to specify start index forlist_content
command
- Removes Menu Window/Panels/1 warning after opening schedule type dropdown on Unity 2019 and 2020
- Limit displayed admin console output
CoreConfiguration
to project settings to tweak how our Promise library handles uncaught promises by defaultmatchingIntervalSecs
forSimGameType
allows game makers to specify the rate by which matchmaking occurs
PromiseBase.SetPotentialUncaughtErrorHandler(handler, replace)
-- replaces by default, but supports adding handlers by passingfalse
to second parameter- New design of Microservices Publish Window with support for Storage Objects
CloudSavingService
serialization error caused by Invariant Culture- Content Manager Publish window loading bar width
- Current Hud no longer emits null reference error if no image is assigned
- calls to Leaderboard scoring API support large numbers
- schedule UI validation for daily and day-of-week schedules
- Device id authentication support
- Steam third party authentication support
- Auto-complete text feature for
AdminFlow
prefab - New default
currency.coins
currency that demonstrates client writable currency. - Ability to remove a third party authorization with
RemoveThirdPartyAssociation
method in AuthService - Cohort Settings for EventContent that support partitioning by player stats
- Event schedules for repeating events
- Listing schedules for repeating listings
- Support for archiving manifest namespaces.
- A
Fetch()
method to all subscribable SDKs that requests and returns the raw subscription data
- An optional
forceRefresh
parameter to all subscribable SDK'sGetCurrent()
method that forces a network request API.Instance.Requester
is now anIBeamableRequester
- The
Promise
class is no longer static, and extends fromPromise<Unit>
- The realm dropdown now has a loading spinner on realm switches
- Content Inspector datepicker with no user given value no longer constantly updates
- Content deletion popup opens as separate window
- Microservice separator (draggable) moved directly under log group
- If no internet connection exists on startup,
API.Instance()
will retry every 2 seconds until a connection is established - Able to build games to device
ExecuteRolling
method ofPromise
now supports a condition on which stop execution- No longer re-imports config-defaults without cause
- Batch imports Module Configuration files to improve speed
- No longer refreshes asset database on ContentIO FindAll()
- Allow Content Deserializer to consume incorrectly typed fields as empty values
- Support for disabling Unity Domain Reload
- Content console commands (GET_CONTENT, LIST_CONTENT, CONTENT_NAMESPACE, SET_CONTENT_NAMESPACE)
- Easy custom content class creation in
Create/Beamable/Content Types
- Resetting content to the server state under
Window/Beamable/Utilities/Reset Content
MustBeSlugString
content validation with configurable option to allow underscoresOptionalBoolean
type for content- Leaderboard Apis that support fetching partition/cohort cached assignment transparently
- Ability to disable VIP currency awards on Mail Rewards
- PlayerSettings scripting define symbols are saved in Diagnostics file
- Beamable package version Toolbox announcement
- Request and Responses to and from Beamable are GZipped if larger than 1K
- Leaderboard Content supports partitioning, max size, and cohorting
- Leaderboard Update api will transparently fetch cached assignment
PlayerStatRequirements
now support providing the domain and access of statsMustBeOneOf
content validation attribute now supports Optional types- Beamable Platform errors all extend from
RequesterException
in Unity Client and microservice code - Redesigned internal Toolbox announcements
- Content Manager publish flow shows Realm and Namespace for confirmation
ExecuteRolling
method ofPromise
now supports a condition on which stop execution
- Added missing attributes for content classes
- SocialService
SocialList
serialization - Account Management Flow third party login buttons use correct third parties
- Content Manager Window item selection is cleared after changing the Namespace
- Adjusted confirm window look while trying to delete any content
- Content Manager Popups refresh after Unity domain reload
- Verbose logging capability available in Project Settings
- Exposed cohort requirements for listing content
- Admin commands: ADD_CURRENCY, SET_CURRENCY, GET_CURRENCY
- Tournaments now supports the ability to specify group/guild-based rewards
- Tournaments now support player score rewards in addition to the existing rank rewards
- Tournaments allow developers to specify how many stages a player regresses if they do not participate in a cycle
- Inventory now supports setting properties on currencies at runtime
- Logging back into the Toolbox will remember your Realm selection per game
- Positioning of Validate, Publish and Download windows available from Content Manager
- Re-namespaced internal UnityEngine.UI.Extensions to Beamable.UnityEngineCopy.UI.Extensions so as to not collide with other versions.
- no changes
- Facebook SDK won't be referenced unless the Facebook setting is checked in the Account Management Configuration
- Integration for Unity In-App-Purchasing 3.x.x packages
- Content references will update after a manifest subscription update
- Rearranged the Portal button and Account button in Toolbox
- Rearranged the Content Count label in Content Manager
- Password reset codes can use PINs instead of UUIDs
- WebGL build support
- Multiple content namespaces, both in Editor and Runtime. Must enable in Project Settings
- Facebook Limited Login (iOS) Authentication
"portal"
console command, which opens portal to the current player's admin page- Multi-object editing support for Content Reference selector
- New editor tooling for ISO date strings in Content Objects
- Realm Picker in the top right of Content Manager
- Last publish date in bottom-right of Content Manager
- ISerializationCallbackReceiver support for Content Object serialization
- Async support for
Promise<T>
types - Added Donate api call method to GroupApi
- Matchmaking state transition bug
- Increases heartbeat rate for MatchMaking
- Fixed isHttpError obsolete errors
- Removed use of Social.localUser.id from GameCenter Authentication
- Support for GameCenter Authentication on iOS 13.5+
- GameCenter SDK errors with non-iOS il2cpp builds
- Fixed possible null reference exception in MustReferenceContent validation attribute
- GameCenter sdk Authentication Support
- Adds an optional field, activeListingLimit to Store Content
- Switched MatchmakingService API to point to our new backend matchmaking service.
(this release was skipped)
- Console Configurations ToggleKey will be reset to BackQuote.
- Fixed Promise multithread safety.
- Fixed ContentRef property drawer showing invalid references when deleted.
- Fixed MustReferenceContent validation for lists of Content References.
- Support for the new Unity Input Manager System.
- Added OnUserLoggingOut event available from API. The event fires before a user switches account.
- Doc Url to package.json.
- Event phase validation. Events can no longer have zero phases. This may lead to disappearing Event Phases if your Beamable version is mismatched.
- Switched MatchmakingService API to point to our new backend matchmaking service.