Skip to content

Engine API

typescript
import { Engine } from "quantum-forge/engine";

Engine<TState>

Abstract base class for game state coordination.

Constructor

typescript
new Engine<TState>(initialState: TState, options?: {
  logger?: LoggerInterface;
})

Methods

MethodReturnsDescription
getState()TStateReturns the current game state
setState(state: TState)voidReplaces the game state
getHelpers()Record<string, Function>Override to return state-mutating functions
reset()voidOverride to reset to initial state

Usage

typescript
interface MyState {
  score: number;
  player: { x: number; y: number };
}

class MyEngine extends Engine<MyState> {
  constructor(logger?: any) {
    super({ score: 0, player: { x: 0, y: 0 } }, { logger });
  }

  getHelpers() {
    return {
      addScore: (points: number) => {
        const state = this.getState();
        state.score += points;
        this.setState({ ...state });
      },
      movePlayer: (dx: number, dy: number) => {
        const state = this.getState();
        state.player.x += dx;
        state.player.y += dy;
        this.setState({ ...state });
      },
    };
  }

  reset() {
    this.setState({ score: 0, player: { x: 0, y: 0 } });
  }
}

Rules

  • getHelpers() returns plain functions, not async
  • Helpers should call pure logic functions for any non-trivial computation
  • No setTimeout, requestAnimationFrame, or animation timing in the engine
  • State should contain everything needed to render the game

Powered by Quantum Forge