Skip to main content
0_0_cluster demonstrates the cluster win type with a tumbling (cascading) mechanic and a freegame that adds per-position grid multipliers on top of a global multiplier.

Game overview

How to run

Or directly:

Mechanics

Basegame

  • Clusters of 5 or more adjacent like symbols pay.
  • Winning symbols are removed from the board; symbols above fall down to fill the gaps (tumble/cascade).
  • Tumbling continues until no winning clusters remain or the win cap is hit.
  • Minimum 4 Scatters trigger the freegame. Freespin awards: 4S → 10, 5S → 12, 6S → 15, 7S → 18, 8S → 20.

Freegame

  • Same cluster and tumble rules as basegame.
  • Each grid position starts in a deactivated state (value 0).
  • When a position is part of a winning cluster, it becomes activated at 1×.
  • On each subsequent win at an already-activated position, the multiplier increments by +1 (i.e., it accumulates linearly, not doubles — capped at 512×).
  • A global multiplier starts at 1 and increments by +1 at the start of each freespin. It does not reset between spins.
  • Retrigger: minimum 3 Scatters during freegame award extra spins (3S → 5, 4S → 8, 5S → 10, etc.).
The cluster game includes a check_freespin_entry() guard in run_spin(). Without it, Scatter symbols that tumble onto the board during basegame evaluation (in forced-freegame simulation criteria) would incorrectly trigger a second freegame entry from within the same basegame phase.

Paytable

Pays are defined by cluster-size ranges using convert_range_table(). The ranges are (5,5), (6,8), (9,12), (13,36):
convert_range_table() expands each range entry into individual (cluster_size, symbol) keys in self.paytable.

Grid multiplier implementation

The freegame grid is managed by update_grid_mults() in game_executables.py:
The cluster win evaluation itself also reads the grid to compute per-cluster payouts in game_calculations.py:
The board_mult for a cluster is the sum of the grid multiplier values at all positions in that cluster.

Game flow (gamestate.py)

Game-specific events

The gridMultipliers payload in each updateGrid event is the full 7×7 grid. The frontend uses this to animate which positions are active and at what multiplier value before each spin reveal.