Files
oes-web/docs/adr/001-entity-component-pattern.md
T
2026-05-11 17:39:31 +08:00

934 B

ADR-001: 使用 Entity-Component 模式

Status

Accepted

Date

2026-05-10

Context

需要一个管理游戏对象的架构,要求:

  • 支持 50+ 个并发实体
  • 轻松添加新实体类型,无需修改核心系统
  • 高效查询特定组件组合的实体
  • 解耦物理、渲染和 AI 逻辑

Decision

使用 Entity-Component (EC) 模式,不用完整 ECS 框架。

  • 实体是唯一 ID (字符串)
  • 组件是纯数据对象,必须有 type 字段
  • 系统遍历组件数组操作匹配的实体
  • EventBus 处理系统间通信

选择此方案而非:

  • 继承层次 (太僵化,钻石问题)
  • 完整 ECS 库 (增加依赖,复杂度超出需求)
  • 扁平对象数组 (大数据量缓存不友好)

Consequences

  • 添加新实体类型只需定义组件 (无需修改类)
  • 系统可以独立开发和测试
  • 需要自己编写组件存储和查询逻辑
  • 实体数量在 200+ 时可能需要优化