Configuring Ads in Game Server
Chunk #0
* * *
### Introduction
In this article, you’ll learn how to configure advertisements inside Game Server. Ads are A/B testable and can be configured following the logic used in Game Settings.
**Table of Contents**
* * *
## Ads Configuration
In Ads Configurations, you’ll find the basic settings required to serve ads into the game, and they are used to distribute the settings to players using rules and overrides.
Configurations work very much alike [Game Settings](/wiki/spaces/KB/pages/2580021328/Game+Settings+Configuration), and in the main page you’ll find 3 main areas:
- Base Config
- New (to create overrides)
- A list of overrides, with their priority, status, labels, availability and rules applied

**What does** _ **Override Used** _ **mean?**
_Override Used_ is a counter displays the number of times data from an override has been sent to a user within a 24-hour period, resetting at midnight UTC for accurate tracking every day.
## Ads Base Config
Base Config is the main configuration that includes all basic ads settings that are common for all users. Base Config is always Live, does not have rules, and has a priority of zero by default. Within the Base Config, you'll find the core game settings for each application, organized under various tabs. The number displayed next to each tab title indicates how many settings re enabled in that category.
While the Base Config is fully editable, if you need to apply specific values for a targeted group of users, you'll need to create an Override to customise the settings for that audience.
### **Accessing & Editing Ads Base Config**
To access Ads Base Config, navigate to Ads \> Configuration, and click **[Base Config]**.
 
