Generic Journeys and Events
Chunk #0
## Introduction
Journeys are time-limited events which consist of a set of levels with challenges for the players, who will receive rewards for completing them. In Game Server, you can also configure Journey Activation Events, which are sent to players when they first join the game, before they begin receiving regular weekly Journeys.
This guide explains how to configure Generic Journeys & Events for any game.
**Table of Contents**
* * *
## What are Journeys?
Journeys are time-limited events that consist of a series of levels with special challenges for players. These Journeys are configured using Events, which is the entity that determines when to start sending the Journey to players and when should it end.
**A/B Experiments**
Journeys and Events are A/B testable entities.
You can read more about A/B Experiments [here](/wiki/spaces/KB/pages/2581889051/Setting+up+A+B+Experiments).
### Uploading your Journey File
In order to configure your Events, first you need to upload the JSON/CSV file with your level configuration. To do so, follow the steps below:
1. Navigate to your Game and then, select Files. To upload a new file, click **[+New]** on the upper right side of the screen. In this page you’ll be able to see the currently uploaded files, their name, availability and in which Journey they’re being used.
2. Give your file a name, select the type, and choose the file to upload. When you’re done click **[Save]**
It is **not** possible to change a file that is being used in a Journey. If you’d like to change the levels in an existing Journey, please re-upload a new file and select it in the Journey.
**Supported file types**
- Uploading level files is only available for certain games.
- Currently, the only file types supported are JSON and CSV files.
- Please note that the files are not validated by Game Server. The files are uploaded to a CDN from Game Server, and that CDN link is sent to the Client.
### Configuring Events
1. Navigate to **Journeys \> Events** , and click **[+New]**. In this page, you’ll be able to see the existing Journeys with their name, status, availability, priority and start/end dates. You can use blue duplicate button  to copy the settings to a new Journey, or the yellow button  to archive it.
2. Fill in the name, status, availability and priority of your event. You can also add labels to easily track and filter your events.
3. Fill in the start and end dates for your event, add the translation keys and the [asset bundles](/wiki/spaces/KB/pages/2926346323/Asset+Bundles+in+Game+Server), and then, select your Journey Levels from the ones uploaded before.
#### Setting up the Start and End Dates of your Event
When setting up the start and end date for your event, there are several factors to keep in mind:
- **Both Start for client and Start for player** use the **local time of the player’s device**
- **End for player/client** It indicates the **local time when the event will end** (e.g. the event will end 21 hours earlier in New Zealand, which follows UTC+13, than in Alaska, which follows UTC-9).
4. Optionally, you can configure rules for your Event. To know more about Rules, read [this guide](/wiki/spaces/KB/pages/2668494860/Rules+in+Game+Server), or use the User Guide button  in Game Server.

