首页› 技术与工程› TECH-03
TECH-03

核心数据结构

稳定 ID、定义与实体分离、连续数组、Chunk、生产物流和查询 DTO

册型T3 技术册系列技术与工程版本v4.1档期P0上游依赖TECH-01~02被谁依赖全部仿真与 UI本册变更v4.1:按 Godot 4.8 dev6 新方案重建

1. 数据对象分层#

静态 Definition 描述“是什么”,Runtime Entity 描述“现在怎样”,Player Profile 描述“玩家累计了什么”。三者不混存。资料片和功能卡片只提供定义,不直接保存玩家状态。

2. 高性能存储布局#

EntityId[]
DefinitionId[]
ChunkId[]
State[]
Flags[]
Position[]
Progress[]
StorageOffset[]
StorageLength[]
SparseComponentIndex

高频字段使用连续数组或 C++ 紧凑结构;低频字段使用稀疏组件。避免每个实体一个 Dictionary,避免把所有字段都变体化。

3. 稳定句柄#

EntityId 由 slot index 和 generation 组成。删除实体只回收 slot 并递增 generation;任何旧句柄访问前都要校验 generation。DefinitionId 永不因删除内容而复用。

4. 空间与 Chunk#

空间统一使用 1m 整数网格;默认楼格为 1m 宽、4m 高,自由楼格为 1m³ 单元。楼格、房间、柱、墙、梁、核心筒和结构报告按 Chunk 分组,UI 只查询可见窗口,不为每个格创建 Godot Node。结构检查由命令触发并生成带 revision 的只读报告。

空间统一使用 1m 整数网格;默认楼格为 1m 宽、4m 高,自由楼格为 1m³ 单元。楼格、房间、柱、墙、梁、核心筒和结构报告按 Chunk 分组,UI 只查询可见窗口,不为每个格创建 Godot Node。结构检查由命令触发并生成带 revision 的只读报告。

世界坐标使用整数格或明确的固定点表示;渲染坐标转换只发生在表现层。实体按 Chunk 分组,Chunk 有自己的 dirty flags、revision、统计摘要和保存块。跨 Chunk 的生产和物流使用边界端口,不扫描全世界。

5. 生产、物流和资源#

对象核心字段更新方式
资源definition_id、数量、质量、来源变化事件驱动
配方inputs、outputs、duration、conditions队列批处理
设施definition_id、状态、库存端口、功率短周期或脏标记
物流from、to、capacity、in_transit分批运输
产业链节点、边、缺口、瓶颈拓扑和增量更新

6. 查询模型#

UI 不读取权威数组。QueryService 根据筛选、分页、排序生成只读 DTO;大列表必须虚拟化。查询结果带 world_revision,界面发现 revision 落后时重新拉取。

7. 数据验收#

每个对象都必须有定义、来源、解锁条件、输入和输出边界。不可达配方、悬空引用、重复 ID、负库存和非法状态属于编译错误或运行时断言。

↑↓ 选择 ↵ 打开 esc 关闭 本地索引 · 无需联网