Skip to main content

API reference

One page per type: what it is, its members, what each method takes and returns, and when it throws. The guides explain how the pieces fit together; this section is for looking things up.

Setupโ€‹

TypeDescription
ProjectVSettingsThe SDK settings asset. Create it with Assets > Create > SilverTiger > ProjectV SDK > Settings, pick the Environment and fill in its fields in the Inspector.
ProjectVStartupSettingsWhich player data the SDK loads at startup. Every option must stay on; ProjectVSettings.Validate fails when one is off.
ProjectVEnvironmentThe server environment the game connects to. Each one has its own server address in ProjectVSettings.

Startupโ€‹

TypeDescription
IProjectVStartupPresenterThe startup contract for the Login scene: start it once the game content is loaded, observe the state, and show the screen that matches each ProjectVStartupStatus.
ProjectVStartupCommandResultThe outcome of one IProjectVStartupPresenter.StartAsync call.
ProjectVStartupErrorWhy startup failed, in a form the Login UI can show or localize.
ProjectVStartupSnapshotThe startup state the Login scene draws. Read-only; every change arrives as a new instance.
ProjectVStartupAdmissionOutcomeThe server's answer to whether this game build may connect.
ProjectVStartupStatusWhere game startup is right now; the Login scene shows one screen or message per value.

Authenticationโ€‹

TypeDescription
IProjectVAuthenticatedSceneGateGuards scenes that need a signed-in player. A scene checks IsReady; when it is false, it saves itself with RequestReturnTo and opens Login. After sign-in, Login opens the scene from ConsumeReturnScene. You load the scenes; the gate only remembers where to go.
IProjectVAuthenticationPresenterThe sign-in contract for the Login scene: observe the state, call a command, redraw on change. Commands return a result for server, network and input failures instead of throwing. A command started while another runs waits for it to finish.
IProjectVGuestIdentityProviderGives the Guest ID for this device, to pass to Guest sign-in.
ProjectVAuthenticationCommandResultThe outcome of one sign-in command.
ProjectVAuthenticationErrorWhy a sign-in command failed, in a form the Login UI can show or localize.
ProjectVAuthenticationSnapshotThe sign-in state the Login scene draws: status, the signed-in player and the last error. Read-only; every change arrives as a new instance.
ProjectVGuestIdentityProviderThe standard Guest ID source: it creates a random ID once and keeps it on this device, so the player gets the same Guest account on every launch. The ID is not a secret. Uninstalling the game or clearing its data loses the ID and with it the Guest account.
ProjectVNativeAuthenticationAvailabilityViewThe availability of one sign-in provider, from IProjectVAuthenticationPresenter.GetNativeAvailability.
ProjectVNativeAuthenticationOptionsExtra options for Google, Apple and Guest sign-in. Passing null instead is fine.
ProjectVPasswordRegistrationInputWhat the player typed into the register form.
ProjectVAuthenticationStatusWhere the player is in sign-in right now.
ProjectVNativeAuthenticationAvailabilityWhether a Google or Apple sign-in button can work on this device and build.
ProjectVNativeAuthenticationProviderA sign-in provider that uses the device's own sign-in prompt.

Accountโ€‹

TypeDescription
IProjectVAccountPresenterThe Account contract: logout and two-step account deletion (request, then confirm). Observe the state, call a command, redraw on change. Commands return a result for server and network failures instead of throwing. A command started while another runs waits for it to finish.
ProjectVAccountCommandResultThe outcome of one Account command.
ProjectVAccountDeletionChallengeA pending account deletion that the player still has to confirm.
ProjectVAccountErrorWhy an Account command failed, in a form the UI can show or localize.
ProjectVAccountSnapshotThe Account state the UI draws: status, the pending deletion and the last error. Read-only; every change arrives as a new instance.
ProjectVAccountStatusWhat the Account presenter is doing right now: logout or the two-step account deletion.

Lobbyโ€‹

