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