BornEngine / engine surface

Native games from TypeScript.

A class-first TypeScript game engine built around owned services, explicit resource lifetimes, and native performance—with Web/WASM support.

TypeScript API · Perry AOT · wgpu renderer

BornEngine runtime pipelineTypeScript API flows through the BornEngine runtime and wgpu renderer to native and web targets.TypeScriptBornEnginewgpunativewebTSBEW
One typed API, a native pipeline, and a browser target when you need it.
Targets in the same codebase
  • macOS
  • Windows
  • Linux
  • iOS
  • tvOS
  • watchOS
  • Android
  • Web / WASM
01 / The short path

From an empty folder to a running game, without a framework maze.

Subclass Game to keep startup, gameplay, and rendering together. The runtime owns the window and services; resources created with this stay bound to that runtime. Perry compiles the TypeScript side, and the engine owns the native renderer.

How the API fits your game
~/projects
$ bornengine create
$ cd MyGame
$ bornengine run main.ts
→ building native target
→ running MyGame
02 / The API

One code shape, many targets

Keep the whole game in one class.

Override onStart, loop, and render, then start the engine with run(). The same instance owns the renderer and shared assets through this.assets. Use run(callbacks) when you need direct frame control.

Browse the API Game lifecycle
main.ts
import { Colors, Game, Texture } from '@bornengine/engine';

class Undertale extends Game {
  private readonly player: Texture | null;

  constructor() {
    super({ window: { title: 'Undertale', width: 800, height: 450 } });
    this.player = this.assets.loadTexture('assets/player.png');
  }

  protected override onStart() {
    // Initialize game-specific systems.
  }

  protected override loop(_dt: number) {
    // Update gameplay state in seconds.
  }

  protected override render() {
    this.renderer.clear(Colors.SNOW);
    if (this.player !== null && this.player.isLoaded) this.player.draw({ x: 190, y: 200 });
  }
}

new Undertale().run();
03 / Capability bands

A compact core, not a black box

Build the part of the game you are thinking about.

The next frame is yours

Start with the project. Stay for the engine.

The companion CLI lives at github.com/RuanFernandes/bornengine-cli.