【ECS框架】专业级游戏架构 + 可视化调试插件,5年持续更新!附完整教程

:rocket:【ECS框架】专业级游戏架构 + 可视化调试插件,5年持续更新!附完整教程

:wave: 大家好!

分享一个我开发维护了5年的ECS框架,专门为TypeScript/JavaScript游戏引擎设计。最近又推出了Cocos Creator专用的可视化调试插件,想和大家交流一下~

:dart: 为什么选择ECS架构?

传统的OOP写游戏经常遇到这些问题:

  • 组件之间耦合严重,改一个地方牵一发动全身 :dizzy_face:

  • 继承层次复杂,维护困难

  • 性能瓶颈难以优化

  • 系统扩展性差

ECS架构完美解决了这些问题:

  • :white_check_mark: 实体(Entity):游戏对象的ID,就像身份证号

  • :white_check_mark: 组件(Component):纯数据,无逻辑,像是标签属性

  • :white_check_mark: 系统(System):处理特定组件组合的逻辑,专一高效

:hammer_and_wrench: 框架特色功能

:fire: 核心功能

  • :wrench: 完整TypeScript支持 - 类型安全,代码提示完备,告别拼写错误

  • :zap: 高性能优化 - 组件索引、Archetype系统、脏标记,让你的游戏飞起来

  • :satellite: 类型安全事件系统 - 支持装饰器,编译时检查,再也不怕事件名写错

  • :mag: 流式查询API - 链式调用,智能缓存,查找实体像写SQL一样爽

  • :dart: 统一实体管理 - 批量操作,生命周期管理,一站式解决方案

:gift: Cocos Creator专属福利

专门为Cocos用户开发了可视化调试插件!

:shopping_cart: 插件商店地址Cocos Store

插件核心功能:

  • :mag: 实时ECS状态监控 - 实体数量、系统运行状态一目了然

  • :bar_chart: 性能分析面板 - 帧率、内存使用、系统耗时实时显示

  • :hammer_and_wrench: 智能代码生成器 - 输入功能名自动生成组件+系统代码

  • :package: 一键安装管理 - 框架安装、更新、版本管理全自动

  • :dart: 项目模板生成 - 快速生成标准ECS项目结构

插件界面预览

:memo: 代码示例(超简单)


// 1. 定义组件(纯数据,无逻辑)

class PositionComponent extends Component {

    constructor(public x: number = 0, public y: number = 0) {

        super();

    }

}

class VelocityComponent extends Component {

    constructor(public dx: number = 0, public dy: number = 0) {

        super();

    }

}

class HealthComponent extends Component {

    constructor(public maxHealth: number = 100, public currentHealth: number = 100) {

        super();

    }

}

// 2. 创建系统(专注处理逻辑)

class MovementSystem extends EntitySystem {

    process(entities: Entity[]) {

        for (const entity of entities) {

            const pos = entity.getComponent(PositionComponent);

            const vel = entity.getComponent(VelocityComponent);

           

            if (pos && vel) {

                pos.x += vel.dx;

                pos.y += vel.dy;

            }

        }

    }

}

// 3. 初始化框架(一行搞定)

Core.create({

    debug: true,  // 开发阶段建议开启

    debugConfig: {

        enabled: true,

        websocketUrl: 'ws://localhost:8080/ecs-debug'

    }

});

const scene = new Scene();

Core.scene = scene;

// 4. 创建实体(链式调用很爽)

const player = scene.createEntity("Player")

    .addComponent(new PositionComponent(100, 100))

    .addComponent(new VelocityComponent(5, 0))

    .addComponent(new HealthComponent(100, 100));

// 5. 添加系统到场景

scene.addEntityProcessor(new MovementSystem());

// 6. 游戏循环(Cocos Creator中)

update(deltaTime: number) {

    Core.update(deltaTime);  // 就这一行!

}

:video_game: 实际项目验证

我们的框架已经在多种游戏类型中实战验证

| 游戏类型 | 应用场景 | 优势体现 |

|---------|---------|---------|

| :gun: 射击游戏 | 子弹系统、碰撞检测、特效管理 | 高性能处理大量子弹实体 |

| :european_castle: 策略游戏 | 单位管理、AI系统、资源管理 | 复杂逻辑解耦,易于扩展 |

| :crossed_swords: RPG游戏 | 技能系统、Buff管理、副本系统 | 灵活的状态管理和效果叠加 |

| :dart: 休闲游戏 | 简单逻辑,快速原型 | 快速开发,代码复用率高 |

:rocket: Cocos Creator快速上手

方法一:使用插件(强烈推荐)

  1. Cocos商店下载插件

  2. 启用插件后在扩展面板一键安装框架

  3. 使用代码生成器快速创建组件和系统

  4. 利用调试面板实时监控ECS状态

方法二:手动安装


npm install @esengine/ecs-framework

然后创建ECS管理器组件挂到场景节点上即可!详细教程在文档里有。

:books: 丰富的学习资源

