Skip to content

Estella

Build 2D games for the web with TypeScript and WebAssembly

Features

ECS Architecture

Data-oriented Entity-Component-System design. Compose game objects from reusable components and drive behavior with systems.

WebGL Rendering

C++ rendering pipeline compiled to WebAssembly. Sprites, cameras, Spine animations, and custom shaders out of the box.

Cross-Platform

Single codebase targeting web browsers and WeChat MiniGames with platform-specific adapters.

TypeScript SDK

Type-safe API with defineSystem, defineComponent, and Query — write game logic in idiomatic TypeScript.

Quick Example

Define a custom component, attach it to entities in the scene editor, then write a system:

import {
defineComponent, defineSystem, addSystem,
Query, Mut, Res, Time, Transform
} from 'esengine';
const Speed = defineComponent('Speed', { value: 200 });
addSystem(defineSystem(
[Res(Time), Query(Mut(Transform), Speed)],
(time, query) => {
for (const [entity, transform, speed] of query) {
transform.position.x += speed.value * time.delta;
}
}
));

Next Steps

Introduction

Learn what Estella is and how it works.

Read more →

Community