Skip to content

esengine/ecs-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ECS Framework

CI codecov npm version npm downloads Bundle Size TypeScript License: MIT All Contributors GitHub stars DeepWiki

一个高性能的 TypeScript ECS (Entity-Component-System) 框架,专为现代游戏开发而设计。

A high-performance TypeScript ECS (Entity-Component-System) framework designed for modern game development.


📊 项目统计 / Project Stats

Star History Chart

📈 下载趋势 / Download Trends

NPM Downloads

NPM Trends


特性

  • 高性能 - 针对大规模实体优化,支持SoA存储和批量处理
  • 多线程计算 - Worker系统支持真正的并行处理,充分利用多核CPU性能
  • 类型安全 - 完整的TypeScript支持,编译时类型检查
  • 现代架构 - 支持多World、多Scene的分层架构设计
  • 开发友好 - 内置调试工具和性能监控
  • 跨平台 - 支持Cocos Creator、Laya引擎和Web平台

安装

npm install @esengine/ecs-framework

快速开始

import { Core, Scene, Component, EntitySystem, ECSComponent, ECSSystem, Matcher, Time } from '@esengine/ecs-framework';

// 定义组件
@ECSComponent('Position')
class Position extends Component {
    constructor(public x = 0, public y = 0) {
        super();
    }
}

@ECSComponent('Velocity')
class Velocity extends Component {
    constructor(public dx = 0, public dy = 0) {
        super();
    }
}

// 创建系统
@ECSSystem('Movement')
class MovementSystem extends EntitySystem {
    constructor() {
        super(Matcher.all(Position, Velocity));
    }

    protected process(entities: readonly Entity[]): void {
        for (const entity of entities) {
            const position = entity.getComponent(Position)!;
            const velocity = entity.getComponent(Velocity)!;

            position.x += velocity.dx * Time.deltaTime;
            position.y += velocity.dy * Time.deltaTime;
        }
    }
}

// 创建场景并启动
class GameScene extends Scene {
    protected initialize(): void {
        this.addSystem(new MovementSystem());

        const player = this.createEntity("Player");
        player.addComponent(new Position(100, 100));
        player.addComponent(new Velocity(50, 0));
    }
}

// 启动游戏
Core.create();
Core.setScene(new GameScene());

// 游戏循环中更新
function gameLoop(deltaTime: number) {
    Core.update(deltaTime);
}

核心特性

  • 实体查询 - 使用 Matcher API 进行高效的实体过滤
  • 事件系统 - 类型安全的事件发布/订阅机制
  • 性能优化 - SoA 存储优化,支持大规模实体处理
  • 多线程支持 - Worker系统实现真正的并行计算,充分利用多核CPU
  • 多场景 - 支持 World/Scene 分层架构
  • 时间管理 - 内置定时器和时间控制系统

🏗️ 架构设计 / Architecture

graph TB
    A[Core 核心] --> B[World 世界]
    B --> C[Scene 场景]
    C --> D[EntityManager 实体管理器]
    C --> E[SystemManager 系统管理器]
    D --> F[Entity 实体]
    F --> G[Component 组件]
    E --> H[EntitySystem 实体系统]
    E --> I[WorkerSystem 工作线程系统]

    style A fill:#e1f5ff
    style B fill:#fff3e0
    style C fill:#f3e5f5
    style D fill:#e8f5e9
    style E fill:#fff9c4
    style F fill:#ffebee
    style G fill:#e0f2f1
    style H fill:#fce4ec
    style I fill:#f1f8e9
Loading

平台支持

支持主流游戏引擎和 Web 平台:

  • Cocos Creator
  • Laya 引擎
  • 原生 Web - 浏览器环境直接运行
  • 小游戏平台 - 微信、支付宝等小游戏

ECS Framework Editor

跨平台桌面编辑器,提供可视化开发和调试工具。

主要功能

  • 场景管理 - 可视化场景层级和实体管理
  • 组件检视 - 实时查看和编辑实体组件
  • 性能分析 - 内置 Profiler 监控系统性能
  • 插件系统 - 可扩展的插件架构
  • 远程调试 - 连接运行中的游戏进行实时调试
  • 自动更新 - 支持热更新,自动获取最新版本

下载

Latest Release

支持 Windows、macOS (Intel & Apple Silicon)

截图

ECS Framework Editor

查看更多截图

性能分析器 Performance Profiler

插件管理 Plugin Manager

设置界面 Settings

示例项目

文档

生态系统

💪 支持项目 / Support the Project

如果这个项目对你有帮助,请考虑:

If this project helps you, please consider:

GitHub Sponsors Star on GitHub

  • ⭐ 给项目点个 Star
  • 🐛 报告 Bug 或提出新功能
  • 📝 改进文档
  • 💖 成为赞助者

社区与支持

贡献者 / Contributors

感谢所有为这个项目做出贡献的人!

Thanks goes to these wonderful people:

esengine
esengine

🚧 💻 🎨
LING YE
LING YE

💻
MirageTank
MirageTank

💻

本项目遵循 all-contributors 规范。欢迎任何形式的贡献!

许可证

MIT © 2025 ECS Framework