34 lines
934 B
Markdown
34 lines
934 B
Markdown
# ADR-001: 使用 Entity-Component 模式
|
|
|
|
## Status
|
|
Accepted
|
|
|
|
## Date
|
|
2026-05-10
|
|
|
|
## Context
|
|
需要一个管理游戏对象的架构,要求:
|
|
- 支持 50+ 个并发实体
|
|
- 轻松添加新实体类型,无需修改核心系统
|
|
- 高效查询特定组件组合的实体
|
|
- 解耦物理、渲染和 AI 逻辑
|
|
|
|
## Decision
|
|
使用 Entity-Component (EC) 模式,不用完整 ECS 框架。
|
|
|
|
- 实体是唯一 ID (字符串)
|
|
- 组件是纯数据对象,必须有 `type` 字段
|
|
- 系统遍历组件数组操作匹配的实体
|
|
- EventBus 处理系统间通信
|
|
|
|
选择此方案而非:
|
|
- 继承层次 (太僵化,钻石问题)
|
|
- 完整 ECS 库 (增加依赖,复杂度超出需求)
|
|
- 扁平对象数组 (大数据量缓存不友好)
|
|
|
|
## Consequences
|
|
- 添加新实体类型只需定义组件 (无需修改类)
|
|
- 系统可以独立开发和测试
|
|
- 需要自己编写组件存储和查询逻辑
|
|
- 实体数量在 200+ 时可能需要优化
|