Personalized Content #
In this guide you will learn how to create personalized content for your game using Satori feature flags, audiences and live events.
To achieve this you will do the following:
This example focuses on creating a personalized cash shop where veteran players will receive a discount on some items for a period of time.
However, this combination of feature flags, audiences and live events (or experiments) can be used by non-developers to completely customize the player experience in different manners, at any time, without the need for extra development effort or a new build and release of the game.
Create a feature flag #
Create a feature flag that defines your global cash shop as a JSON string.
- Navigate to Feature Flags in the Satori console.
- Click New Feature Flag.
- For Flag Name enter:
- For Default Value enter:
Create a metric #
Create a metric to track total player spend during the live event using the built in
- Navigate to Metrics.
- Click New Metric.
- For Name enter:
purchaseCompleteand give an appropriate Description.
- For Type change it to:
- Keep Order as
This metric will allow you to track total player spend during the live event.
Create a live event #
Create a live event that will run for one week and will offer Veteran Players a discount on the store.
- Navigate to Live Events.
- Click Create Live Event.
- For Name enter:
VeteranDiscountWeekand give it an appropriate Description.
- For Value enter:
- For Audiences choose:
- For Monitor Metrics choose:
- Give an appropriate Start Time and End Time
- For Duration enter:
604800(1 week in seconds).
- In the Feature Flags section search for the
storeConfigfeature flag and click Add Flag.
- Give the flag a new Value to provide discounted SKU codes:
- Click Create.
Accessing personalized content #
Since the cash shop configuration exists as a feature flag the user can access it by calling:
Doing so will retrieve the flag’s value for the authenticated identity, typically this will be it’s default value. However, if the user is part of the
Veteran-Players audience, they will automatically receive the updated value for the flag as configured in the
VeteranDiscountWeek Live Event (provided it is currently active as per your Start/End dates). This means veteran players can start receiving discounts on cash shop items as soon as the live event is active.
Other use-cases #
There are countless ways that Satori can be used to personalize content for your players using its sophisticated suite of features. Some of these are explored below.
Personalized DLC #
For example, you could create an
availableDlc feature flag and then create a feature flag variant that targets the built-in
All-Spenders audience to provide additional DLC content to paying players.
In this example, the feature flag could contain an array of URIs that point to downloadable resource bundles for your game. These could be used in conjunction with asset systems such as Unity’s Addressables.
Default flag value:
All Spenders flag value:
Progression based feature access #
You could provide access to features in your game only to players who have made a specific amount of progress.
To achieve this you would create a custom property such as
playerProgress which you would update from the client as they progress through your game. This property could represent a value that indicates percent completion.
You would then create an audience with an appropriate filter, such as the one below which checks that the player’s progress is greater than or equal to 75%, and give it a name like
PropertiesCustom("playerProgress", 0) >= 75
Then create a feature flag for your feature, for example
deathmatchMode and give it a default value of
false so that all existing players do not currently have access.
You can then create a feature flag variant for
Significant-Progress players where the value of the flag is now
You would then use the value of this feature flag in your game client to determine whether or not the player should have access to that particular feature.
Welcome back screen #
Some games operate in seasons and you may find that players sometimes churn out of your game once the season is over and then return much later and may have missed a significant portion of content.
It’s often a nice touch to offer these players a “Welcome back” screen that can tell them about all the content or features they may have missed while they were away.
Now() - updateTime >= Duration("6m")
You can then create a feature flag called
showWelcomeBackScreen with a default value of
false and create a variant value of
true that targets this audience.
In the client, you can check the value of the
showWelcomeBackScreen flag for the player and if it is true, present them with the appropriate information.
For an extra personal touch you could get the value of the player’s
seenLast computed property which has a value that indicates the UNIX timestamp of the time the player was last seen in your game. You can then use this to determine exactly what content the player may have missed and show them a highly personalized catch up screen.