# Tutorial offer page (game-offer)

> A showcase page made for your game, opened once during the tutorial, that shows new players what Gita coins can buy and offers them a free starter pack.

## What it is
Every game can have an **offer page** on Baziness, made for that game and selected by its `game_name`:

```text
{web}/game-offer?game_name=<your game>
```

It shows the prizes Gita coins can buy, and a special free pack for your game. For example, the example game's page shows «بسته ویژه بازی example — رایگان» with a «خرید رایگان» button. It is a **showcase**: you open it **once**, during the tutorial, to set expectations. After the tutorial, your reward button opens the real [reward shop](rewards.md).

> [!NOTE]
> Ask the platform team to set up the offer page for your game, and use the same `game_name` as your reward page.

## The address
| Environment | Address |
| --- | --- |
| Development | `https://platform-web-dev.karizmastudios.org/game-offer?game_name=<your game>` |
| Production | `https://baziness.com/game-offer?game_name=<your game>` |

Like every Baziness page, it needs `packageName` and `sdkType=js`, plus `linkedToken` and `allowGuest=false` ([parameters](pages.md#parameters)).

> [!WARNING]
> Without `sdkType=js` the offer page never sends its `close` message, so **its button can't close your view**.

## The tutorial flow
```mermaid
flowchart TD
  A["Tutorial lesson finished"] --> B["Lobby: coach mark on «انتخاب جایزه»<br/>(everything else dimmed)"]
  B -->|tap| C{"platform enabled<br/>and sheet available?"}
  C -- yes --> D["open game-offer page in the sheet<br/>stage = 'pack'"]
  D -->|"close button · swipe down · tap outside"| E["sheet closed"]
  C -- no --> E
  E --> F["Starter pack popup («خرید موفق»)"]
  F --> G["Onboarding done →<br/>the banner now opens /shop"]
```

## Rules
1. **Save the tutorial step before opening the page.** If the player reloads while the page is open, they continue with the starter pack and don't see the offer twice.
2. **Continue however the page was closed:** its own button, a swipe down, or a tap outside.
3. **Never block the tutorial on Baziness.** If it is off or unreachable, skip straight to the starter pack.
4. **Give the starter pack from the server, once per player.** Present it as a successful purchase («خرید موفق»), even though it is free.
5. **Players arriving from the Baziness app get the tutorial too.** Signing in doesn't make a player "old".
6. **After the tutorial, open `/shop`**, never the offer page again.

## Test it
1. Clear the site data (or use a private window) and open your game.
2. Choose either option on the splash, and finish the tutorial's first lesson.
3. Only the reward button is highlighted. Tap it: the offer page slides up.
4. Close it each way in turn (its button, a swipe on the handle, a tap outside). Every way must bring the starter pack.
5. Tap the reward button again: now the **real** `/shop` opens.

Ready-made code: [client](samples-client.md#tutorial-offer-page). See it live in the [example game](example.md).
