108-day current streak·108-day longest streak
ESEngine Modular Game Framework for TypeScript English | 中文 Documentation · API Reference · Examples --- What is ESEngine? ESEngine is a collection of engine-agnostic game development modules for TypeScript.…
ESEngine
Modular Game Framework for TypeScript
English | 中文
Documentation ·
API Reference ·
Examples
---
What is ESEngine?
ESEngine is a collection of engine-agnostic game development modules for TypeScript. Use them with Cocos Creator, Laya, Phaser, PixiJS, or any JavaScript game engine.
The core is a high-performance ECS (Entity-Component-System) framework, accompanied by optional modules for AI, networking, physics, and more.
bash
npm install @esengine/ecs-framework
Features
| Module | Description |
|--------|-------------|
| ECS Core | Entity-Component-System framework with reactive queries |
| Behavior Tree | AI behavior trees with visual editor support |
| Blueprint | Visual scripting system |
| FSM | Finite state machine |
| Timer | Timer and cooldown systems |
| Spatial | Spatial indexing and queries (QuadTree, Grid) |
| Pathfinding | A* and navigation mesh pathfinding |
| Procgen | Procedural generation (noise, random, sampling) |
| RPC | High-performance RPC communication framework |
| Network | Client networking with prediction, AOI, delta compression |
| Database | Game database with Redis/Memory storage |
| World Streaming | Open world chunk loading and streaming |
> All modules are engine-agnostic and work with any rendering engine.
Quick Start
Using CLI (Recommended)
The easiest way to add ECS to your existing project:
bash
# In your project directory
npx @esengine/cli init
The CLI automatically detects your project type (Cocos Creator 2.x/3.x, LayaAir 3.x, or Node.js) and generates the necessary integration code.
Manual Setup
typescript
import {
Core, Scene, Entity, Component, EntitySystem,
Matcher, Time, ECSComponent, ECSSystem
} from '@esengine/ecs-framework';
// Define components (data only)
@ECSComponent('Position')
class Position extends Component {
x = 0;
y = 0;
}
@ECSComponent('Velocity')
class Velocity extends Component {
dx = 0;
dy = 0;
}
// Define system (logic)
@ECSSystem('Movement')
class MovementSystem extends EntitySystem {
constructor() {
super(Matcher.all(Position, Velocity));
}
protected process(entities: readonly Entity[]): void {
for (const entity of entities) {
const pos = entity.getComponent(Position);
const vel = entity.getComponent(Velocity);
pos.x += vel.dx * Time.deltaTime;
pos.y += vel.dy * Time.deltaTime;
}
}
}
// Initialize
Core.create();
const scene = new Scene();
scene.addSystem(new MovementSystem());
const player = scene.createEntity('Player');
player.addComponent(new Position());
player.addComponent(new Velocity());
Core.setScene(scene);
// Integrate with your game loop
function gameLoop(currentTime: number) {
Core.update(currentTime / 1000);
requestAnimationFrame(gameLoop);
}
requestAnimationFrame(gameLoop);
Using with Other Engines
ESEngine's framework modules are designed to work alongside your preferred rendering engine:
With Cocos Creator
typescript
import { Component as CCComponent, _decorator } from 'cc';
import { Core, Scene, Matcher, EntitySystem } from '@esengine/ecs-framework';
import { BehaviorTreeExecutionSystem } from '@esengine/behavior-tree';
const { ccclass } = _decorator;
@ccclass('GameManager')
export class GameManager extends CCComponent {
private ecsScene!: Scene;
start() {
Core.create();
this.ecsScene = new Scene();
// Add ECS systems
this.ecsScene.addSystem(new BehaviorTreeExecutionSystem());
this.ecsScene.addSystem(new MyGameSystem());
Core.setScene(this.ecsScene);
}
update(dt: number) {
Core.update(dt);
}
}
With Laya 3.x
typescript
import { Core, Scene } from '@esengine/ecs-framework';
import { FSMSystem } from '@esengine/fsm';
const { regClass } = Laya;
@regClass()
export class ECSManager extends Laya.Script {
private ecsScene = new Scene();
onAwake(): void {
Core.create();
this.ecsScene.addSystem(new FSMSystem());
Core.setScene(this.ecsScene);
}
onUpdate(): void {
Core.update(Laya.timer.delta / 1000);
}
onDestroy(): void {
Core.destroy();
}
}
Packages
All packages are engine-agnostic with zero rendering dependencies:
bash
npm install @esengine/ecs-framework # Core ECS
npm install @esengine/ecs-framework-math # Math utilities
npm install @esengine/behavior-tree # AI behavior trees
npm install @esengine/blueprint # Visual scripting
npm install @esengine/fsm # State machines
npm install @esengine/timer # Timers & cooldowns
npm install @esengine/spatial # Spatial indexing
npm install @esengine/pathfinding # Pathfinding
npm install @esengine/procgen # Procedural generation
npm install @esengine/rpc # RPC framework
npm install @esengine/network # Client networking
npm install @esengine/server # Game server
npm install @esengine/database # Database abstraction
npm install @esengine/transaction # Transaction system
npm install @esengine/world-streaming # World streaming
Building from Source
bash
git clone https://github.com/esengine/esengine.git
cd esengine
pnpm install
pnpm build
# Type check framework packages
pnpm type-check:framework
# Run tests
pnpm test
Documentation
Community
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - Questions and ideas
- Discord - Chat with the community
Contributing
Contributions are welcome! Please read our contributing guidelines before submitting a pull request.
1. Fork the repository
2. Create a feature branch (git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'Add amazing feature')
4. Push to the branch (git push origin feature/amazing-feature)
5. Open a Pull Request
License
ESEngine is licensed under the [MIT License](LICENSE). Free for personal and commercial use.
---
Made with care by the ESEngine community
-
DeepSeek-Reasonix ★ PINNED
DeepSeek-native AI coding agent for your terminal. Engineered around prefix-cache stability — leave it running.
Go ★ 34k 30m agoExplain → -
esengine ★ PINNED
ESEngine - High-performance TypeScript ECS Framework for Game Development
TypeScript ★ 910 13d agoExplain → -
estella ★ PINNED
A fast 2D game engine — TypeScript SDK, C++/WebAssembly core, visual editor. Ship one project to web, desktop, WeChat MiniGames, playable ads, and native Android / iOS.
TypeScript ★ 477 20m agoExplain → -
BehaviourTree-ai ★ PINNED
一个高性能的TypeScript AI系统库,包含行为树(Behavior Tree)、实用AI(Utility AI)和有限状态机(FSM),适用于Cocos/Laya
TypeScript ★ 146 5mo agoExplain → -
mvvm-ui-framework ★ PINNED
一个轻量级、高性能的MVVM UI数据管理框架,支持与任何UI库集成
TypeScript ★ 8 1y agoExplain → -
ccesengine ⑂
Cross-platform Game Engine | Based on Cocos Creator
C++ ★ 83 6mo agoExplain → -
lawn-mower-demo
No description.
TypeScript ★ 23 7mo agoExplain → -
cocos-framework
基于cocos与ecs-framework开发的框架
TypeScript ★ 21 5y agoExplain → -
egret-fairygui-mvc
基于引擎egret适配于fairygui的mvc框架
TypeScript ★ 9 3y agoExplain → -
NovaECS
Next-generation ECS game framework for TypeScript
TypeScript ★ 9 10mo agoExplain → -
Turnbase
基于ecs-framework与cocos2.4开发的回合制游戏
JavaScript ★ 9 5y agoExplain → -
nova-ecs-math
Fixed-point mathematics library for NovaECS- providing deterministic mathematical operations for game development
TypeScript ★ 6 1y agoExplain → -
nova-ecs-physics-box2d
Box2D physics engine implementation for NovaECS physics core
TypeScript ★ 5 1y agoExplain → -
ecs-tween
基于ecs-framework开发的tween库
TypeScript ★ 5 5y agoExplain → -
egret-optimize
基于egret开发的优化性能框架
JavaScript ★ 4 5y agoExplain → -
egret-framework-tiled
基于egretFramework项目开发的tiled支持
JavaScript ★ 3 5y agoExplain → -
GFramework-Cocos
No description.
TypeScript ★ 3 3y agoExplain → -
estella-mcp-server
MCP server for AI-assisted editing in the Estella game engine editor
TypeScript ★ 2 4mo agoExplain → -
editrix
A modular, plugin-driven editor framework in TypeScript
TypeScript ★ 2 1mo agoExplain → -
vivi
An ECS-oriented domain-specific language that compiles to WebAssembly.
Rust ★ 2 4mo agoExplain → -
HiveMind
A self-evolving, personalized AI system with federated learning
Python ★ 2 6mo agoExplain → -
nova-ecs-render-three
No description.
TypeScript ★ 2 1y agoExplain → -
ecs-astar
基于ecs-framework开发的astar/BreadthFirst/Dijkstra/GOAP目标导向计划 路径寻找库
TypeScript ★ 2 1y agoExplain → -
nova-ecs-render-canvas
Canvas 2D rendering implementation for NovaECS render core, providing high-performance 2D graphics rendering with world coordinate system support.
TypeScript ★ 2 1y agoExplain → -
nova-ecs-physics-core
Core physics engine abstraction layer for NovaECS
TypeScript ★ 2 1y agoExplain → -
GEditor
用于ECS框架和行为树的编辑器
C# ★ 2 2y agoExplain → -
ecs-laya-demo
基于ecs-framework开发的laya的demo
JavaScript ★ 2 5y agoExplain → -
MAPEDITOR
游戏地图编辑器
C# ★ 2 5y agoExplain → -
ecs-modern-egret
基于ecs-framework与egret开发的modern游戏
JavaScript ★ 2 5y agoExplain → -
egret-chess
象棋AI人机博弈
JavaScript ★ 2 5y agoExplain → -
ecs-egret-demo
基于ecs-framework在egret的demo
JavaScript ★ 2 5y agoExplain → -
homebrew-reasonix
Homebrew tap for Reasonix — the cache-first DeepSeek coding agent.
Ruby ★ 1 5m agoExplain → -
ink ⑂
🌈 React for interactive command-line apps
★ 1 2mo agoExplain → -
ecs-editor-plugins
Official and community plugins registry for ECS Framework Editor
JavaScript ★ 1 8mo agoExplain → -
cocos-engine-external ⑂
external 3rd party modules for cocos-engine
★ 1 7mo agoExplain → -
electric-world
No description.
TypeScript ★ 1 1y agoExplain → -
nova-ecs-editor
No description.
TypeScript ★ 1 1y agoExplain → -
nova-ecs-render-core
Universal rendering abstraction layer for NovaECS, providing a unified interface for different rendering backends.
TypeScript ★ 1 1y agoExplain → -
nova-ecs-physics-rapier
No description.
★ 1 1y agoExplain → -
nova-ecs-physics-cannon
No description.
★ 1 1y agoExplain → -
ecs-physics
No description.
JavaScript ★ 1 5y agoExplain → -
SpriteFusion
SpriteFusion是一个专门为2D游戏设计的游戏引擎
★ 1 3y agoExplain → -
maze-generation
依赖ecs-framework制作的迷宫生成算法
JavaScript ★ 1 4y agoExplain → -
egret-paint
基于egret开发的绘图小游戏
JavaScript ★ 1 5y agoExplain → -
Egret-Algorithm
基于egret开发的算法项目
JavaScript ★ 1 6y agoExplain → -
CRYENGINE ⑂
CRYENGINE is a powerful real-time game development platform created by Crytek.
C++ ★ 1 7y agoExplain → -
egret-ecs-ext
基于ecs-framework扩展的库
JavaScript ★ 1 5y agoExplain → -
EgretFramework-Editor
No description.
C# ★ 1 5y agoExplain → -
MonoGame.Forms ⑂
MonoGame.Forms is the easiest way of integrating a MonoGame render window into your Windows Forms project. It should make your life much easier, when you want to create your own editor environment.
C# ★ 1 8y agoExplain → -
Gearset ⑂
XNA toolset from The Complot
C# ★ 1 10y agoExplain → -
awesome-deepseek-agent ⑂
No description.
★ 0 3mo agoExplain → -
awesome-deepseek-integration ⑂
Integrate the DeepSeek API into popular software
★ 0 3mo agoExplain → -
noema
Small-scale experiments in latent-space reasoning for language models.
Python ★ 0 3mo agoExplain → -
ecs-benchmark ⑂
ECS benchmark comparison
★ 0 5y agoExplain → -
emsdk-releases
Pre-packaged emsdk toolchain for ESEngine Editor
★ 0 5mo agoExplain → -
tsrpc ⑂
A TypeScript RPC framework, with runtime type checking and serialization, support both HTTP and WebSocket. It is very suitable for website / APP / games, and absolutely comfortable to full-stack TypeScript developers.
★ 0 8mo agoExplain → -
asset-forge
A unified game asset processing CLI tool written in Rust
Rust ★ 0 8mo agoExplain → -
rapier.js ⑂
Official JavaScript bindings for the Rapier physics engine.
★ 0 9mo agoExplain → -
MonoGame.Extended ⑂
Classes and extensions to make MonoGame more awesome
C# ★ 0 8y agoExplain → -
nova-ecs-core
No description.
TypeScript ★ 0 1y agoExplain → -
nova-ecs-ui
No description.
TypeScript ★ 0 1y agoExplain → -
nova-ecs-animation
No description.
TypeScript ★ 0 1y agoExplain → -
nova-ecs-audio-web
No description.
TypeScript ★ 0 1y agoExplain → -
nova-ecs-input-core
No description.
TypeScript ★ 0 1y agoExplain → -
nova-ecs-render-laya
No description.
★ 0 1y agoExplain → -
nova-ecs-render-cocos
No description.
★ 0 1y agoExplain → -
nova-ecs-render-pixi
No description.
★ 0 1y agoExplain → -
nova-ecs-render-webgl
No description.
★ 0 1y agoExplain → -
space-openworld
No description.
TypeScript ★ 0 1y agoExplain → -
Nova2D
Nova2D is a lightweight 2D graphics engine written in C# (.NET 9), using OpenGL via Silk.NET.
C# ★ 0 1y agoExplain → -
BLCT
No description.
Python ★ 0 3y agoExplain → -
MemoryPack ⑂
Zero encoding extreme performance binary serializer for C# and Unity.
★ 0 3y agoExplain → -
ET ⑂
Unity3D Client And C# Server Framework
★ 0 3y agoExplain → -
FastBugly ⑂
快速接入新版Bugly到unity,支持unity2021
★ 0 3y agoExplain → -
SDL ⑂
Simple Directmedia Layer
★ 0 3y agoExplain → -
EASYChatGPT ⑂
This is an application project of 'chatgpt',only applicable to desktop environment.
★ 0 3y agoExplain → -
MonoGame.Framework.WpfInterop ⑂
Wpf interop code to host MonoGame controls inside WPF windows
C# ★ 0 8y agoExplain → -
crtworld
unity+wpf结合的一个项目
C# ★ 0 3y agoExplain → -
rose ⑂
Egret、framework、game、微信小游戏dts、微信小游戏.d.ts、小游戏声明文件、WeChat MiniGame dts
★ 0 6y agoExplain → -
ecs-framework-asm
基于ecs-framework的asm版本
JavaScript ★ 0 4y agoExplain → -
AlmGameEngine
No description.
C# ★ 0 4y agoExplain → -
megasource ⑂
Megasource is a CMake-buildable collection of all LÖVE dependencies.
★ 0 4y agoExplain → -
love ⑂
LÖVE is an awesome 2D game framework for Lua.
★ 0 4y agoExplain → -
Love2dCS ⑂
C# Wrapper for LÖVE, a 2d game engine
★ 0 6y agoExplain → -
RoslynPad ⑂
A cross-platform C# editor based on Roslyn and AvalonEdit
C# ★ 0 7y agoExplain → -
ecs-cocos-plugin
基于ecsframework开发至cocos的插件系统
★ 0 5y agoExplain → -
ExtendedWPFToolkit
Fork of Extended WPF Toolkit™ Community Edition (http://wpftoolkit.codeplex.com/)
C# ★ 0 9y agoExplain → -
FairyGUI-cocoscreator ⑂
A flexible UI framework for Cocos Creator
★ 0 5y agoExplain → -
mini-game-editor
小游戏开发编辑器
★ 0 5y agoExplain → -
cnwillz ⑂
No description.
★ 0 5y agoExplain → -
egret-gui
No description.
★ 0 5y agoExplain → -
TilesetPicker
对tileset图片进行检索并拆分出Json文件
★ 0 5y agoExplain → -
egret-guide
基于egret开发的引导框架
★ 0 5y agoExplain → -
FairyGUI-Editor ⑂
A Professional UI Editor
★ 0 6y agoExplain → -
FairyGUI-egret ⑂
A flexible UI framework for Egret Engine.
★ 0 6y agoExplain → -
hearthstone-predict
No description.
C# ★ 0 6y agoExplain → -
server ⑂
:desktop_computer: Simple and powerful server for Node.js
★ 0 6y agoExplain → -
egret-core ⑂
Egret is a brand new open mobile game and application engine which allows you to quickly build mobile games and apps on Android,iOS and Windows.
★ 0 6y agoExplain → -
artemis-odb ⑂
A continuation of the popular Artemis ECS framework
★ 0 6y agoExplain → -
Panda.DynamicWebApi ⑂
ASP.NET Core Dynamic Restful WebApi. Generating WebApi from Classes. Such as: Direct Generation of WebApi Based on Business Logic Layer.
★ 0 6y agoExplain → -
MonoGame ⑂
One framework for creating powerful cross-platform games.
C# ★ 0 7y agoExplain → -
WpfInterop.Test
No description.
C# ★ 0 7y agoExplain → -
egret-target-bricks ⑂
No description.
JavaScript ★ 0 7y agoExplain → -
DragonBone-MonoGame
DragonBones MonoGame Library
★ 0 7y agoExplain → -
Steropes.UI ⑂
A styleable and testable MonoGame UI library
C# ★ 0 8y agoExplain → -
TexturePacker-MonoGame-Demo ⑂
Demonstration of using TexturePacker with MonoGame
C# ★ 0 8y agoExplain → -
C3DE ⑂
C3DE is a 3D Game Engine powered by MonoGame
C# ★ 0 8y agoExplain → -
EnsembleEngine
This is a brand new 3D game engine.
★ 0 8y agoExplain → -
Modelviewer ⑂
3d model viewer for Monogame
C# ★ 0 9y agoExplain → -
PenumbraPhysics.Editor ⑂
It's a compound of WindowsForms, MonoGame, FarseerPhysics and Penumbra and it shows the possibility of creating something like an editor inside a windows forms control.
C# ★ 0 8y agoExplain → -
NodeEditorWinforms ⑂
Node based user control / editor for Windows Forms
C# ★ 0 10y agoExplain → -
SharpDX-Samples ⑂
Official repository for all SharpDX Samples
C# ★ 0 10y agoExplain → -
DarkUI ⑂
Dark themed control and docking library for .NET WinForms.
C# ★ 0 9y agoExplain → -
spine-runtimes ⑂
2D skeletal animation runtimes for Spine.
C# ★ 0 10y agoExplain →
No repos match these filters.