A fast 2D game engine powered by WebAssembly and ECS
Website • Getting Started • Documentation • Discord • QQ群: 481923584
Estella is a 2D game engine with a TypeScript SDK driven by a high-performance C++/WebAssembly backend. It ships with a visual editor for scene editing and project management, and outputs games that run in web browsers and WeChat MiniGames.
- Fast — C++ rendering pipeline compiled to WebAssembly, not interpreted JS
- Type-safe — First-class TypeScript SDK with
defineSystem,defineComponent, andQuery - Data-oriented — Entity-Component-System architecture for scalable game logic
- Visual editor — Scene hierarchy, inspector, asset browser — no JSON editing
- Cross-platform — One codebase, deploy to web browsers and WeChat MiniGames
- Spine & Physics — Built-in Spine animation and physics support
| Feature | Description |
|---|---|
| Visual Editor | Scene editor with hierarchy, inspector, and asset management |
| ECS Architecture | Compose entities from reusable components, drive behavior with systems |
| WebGL Rendering | Sprites, cameras, Spine animations, custom shaders — all in WebAssembly |
| TypeScript SDK | Type-safe API: defineSystem, defineComponent, Query, Commands |
| Cross-Platform | Single codebase targeting web browsers and WeChat MiniGames |
Download the editor from the releases page and install it.
- Open the editor and click New Project
- Enter a project name, select a location, and click Create
The editor creates a project with a default scene containing a Camera entity.
Add entities and components in the scene editor, then write systems in TypeScript:
import {
defineComponent, defineSystem, addSystem,
Query, Mut, Res, Time, LocalTransform
} from 'esengine';
const Speed = defineComponent('Speed', { value: 200 });
addSystem(defineSystem(
[Res(Time), Query(Mut(LocalTransform), Speed)],
(time, query) => {
for (const [entity, transform, speed] of query) {
transform.position.x += speed.value * time.delta;
}
}
));Press F5 in the editor to preview.
Full documentation: estellaengine.com/docs
We welcome contributions! Please read the Contributing Guide before submitting a Pull Request.
Estella is licensed under the Apache License, Version 2.0.
You may use, modify, and distribute it for any purpose, including commercial use, free of charge. There is no separate commercial license and no noncommercial restriction. We follow Semantic Versioning and keep a CHANGELOG.
Two things to keep in mind:
- Trademarks. Apache-2.0 grants rights to the code, not to the "Estella" / "ESEngine" names or logos. You may state that your project uses Estella, but please don't imply endorsement or ship a fork under the Estella name.
- Spine is separate. The bundled Spine Runtimes are not open source. If you ship a game that uses Estella's Spine integration, you need a valid Spine license from Esoteric Software — independent of Estella's Apache-2.0 license. See NOTICE.
How the project sustains itself (sponsorship, optional hosted/pro add-ons, marketplace, and support) is described openly in BUSINESS_MODEL.md.
