Features Quickstart Why BassEngine Community Get Started Free
Version 1.0 — Now Available

The game engine
built for speed & scale

BassEngine is a lightweight, WebGL-powered game engine crafted for indie developers. Write less boilerplate, ship faster, and run at a solid 60 fps on every device.

$
Scroll
WebGL Renderer
ECS Architecture
Physics Engine
Audio System
Scene Management
Input Mapping
Shader Support
Tilemap System
Particle System
Asset Pipeline
TypeScript Ready
MIT Licensed
Zero Dependencies
WebGL Renderer
ECS Architecture
Physics Engine
Audio System
Scene Management
Input Mapping
Shader Support
Tilemap System
Particle System
Asset Pipeline
TypeScript Ready
MIT Licensed
Zero Dependencies
60fps
Frame Rate
Rock-solid on any modern browser and device
<5ms
Input Latency
From user event to rendered frame
14kb
Gzipped Size
The full engine, minified and compressed
MIT
Open Source
Free forever — even in commercial products
Features

Everything you need to ship

A complete toolkit out of the box — no plugins needed for the core gameplay loop.

WebGL Renderer

Batched draw calls, sprite atlases, custom GLSL shaders, and camera transforms. Renders thousands of sprites at 60fps without breaking a sweat.

WebGL 2 Sprite Atlas Custom Shaders
🧩

ECS Architecture

Entity-Component-System keeps game logic composable, testable, and cache-friendly. Attach, detach, and query components at runtime with no overhead.

Entity Component System
🎮

Input System

Keyboard, mouse, gamepad, and touch — all through one unified API with named action maps and configurable dead zones.

🔊

3D Audio Engine

Web Audio API with positional audio, reverb, pitch control, and a real-time gain mixer. Sounds exactly where it should be.

🌎

Scene Management

Tree-based scene graph with async asset loading, smooth fade transitions, and persistent global state between scenes.

🔧

Physics & Collision

Arcade-quality AABB and circle physics, rigidbody gravity, raycasting, and per-entity collision events — zero external deps.

🆕

Particle System

Pool-based particle emitter with burst mode, gravity, size/color interpolation, and continuous emission. Plug onto any entity.

BassEngine — Live Renderer Preview
LIVE
Quickstart

Up and running
in minutes

Three steps from nothing to a full game loop with physics, renderer, and input.

1

Install

Run npm i bass-engine or include the CDN script tag in your HTML.

2

Create a Scene

Extend Scene, add entities in onCreate(), update them in onUpdate(dt).

3

Run It

Call BassEngine.run(new MyScene()) — the loop, renderer, and physics all start.

game-scene.js
import { BassEngine, Scene, Sprite }
  from 'bass-engine';

class GameScene extends Scene {
  onCreate() {
    this.player = new Sprite({
      texture: 'player.png',
      x: 100, y: 200,
      tag: 'player'
    });
    this.add(this.player);
  }

  onUpdate(dt) {
    this.player.x += 200 * dt;
  }
}

BassEngine.run(new GameScene());
player-input.js
import { Input } from 'bass-engine';

// Map named actions to keys
Input.mapAction('jump',
  ['Space', 'ArrowUp']);
Input.mapAxis('move', {
  pos: 'ArrowRight',
  neg: 'ArrowLeft'
});

// Use in onUpdate(dt)
onUpdate(dt) {
  const dir = Input.axis('move');
  this.player.x += dir * 200 * dt;

  if (Input.actionPressed('jump'))
    rb.vy = -500;
}
physics-setup.js
import {
  Sprite, Rigidbody,
  BoxCollider
} from 'bass-engine';

const player = new Sprite({
  texture: 'player.png'
});

// Add gravity + velocity
const rb = player.addComponent(
  new Rigidbody({ gravity: 980 })
);

// Add AABB collider
player.addComponent(new BoxCollider());

// React to collisions
player.on('collide', other => {
  if (other.tag === 'ground')
    rb.vy = 0;
});
audio-setup.js
import { Audio, Assets }
  from 'bass-engine';

// Preload sounds via AssetLoader
await Assets.sound('jump',
  '/sfx/jump.ogg');
await Assets.sound('coin',
  '/sfx/coin.ogg');

// Play with options
Audio.play('jump', {
  volume: 0.8,
  pitch: 1.2
});

// 3D positional audio
Audio.play3D('coin',
  player.x, player.y);
Comparison

Why choose BassEngine?

We built exactly what indie web game developers actually need — no more, no less.

Heavy Alternatives

Full-featured desktop engines ported to the web — powerful but massive and complex.

  • Multi-MB download size
  • Steep learning curve
  • ~
    Good for large teams
  • Slow cold start time
  • Wide ecosystem
⚡ Recommended
BassEngine

Purpose-built for the web. Lightweight, fast to learn, and ships instantly anywhere a browser runs.

  • 14kb gzipped
  • Learn in an afternoon
  • Great for solo devs
  • Instant browser start
  • MIT — fully free
DIY Canvas

Rolling your own engine from scratch — total control, but you reinvent the wheel every time.

  • Minimal size
  • No built-in systems
  • Physics from scratch
  • Audio from scratch
  • ~
    Full control
Community

Built by devs, loved by devs

"I shipped my first game in a weekend using BassEngine. The ECS setup is incredibly intuitive and the renderer is blazing fast. Nothing else comes close at this level of simplicity."

A
Alex M.
Indie Game Developer

"Finally an engine that doesn't feel like overkill for a 2D platformer. The physics feel great out of the box, docs are clear, and the JS API is a genuine joy to work with."

S
Sara K.
Frontend Engineer

"We ported our prototype from another engine in two days flat. BassEngine's scene system and input abstraction saved us hundreds of lines of code. Would absolutely recommend."

R
Ren T.
Studio Technical Lead

Ready to ship your game?

BassEngine is free, open source, and MIT licensed. Everything you need is already in the box — no strings attached.