Skip to content

Ascension Flow

Introduction

Ascension means moving from one IStage to the next. The process in-between the current and the next IStage is called the ascension flow. The following is the ascension flow diagram implemented in IdleKit:

ascension_logic

The ascension flow involves many steps between the UI and IEntities using IActions so as to let your team customize ascension flow to match your game.

Ascension with Gameplay

Ascension flow is often accompanied by some gameplay: A mini-game or boss fight, for example. The idlekit-showcase project demonstrates such gameplay.

Ascension is started with BeginAscension and the AscensionStartAction that follows. In this case, our showcase ascension gameplay UI would listen to the AscensionStartAction and allow the player to start the gameplay. Before the user begins we would calculate the AscensionPower. After gameplay we use GetAscensionPower(System.Boolean,System.Double,IdleKit.Gameplay.IModifier[]) and gather all the tiered rewards information from the associated IAscensionReward to display to the player. After the gameplay is completed the players performance is used in conjunction with the multiplier AscensionPower to calculate a final ascension score. This score is used to determine which tiered rewards are granted to the player. The rewards are then shown to the user after which AdvanceStage is triggered. This ends the current IStage and advances the IStage to the next beginning a new loop.

No Gameplay Ascension

Ascension can be as simple of a process as your team decides. As shown in all the examples there is no gameplay in the ascension flow - we simply end the ascension flow right away.

When the ascension flow starts BeginAscension is called and the AscensionStartAction would be dispatched to start the ascension process. However, since there is no gameplay, we immediately proceed to EndAscension(System.Double) and trigger the AscensionCompleteStateAction to calculate the AscensionReward based on a dummy ascension score. The rewards are then shown to the user in a reward UI and upon the closing the UI AdvanceStage is triggered which ends the current IStage and advances the IStage to the next.

Tiered Rewards

Even though AscensionReward is classified as an IReward in IdleKit, it behaves very differently from the other IReward. The AscensionReward is a type of IReward, that contains multiple tiered of AscensionRewardGroup, which then contains multiple IReward for that tier. When the AscensionReward is claimed, the AscensionScoreRequired of each AscensionRewardGroup is queried. The user then would receive all the IReward list in the highest tier of AscensionRewardGroup that the user achieved based on the ascension score.

ascension_reward

Ascension Score

The ascension score is a value that was set to a constant in no gameplay ascension or generated by the game based on the ascension power obtained from GetAscensionPower(System.Boolean,System.Double,IdleKit.Gameplay.IModifier[]) and user inputs (number of taps). It is used to figure which tier rewards - AscensionRewardGroup the user would be getting.