### Configuring Activation Events
As mentioned in the introduction of this guide, Activation Events are only sent to the player when they first join the game, before they begin receiving regular weekly Journeys.
1. Navigate to **Journeys \> Activation Events** , and click **[+New].** Fill in the name, status, availability and priority of your activation event. Include as well the duration of your Activation Event (in hours and minutes). Add the cohort day limit of your Activation Event, and include as well the title and subtitle of your activation event, the translation keys for the title/subtitle. _Remember that players will be able to play Activation Events as long as their cohort day is below the maximum cohort day limit._
2. Under **Asset Bundles** , select from the drowpdown the [assets for the bundles](https://tripledotstudios.atlassian.net/wiki/spaces/KB/pages/2926346323) and the file for the Journey Levels.
When you select a new Asset Bundle, the status and availability, as well as the priority and rules applied to the Bundle will appear. If the Bundle is inactive, you will be able to change the status by clicking on **[Activate]**. You can also see the configuration of the Journey Levels by clicking on the blue link icon.

As a last step, you can configure rules for your Event. To know more about Rules, read [this guide](https://tripledotstudios.atlassian.net/wiki/spaces/KB/pages/2668494860/Rules+in+Game+Server), or use the User Guide button  in Game Server.

Tiles Family Games - Levels & Chapters
Chunk #0
**Introduction**
In this guide you’ll learn how to:
- Set up Layout Banks
- Create related configurations
- Create Chapter Sets and activate them in Game Settings
**Table of Contents**
**Triple Tile User Guide:**
[https://tripledotstudios.atlassian.net/wiki/x/WAAotg](https://tripledotstudios.atlassian.net/wiki/x/WAAotg)
* * *
## Setting up Layout Banks
Some parts of this process are done via API. Please read the instructions below before getting started:
### Prerequisites
**User Token**
In order create Chapters and Levels, please make sure you have access to [](https://tripledotstudios.postman.co/workspace/Tripledot-Studios~27e83636-a522-451e-8a35-a9e93f6ebe81/request/11806556-08c0fd26-7d35-4058-b39c-1e60ecde67a0) or [Level Editor](/wiki/spaces/TRIP/pages/2779349212/Level+Editor+Overview) (UI tool).
To use the API or configure levels using Level Editor, you’ll require a user token generated from Game Server. Read the instructions below to generate one.
**Editor Privileges**
You will also require Editor Privileges in order to create or edit levels. To obtain Editor privileges, follow the next steps:
- Navigate to **Levels & Chapters** , and select **Layout Banks**
- Click **[View]** next to your layout bank
- Add your username/email to **Users** and save the changes
Generating a User Token
1. In Game Server, navigate to your profile
2. Click **[Generate User Token].** A new alphanumeric user token will be generated. Copy and store it in a safe location.
3. Use this new `user_token` in your API Calls
* * *
### Creating Layout Banks via API
The instructions in this guide refer to the creation of Layout Banks **via API**.
You can also create Layout Banks via _Level Editor_. Read the instructions [here](/wiki/spaces/TRIP/pages/2779349212/Level+Editor+Overview) to know more.
Once you’ve obtained your user token, you can go ahead and create Layout Banks. The Layout Bank will then be saved in the Level Bank.
Creating a Level Layout - POST {{host}}/api/internal/tile/level\_layouts
**Example request URI:** `https://game-server-staging.tripledotapi.com/api/internal/tile/level_layouts`
**Query parameters:**
| **Parameter** | **Type** | **Description** |
| --- | --- | --- |
| `user token` | _string_ | You user token generated in Game Server \> Profile |
| `app_id` | _string_ | Your app ID For Triple Tile, use `9` |
| `bank_id` | _string_ | ID of the level |
| `name` | _string_ | Name of the level |
| `content_hash` | _string_ | Generated in the client |
| `valid_for_use` | _string_ | True/False |
| `type` | _string_ | Your type of level. Use `classic`, `match_four`, or `goals` |
| `data` | _string_ | Your level layout. Example: `{"some_key": 10}` |
**Example call:**
{
"user_token": "{{user_token}}", //https://game-server-staging.tripledotapi.com/admin/admin_users
"app_id": 9,
"bank_id": "8",
"name": "new level layout",
"content_hash": "42425tsg34tkngwlg2kjgk2j3gf2",
"valid_for_use": false,
"type": "classic", //or "match_four" or "goals"
"data": {"some_key": 10}
}
**Responses:**
200 OK _application/json_
Updating a Level Layout - PATCH {{host}}/api/internal/tile/level\_layouts
**Query parameters:**
| **Parameter** | **Type** | **Description** |
| --- | --- | --- |
| `user token` | _string_ | You user token generated in Game Server \> Profile |
| `app_id` | _string_ | Your app ID For Triple Tile, use `9` |
| `bank_id` | _string_ | ID of the level |
| `name` | _string_ | Name of the level |
| `content_hash` | _string_ | Generated in the client |
| `valid_for_use` | _string_ | True/False |
| `type` | _string_ | Your type of level. Use `classic`, `match_four`, or `goals` |
| `data` | _string_ | Your level layout. Example: `{"some_key": 10}` |
**Example call:**
{
"user_token": "{{user_token}}",
"app_id": 9,
"bank_id": "8",
"name": "new level layout",
"content_hash": "42425tsg34tkngwlg2kjgk2j3gf2",
"valid_for_use": false,
"type": "classic", //or "match_four"
"data": {"some_key": 10}
}
**Responses:**
200 OK
### Creating Layout Banks in Game Server
Any changes made to Layout Banks need to be saved by clicking **[Save]** on the upper right corner.
You can also create Layout Banks in Game Server. However, the upload of layouts is done via API.
Once you’ve set up your Level Layouts, you can create Layout Banks with them.
1. Navigate to **Levels & Chapters \> Layout Banks** and click **[+New].**
2. Add a name for your Bank, add a description, labels if needed, and click **[Save].**
3. Once your Bank has been created, you can add your Layouts via API.
When Level Layouts have been uploaded, you’ll be able to visualise the details via Game Server, as well as duplicating both the bank and the levels, or reorder them.

**Uploading, Replacing and Duplicating Layout Banks**
- You can duplicate existing Layout Banks using the **[Duplicate]** button on top.
- You can download the layout banks form Game Server in order to import them into Production/Staging. The downloaded file contains:
- You can also replace existing layout banks. To do so, use the **[Replace]** button on the upper right corner. You’ll need to hash of the level bank to replace.

#### Uploading & Clearing Seeds
It is possible to upload specific seeds for each level from Game Server. This process is done via a CSV file which should include the numbers of seeds which should be used for each level.
1. In your Layout Bank, click **[Upload Seeds].**
2. Select a CSV file with the following format:
3. Click **[Save]**
**About Seeds**
Please take in consideration the following points:
- Number of seeds = number of comma separated integers
- You can upload seeds multiple times, but take into consideration that the data from the new file will override/update existing data.
* * *
## Creating Related Configurations
In order to configure Chapter Sets, you will need the following entities to be already added/configured:
- DDA Schemas
- DDA Schema Sets
- Reward Schema Sets
### **Creating DDA Schemas & DDA Schema Sets**
DDA (Dynamic Difficulty Adjustment) Schemas are used to apply a more personalised difficulty adjustment for each user based on their win rate, power-up usage, and revive usage, with the ultimate goal of increasing the long term retention of installs and maintaining cumulative rewarded ad revenue.
The workflow goes as follows:
1. Create the DDA Schemas
2. Create DDA Schema Sets
3. Enable them in Game Settings Override
#### Creating DDA Schemas
1. Select your game, navigate to **Levels and Chapters** , and select **DDA Schemas**. Click **[+New]** to create a new Schema. You can copy an existing schema by using the blue duplicate button  .
2. Add the relevant information for your configuration, and click **[Save]** when you’re done.
#### Creating DDA Schema Sets
Once you have created your schemas, you can place them together into Schema Sets. These Sets can be later be added to Game Setting overrides to facilitate A/B experiments.
To create DDA Schema Sets, follow the steps below:
1. Navigate to **DDA Schema Sets** , and click **[+New]** in the upper right corner.
2. Give your Set a name, and add the DDA schemas that will be part of the set. Under **From/To** , select the range of Chapters that the DDA Schema will apply to. If using “All next”, all next chapters will use this DDA schema. To include a new chapter, click **[+Add Difficulty Schema]**. When you’re done, click **[+Save].**
After creating your DDA Schema Sets, the final step is enabling them in Game Settings:
.gif?version=2&modificationDate=1687786465720&cacheVersion=1&api=v2&width=807&height=439)
### **Creating Reward Schema Sets**
1. To create Reward Schema Sets, navigate to **Levels & Chapters \> Reward Schema Sets**. In this page you’ll be able to see the existing sets, and in which configuration they’re being used.
2. Give your set a name, assign a label if needed, and click **[+Add Chapter Range].** A new chapter range will appear, which by default, includes all chapters available. To edit the rewards per chapter, click again **[+Add Chapter Range]** to include a new range of chapters.
3. Click **[+Add Reward]** to include any Game Item as a reward and its quantity. You can also add different rewards for players who reach the middle of a chapter by clicking **[+Add Midchapter Reward].**
If you select a Chest as a reward (bundle of Game Items), the folder icon will be active. Clicking it will redirect you to the Chest so that you can see the detailed view of Game Items
When you’re done with the configuration, please navigate to Game Settings and enable your Reward Schema Set:

Tiles Family Games - Levels & Chapters
Chunk #1
Creating a Chapter Set
When you’ve created all your configurations, you can go ahead and create your Chapter Set. Chapters Sets are the container where you’ll find all your levels.
1. Navigate to **Levels & Chapters \> Chapter Sets**. A table is shown with all the existing Sets, their availability and where they’re being used. Click **[+New]** to create a new Set.
2. Name your Chapter Set, and start configuring the Chapter Structure:
**About Mass Operations**
The Mass Operations button allows you to:
- Copy chapters from one Chapter Set to another
- Batch update Chapters **Keep in mind that only the changed fields will be applied and overridden.**
- Change the status of test Chapter Sets to Live
**Chapter Sets & Layout Banks Validations**
- Editing Layouts is **not allowed** when they are being used in Chapter Sets. To make any modifications, create a new entity (or duplicate) and then choose it in the Chapter Set.
- Note that you must have editor privileges on the layout bank page to make any edits. Also, you cannot alter a layout bank that has already been used.
- Make sure that that each level is given a unique name, and that the level is marked as "valid for use" with a value of "true." Failure to do so will result in the level not being displayed in the list of available layouts for Chapter Sets.
## Enabling your Chapter Sets in Game Settings
Once you’ve configured your Chapter Sets, it’s time to enable them in Game Settings so that they can be sent to players.
To do so, navigate to Game Settings, and click the green plus button to enable Chapter Sets. Once done, select your Chapter Set from the dropdown.

Chapter Sets are A/B testable entities, which allows you to create experiments with them. Read more about A/B Experiments [here](/wiki/spaces/KB/pages/2581889051/Setting+up+A+B+Experiments).
## Comparing Configurations
The configuration inside Chapter Sets can be compared using the Comparison Tool. This tool compares 2 different entities, highlighting differences and underlining where these differences are.

To use this tool, follow the steps below:
1. Navigate to Chapter Sets, and click **[Compare]** on the upper right corner of the screen:
2. Select the entities you’d like to compare, and click the blue compare button 
3. A new screen will appear where the differences will be highlighted:
The Comparison Tool is available for the following entities:
- Chapter Sets
- Scrapbooks
- Picture Banks
## Download Layout Banks & Chapter Sets JSON File
This section explains how to download a level layout bank and chapter sets file sfrom Game Server for review, backup, or transfer. Use the table’s Actions column to export the selected bank.
### Download **Layout Banks/Chapter Sets File**
1. From the top-left app switcher, choose the relevant game (e.g., _TripleTile_).
2. Go to Layout Banks: Levels & Chapters → Layout Banks.
3. Find the relevant bank: use Filter (top bar) or page through the list.
4. In the actions column of the bank row, click the Download icon (↓).
Your browser will download the bank file (usually JSON/CSV; format depends on the bank).
5. To download a chapter sets file, go to chapter sets: Levels & Chapters → Chapter Sets.
6. Repeat the steps 3 and 4 above to download a chapter sets file.
### Upload a Level Layout Bank (via **Upload file** )
Import a whole level bank (with all its layouts) from a JSON/CSV file.
1. Navigate to Layout Banks.
2. Click the green Upload button.
3. In the file picker, select the json/csv file and click **Open**.
4. The bank is created/imported. You’ll be returned to the Layout Banks table.
5. Find the new bank at/near the top of the list (check Updated at time).
6. Click the bank name to open View Layout Bank.
7. (Optional) Adjust details:

## Create Chapter Sets from a CSV
This section explains how to create/update Layout Banks and Chapter Sets from a CSV file.
### CSV Format
Fields marked **optional** should only be included if the script requires them for your game.
| **Column** | **Required** | **Type / Validation** | **Notes** |
| **Level\_ordinal** | Yes | Integer, min 1 | The absolute level number in the target Chapter Set (no upper limit). |
| **Level\_hash** | Yes | Non-empty | Hash used to look up an existing Level Layout. |
| **Origin\_layout\_bank\_id** | Yes | Integer, non-empty | ID of the existing Layout Bank from which the Level Layout is copied. |
| **New\_layout\_bank** | Yes | String, unique per new bank | Name of the destination Layout Bank to create/apply in the duplicate Chapter Set. |
| **Level\_position** | Optional | Integer, min 1 | Position within the Layout Bank (use only if required by script). |
| **Chapter\_position** | Optional | Integer, min 1 | Chapter index in the Chapter Set (use only if required by script). |
### _ **Create new chapter set from .csv** _
1. In GS, select the correct environment (Staging or Production) and the correct Application.
2. Go to Levels & Chapters: Chapter Sets.
3. Click Create new chapter set from .csv.
4. On the Create Chapter Set from CSV screen:
5. Click **Upload** to run validations and start the script.
6. Watch the Script Log:
- The Script Log shows parsing, validation results, and progress.
- If there are validation errors, the log will list the rows with issues; fix your CSV and re-upload.
- If all checks pass, the script will create/reuse Layout Banks, duplicate the selected Chapter Set, and apply levels.

### What the script does
1. Create new Layout Banks for every unique New\_layout\_bank in the CSV only if they differ from the referenced origin layout bank content.
2. Reuse existing Layout Bank (from Origin\_layout\_bank\_id) if there are no differences vs. the CSV.
3. Duplicate the selected Chapter Set with the provided New Chapter Set Name.
4. Apply Layout Banks to the correct positions in the duplicated Chapter Set.
5. Place levels into those banks based on Level\_ordinal (and Level\_position if used).
* * *
### Post‑upload verification
1. In Chapter Sets, open the newly created set by name.
2. Confirm new Layout Banks were created only where changes exist; unchanged segments reuse origin banks.
3. Check level counts, ordering (by Level\_ordinal / Level\_position), and layout types.
4. Smoke test any downstream visuals/themes/goals that depend on layout type.