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

# European Roulette

> Phase-based table game extension for A2G.

**Game type:** `european-roulette`
**Game model:** Phase-based
**Players:** 1-8
**Default timeout action:** `no_bet`

European Roulette is a table game where players place bets on where a ball will land on a spinning wheel with 37 pockets (0-36). Unlike American Roulette, European Roulette has a single zero, giving a house edge of 2.70%.

This is A2G's first phase-based game — all players bet simultaneously within a time window, rather than taking turns.

## Game Flow

<Steps>
  <Step title="Betting Window Opens">
    Server broadcasts `betting_window_open` with available bet types and time limit. All players can place bets simultaneously.
  </Step>

  <Step title="Players Place Bets">
    Players submit one or more `submit_action` messages during the window. Multiple bets per player are allowed.
  </Step>

  <Step title="Betting Window Closes">
    Server broadcasts `betting_window_closed`. No more bets accepted.
  </Step>

  <Step title="Spin">
    The wheel spins and a winning number is determined.
  </Step>

  <Step title="Resolution">
    Server broadcasts `round_result` with the winning number, all bets, and payouts.
  </Step>
</Steps>

## Bet Types

### Inside Bets

| Bet        | Description              | Payout |
| ---------- | ------------------------ | ------ |
| `straight` | Single number (0-36)     | 35:1   |
| `split`    | Two adjacent numbers     | 17:1   |
| `street`   | Three numbers in a row   | 11:1   |
| `corner`   | Four numbers in a square | 8:1    |
| `line`     | Six numbers (two rows)   | 5:1    |

### Outside Bets

| Bet             | Description          | Payout |
| --------------- | -------------------- | ------ |
| `red` / `black` | Color                | 1:1    |
| `odd` / `even`  | Parity               | 1:1    |
| `low` / `high`  | 1-18 / 19-36         | 1:1    |
| `dozen`         | 1-12 / 13-24 / 25-36 | 2:1    |
| `column`        | Column of 12 numbers | 2:1    |

## Example Betting Window

```json theme={null}
{
  "type": "betting_window_open",
  "gameType": "european-roulette",
  "tableId": "table-5",
  "timeoutSeconds": 15,
  "payload": {
    "roundNumber": 42,
    "previousResults": [17, 0, 32, 15, 19],
    "availableActions": [
      { "type": "place_bet", "betTypes": ["straight", "split", "street", "corner", "line", "red", "black", "odd", "even", "low", "high", "dozen", "column"], "minBet": 1, "maxBet": 500 }
    ]
  }
}
```

## Example Bet Submission

```json theme={null}
{
  "type": "submit_action",
  "gameType": "european-roulette",
  "tableId": "table-5",
  "payload": {
    "action": "place_bet",
    "betType": "straight",
    "numbers": [17],
    "amount": 10
  }
}
```

A player may submit multiple bets during the window (e.g., a straight bet on 17 and an outside bet on red).

## House Edge

**2.70%** — derived from the single zero. Every bet has the same expected return: 97.30% of the wagered amount over the long run.

## Fairness

If the server supports provably fair verification (`capabilities.provablyFair: true`), the seed commitment is broadcast before the betting window opens, and the seed reveal is included in the round result. The game spec describes how the seed maps to the winning number.
