> For the complete documentation index, see [llms.txt](https://docs.picklemods.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.picklemods.com/paid-resources/casinos/slot-machine-odds-and-payout-configuration.md).

# Slot Machine Odds & Payout Configuration

### High‑Level Concepts

#### RTP (Return to Player)

* RTP is the **long‑term average payout** of the machine.
* Example: **96% RTP** means that for every $100 wagered over time, $96 is paid back to players.
* **RTP is not affected by max bet size**.
  * Increasing max bet only increases *volatility* (bigger wins & losses).

👉 If players are winning too much *too fast*, the issue is **odds and multipliers**, not RTP alone.

***

### How Winning Works

A win occurs when:

1. A **payline** matches the same symbol across enough reels
2. The match count meets `paylineWinThreshold`
3. The corresponding **multiplier** is applied to the bet

***

### Key Configuration Sections

#### 1️⃣ `reels` — Symbol Appearance Odds

```lua
reels = {10, 10, 10, 10, 10}
```

* Each number represents the **relative chance** of that symbol appearing on each reel.
* **Higher number = higher chance**
* **Lower number = rarer symbol**

Example:

```lua
reels = {15, 12, 10, 10, 15}
```

* Reel 1 & 5 → more likely
* Reel 3 & 4 → less likely

📉 **Lowering these values reduces win frequency**.

***

#### 2️⃣ `pay` — Payout Multipliers (Per Reel Count)

```lua
pay = {0, 0, 0.2, 0.35, 1.25}
```

Each index represents the **multiplier based on how many matching reels you hit**:

| Matches | Multiplier |
| ------- | ---------- |
| 1       | 0x         |
| 2       | 0x         |
| 3       | 0.2x       |
| 4       | 0.35x      |
| 5       | 1.25x      |

#### Example Calculation

* Bet: $10
* Hit 3 symbols → `0.2x`
* Payout: `$10 × 0.2 = $2`

⚠️ This means **not every win is profitable** — low multipliers intentionally cause losses.

📉 **Lowering pay values reduces payout size**.

***

#### 3️⃣ Bonus Symbols & Bonus Odds

```lua
["Bonus Symbol"] = {
    image = "bonus.png",
    reels = {8, 8, 1, 1, 1},
    pay = {0, 0, 0, 0, 0},
}
```

**How Bonus Odds Work**

* Bonus symbols **use the same reel odds system**
* In this example:
  * Reels 1 & 2 → common
  * Reels 3–5 → rare

This creates a **"tease effect"** where players frequently see partial bonuses.

**Reducing Bonus Frequency**

To make bonuses harder to hit:

```lua
reels = {4, 4, 1, 1, 1}
```

✅ This **halves bonus chance**\
❌ Does NOT affect normal symbol odds

***

#### 4️⃣ `bonusFreeSpins`

```lua
bonusFreeSpins = 15
```

* Controls how many free spins are awarded
* Directly affects profitability

📉 Reducing this is one of the **safest ways** to lower payout without impacting normal gameplay.

***

#### 5️⃣ Paylines & Win Frequency

```lua
paylines = {
  {1,1,1,1,1},
  {0,0,0,0,0},
  {2,2,2,2,2},
  ...
}
```

* More paylines = more chances to win
* Fewer paylines = lower hit rate

📉 Removing high‑coverage paylines reduces win frequency.

***

### How to Reduce Player Profitability (Recommended Order)

If players are winning too much:

#### ✅ Best Options (Safe)

1. Lower **bonus symbol reel odds**
2. Reduce **bonusFreeSpins**
3. Slightly reduce **high‑tier multipliers** (4–5 matches)

#### ⚠️ Use Carefully

* Lowering base symbol odds too much can make machines feel "dead"
* Over‑nerfing RTP causes player churn

***

### Common Misconceptions

❌ "Max bet affects RTP"\
✔️ Max bet only affects volatility

❌ "You only win with 5 symbols"\
✔️ You can win with 3+, depending on `pay`

❌ "Pay is per reel"\
✔️ Pay is **based on total matching reels on a payline**

***

### TL;DR

* `reels` → controls **how often** symbols appear
* `pay` → controls **how much** they pay
* Bonus symbols use the same odds logic
* RTP stays constant unless you rebalance payouts

If bonuses are too profitable: **make them rarer, not bigger**.

***

If you want, this doc can be expanded with:

* RTP math examples
* Recommended default tuning values
* "High volatility" vs "casual" presets
