Skip to content
View esengine's full-sized avatar
🌐
today is a good day
🌐
today is a good day

Block or report esengine

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
esengine/README.md

ESEngine
ESEngine

Modular Game Framework for TypeScript

npmbuildlicensestarsTypeScriptDiscord

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.

npm install @esengine/ecs-framework

Features

ModuleDescription
ECS CoreEntity-Component-System framework with reactive queries
Behavior TreeAI behavior trees with visual editor support
BlueprintVisual scripting system
FSMFinite state machine
TimerTimer and cooldown systems
SpatialSpatial indexing and queries (QuadTree, Grid)
PathfindingA* and navigation mesh pathfinding
ProcgenProcedural generation (noise, random, sampling)
RPCHigh-performance RPC communication framework
NetworkClient networking with prediction, AOI, delta compression
DatabaseGame database with Redis/Memory storage
World StreamingOpen 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:

# 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

import{Core,Scene,Entity,Component,EntitySystem,Matcher,Time,ECSComponent,ECSSystem}from'@esengine/ecs-framework';// Define components (data only)
@ECSComponent('Position')classPositionextendsComponent{x=0;y=0;}
@ECSComponent('Velocity')classVelocityextendsComponent{dx=0;dy=0;}// Define system (logic)
@ECSSystem('Movement')classMovementSystemextendsEntitySystem{constructor(){super(Matcher.all(Position,Velocity));}protectedprocess(entities: readonlyEntity[]): void{for(constentityofentities){constpos=entity.getComponent(Position);constvel=entity.getComponent(Velocity);pos.x+=vel.dx*Time.deltaTime;pos.y+=vel.dy*Time.deltaTime;}}}// InitializeCore.create();constscene=newScene();scene.addSystem(newMovementSystem());constplayer=scene.createEntity('Player');player.addComponent(newPosition());player.addComponent(newVelocity());Core.setScene(scene);// Integrate with your game loopfunctiongameLoop(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

import{ComponentasCCComponent,_decorator}from'cc';import{Core,Scene,Matcher,EntitySystem}from'@esengine/ecs-framework';import{BehaviorTreeExecutionSystem}from'@esengine/behavior-tree';const{ ccclass }=_decorator;
@ccclass('GameManager')exportclassGameManagerextendsCCComponent{privateecsScene!: Scene;start(){Core.create();this.ecsScene=newScene();// Add ECS systemsthis.ecsScene.addSystem(newBehaviorTreeExecutionSystem());this.ecsScene.addSystem(newMyGameSystem());Core.setScene(this.ecsScene);}update(dt: number){Core.update(dt);}}

With Laya 3.x

import{Core,Scene}from'@esengine/ecs-framework';import{FSMSystem}from'@esengine/fsm';const{ regClass }=Laya;
@regClass()exportclassECSManagerextendsLaya.Script{privateecsScene=newScene();onAwake(): void{Core.create();this.ecsScene.addSystem(newFSMSystem());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:

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

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

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. Free for personal and commercial use.


Made with care by the ESEngine community

Pinned Loading

  1. DeepSeek-ReasonixDeepSeek-ReasonixPublic

    DeepSeek-native AI coding agent for your terminal. Engineered around prefix-cache stability — leave it running.

    Go 30.8k 2k

  2. esengineesenginePublic

    ESEngine - High-performance TypeScript ECS Framework for Game Development

    TypeScript 904 158

  3. estellaestellaPublic

    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 397 45

  4. BehaviourTree-aiBehaviourTree-aiPublic

    一个高性能的TypeScript AI系统库,包含行为树(Behavior Tree)、实用AI(Utility AI)和有限状态机(FSM),适用于Cocos/Laya

    TypeScript 145 52

  5. mvvm-ui-frameworkmvvm-ui-frameworkPublic

    一个轻量级、高性能的MVVM UI数据管理框架,支持与任何UI库集成

    TypeScript 8 3