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
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 ifpaytable[(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).
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 ingames/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.
