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
| Method | Returns | Description |
|---|---|---|
getState() | TState | Returns the current game state |
setState(state: TState) | void | Replaces the game state |
getHelpers() | Record<string, Function> | Override to return state-mutating functions |
reset() | void | Override 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