TypeDescription
IProjectVLobbyPresenterLower-level Lobby state source. Most screens should use IProjectVLobbyScreen, which loads and redraws for you.
IProjectVLobbyScreenThe Lobby screen contract: observe the view and redraw on change. Loading and refreshing are handled for you.
ProjectVLobbyCommandResultThe outcome of IProjectVLobbyPresenter.RefreshAsync.
ProjectVLobbyErrorWhy the last Lobby load failed.
ProjectVLobbyProfileThe player's identity and level as shown in the Lobby. Read-only.
ProjectVLobbySnapshotThe Lobby presenter state: status, profile and the last error. Read-only; every change arrives as a new snapshot.
ProjectVLobbyViewEverything the Lobby draws: the confirmed profile, never an in-flight request.
ProjectVLobbyStatusWhat the Lobby presenter is doing right now.
TypeDescription
IProjectVHeaderPresenterFeeds the top-bar header: currency balances and stamina. Subscribe once when the header is shown and dispose the subscription when it is hidden.
ProjectVHeaderCurrencyBindingLinks one header slot (such as the credit counter) to the wallet currency it shows.
ProjectVHeaderCurrencyCatalogThe list of currencies the header shows, one binding per header slot. Usually built from a ProjectVHeaderCurrencyCatalogAsset.
ProjectVHeaderCurrencyCatalogAssetInspector asset that lists which currency each header slot shows. Create it from ProjectV/Backend V3/Header Currency Catalog, fill one row per slot, and assign it to the ProjectV presentation scope.
ProjectVHeaderCurrencyValueThe player's current balance of one header currency, ready to show in its slot.
ProjectVHeaderSnapshotEverything the top-bar header shows: currency balances and stamina. Read-only; every change arrives as a new snapshot.
ProjectVStaminaReadingStamina at one moment, with the wait until the next point and until it is full. Get one from ProjectVStaminaRecovery.Read.
ProjectVStaminaRecoveryLive stamina countdown from ProjectVHeaderSnapshot.StaminaRecovery. Stamina keeps recovering between server updates, so call Read every frame or second to show the current value and countdown without asking the server again.

Characterโ€‹