Amazon Ads settings previously located under Game Settings are now available in **Ads Config** section (within the "General" tab). This ensures all ad package settings are maintained in one place for easier access and management.
**Migration Details**
- **Base Config Migration:**
All listed below Amazon settings have been migrated to Ads Config Base config.
- **Override Migration (Triple Tile only)**:
Settings from the Game Settings override in Triple Tile have been transferred to the Ads Config override in the same app.
These settings are marked as enabled in the Ads Config override to preserve the same behaviour.
You will now find the following Amazon Ads settings under:
**Ads Config → General Tab**
| **Platform** | **Setting Key** |
| --- | --- |
| iOS | `ads_amazon_ios_sdk_key` |
| iOS | `ads_amazon_ios_interstitial_id` |
| iOS | `ads_amazon_ios_banner_id` |
| iOS | `ads_amazon_ios_leaderboard_id` |
| Android | `ads_amazon_android_sdk_key` |
| Android | `ads_amazon_android_interstitial_id` |
| Android | `ads_amazon_android_banner_id` |
| Android | `ads_amazon_android_leaderboard_id` |
* * *
## Creating an Override
In order to send specific settings to sets of users, you can create an override for Ads Configuration. Overrides allow you to customise the advertisement experience for certain sets of users determined by rules.
- Overrides will **only** be applied to a user if the user complies with a set of rules that you will set up to differentiate groups of users. However, if the 2 overrides apply to different settings, the user can receive both overrides depending on the rules defined in each of them.
- Read more about overrides [](/wiki/spaces/KB/pages/2580021328/Game+Settings+Configuration#What-are-Overrides?).
- You can duplicate an existing override using the blue duplicate button.
1. To create an Override, navigate to **Ads \> Configuration** and click the green **[New]** button.
2. Assign a name, status, priority and availability to your Override. You can also add a label that will help you to organise and manage Ad Configs in Game Server easily. Start At/End At fields are optional, and allow you to create overrides scheduled to go live. Click [here](https://tripledotstudios.atlassian.net/wiki/spaces/KB/pages/edit-v2/3682861062#About-Start-At%2FEnd-At) to read more.
3. Click the **[green + sign]** to enable the fields and edit the configurations for your override. The edited configurations will appear marked with a blue number next to each tab.
At least one field and one rule should be enabled in the override.
1. Add the relevant rules for your override. Rules are necessary to segment players and distribute the override to them, and target different sets of users depending on their attributes. Learn more about rules[in this guide](https://tripledotstudios.atlassian.net/l/cp/osgQ0TAC).
2. Once you’re done, click the blue **[Save]** on the upper right corner and your override will be complete.
#### About Start At/End At
Start At/End At are 2 **optional** fields allow you to create overrides that are scheduled to go live (ie. become active) in the future to avoid having to set the status of the override manually to Active. Please note, however, that when Game Server reaches the **End At** date, the system does **not** automatically revert the status of the override.
Below you can find a diagram that explains the logic for Start Date.

Game Settings Configuration
Chunk #1
Creating an Override
1. To create an override, click the green **[New]** button.

**What does** _ **Override Used** _ **mean?**
_Override Used_ is a counter displays the number of times data from an override has been sent to a user within a 24-hour period, resetting at midnight UTC for accurate tracking every day.
2. Add a name, status, priority, availability (test/live), and labels (optional) to better track your configurations.

#### **About Override A/B Experiments Option**
Checking the box “Override A/B Experiments” enables overrides to bypass an ongoing A/B Experiment. This is useful in case or emergency, or if the experiment to be overridden cannot be cancelled due to long-term monitoring.
- This setting allows you to create overrides that have a higher priority than overrides with OFF toggle (no matter which priority has override with OFF toggle) OR any A/B experiment.
- Checking the box will move this new override to the top of the list, sorted separately from the rest of overrides and it will be highlighted with a different color to better distinguish it.
- If you uncheck the box, the override will be sorted according to its original priority.
Start At/End At are 2 **optional** fields allow you to create overrides that are scheduled to go live (ie. become active) in the future to avoid having to set the status of the override manually to Active. Please note, however, that when Game Server reaches the **End At** date, the system does **not** automatically revert the status of the override.
Below you’ll find a diagram that explains the logic for Start Date.

#### **What does priority and availability** _ **exactly** _ **mean?**
**What’s priority?**
Priority is the way used by Game Server to determine which configuration must be sent to the user in the first place.
Configurations are prioritised from **highest to lowest**. This means that a configuration with priority 5 is **higher** than one with priority 1.
**What’s availability?**
Availability is used in Game Server to separate the configurations used for test purposes from the configurations used for live configurations.
In Game Settings, you can select the availability of your configuration:
- **Test** : your config will be available only for **test devices**.
- **Live** : your config will be available for **all users**.
If you’re working in the **Staging** environment, **Live** will only send the configuration to test devices, and nothing will be push to Production and live players.
**IMPORTANT:** Game Server allows for a user to belong to different overrides, and the way they receive the settings depends on the rules established. When a user matches the rules for several configurations, the game server will send the one with higher priority. More details can be found [here](https://tripledotstudios.atlassian.net/wiki/spaces/KB/pages/2580021328/Game+Settings+Configuration#FAQ%3A-How-does-Game-Server-determine-what-to-send-to-the-client-when-they-start-a-game%3F).
3. Click the **[green + sign]** to enable the fields and edit the configurations for your override. The edited configurations will appear marked with a blue number next to each tab.

4. Add the relevant rules for your override. Rules are necessary to segment players and distribute the override to the, and target different sets of users depending on their attributes. Learn more about rules [in this guide](https://tripledotstudios.atlassian.net/l/cp/osgQ0TAC).
1. Once you’re done, click **[Save]** on the upper right corner and your override setup will be complete!
#### Notes and Settings Search Fields
This section allows you to optionally add contextual notes to your game settings and find a specific setting for easy traceability.
#### **Notes**
- A free-text field where you can write internal comments or explanations about this configuration.
#### **Find Setting**
- A searchable dropdown that lets you link the current configuration to an existing game setting.
- Start typing the name of a setting to filter or select from the list.

## Mass Updating, Searching, and Filtering Overrides and Game Settings
Game Server offers 2 options to search for settings and overrides.
- **Search** : search allows you to search for a setting and retrieve where it is being used.
- **Filter** : you can filter overrides by many different parameters:
-20230530-093454.gif?version=1&modificationDate=1685439325481&cacheVersion=1&api=v2&width=560&height=298)

You can also use the **[Mass Operations]** button to **change the status and the availability** of a group of entities at once.
.gif?version=1&modificationDate=1686046157822&cacheVersion=1&api=v2&width=340&height=181)
Mass Operations is also available in:
- Ads Configuration
- Activation Events
- Progression Events
- Scrapbooks
* * *
## Searching Game Settings
The Game Settings Fields Search interface allows to filter and locate specific game settings based on various metadata, such as creation date, status, and ownership.
### Filter Fields Overview
#### Created After
- Use this field to search for configurations created within a specific date range: Input a start date and/or end date.
#### Updated After
- Use this to filter configurations based on when they were last modified: Input a start date and/or end date.
#### Availability State
- Dropdown to filter configurations based on availability status: Test, or Live.
#### Status
- Filter by status of the configuration: Active, Inactive, Archived, Allocation Paused, Permanently Archived.
- Helps narrow results to relevant configuration stages.
#### Created by Me
- Checkbox to return only configurations created by your user account.
#### Include Permanently Archived Experiments
- Enable this to include configurations that were permanently archived and would normally be excluded from standard search.
#### Select Setting
- Dropdown to filter by a specific setting within the Game Settings system.
#### Clear Filters Button
- Click the Clear Filters button at the top to instantly reset all search fields to default, removing all filters.
* * *
# Archiving Game Settings
To archive Game Settings, follow the steps below:
1. In your game, navigate to Game Settings, and click **[Archived Settings]**
2. A new page will open where you’ll be able to see which settings have been already archived and their behaviour. To archive a new setting, click **[+Archive Setting]**
3. Click and select the setting you’d like to archive from the dropdown
4. Next, select the behaviour. There are 2 options:
5. When you’re done, click **[Save].** If the setting you’d like to archive is being used in any configuration, Game Server will display a pop-up screen which shows in which entities the setting is being used:


**Archiving Hardcoded Values**
Currently, Triple Tile and Solitaire Classic use some hardcoded values. These settings are **not** archivable.
Interstitials Configuration
Chunk #1
**How does the logic of Overrides in Interstitials work?**
Let’s assume we have 7 players and 4 Interstitials Placement Banks, each of them with a set of placements inside:
.jpg?version=1&modificationDate=1728379257509&cacheVersion=1&api=v2&width=772&height=608)
Now, we’d like to establish a set of overrides for different placement banks. Some overrides will also have Placement overrides or some restrictions for newcomers.
We’ve set 4 overrides, with different priorities, and we’ve assigned players to them using rules. As we can see, Overrides 3 and 4, and Base Config include specific overrides for placements and restrictions for newcomers.
.jpg?version=1&modificationDate=1728379257525&cacheVersion=1&api=v2&width=772&height=405)
With this configuration, each player will receive different overrides with specific settings when they start the game:

Now, we’ll go into detail about why each player receives that configuration:

* * *
# 2. Impression Restrictions
You can determine the value for impression restrictions by applying the identical formula used in[CPM Floor Calculations](https://tripledotstudios.atlassian.net/wiki/spaces/KB/pages/3705274372/Interstitials+Configuration#Setting-the-CPM-Floor).
1. First, navigate to **Ad Config \> Interstitials** , and enable the **Impression Restrictions** setting.
2. Fill in the fields following the information listed in the Impressions Restrictions table below.
3. If required, you can set up overrides for specific ad placements by selecting Overrides.
Then, click the particular placement and select the required settings.

| **Impression Restrictions** |
| **Field Name** | **Description** | **Validations** |
| **Min CPM Type** | Select the way you want to define the Bidding Floor | - Type: Dropdown: Static, Formula - Default: Static |
| **Static CPM Configuration. Fallback CPM Value** | Specify a fallback floor value to be sent for interstitial bidding. | - Type: Float - Default: Empty |
| **Static CPM Configuration. Use Percentiles** | Enable to use percentile for CPM floor value. | - Type: Boolean - Default: False |
| **Static CPM Configuration.CPM Percentile Configs** | Select the relevant config from the dropdown. Refer to this [User Guide](/wiki/spaces/KB/pages/4244537368/CPM+Percentile+Configuration) to learn to configure the CPM Percentiles. | - Type: Multi-select Dropdown - Options: List of available configs (with display priority) - Mandatory if Use Percentiles = True |
| **Static CPM Configuration.If No Matching Configuration** | Select the relevant option if no matching config is available. | - Type: Dropdown - Options: Return fallback value, Return nothing - Mandatory if Use Percentiles = True |
| **Static CPM Configuration. If no Percentile available** | Select the relevant option if no percentile is available. | - Type: Dropdown - Options: Return fallback value, Return nothing - Mandatory if Use Percentiles = True |
| **Formula Parameters. Formula Type** | Defines the type for calculating the formula. | Type: Dropdown with the following options: - Median - Average - Default: Median |
| **Use successful ad requests only** | Enable if you want to use only successful ad requests for calculation. | - Type: Boolean - Default: OFF - Available if type = formula |
| **Min ad requests to apply formula** | This field is used to provide minimum number of interstitials which should be taken into account to calculate formula | - Type: Integer - Mandatory if “Formula” is selected in “Bidding floor type” - Default: Empty - Min 1 - Max: 50 - Must be less than the value provided in the setting “Ad requests to apply formula to“ |
| **Ad requests to apply formula to** | This field is used to provide maximum number of interstitials which should be taken into account to calculate formula | - Type: Integer - Mandatory if “Formula is selected in “Bidding floor type” - Default: Empty - Min 1 - Max: 50 |
| **Percentage coefficient** | Specify the multiplier to minimise the Bid floor. | - Mandatory if “Formula” is selected in “Bidding floor type” - Min: more than 0 - Max: 2 - Max number of characters after comma = 2 - Incase multiplier results in `max_interstitials.cpm_floor` value with more than 2 characters after comma, GS rounds off the result using math rules. - (e.g. if we have as a result value 1,234 -\> round to 1.23 but if 1.235 -\> round to 1.24) |
| **If insufficient ad requests** | Defines the system behaviour when there is insufficient data for calculation. If “Return static value“ is selected, GS will send value from “Static floor CPM“. If “Return nothing“ is selected, GS won’t send any value. | Dropdown with the list of options provided below: - Return fallback value - Return nothing - Default: Return fallback value |
**Setting the CPM Floor**
Game Server provides two types of validations for Bidding Floor Type.
- Static
- Formula
**Choosing a Bidding Floor Type**
There are two options for defining the CPM floor:
**A. Static CPM Floor**
- **Definition** : Sends a fixed CPM value to the client, which is forwarded to the mediation system (e.g., Max, Google, or Meta).
- **How to Configure** :
- **Behaviour** : The same CPM value will always be used for bidding.
**B. Formula-Based CPM Floor**
- **Definition** : Dynamically calculates the CPM floor using the following formula:
- If **Median** is selected in the Formula type dropdown field:
_interstitial\_cpm\_floor = Median (most recent **N** CPM values) \* **K** _
- If **Average** is selected in the Formula type dropdown field:
_interstitial\_cpm\_floor = Average (most recent **N** CPM values) \* **K** _
This formula allows you to determine the number of CPMs stored ( **N** ). If the number of CPMs is lower than **X** (Minimum number of events required for calculation), Game Server won’t return anything, or will return a static value as determined by the settings.
**Determining N for Each Ad Unit**
- N represents the number of most recent CPM values retrieved from a bucket for median calculation.
- **How is N Defined?**
- **Handling Fewer Events than N** :
- **Minimum Number of Events:**
- **Behaviour for Insufficient Events (Fewer than X)**:
- **Multiplier K:**
- **Use successful ad requests only:** Enable/Check if you want to use only successful ad requests for calculation.
- **Use static in case of failed requests:** Enable/Check in case you want to send static value instead of formula calculation when a number of latest requests have failed. if static is selected for fallback value and Percentile is enabled, the system will firstly check if it is possible to use the static CPM based on percentiles. If yes, than the value is obtained from there. If no, the system will use the fallback value OR nothing. In case of nothing usually the system sends 0.0 as floor.
- **Number of failed requests:** Specify number of latest failed requests. If this number is reached, static value will be used instead of formula calculation.
For detailed information on how Analytics Buckets work, refer to this [User Guide](https://tripledotstudios.atlassian.net/wiki/x/BIBUAQE).
# 3. Frequency Restrictions
To better control the user experience for the players, you can enable frequency restrictions for interstitials with **conditions**. Conditions are included inside sections, which allow you to nest sets of restrictions and combine them to target players more accurately. The conditions in Frequency Restrictions use the basic AND/OR operators. There are two configuration type options available:
- Config Based on Network
- Standard Config
For each of the above config types, there are 2 options:
- _ **Time-based** _ **: minimum time allowed between interstitials:** The ad will be shown only if the required minimum time has passed since the latest successful impression
- _ **Custom** _ **: Min count allowed between interstitials:** The ad will be shown only if the required number of particular points in the game is passed since the latest successful impression.
 
1. Enable the **Frequency Restrictions** setting by clicking on the  **[green + sign]**.
2. Fill in the fields following the information listed in the table below.
3. If required, you can set up overrides for specific ad placements by selecting Overrides.
Then, click the particular placement and select the required settings.
| **Time-Based Frequency Restrictions** |
| **Field Name** | **Description** | **Comments** |