ヾ(✿゚▽゚)ノ 使用 TypeScript 实现的一个 ECS 框架,支持 2.4/3.0

文档: https://github.com/dualface/ecs-typescript

ECS 系统源代码: https://github.com/dualface/ecs-typescript/tree/main/lib/ecs

在线 DEMO 展示: https://liaoyulei.cn/projects/ecs-typescript/demo/

适用于 Cocos Creator 3.0 的 DEMO 源代码: https://github.com/dualface/ecs-typescript/tree/main/demo-3.0/assets/scripts

适用于 Cocos Creator 2.4 的 DEMO 源代码: https://github.com/dualface/ecs-typescript/tree/main/demo-2.4/assets/scripts

QQ 群: 367237484

~

目标

ECSEntity-Component-System 的缩写,代表了一种架构模式。

ECS 并没有什么标准的实现。不过总的来讲,ECS 具有这些特点:

  • Entity 代表一个实体,例如游戏中的 NPC、子弹、物品等等。通常每一个 Entity 都有一个唯一 ID。

  • Component 代表构成一个实体的其中一部分,称为组件。例如 NPC 可能由 Movable(可以移动)、Health(具有健康度,也就是血量)、RenderNode(渲染节点)几个组件组成,每个组件只定义特定的一组属性或者状态。

  • System 代表处理某一个领域逻辑的系统。大部分系统都是处理特定的 Component,例如专门处理所有 Movable 组件的系统仅仅处理移动等操作。这样一来大部分 system 通常都只包含相对简单的逻辑。

不过 ECS 也并非万能钥匙。在 UI 交互等场景中,ECS 用起来就比较繁琐了。所以从实践的角度,我主要将 ECS 用于构建游戏世界的玩法实现。而涉及到 UI 交互等场景,仍然采用传统的面向对象架构。

ecs-typescript 这个实现中,我主要追求以下目标:

  • 容易理解的设计

  • 简单明了的 API

  • 无性能损耗

~

READ MORE: https://github.com/dualface/ecs-typescript

34赞

赞,又多了一个参考

我这边也有一个ecs的实现,用来做战斗的

战略性mark

廖大。。。

无性能消耗怎么得出来的?有什么比较吗?

好吧,先留下

mark一下

就是不会有多余的损耗。该有的循环和遍历还是少不了撒。

无性能悄耗,那得看组件查询分类是怎么做

战略mark。
不过ECS应该还是比较消耗的吧。

不明觉厉,,mark一下

请问demo是怎么用的?我点击了npc没有反应

哦 npc是有血量的,要点击大概5次才会消灭

MARK ECS

支持廖大:muscle:

1赞

战略性mark

2.3 能用吗?

战略性mark

牛皮牛批,先mark一波

最近更新:

  1. 增加了一个类装饰器,可以简化使用 ECS 时的代码。
  2. 发布为 NPM 包,方便在 Cocos Creator 3.0 中使用。

CHANGELOG:

  • 2021/03/10: 将 DEMO 迁移到单独的仓库
  • 2021/03/10: 发布为 NPC 包,使用 ecsclass 装饰器简化代码
  • 2021/02/08: 添加 Cocos Creator 3.0 示例项目
  • 2021/01/26: 初始发布

~

框架仓库: https://github.com/dualface/ecs-typescript

DEMO 仓库: https://github.com/dualface/ecs-typescript-demo

NPM 包: https://www.npmjs.com/package/ecs-typescript

在 cocos creator 3.0 中,使用 npm install --save ecs-typescript 引用。

READ MORE: https://github.com/dualface/ecs-typescript

1赞