Skip to main content
0_0_lines is the simplest sample game. It covers the core lines win type with wild multipliers, a dedicated freegame reelset, and scatter-triggered freespins.

Game overview

How to run

Or directly:

Mechanics

Basegame

  • Standard 20-payline evaluation left-to-right.
  • Scatter (S) appears on all 5 reels. Minimum 3 Scatters trigger the freegame.
  • Freespin awards: 3S → 8 spins, 4S → 12 spins, 5S → 15 spins.
  • Wild (W) substitutes for all paying symbols.

Freegame

  • A separate reelset (FR0.csv) is used — denser with Wilds and higher-value symbols.
  • Wilds carry multipliers (minimum 2×). Multipliers add together across all Wilds on a winning line, then multiply the base line win.
  • Retrigger: 2+ Scatters on reels 2, 3, 4 award extra spins (2S → 3, 3S → 5, 4S → 8, 5S → 12).
Wild multipliers in this game are additive, not multiplicative. Two 3× Wilds on the same line produce a 6× multiplier applied to the line win, not 9×. This differs from the Ways game, where multipliers compound.

Wild multiplier rule

Wilds only pay on 5-of-a-kind by default. If the paytable includes 3- or 4-kind Wild payouts, the line calculation will select whichever combination yields the highest payout. For example: a 3-kind Wild on a line where there is also a 5-kind L4 — the 3-kind Wild is chosen if paytable[(3, "W")] > paytable[(5, "L4")], regardless of the multiplier on the Wild.

Configuration

Paytable (game_config.py)

Reelsets

  • BR0 — basegame reelset.
  • FR0 — freegame reelset (higher Wild density).
  • WCAP — wincap freegame reelset (higher multiplier density for forced max-win simulations).

Wild multiplier distribution

Padding symbols carry multiplier attributes drawn from a weighted distribution:

Freespin triggers

Bet modes

Two bet modes are configured:
  • base (cost 1×, is_feature=True) — standard play with scatter-triggered freegame.
  • bonus (cost 100×, is_buybonus=True) — direct freegame entry (buy bonus).
Each mode defines Distribution objects covering wincap, freegame, zero-win (0), and basegame simulation criteria with corresponding reel weights and multiplier distributions.

Game flow (gamestate.py)

evaluate_lines_board() is inherited from the SDK’s Executables layer and handles Wild substitution, multiplier application, and event emission in a single call.

Output files

After running, results appear in games/0_0_lines/library/: To inspect output in human-readable form, set compression = False and run with a small num_sim_args value in run.py.
To explore event structure interactively, set "base": 100 and compression = False in run.py, then open library/books/books_base.jsonl in any JSON viewer. Each entry includes the full events array returned to the RGS.