2.1 KiB
2.1 KiB
架构与确定性契约
版本边界
- Unity:2022.3.62f3
- Entities:1.0.11
- 模拟协议:1
- 固定频率:20 Hz
- 地图:32 × 20
Demo2 创建独立 World,不接管默认 World,也不依赖 Entities Graphics。机器与传送带使用池化 SpriteRenderer 代理;物料状态只存在于 ECS,并通过 Graphics.DrawMeshInstanced 批量绘制。
界面使用运行时 UI Toolkit:UI/Demo2.uxml 定义结构,UI/Demo2.uss 定义 1920×1080 基准下的响应式布局,UIDocument 通过 PanelSettings 适配 16:9、16:10、4:3 和安全区。工厂中央的 UI Toolkit 输入面只拦截网格区域,侧栏和工具栏不会把指针事件穿透给工厂。
固定系统顺序
Demo2BuildCommandSystem:复制指令缓冲后处理建造/拆除和幂等令牌。Demo2ExtractionSystem:采集器与能量站按整数 Tick 产出。Demo2ConveyorSystem:物料以千分位子格进度移动。Demo2InputAllocationSystem:把同格物料送入机器并计算物流条件。Demo2ProcessingSystem:按整数加工时间消耗输入。Demo2OutputSystem:创建批量物料实体。Demo2RuleTriggerSystem:防御结算时按槽位顺序解释规则指令。Demo2TurretLoadingSystem:按稳定 ID 选定装填目标,不依赖实体迭代顺序。Demo2CycleStatisticsSystem:提交周期统计并递增模拟 Tick。Demo2StateHashSystem:按稳定 ID 排序后计算 FNV-1a 风格 64 位状态哈希。
模拟不使用浮点数保存传送、产量、倍率、加工时间或随机状态。倍率以 1000 为 1.0;长整型运算使用饱和加法/乘法。状态哈希包含经济、核心、周期统计、机器、物料和炮塔弹药。快照恢复后继续 Tick 必须得到相同哈希。
性能验收
Demo2EcsTests.StressTick_HandlesTenThousandItemsAndOneThousandMachines 创建至少 10,000 个物料和 1,000 个机器实体,记录单 Tick 时间与当前线程托管分配。SameSeedAndCommands_RemainIdenticalForTenThousandTicks 对两个同种子 World 连续运行 10,000 Tick 并比较最终哈希。