TypeDescription
IProjectVCharacterPresenterThe Character presenter. Pages should use IProjectVCharacterScreen instead; use the presenter only for what the screen contract does not cover, such as equipment, backpack, skins and two-step confirmations. Commands run one at a time; a command never throws for a server failure, it returns a failed ProjectVCharacterCommandResult.
IProjectVCharacterScreenThe Character screen contract: observe the view, call commands, redraw on change. Loading, syncing, retries and double-tap protection are handled for you. Commands run one at a time, and a second tap on a running command returns the same result.
ProjectVCharacterBackpackSlotOne backpack slot and the item in it. Read-only.
ProjectVCharacterCastSkillOne cast skill of a character: its level, the skill it unlocks next and the price. Read-only.
ProjectVCharacterCastSkillCostOne price line of a cast skill upgrade. Read-only.
ProjectVCharacterCastSkillSetThe cast skills of one character: up to one per slot. Read-only.
ProjectVCharacterCastSkillUpgradeCostOne price line of a cast skill upgrade next to what the player owns. Read-only.
ProjectVCharacterCastSkillUpgradeDetailsWhether one cast skill can be upgraded now, with its price next to what the player owns and a ready-made reason when it cannot. Get it from ProjectVCharacterData.GetCastSkillUpgradeDetails.
ProjectVCharacterCastSkillsSnapshotThe cast skills of every owned character. Read-only.
ProjectVCharacterCommandResultThe result of a Character presenter command.
ProjectVCharacterCostOne price line: how much of a resource an upgrade costs. Read-only.
ProjectVCharacterDataEverything the Character screen shows, as last confirmed by the server: the roster, loadout, skill trees, inventory, wallet, equipment, backpack, skins, EXP items and cast skills. Read-only; a change arrives as a new instance.
ProjectVCharacterEntryOne owned character or ally: level, EXP, stats and what its next level needs. Read-only.
ProjectVCharacterEquipmentOne piece of equipment from the catalog, owned or not: its slot, level and next upgrade price. Read-only.
ProjectVCharacterErrorWhy a Character load or command failed, in a form that is safe to show.
ProjectVCharacterItemRefundOne item a level reset gives back, and how many. Read-only.
ProjectVCharacterLevelPolicyLevel-up and level-reset helpers for the Character screen: previews and automatic EXP item picks, worked out from the loaded data without sending anything.
ProjectVCharacterLevelResetPreviewWhat resetting a character's level would do: whether it is possible, the message to show and the items it gives back. Get it from ProjectVCharacterLevelPolicy.ResetPreview.
ProjectVCharacterLevelResetRequirementsWhether the server allows a character's level to be reset, and what it gives back. Read-only.
ProjectVCharacterLevelStepOne level of a character's level path: the total EXP it needs and the stats it gives. Read-only.
ProjectVCharacterLoadoutSlotOne loadout slot and the character placed in it. Read-only.
ProjectVCharacterProgressionPendingA level-up or level reset whose answer was lost. Show it as pending and offer a retry; it keeps its original character and items. Read-only.
ProjectVCharacterResourceHow much of one currency or item the player owns. Read-only.
ProjectVCharacterResourceNamesEnglish display names for the resources Character upgrades cost.
ProjectVCharacterSkillOne node of a character's skill tree: its rank, price and what still blocks it. Read-only.
ProjectVCharacterSkillPrerequisiteA rank another skill must reach before a skill can rank up. Read-only.
ProjectVCharacterSkillTreeOne character's skill tree and its own unspent skill points. Read-only.
ProjectVCharacterSkillUpgradeCostOne price line of a skill rank next to what the player owns. Read-only.
ProjectVCharacterSkillUpgradeDetailsWhether one skill can rank up now, with its price next to what the player owns and a ready-made reason when it cannot. Get it from ProjectVCharacterData.GetSkillUpgradeDetails. Read-only.
ProjectVCharacterSkinOne skin from the catalog, owned or not. Read-only.
ProjectVCharacterSnapshotThe Character presenter's state at one moment. Read-only; every change is a new snapshot.
ProjectVCharacterStatsA character's combat stats at one level, as the server sets them. Read-only.
ProjectVCharacterUpgradeRequirementsWhat a character's next level needs and gives, as the server sets it. Read-only.
ProjectVCharacterUpgradeStateWhether a character can level up now, and if not, why, with the price next to the player's balances. Get it from ProjectVCharacterSnapshot.GetUpgradeState or ProjectVCharacterView.UpgradeState. Read-only.
ProjectVCharacterViewEverything the Character screen draws. It is immutable and always complete: values come from the last confirmed data, never from an in-flight request.
ProjectVCharacterXpItemDefinitionOne kind of EXP item: how much EXP it gives and whether it is for characters or allies. Read-only.
ProjectVCharacterXpItemSelectionOne EXP item the player chose to spend, and how many. Read-only.
ProjectVCharacterXpUpgradePreviewWhat leveling a character with a set of EXP items would do: whether it can be sent, the EXP gained, and the level and stats it would reach. Read-only.
ProjectVCharacterCastSkillCostKindWhere a cast skill cost is paid from.
ProjectVCharacterCastSkillLockReasonWhy a cast skill cannot be upgraded yet.
ProjectVCharacterCastSkillSlotWhich cast skill slot of a character a skill sits in.
ProjectVCharacterCastSkillStateWhether a cast skill can be upgraded, as the server reports it.
ProjectVCharacterProgressionOutcomeWhat the server confirmed during a level-up or level reset.
ProjectVCharacterProgressionStageHow far a pending level-up or level reset got before its answer was lost.
ProjectVCharacterSkillLockReasonWhy a skill cannot get its next rank yet.
ProjectVCharacterSkillStateWhether a skill can get its next rank, as the server reports it.
ProjectVCharacterStatusWhat the Character presenter is doing right now.
ProjectVCharacterUpgradeBlockReasonWhy a character cannot level up right now.

