Skip to main content
The Board class extends GeneralGameState and is responsible for creating, populating, and inspecting the game board. The board is stored as self.board — a list of columns (reels), where each column is a list of Symbol objects.
Board dimensions are config.num_reels wide and config.num_rows[reel_index] tall.

Board generation

Board.create_board_reelstrips()

The primary board generation method. For each reel, a random stopping position is drawn with uniform probability over the full reelstrip length. Symbol objects are created from the names at and following that position. Sets the following gamestate properties: The reelstrip set is chosen by a weighted random draw:
If the stopping position plus board height exceeds the reelstrip length, positions wrap around to index 0.

Board.draw_board(emit_event, trigger_symbol)

High-level board draw that handles forced-freegame logic. When the current bet mode distribution has force_freegame = True in the base game, draw_board() draws a scatter count from scatter_triggers and calls force_special_board() to guarantee that count. Otherwise it calls create_board_reelstrips() in a loop until the scatter count is below the freegame trigger threshold.
bool
default:"True"
Whether to emit a reveal event after the board is drawn.
str
default:"scatter"
The special symbol attribute used to determine the trigger count when force_freegame is active.

Forced boards

Board.force_special_board(force_criteria, num_force_syms)

Guarantees exactly num_force_syms symbols matching force_criteria on the board. Repeatedly calls _force_special_board() until the count is satisfied.
str
required
Symbol name or special attribute key (e.g. "scatter") to force onto the board.
int
required
Exact number of that symbol to guarantee.
If the target symbol can appear stacked (multiple per reel) in the reelstrip, this method cannot guarantee an exact count. Ensure scatter symbols are not stacked when using forced boards.

Board.force_board_from_reelstrips(reelstrip_id, force_stop_positions)

Creates a board from explicitly specified reelstrip stopping positions.
str
required
The ID of the reelstrip set to use.
dict
required
Maps reel index to an integer stopping position. Reels not included receive a random stop.

Padding symbols

When config.include_padding = True, one symbol above and one below the visible board area is also tracked per reel. These are stored in self.top_symbols and self.bottom_symbols. Row indexing for the active board starts at row = 1, where row = 0 is the top padding symbol. During tumble events, the top_symbols entry for each reel is consumed first to fill the first vacant position before drawing new symbols from the reelstrip.

Special symbols on board

After every board draw or tumble, special_syms_on_board is populated with positions of any symbols defined in config.special_symbols:
Use this to check freegame entry conditions:
Call get_special_symbols_on_board() explicitly after any manual board modification to keep this dictionary current.

Anticipation

self.anticipation is an integer array of length num_reels, initialized to 0. When scatter symbols that would trigger the freegame are detected on early reels, later reels receive incrementing anticipation values:

Utility methods