:open_book: 完整文档体系

  • :globe_with_meridians: GitHub仓库https://github.com/esengine/ecs-framework

  • :clipboard: 新手教程 - 从零开始的完整学习路径

  • :wrench: API参考 - 详细的接口说明和使用示例

  • :bulb: 最佳实践 - 组件设计、性能优化、架构模式

  • :dart: 实战案例 - 多种游戏类型的具体应用示例

:mortar_board: 教学内容包含

  • 基础概念 - ECS架构思想、设计模式

  • 进阶技巧 - 性能优化、内存管理、调试技巧

  • 系统设计 - 4种系统类型详解,定时器系统

  • 组件设计 - 数据建模、组合模式、最佳实践

  • 场景管理 - 场景切换、数据持久化、状态管理

:speech_balloon: 活跃的技术交流社区

:video_game: QQ交流群:481923584

群内讨论内容:

  • :building_construction: ECS架构设计问题和解决方案

  • :wrench: 框架使用疑问和技术支持

  • :zap: 游戏性能优化心得分享

  • :chart_with_upwards_trend: 项目经验交流和案例分析

  • :new: 新功能建议和反馈收集

群友背景:

  • 独立游戏开发者

  • 中小游戏公司程序员

  • 学习游戏开发的学生

  • 对ECS架构感兴趣的开发者

:fire: 为什么选择我们的框架?

:trophy: 与其他ECS框架对比

| 特性 | @esengine/ecs-framework | bitECS | Miniplex |

|-----|-------------------------|--------|----------|

| TypeScript支持 | :white_check_mark: 原生支持 | :white_check_mark: 完整支持 | :white_check_mark: 原生支持 |

| 事件系统 | :white_check_mark: 内置+装饰器 | :x: 需自己实现 | :white_check_mark: 响应式 |

| 查询系统 | :white_check_mark: 流式API | :white_check_mark: 函数式 | :white_check_mark: 响应式 |

| 实体管理器 | :white_check_mark: 统一接口 | :x: 低级API | :white_check_mark: 高级接口 |

| 性能优化 | :white_check_mark: 多重优化 | :white_check_mark: 极致性能 | :white_check_mark: React优化 |

| JavaScript引擎集成 | :white_check_mark: 专为JS引擎设计 | :white_check_mark: 通用设计 | :warning: 主要React |

| 可视化调试工具 | :white_check_mark: Cocos插件 | :x: 无官方工具 | :white_check_mark: React DevTools |

| 中文社区支持 | :white_check_mark: 完整中文文档+QQ群 | :warning: 英文为主 | :warning: 英文为主 |

:tada: 最后想说的话

这个框架我们已经持续维护了5年,从最初的简单ECS实现到现在的专业级游戏开发工具链,每一次更新都在听取社区反馈。

特别是最近推出的Cocos Creator可视化调试插件,真的是为了让大家更方便地体验ECS架构的魅力。不管你是ECS新手还是老司机,都能从中获得很好的开发体验。

如果你正在考虑:

  • :thinking: 用ECS重构现有项目

  • :new: 尝试新的游戏架构模式

  • :dart: 提升游戏性能和可维护性

  • :hammer_and_wrench: 寻找专业的游戏开发工具

欢迎来试试我们的框架!有任何问题都可以在群里直接@我,基本上每天都在线~


:link: 重要链接汇总

期待和大家在群里交流游戏开发心得! :video_game::sparkles:


19赞

沙发~~支持大佬,很好用

非常吊,目前做的最完善的ecs框架,而且辅助工具做的也很好社区优质资源,顶顶顶

mark一下,刚好很想学一下

MARK1!!

mark一下

出售的插件带插件代码吗,主要想学习下这么复杂的插件怎么弄的 :relaxed:

不带插件代码哦,插件写了很久很辛苦的,就是赚个辛苦费的,如果要插件的源码的话是另一个价格了哦 :grinning:

1赞

感谢大家的支持!为了提供更好的服务,插件将在7月3日调整价格为99
现有用户享受终身免费更新
新用户请抓紧最后的优惠机会

2赞

看你这个实体好像是个对象吧

是对象形式,牺牲了一些性能来换取更好的开发体验,对于大多数游戏(非大规模RTS/模拟游戏)完全够用,后续会提供高性能模式(SOA数据布局)

那你是用了Archetype来存储的实体组件的布局模式还是用的紧凑集合?

看你写的那个行为树的编辑器好牛逼

混合的存储模式,同时使用了Archetype和紧凑集合存储,根据实体的组件组合将实体分组到不同的原型, 有完整的ArchetypeSystem类,ComponentStorage类使用SoA模式存储组件,而且结合位掩码、索引和缓存机制,提供了多级查询优化

1赞

行为树做的太晚了,商店里已经有很多很好的行为树插件了,很少人会会选我这个

跟你做的晚没关系,主要是行为树用的人比较少而已

没事,就当作学习怎么做cocos插件了,向大家学习

顶一个,确实想把手上的ecs重构,研究下。。。orz

可以加群:481923584

互相学习交流

这么多关键字和Cocos重合了,能在Cocos用吗