Allianceโ€‹

TypeDescription
IProjectVAlliancePresenterThe Alliance presenter: the player's allies, ally selection, leveling with EXP items, weapon skill upgrades and level resets. Pages should use IProjectVAllianceScreen instead; use the presenter only for what the screen contract does not cover.
IProjectVAllianceScreenThe Alliance screen contract: observe the view, call commands, redraw on change. Loading, synchronisation, retries and double-tap protection are handled for you.
ProjectVAllianceCommandResultThe result of an Alliance presenter command.
ProjectVAllianceDataThe Alliance data at one moment: the player's allies, the selected ally, and the EXP items and resources used to level them. Read-only; a change arrives as a new instance.
ProjectVAllianceSnapshotThe Alliance presenter's state at one moment. Read-only; every change is a new snapshot.
ProjectVAllianceViewEverything the Alliance screen draws. It is immutable and always complete: values are computed from the last confirmed data, never from an in-flight request.
ProjectVAllyViewOne ally the player owns, as the Alliance screen draws it. Read-only.
ProjectVXpItemViewOne kind of EXP item and how many the player owns.

Campaignโ€‹

TypeDescription
IProjectVCampaignPresenterThe Campaign presenter: the missions, starting a mission run, and releasing it when its scene cannot load. Pages should use IProjectVCampaignScreen instead; use the presenter only for what the screen contract does not cover.
IProjectVCampaignScreenThe Campaign screen contract: observe the view, call commands, redraw on change. Loading, retries and double-tap protection are handled for you.
ProjectVCampaignCommandResultThe result of a Campaign presenter command.
ProjectVCampaignDataThe Campaign missions and the player's total stars. Read-only; a change arrives as a new instance.
ProjectVCampaignErrorWhy the last Campaign load or command failed.
ProjectVCampaignMissionOne Campaign mission with the player's progress on it: entry cost, lock state, stars and drops. Read-only; a change arrives as a new instance.
ProjectVCampaignMissionStarsThe star objectives and milestones of a Campaign mission, and the player's best run on it.
ProjectVCampaignRewardOne Campaign reward: a star milestone reward or a mission drop.
ProjectVCampaignSnapshotThe Campaign presenter's state at one moment. Read-only; every change is a new snapshot.
ProjectVCampaignStarMilestoneRewards granted once when a mission's best-run stars reach StarsRequired.
ProjectVCampaignStarObjectiveOne star objective of a Campaign mission; the server decides whether a run met it.
ProjectVCampaignViewEverything the Campaign screen draws: the confirmed missions, never an in-flight request.
ProjectVCampaignStatusWhat the Campaign presenter is doing right now.

Shopโ€‹

TypeDescription
IProjectVShopPresenterThe Shop presenter. Pages should use IProjectVShopScreen instead; use the presenter only for what the screen contract does not cover.
IProjectVShopScreenThe Shop screen contract: observe the view, call commands, redraw on change. Loading, retries and double-tap protection are handled for you.
ProjectVShopCommandResultThe result of a Shop presenter command.
ProjectVShopErrorWhy the last Shop load or purchase failed.
ProjectVShopOfferViewOne Shop offer as the server sells it: price, how many units one purchase may contain, and the purchase limit. Read-only; a change on the server arrives as a new instance.
ProjectVShopReceiptViewThe receipt of the last confirmed purchase.
ProjectVShopSnapshotThe Shop presenter's state at one moment. Read-only; every change is a new snapshot.
ProjectVShopViewEverything the Shop screen draws: the confirmed offers, never an in-flight request.
ProjectVShopLimitKindHow often an offer's purchase limit resets.
ProjectVShopStatusWhat the Shop presenter is doing right now.

