This tutorial will describe how to manage consumables which replenish over time, even when the player is out of the game. We will use a coin system to illustrate the process.

APPFormative™ keeps track of the total seconds lapsed, since the app was opened for the first time after install.

Apart from making time calculations like these easier, using APPFormative™ to keep track of the users elapsed time, prevents possible user manipulation of the device system time to gain an unfair advantage.



Replenishing Consumables - for GameSalad®

Prerequisite: The Basics & Extended Setup X

Step 1.

First off, create a new game level attribute which will store the game time value at the start of the current play session.

game.SessionStartTimer of type real

Use a "Change Attribute" behavior to assign it the current game.Time value.




Step 2.

Define a new table as below. In this case, the game starts with a starting budget of 5 coins.




Step 3.

We already have the elapsed seconds since first launch ( game.AF_SecondsAfterLaunch ),
and can calculate the elapsed seconds of the current session ( floor(game.Time - game.SessionStartTimer) ).

Together these values give us the total number of seconds since the game was first lauched, up to the current point in the play session:

self.TotalSeconds = game.AF_SecondsAfterLaunch + floor(game.Time - game.SessionStartTimer)

We can now calculate the total possible coins the player may have gained since first launching the game (here we will assume a 2 coins every 5 minutes gain):

self.TotalCoins = 2 * floor(self.TotalSeconds/(60*5))

Recalculate and write this value to the 2nd column of the T_Coins table at regular intervals.

Note that this system is flexible and any kind of coins/second ratio can be represented.




Step 4.

Any time coins are used, update the CoinsSpent column in the T_Coins table. E.g. if it costs 1 coin to play a level, add 1 to the value stored.

Any time coins are accumulated through IAPs or bonuses, update the CoinsBought column in the T_Coins table. E.g. if the user bought 10 coins, add 10 to the value stored.

Always save the T_Coins table after changes to these two columns.




Step 5.

It is now possible to use a Display Text behavior to always show the correct number of available coins with the following calculation:

tableCellValue(game.T_Coins,1,1) + tableCellValue(game.T_Coins,1,2) - tableCellValue(game.T_Coins,1,3) + tableCellValue(game.T_Coins,1,4)