0.15.0

Changelog

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.

[1.2.0]

Added

  • Unity 2021 LTS support.
  • PreventAddressableCodeStripping Core Configuration setting that automatically generates a link.xml file that will preserve addressable types.
  • TryClaim method in EventService to attempt a claim, even if one is not invalid.
  • GetDeviceId method in AuthService to retrieve the current device id.
  • deviceIds field on User object that provides all associated device ids.
  • Content sorting option in Content Manager.
  • Documentation to IBeamableAPI and all related accessors.
  • Subscribe<T> method to INotificationService to avoid awkward serialization handling.
  • Implicit conversion operators from Optional<T> objects wrapping a value type to matching Nullable<T> types.
  • Inline style editor in BUSS theme manager.
  • Added LobbyService and PlayerLobby to support new Lobby functionality.

Changed

  • 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's OnDispose method can now resolve services from the IDependencyProvider 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.

Fixed

  • 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.

Removed

  • Unity 2018 LTS support.

[1.1.4]

Fixed

  • Documentation links no longer direct to missing web pages.

[1.1.3]

no changes

[1.1.2]

Fixed

  • AccessTokenStorage no longer throws ArgumentOutOfRangeException when starting in offline mode

[1.1.1]

Fixed

  • The namespace for PropertySourceTracker no longer invalidates the usage of UnityEditor.Editor as a type reference

[1.1.0]

Added

  • Added RecoverWith extension method overloads to Promise<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[]) to BeamHintVisualsInjectionBag to allow BeamHintDetailConverter functions to build and inject dynamically created VisualElements into Hint Details.

Changed

  • 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

Fixed

  • 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 when IEnumerable returning functions had to be parsed for AttributesOfInterest.
  • Possible DivideByZero exxception that was thrown durring Toolbox usage

[1.0.8]

Added

  • CoreConfiguration.EnableInfiniteContextRetries and CoreConfiguration.ContextRetryDelays options to allow developers to override what happens when a BeamContext cannot initialize

[1.0.7]

This is a broken package. It includes changes from the 1.1.0 release. Please do not use this version.

[1.0.6]

Added

  • Optional parameter mergeGamerTagToAccount to IAuthService.LoginDeviceId to support recovering an old account

[1.0.5]

Fixed

  • Unity IAP failure to initialize on device won't hang BeamContext.Default.OnReady

[1.0.4]

Fixed

  • IBeamableRequester implementations no longer dispose UnityWebRequest too soon

[1.0.3]

Fixed

  • All IBeamableRequester implementations dispose UnityWebRequest after usage
  • Beamable.Platform assembly definition references Facebook.Unity dll if it exists

[1.0.2]

Fixed

  • Windows Microservices first time build issue regarding empty build directories

[1.0.1]

Added

  • IDeviceIdResolver is now a dependency of the AuthService, and can be overriden to produce different device ids other than SystemInfo.deviceUniqueIdentifier
  • Content Baking feature now also bakes content manifest which is used when there is no Internet connection

Changed

  • The Promise.ExecuteRolling function has been deprecated in favor of Promise.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

Fixed

  • 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

[1.0.0]

Added

  • BeamContext classes and new player centric SDK types like PlayerInventory
  • Beamable Assistant window
  • BUSS Theme Manager window

Changed

  • 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. Use BeamContext instead.
  • Beamable.API.Instance now returns BeamContext.Default.Api after waiting for the context initialization

Fixed

  • 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

[0.18.2]

Changed

  • Improved baked content performance by keeping data in a single file and limiting number of IO operations.

[0.18.1]

Fixed

  • 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

[0.18.0]

Added

  • 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.
  • Device ID Deletion APIs (bulk and selective)

Changed

  • BeamableEnvironment has moved to the Runtime to enable sdk version checking at runtime
  • list_content Admin Command displays limited results. You can specify start index for list_content command

Fixed

  • 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
  • Removed unnecessary Unity asset reimport for identical content data.

[0.17.4]

  • no changes

[0.17.3]

Added

  • Added RemoveDeviceId method in AuthService
  • Limit amount of elements displayed by list_content command in Admin console, allow to specify start index for list_content command

Fixed

  • Removes Menu Window/Panels/1 warning after opening schedule type dropdown on Unity 2019 and 2020
  • Limit displayed admin console output

[0.17.2]

Added

  • CoreConfiguration to project settings to tweak how our Promise library handles uncaught promises by default
  • matchingIntervalSecs for SimGameType allows game makers to specify the rate by which matchmaking occurs

Changed

  • PromiseBase.SetPotentialUncaughtErrorHandler(handler, replace) -- replaces by default, but supports adding handlers by passing false to second parameter
  • New design of Microservices Publish Window with support for Storage Objects

Fixed

  • 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

[0.17.1]

Fixed

  • calls to Leaderboard scoring API support large numbers
  • schedule UI validation for daily and day-of-week schedules

[0.17.0]

Added

  • 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

Changed

  • An optional forceRefresh parameter to all subscribable SDK's GetCurrent() method that forces a network request
  • API.Instance.Requester is now an IBeamableRequester
  • The Promise class is no longer static, and extends from Promise<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

Fixed

  • 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

[0.16.1]

Fixed

  • ExecuteRolling method of Promise 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

[0.16.0]

Added

  • 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 underscores
  • OptionalBoolean 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

Changed

  • 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 stats
  • MustBeOneOf 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 of Promise now supports a condition on which stop execution

Fixed

  • 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

[0.15.0]

Added

  • 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

Fixed

  • Logging back into the Toolbox will remember your Realm selection per game
  • Positioning of Validate, Publish and Download windows available from Content Manager

[0.14.3]

Fixed

  • Re-namespaced internal UnityEngine.UI.Extensions to Beamable.UnityEngineCopy.UI.Extensions so as to not collide with other versions.

[0.14.2]

  • no changes

[0.14.1]

Fixed

  • Facebook SDK won't be referenced unless the Facebook setting is checked in the Account Management Configuration

[0.14.0]

Fixed

  • Integration for Unity In-App-Purchasing 3.x.x packages
  • Content references will update after a manifest subscription update

Changed

  • 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

Added

  • 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

[0.13.3]

Fixed:

  • Matchmaking state transition bug
  • Increases heartbeat rate for MatchMaking

[0.13.2]

Fixed:

  • Fixed isHttpError obsolete errors
  • Removed use of Social.localUser.id from GameCenter Authentication

Added:

  • Support for GameCenter Authentication on iOS 13.5+

[0.13.1]

Fixed:

  • GameCenter SDK errors with non-iOS il2cpp builds

[0.13.0]

Fixed:

  • Fixed possible null reference exception in MustReferenceContent validation attribute

Added

  • GameCenter sdk Authentication Support
  • Adds an optional field, activeListingLimit to Store Content

Changed

  • Switched MatchmakingService API to point to our new backend matchmaking service.

[0.12.0]

(this release was skipped)

[0.11.0]

Changed

  • Console Configurations ToggleKey will be reset to BackQuote.

Fixed

  • Fixed Promise multithread safety.
  • Fixed ContentRef property drawer showing invalid references when deleted.
  • Fixed MustReferenceContent validation for lists of Content References.

Added

  • 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.