Estella
A fast 2D and 3D game engine powered by WebAssembly and ECS
![Platform]()
Website • Getting Started • Documentation • Discord • QQ群: 481923584
What is Estella?
Estella is a 2D and 3D game engine — sprites, tilemaps and UI as much as lit, shadowed, physically simulated 3D worlds — with a TypeScript SDK driven by a high-performance C++ core — as WebAssembly on the web, and compiled ahead of time on native platforms. It outputs games that run in web browsers, on the desktop, in WeChat MiniGames, as single-file playable ads, and as native Android / iOS apps. A visual editor is available as a separate, free download.
Celestial Heights — an action-RPG scene in the Estella editor, with the full scene graph in the outliner.
Why Estella?
- 2D and 3D, one engine — Sprites, tilemaps, UI and Spine alongside PBR-lit models, shadows, baked lighting and 3D physics, in the same scene, editor and export pipeline
- 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, desktop, WeChat MiniGames, playable ads, and native mobile
- Animation & Physics — Built-in Spine animation, skeletal animation, and 2D and 3D physics
- Agent-native — The editor is an MCP server and ships an agent of its own; both drive the same tools its UI does
Features
| Feature | Description |
|---------|-------------|
| Visual Editor | Scene editor with hierarchy, inspector, and asset management |
| ECS Architecture | Compose entities from reusable components, drive behavior with systems |
| 2D | Sprites, tilemaps, UI, text, Spine and DragonBones animation, 2D physics, particles, lighting |
| 3D | glTF / FBX import, PBR materials, directional / point / spot lights with shadows, HDRI environments, baked lightmaps and light probes, reflection probes, decals, 3D physics, skeletal animation, navigation, post-processing, streamed large worlds |
| WebGL / WebGPU Rendering | One renderer for 2D and 3D, custom shaders — all in WebAssembly |
| TypeScript SDK | Type-safe API: defineSystem, defineComponent, Query, Commands |
| Cross-Platform | One project → web, desktop, WeChat MiniGames, playable ads, and native Android / iOS |
| Native mobile | A real arm64 app rendering through an embedded Dawn (Metal / Vulkan) — not a WebView |
| AI agents | The editor is an MCP server with 65 tools, and ships a built-in agent that drives the same ones |
Getting Started
Install
Download the editor for Windows or macOS from estellaengine.com — served from the project's mirror, always the newest release. Every build is also on the releases page.
Create a Project
- Open the editor and click New Project
- Enter a project name, select a location, and click Create
Write Game Logic
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.
Let an agent build it
The editor speaks the Model Context Protocol. Point Claude Code, Cursor, or any MCP-capable tool at it and the agent drives the real editor — opens projects, spawns entities from the same Create menu you use, edits component fields, enters play mode, takes a screenshot to see what it built, and exports the finished game. Sixty-five tools, all of them the pipelines the UI itself calls.
It also ships an agent of its own, so you don't need an external tool to start: type a sentence in the editor and watch every tool call it makes. Both front doors drive one catalog — what the built-in agent can do and what your MCP client can do are the same list, and both go through the editor's command surface, so creates are undoable and you can take the mouse back mid-turn.
- The Built-in Agent — set up a provider and start asking
- External Agents (MCP) — connect Claude Code, Cursor, or your own
Documentation
Full documentation: estellaengine.com/docs
- Introduction
- Installation
- Quick Start
- ECS Architecture
- Components
- Systems
- Building & Exporting
- Android & iOS
- AI Agents
Contributing
We welcome contributions! Please read the Contributing Guide before submitting a Pull Request.
Maintainers: see the release procedure for candidate builds, acceptance evidence and publishing.
License
This repository — the engine runtime, the SDK, the asset pipeline, the CLI, the project templates and the editor plugin API — 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.
Three things to keep in mind:
- The visual editor is a separate product and is not open source. It is free to
- Trademarks. Apache-2.0 grants rights to the code, not to the "Estella" /
- Spine is separate. The bundled Spine Runtimes are not open
How the project sustains itself (sponsorship, optional hosted/pro add-ons, marketplace, and support) is described openly in BUSINESS_MODEL.md.