> ## Documentation Index
> Fetch the complete documentation index at: https://docs.d-sports.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Game Engine

> Modular mini-game engine shared by Engage native and d-sports-api: client shell, server sessions, and how you add a game.

The Game Engine is the shared contract for **new** daily mini-games. The server owns scores, rewards, and session status. The client ships playfields in the app binary and renders them inside one shared shell.

This is a different surface from the older `/api/games/*` play routes (daily spin, guess-the-player, live arena) and from Game Center `/api/events/*`. Those stay documented under [Games](/repositories/d-sports-api/games/index).

## What you get

* A public additive catalog that **marks** unplayable games instead of hiding them.
* Authenticated session verbs: start, action, complete, forfeit.
* A native registry so a new game is a folder plus `registerGame`, not a new Expo route file.
* `X-Client-Version` on every engine call so an outdated binary can show **Update required**.

## Sections

<CardGroup cols={2}>
  <Card title="Client" icon="smartphone" href="/repositories/game-engine/client">
    Registry, GameShell, HUD, catalog join, and launch routes.
  </Card>

  <Card title="Server" icon="server" href="/repositories/game-engine/server">
    `/api/v1/engage/games/*`, session statuses, awards, and error codes.
  </Card>

  <Card title="Modularity" icon="blocks" href="/repositories/game-engine/modularity">
    How you add a game without editing a shared union.
  </Card>

  <Card title="API guide" icon="terminal" href="/api-reference/domains/game-engine">
    Endpoint map and coverage status for the engine HTTP surface.
  </Card>
</CardGroup>

## Shipped vs legacy

| Surface                | Engine?                                       | Keys / routes                                                                        |
| ---------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------ |
| Daily Pick'em          | Yes                                           | `daily-pickem`                                                                       |
| Daily Trivia           | Yes                                           | `daily-trivia`                                                                       |
| Prize Wheel            | Yes (also legacy `/api/games/daily-spin/*`)   | `prize-wheel-spin`                                                                   |
| Guess the Player       | Yes (also legacy `/api/games/guess-player/*`) | `guess-the-player`                                                                   |
| Daily Lineup           | Yes                                           | `daily-lineup`                                                                       |
| Card Trivia            | Yes                                           | `card-trivia`                                                                        |
| Login Streak Scratcher | Yes                                           | `login-streak-scratcher`                                                             |
| Hockey playfields      | Yes                                           | `deflection`, `iron-trap`, `deke-daily`, `faceoff-frenzy`, `sauce-pass`, `empty-net` |
| Air hockey             | Yes                                           | `air-hockey`                                                                         |
| Locker Singularity     | Yes (idle ledger, not day-slot sessions)      | `locker-singularity`                                                                 |
| Arena Live             | No (legacy)                                   | `/api/games/live/*`                                                                  |
| Game Center            | No (sports events)                            | `/api/events/*`                                                                      |

Native 1.25.9 registers the keys above in `lib/games/register-shipped.ts`. The server catalog can still list additional keys. An unknown key is a first-class **Update required** / **Not in this build** state, not a crash. How-to-Play walkthroughs stay local and must not spend a daily attempt. `locker-singularity` spends buzz on its ledger routes instead of a daily session.

<Note>
  Engine routes are in generated OpenAPI under the `Game Engine` tag. Use the [API guide](/api-reference/domains/game-engine) plus the **Endpoints** playground for the HTTP surface.
</Note>