Gameplayโ€‹

TypeDescription
IProjectVGameplayDataConsumerImplement on one MonoBehaviour in the mission scene to receive the run's data. When the scene loads for a started run, the SDK calls BindGameplayData on the Unity main thread; the scene must contain exactly one such component.
IProjectVGameplayDataPolicyHelpers for the mission scene: the scene reports what happens (enemies spawned and killed, the outcome, the final health) and the SDK works out which drops count and what to send. Every call fails once the presenter is unbound.
IProjectVGameplayDataPresenterThe mission scene's link to the current run: report skill uses and send the result. You receive it in IProjectVGameplayDataConsumer.BindGameplayData; it also implements IProjectVGameplayDataPolicy. Once unbound, every call fails.
ProjectVGameplayAllyViewA teammate character that joins the run, with its level, stats and skills for this run.
ProjectVGameplayCastSkillViewThe active skill in one slot for this run.
ProjectVGameplayClientRewardViewOne reward the player picked up, sent with the result when trust client rewards is on. The server grants it only when trust mode is also on there; otherwise it works out rewards itself.
ProjectVGameplayCompletionViewThe result of a run, sent with IProjectVGameplayDataPresenter.CompleteAsync. When you use IProjectVGameplayDataPolicy.CompleteObservedAsync, the SDK builds it for you.
ProjectVGameplayDataResultThe outcome of a gameplay data call. Failures are returned here, not thrown.
ProjectVGameplayDropRegistrationProof that a reward enemy is registered for one activation. Keep the value from IProjectVGameplayDataPolicy.RegisterDropOwner and pass it back when the enemy dies or is deactivated. The default value is not registered.
ProjectVGameplayDropViewOne reward-carrying enemy and the rewards it carries in this run.
ProjectVGameplayRewardViewOne reward a drop or a completed run grants, as decided by the server.
ProjectVGameplaySkillRankViewOne skill-tree node and its rank for this run.
ProjectVGameplayStarResultViewStars the server scored for a settled run.
ProjectVGameplayStartingDataViewEverything the mission scene needs to start the run: the character, its stats and skills, allies and reward enemies. Fixed by the server when the run started; later Character screen changes do not affect it.
ProjectVGameplayTelemetryViewThe character's health and armor at the end of a run, sent with the result.
ProjectVGameplayDataOutcomeHow a mission run ended.
ProjectVGameplayDataSkillSlotThe two active skill slots of a character in a run.

Shared typesโ€‹

TypeDescription
ProjectVBalancePreviewOne line of a confirmation dialog: a resource the player has, what the action costs, and what is left.
ProjectVScreenRecoveryStateTells a screen what to show while its data loads or fails: the Phase, a player-facing Message, and whether to offer Retry or Sync buttons.
ProjectVTransactionConfirmationThe content of a confirmation dialog: what the player gets, what it costs, and what they lose.
ProjectVTransactionConfirmationCoordinatorDrives a confirmation dialog: call Prepare to open it, ConfirmAsync or Cancel from its buttons, and redraw on Changed. Only one action runs at a time.
ProjectVTransactionResultThe final result of a confirmed action, with text for the player and the next buttons to offer.
ProjectVScreenPhaseWhat a screen's data looks like right now; use it to choose between content, spinner, banner or error.
ProjectVTransactionKindThe kind of action a confirmation dialog asks the player to approve.
ProjectVTransactionStatusWhere a confirmed action is in its life, from the dialog opening to the final result.

Common typesโ€‹

