6.6 KiB
Changelog
2.0.0
Breaking changes, following Rudder.Core 2.0.0 and the backend environments
release. The bundled Runtime/Plugins/Rudder.Core.dll is rebuilt from
Rudder.Core 2.0.0.
A project now has exactly two environments, staging and prod. The SDK key
set in RudderConfiguration belongs to one of them, so the environment is
resolved at login and carried inside the tokens; nothing in the API takes an
environment argument and players do not cross between environments. Tokens
saved to PlayerPrefs by 1.x have no environment claim and are rejected with
401: the refresh fails, the stored tokens are cleared and
Auth.AuthStateChanged fires SignedOut, so call LoginWithDeviceAsync
again on that event.
Quests, scenarios and offers are addressed by slug instead of id, because ids
differ between staging and prod. Quest.Id became Quest.Slug,
Quests.ClaimAsync takes a quest slug, Quests.ReportProgressAsync returns
quest slugs, Stores.PurchaseAsync takes an offer slug and Offer carries a
Slug, QuestMetrics.PurchaseOffer builds its metric from the offer slug,
and every scenario-scoped effect and request exposes ScenarioSlug instead of
ScenarioId (PendingEffect, ScenarioCompletedEffect,
ScenarioFailedEffect, the battle pass requests,
BattlePass.GetProgressAsync). Store.ScenarioId is unchanged — it is an
authoring reference, not a player-facing one. The Store/Inventory and
Scenarios samples were updated to offer.Slug.
Also inherited from Core: the effects client reconciles against every pending
poll, so a run that disappeared server-side emits OnScenarioCompleted
instead of lingering, and run_not_active is a terminal rejection that drops
the run and emits OnScenarioFailed.
1.0.0
Breaking changes, following the Rudder.Core 1.0.0 rework:
- Bundled
Rudder.Core.dllupdated to 1.0.0. The local scenario graph engine is gone.client.Scenariois onlyTriggerAsync(eventName). Pending nodes surface onclient.Effects(OnNotification,OnStoreOffer,OnLeaderboard,OnWait,OnQuest,OnBattlePass,OnBattlePassLevel,OnScenarioCompleted,OnScenarioFailed). - Session types (
NotificationSession,StoreOfferSession, …) are now*Effecttypes. Completion methods:Done/DoneAsync,Purchase/Decline,End/Claim,ReportProgress,LevelUp. UnityPlanSchedulerremoved together with the coreIPlanSchedulerabstraction andRudderClientOptions.Scheduler; the factory no longer wires a scheduler.UnityPlanStateStore,UnityRealtimeTransportFactory,Runtime/Sources/Realtime/websocket adapters, andRuntime/Plugins/WebGL/RudderWebSocket.jslibremoved together with CoreIPlanStateStore/IRealtimeTransport/RealtimeService.RudderConfiguration.RealtimeUrlandRudderUnityClientOptions.RealtimeUrlremoved.Rudderno longer disconnects a realtime socket on quit.Rudder.Updatestill pumpsclient.Update(Time.deltaTime)(effects heartbeat and wait-deadline checks).- Samples and docs use
Auth.LoginWithDeviceAsync. Pending effects are fetched after sign-in via the heartbeat;Scenario.RestoreAsync/AuthorizeWithDeviceAsyncare gone. - Core model fields are nullable now; samples check
PurchaseResponse.Success != trueinstead of!Success. - Feature sample scenes for authentication, remote config, storage, stores
and inventory, leaderboards, and scenarios (
Samples~). - Removed the Cozy Collector example project from the Unity SDK repo.
- Added
AGENTS.mdwith Unity integration rules for coding agents. Rudder.Initialize()is now synchronous, takes no arguments, and returnsRudderClient. PutRudderin a scene with aRudderConfiguration. The oldInitialize(RudderConfiguration)(hidden GameObject) is gone.
0.3.0
Breaking changes, following the Rudder.Core 0.3.0 rework:
- Bundled
Rudder.Core.dllupdated to 0.3.0: the UGC surface is gone (client.Ugc,IUploadTransport,RudderClientOptions.UploadTransport),BattlePassServicemethods now take scenario context,BattlePassSessionexposes bound battle pass operations, andBattlePassLevelSession.Completewas renamed toClaim. UnityUploadTransportremoved together with the coreIUploadTransportabstraction; the factory no longer wires an upload transport.RudderConfigurationdefaults now point at production (https://api.rudder.build);RealtimeUrlfollows the prodwss://pattern but the relay is not deployed yet.
0.2.0
Breaking changes, following the Rudder.Core 0.2.0 rework:
Ruddermoved into theRudderSdk.Unitynamespace.Rudderis now a thin facade:Client,State(RudderState),LastError,ReadyandInitialize(RudderConfiguration). The service shortcuts (Rudder.Auth,Rudder.Stores, ...) are gone — useRudder.Client.*.Rudder.Initialize(configuration)creates its own hidden GameObject when no scene component exists; statics reset on Enter Play Mode without domain reload, and realtime disconnects gracefully on quit.LiveOpsConfigurationrenamed toRudderConfiguration(Create > Rudder > Configuration), with tooltips, an empty-ProjectKey warning and a configurableTimeoutSeconds(default 10).- Core renames propagate:
client.Scenarios→client.Scenario,BattlepassService→BattlePassService,SendAsync→TriggerAsync,LoginViaDeviceAsync→LoginWithDeviceAsync(region, language, nickname?),StoresService.BuyAsync→PurchaseAsync(slug, offerId, idempotencyKey?). - Scenario events reduced to the canonical set (
OnNotification,OnStoreOffer,OnLeaderboard,OnConfigChanged,OnWait,OnQuest,OnBattlePass,OnBattlePassLevel,OnScenarioCompleted,OnScenarioFailed); legacy events and*Sessionrenames applied. - Transport errors are now
RudderApiExceptionsubclasses (RudderAuthException,RudderNotFoundException,RudderRateLimitException,RudderNetworkException); the bareExceptionin the upload transport and the stringly"network"/"http_error"codes are gone. UnityWebRequestExecutor/UnityUploadTransportwait viaUnityWebRequestAsyncOperation.completedinstead of busy-polling and apply a configurableUnityWebRequest.timeout.IRudderLoggernow reports aRudderLogLevel;IUnityLoggerSinkmirrors it andUnityDebugLoggerSinkmaps levels toDebug.Log*.- Bundled plugins slimmed down: only
Rudder.Core.dllships. Newtonsoft.Json comes fromcom.unity.nuget.newtonsoft-json;Tiny-JSON.dlland theSystem.*facades were removed.
0.1.0
Initial UPM package: Rudder.Core wrapper with UnityWebRequest transport, PlayerPrefs storage, websocket realtime and the Cozy Collector demo.