Skip to content

foxling/ecs-framework

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

932 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

About

一套ecs框架,可用于laya/cocos及其他使用ts/js语言的框架

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 92.6%
  • CSS 4.9%
  • JavaScript 1.7%
  • Other 0.8%