| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Original HTTPS Page] |
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.
Contact GitHub support about this user’s behavior. Learn more about reporting abuse.
Report abuseModular Game Framework for TypeScript
English | 中文
Documentation · API Reference · Examples
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| 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.
The easiest way to add ECS to your existing project:
# In your project directory
npx @esengine/cli initThe CLI automatically detects your project type (Cocos Creator 2.x/3.x, LayaAir 3.x, or Node.js) and generates the necessary integration code.
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);ESEngine's framework modules are designed to work alongside your preferred rendering engine:
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);
}
}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();
}
}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 streaminggit clone https://github.com/esengine/esengine.git
cd esengine
pnpm install
pnpm build
# Type check framework packages
pnpm type-check:framework
# Run tests
pnpm testContributions are welcome! Please read our contributing guidelines before submitting a pull request.
ESEngine is licensed under the MIT License. Free for personal and commercial use.
Made with care by the ESEngine community
DeepSeek-native AI coding agent for your terminal. Engineered around prefix-cache stability — leave it running.
一个高性能的TypeScript AI系统库,包含行为树(Behavior Tree)、实用AI(Utility AI)和有限状态机(FSM),适用于Cocos/Laya
| Back | FazBrowse Home | New Git URL |