Slot Engine is in Beta - Stable, but may contain minor bugs
Slot EngineSlot Engine

Implementing your Game

Keep full control over your game flow.


Quick Start

The entire game flow will live inside a single hook that is passed to the game configuration.

export const game = createSlotGame({
  /* the rest of your configuration */
  hooks: {
    onHandleGameFlow(ctx) {
      // implement your game here
    },
  },
})

As a game implementation might be a couple hundred lines long, you could write your implementation in a different file.

import { GameContext } from "@slot-engine/core"
import { GameModesType, SymbolsType, UserStateType } from "./your-main-file"

type Context = GameContext<GameModesType, SymbolsType, UserStateType>

export function onHandleGameFlow(ctx: Context) {
  // ...
}

Example Implementation

Check out a complete game flow example on our GitHub.

Dos and Don'ts

✅ Do

Pass game context around

If you want to separate your game implementation into multiple functions to avoid code duplication, you can safely pass the context between functions.

export function onHandleGameFlow(ctx: Context) {
  drawBoard(ctx)
}

function drawBoard(ctx: Context) {
  const reels = ctx.services.board.getRandomReelset()
  // ...
}

❌ Don't

Destroy reference to the context object

Your simulations will not work as intended if you do this.

export function onHandleGameFlow(ctx: Context) {
  const nope = { ...ctx }
  const yesButWhy = ctx
}

Game Flow Visualization

To help you understand slot game flows, here is a graphic showing a general game flow.

Game Flow Graphic

Next Steps

Learn about the context object and what role it plays when implementing your game.

Use of AI on this page: Some texts were improved with or written by AI.

On this page