# Neon Nexus play-money mathematics

Play-money prototype. **Not certified** for real-money gambling. The legacy
platform identifier remains `orbit-breaker`; it is not player-visible.

## Model

- Base: 5 reels × 4 rows, 20 fixed paylines
- Nexus Paths: 5 reels × 5 rows, adjacent-row connected paths
- Ordered reel strips with unbiased stop selection
- Four scatters trigger three feature spins at ×1, ×2, ×3
- Wild substitution; feature exposure capped at 10,000× bet
- Configuration: `services/orbit-games/math-config/math-config.json`

The provider service determines and persists the complete outcome before the
client animates. Speed and quick-stop affect presentation only.

Development builds expose three server-authoritative prototype payout profiles:
conservative (~92%), reference (~96.06%), and promotional (~98%). They scale
payout multipliers without changing reel stops, hit selection, feature
frequency, or presentation timing. Production ignores client-selected profiles
unless `ALLOW_DEMO_RTP_PROFILES=true` is explicitly configured. Each
non-reference outcome includes its profile and target in `model_version`.

## Prototype evidence

`SPINS=1000000 SEED=42 npm run simulate:rtp` reported approximately 96.09%
total RTP, 94.04% base RTP, 2.05% feature contribution, 31.8% hit frequency,
one feature per ~433 rounds, and 327.1× maximum observed win.

These are prototype simulation figures, not certification claims.

Run a selectable profile with:

```bash
RTP_PROFILE=conservative SPINS=1000000 SEED=42 npm run simulate:rtp
RTP_PROFILE=standard SPINS=1000000 SEED=42 npm run simulate:rtp
RTP_PROFILE=promotional SPINS=1000000 SEED=42 npm run simulate:rtp
```
