blob: 82ea1e66974a406ed015f59e9317531b3245c8c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
P68(512×384 整图渲染截图证据)验证记录
基线:commit a578791(P67)。本单未 push。
范围
- 为「512×384 整图」方案验收补一张覆盖全图的真实像素证据(P48 只验过 digest)。
- 只新增 Desktop 侧离线渲染模块与证据钩子/脚本/测试;Kernel/Sim 零改动。
改动文件
- src/LivingVillage.Desktop/MapSnapshot.fs(新):`MapGen.Result` → RGB 像素 / PNG 的纯 CPU 渲染器。
- 每瓦片 `scale` 像素(默认 8,>=8);调色板:草地/水/石/泥炭/水田/菜畦/小径/主路/桥/屋顶/门/树丛,
与 scripts/analyze-p68.py 一一对应。
- 绘制顺序:地面瓦片 → Paths 小径 → MainRoadCenter 主路 → Bridges 桥 → Buildings/Farmhouses
屋顶矩形 + 门 → Groves 树丛。
- PNG 编码自包含(IHDR/IDAT/IEND + CRC32 + BCL `ZLibStream` 压缩),无外部图像依赖。
- src/LivingVillage.Desktop/Program.fs:新增 LV_P68_MAPSHOT=1 钩子——用 `MapGen.generateWithSize 512 384 4242`
(内部即 paramsForSize)离线渲染整图到 `LV_RECORD_DIR/p68-map.png` 后退出,**不启动图形设备**(真正 headless)。
- src/LivingVillage.Desktop.Tests/P68MapSnapshotTests.fs(新,3 例)+ 两处 .fsproj 挂载。
- scripts/analyze-p68.py(新)+ docs/evidence/p68-{run-log,map}.png + p68-analysis.txt。
红先
- 先建 P68MapSnapshotTests.fs 引用未实现的 MapSnapshot → 暂存 Program.fs/fsproj 并移开 MapSnapshot.fs 后编译红
(FS0039 MapSnapshot 未定义),恢复后转绿。首次全量测试暴露 MSTest 对 byte[] 的 AreEqual 非结构比较,
改用 CollectionAssert.AreEqual 后全绿。
构建/测试
- dotnet build LivingVillage.sln -c Release → 0 错误,1 警告(P40ArtTests.fs FS0760,既有)。
- dotnet test src/LivingVillage.Desktop.Tests -c Release --no-build → 336/336(333→+3)。
- dotnet test src/LivingVillage.Kernel.Tests -c Release --no-build → 119/119。
- 用例:PNG 尺寸 = 512×scale × 384×scale(含 IHDR 解析)+ PNG 签名;RGB 缓冲含
河流/农田/主路/小径/屋顶像素;同输入两次 PNG 逐字节一致、不同 scale 不同。
真实整图证据(headless,无 Xvfb/X)
- LV_P68_MAPSHOT=1 → p68-map.png 4096x3072(512×384 @ scale 8),172204 bytes。
- 统计:grass=164907 water=6120 stone=1109 paddy=11595 vegetable=12877;
rivers=4 bridges=48 paths=1109 buildings=45 farmhouses=21 groves=852 road_columns=512。
- scripts/analyze-p68.py verdict: PASS
- 尺寸 4096x3072;调色板像素计数:water=388608 paddy=742080 vegetable=824128 road=32768
path=34112 bridge=3072 roof=19328 grove=54528(均 > 0);水像素/瓦片比 = 0.992。
- 无 24x24 纯黑块、无 64x64 纯白块;missing_glyph_slots=0(纯地图,无 UI 帧)。
- 确定性 deterministic=true sha256=DD23CC2D…0FBF。
- scripts/check-no-white-blocks.py → checked=1 failures=0 OK。
确定性(数值路径未动)
- dotnet run -c Release --project src/LivingVillage.Headless -- --performance-baseline ×3
→ final_digest 全等 953775FAEB2FDDE97289491AA260BD8D390C571E48A7A13AD2CB6FB7124F7F6C,
performance_determinism=PASS ×3。
边界
- 未改 Kernel/Sim、未改 HUD/对话框、未改 MapGen 生成算法或 seed 口径、未引外部素材;未 push。
- `docs/overnight-status.md` 未纳入本 slice commit(由外部监控单独提交)。
- 逐帧/整图「视觉可辨」的 vision 复核由 Hermes 侧完成。
|