Skip to content

IStartup

The entry point of the IdleKit framework resides in the IStartup. It is responsible for starting the game, switching to a different IContent (timed event), switching to a different IStage (ascension), and resetting the game. In this article, we will go over the start, switch content, reset, and switch stage game-flow and their various components.

Overview

Below are the primary functions of IStartup:

  • StartGame - called once on startup to initialize the IdleKit and is called again in the process of ResetGame(System.Boolean).
  • SwitchContent(System.String) - called when the user switches between contents.
  • SwitchStage - called when the user switches between stages.
  • ResetGame(System.Boolean) - called when the user resets the game with the option of resetting all the ISavedData. Once everything is cleaned up, StartGame is called.

Start Game and Switch Content Flow

startgame

Start Game

The game is first started by the StartGame that performs various steps such as binding the dependencies, initializing the game, and loading the entities. Once the steps are completed, the user then enters the core game loop of the IdleKit and starts playing the game.

Switch Content

At some point, the user would want to move to a different IContent either to play a limited-time event or return to the main game from the limited-time event. When this happens, SwitchContent(System.String) would be invoked, which clears the current IContent and load into the new IContent.

Reset Game Flow

resetgame

Reset Game

Resetting the game is carried out by first clearing the current IContent, then cleaning up other non-content specific entities and services, and unbinding the dependencies. After these steps are performed, it invokes the Start Game Flow to restart the game.

Switch Stage Flow

switchstage

Switch Stage

The switch stage flow contains only a single load phase which advances the IStage the user is on. More ILoadPhase for loading IStage specific data or assets can be added to the step.

Steps and Load Phases

As the flow diagrams indicate, each IStartup function can be broken down into various steps that further divide into reusable load phases.

In the next section, we will discuss all the default IdleKit steps and the load phases that make them up.

ILoadPhase

LoadPhases are the lowest-level building blocks used in the startup flow that can contain multiple load sequences. An example of an ILoadPhase would be the LoadContentLoadPhase, which is utilized in StartGame and SwitchContent(System.String), to set the IContent the user will be playing and load the entities associated with the IContent.

Step - Bind Dependencies

Bind Context

The step calls Bind and initializes a number of system-wide load phases, services, and actions, which includes fire-and-forget signals such as regular IActions and ISavedData altering IStateActions.

Initialize Services

This ILoadPhase initializes the services that were binded to the container in the previous step.

Step - Initialize Game

Initialize User

This ILoadPhase initializes and loads the IUserSavedData, which stores relevant user-related ISavedData.

Load Global Data

The AddDataPhase loads the IData and IEntity that it is initialized with. During this step of start up, it is initialized with data that are not related to any IContent (system-wide).

Step - Process Event

Set Content Id

This ILoadPhase determines which IContent to load based on the IUserSavedData and the active IEventSettings.

Process Event Saved Data

This ILoadPhase deletes all the content specific ISavedData for IEventContent that have been completed.

Step - Load Content

Load Content Data

In this step, the AddDataPhase is used again to load the IData that are related to the IContent that was determined in the previous step.

Load Content

This ILoadPhase loads the entities associated with the current IContent, including the IContent itself.

Step - Clear Content

Clear Content

This ILoadPhase is the opposite of the LoadContentLoadPhase. It removes all entities related to the previous IContent.

Clear Content Data

The RemoveDataPhase is the opposite of the AddDataPhase. In this step, it unloads all serialized data related to the IContent that was unloaded in the previous LoadContentDataLoadPhase.

Step - Cleanup Game

Clear Global Data

In this step, the RemoveDataPhase is used again to unload all IData and IEntity that are not related to any IContent.

Cleanup Services

This step is the opposite of the InitializeServicesPhase. It cleans up all the services.

Step - Unbind Dependencies

This step is the opposite of the Step - Bind Dependency. It unbinds all the system-wide load phases, services, and actions. After this, the game can then be restarted.

Step - Switch Stage

Advance Stage

This ILoadPhase advance the user from the current IStage to the next.