imgbot[bot] b9aaf894d7 [ImgBot] Optimize images (#252)
*Total -- 1,159.60kb -> 862.13kb (25.65%)

/screenshots/main_screetshot.png -- 175.29kb -> 84.97kb (51.52%)
/screenshots/settings.png -- 44.17kb -> 25.59kb (42.06%)
/screenshots/plugin_manager.png -- 60.70kb -> 37.42kb (38.35%)
/screenshots/about.png -- 32.89kb -> 23.61kb (28.21%)
/screenshots/performance_profiler.png -- 564.36kb -> 420.67kb (25.46%)
/packages/editor-app/src-tauri/icons/128x128.png -- 4.76kb -> 4.40kb (7.55%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-512@2x.png -- 58.30kb -> 54.30kb (6.86%)
/packages/editor-app/src-tauri/icons/Square107x107Logo.png -- 3.96kb -> 3.73kb (5.75%)
/packages/editor-app/src-tauri/icons/Square142x142Logo.png -- 5.44kb -> 5.13kb (5.69%)
/packages/editor-app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png -- 3.16kb -> 2.98kb (5.69%)
/packages/editor-app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png -- 3.16kb -> 2.98kb (5.69%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-40x40@2x-1.png -- 2.61kb -> 2.47kb (5.35%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-40x40@2x.png -- 2.61kb -> 2.47kb (5.35%)
/packages/editor-app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png -- 4.06kb -> 3.87kb (4.73%)
/packages/editor-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png -- 7.68kb -> 7.34kb (4.41%)
/packages/editor-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png -- 7.68kb -> 7.34kb (4.41%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-40x40@3x.png -- 4.58kb -> 4.38kb (4.33%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-60x60@2x.png -- 4.58kb -> 4.38kb (4.33%)
/packages/editor-app/src-tauri/icons/64x64.png -- 2.11kb -> 2.02kb (4.21%)
/packages/editor-app/src-tauri/icons/Square310x310Logo.png -- 13.92kb -> 13.36kb (4.04%)
/packages/editor-app/src-tauri/icons/Square89x89Logo.png -- 2.99kb -> 2.87kb (3.95%)
/packages/editor-app/src-tauri/icons/Square284x284Logo.png -- 12.53kb -> 12.04kb (3.89%)
/packages/editor-app/src-tauri/icons/Square150x150Logo.png -- 5.84kb -> 5.62kb (3.83%)
/packages/editor-app/src-tauri/icons/icon.png -- 25.58kb -> 24.61kb (3.81%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png -- 6.73kb -> 6.47kb (3.75%)
/packages/editor-app/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png -- 6.27kb -> 6.03kb (3.72%)
/packages/editor-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png -- 14.68kb -> 14.15kb (3.59%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-76x76@2x.png -- 6.06kb -> 5.85kb (3.51%)
/packages/editor-app/src-tauri/icons/128x128@2x.png -- 10.88kb -> 10.53kb (3.21%)
/packages/editor-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png -- 5.66kb -> 5.48kb (3.21%)
/packages/editor-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png -- 5.66kb -> 5.48kb (3.21%)
/packages/editor-app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png -- 9.02kb -> 8.78kb (2.74%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-60x60@3x.png -- 7.22kb -> 7.02kb (2.65%)
/packages/editor-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png -- 20.92kb -> 20.40kb (2.49%)
/packages/editor-app/src-tauri/icons/Square71x71Logo.png -- 2.38kb -> 2.33kb (1.81%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-76x76@1x.png -- 2.52kb -> 2.47kb (1.79%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-20x20@3x.png -- 2.01kb -> 1.98kb (1.46%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-29x29@3x.png -- 2.84kb -> 2.81kb (1.1%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-29x29@2x-1.png -- 1.91kb -> 1.89kb (0.82%)
/packages/editor-app/src-tauri/icons/ios/AppIcon-29x29@2x.png -- 1.91kb -> 1.89kb (0.82%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: YHH <359807859@qq.com>
2025-12-01 23:34:47 +08:00
2023-03-14 17:33:05 +08:00
2025-12-01 23:33:04 +08:00
2025-12-01 23:33:04 +08:00
2025-11-25 22:23:19 +08:00
2025-12-01 23:34:47 +08:00
2020-12-09 02:56:09 +00:00
2025-12-01 22:28:51 +08:00
2025-10-27 09:29:11 +08:00
2025-12-01 23:33:04 +08:00
2025-12-01 22:28:51 +08:00
2025-09-28 12:26:51 +08:00

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

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

平台支持

支持主流游戏引擎和 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

Languages
TypeScript 89.7%
Rust 4.7%
CSS 4.4%
JavaScript 0.9%
HTML 0.3%