TypeDescription
ProjectVAuthenticatedSceneScopeBase class for the scope of a scene that needs a signed-in player, such as the lobby. Subclass it, register the scene's UI in ConfigureAuthenticated, and inject the ProjectV screens and presenters from it. When no player is signed in with game data ready, the scene is disabled and the player is sent to Login. The scene is saved so Login can open it again with IProjectVAuthenticatedSceneGate.ConsumeReturnScene after sign-in.
ProjectVBackpackSlotIdA slot in the player's backpack, such as slot-1. Compare with Equals.
ProjectVCampaignMissionIdThe ID of a campaign mission, such as future_city_01. Compare with Equals.
ProjectVCharacterIdThe ID of a playable character or ally, such as PLAYER_SUMIRE. Compare with Equals.
ProjectVCharacterKindWhether a character is the main character or an ally, such as character. Use the values in ProjectVCharacterKinds. Compare with Equals.
ProjectVCharacterKindsThe character kinds the game uses.
ProjectVCharacterSkillIdThe ID of a character skill, such as ad4b85fb7aa64ad196e1f7e0f330b0aa. Compare with Equals.
ProjectVCurrencyIdThe ID of a currency, such as core_dust. Compare with Equals.
ProjectVEquipmentIdThe ID of a piece of equipment, such as rifle. Compare with Equals.
ProjectVEquipmentSlotIdAn equipment slot on a character, such as primary_weapon. Compare with Equals.
ProjectVGameplayItemIdThe ID of an item used during gameplay, such as ITEM_RIFLE. Compare with Equals.
ProjectVGameplayKeyThe key that picks the gameplay scene or content for a mission, such as future_city_first_encounter. Compare with Equals.
ProjectVGameplaySkillIdThe ID of a skill used during gameplay, such as ad4b85fb7aa64ad196e1f7e0f330b0aa. Compare with Equals.
ProjectVHeaderViewKeyA currency slot in the screen header, such as header.gold. Use the values in ProjectVHeaderViewKeys. Compare with Equals.
ProjectVHeaderViewKeysThe header currency slots the game uses.
ProjectVItemIdThe ID of an inventory item, such as ITEM_XP. Compare with Equals.
ProjectVLoadoutSlotIdA loadout slot that holds a character, such as main. Use the values in ProjectVLoadoutSlots. Compare with Equals.
ProjectVLoadoutSlotsThe loadout slots the game uses.
ProjectVLoginSceneScopeBase class for the Login scene's scope. Subclass it and register the Login UI in ConfigureLogin; the sign-in and startup presenters come from the ProjectV scope.
ProjectVPresentationLifetimeScopeThe root VContainer scope that provides every ProjectV presenter and screen, such as IProjectVLobbyScreen and IProjectVShopScreen. Put it on the same GameObject as an initialized ProjectVSdkProvider. Scene scopes based on ProjectVLoginSceneScope and ProjectVAuthenticatedSceneScope use it as their parent. Only one stays alive; extra copies destroy themselves.
ProjectVResourceIdThe ID of a resource the player owns and spends, such as core_dust. Compare with Equals.
ProjectVResultOutcome of a screen command. Message is always text for the player; diagnostics such as cache reads go to the SDK log, never here.
ProjectVScreensCreates screens from their presenters when you do not use ProjectVPresentationLifetimeScope, for example in tests or tools. Inside that scope, inject the screen interfaces instead.
ProjectVShopOfferIdThe ID of a Shop offer, such as stamina_pack_small. Compare with Equals.
ProjectVSkinIdThe ID of a character skin, such as skin-default. Compare with Equals.
ProjectVUiSubscriptionsSubscribes UI to the sign-in, startup and header presenters, and logs when each update has been applied by your callback. Use these instead of SubscribeAsync for UI code. The log entry marks your callback returning, not the frame being drawn or the server finishing.
ProjectVBackendErrorCategoryThe kind of failure behind a screen error. Use it to pick what to show, such as a retry button for Network or a sign-in prompt for Authentication.
ProjectVUiBindingIdNames the UI binding passed to ProjectVUiSubscriptions, so the SDK log can tell which piece of UI applied an update. Each presenter accepts only its own value.