From 383ed44d22c318a44e7f54a652cd0f825f3962d7 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 22 Sep 2026 09:00:17 +0800 Subject: docs: 新增 P25 巡游村民可见性 + 孤立石板治理小节与命令(P25) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...273\264\346\212\244\350\257\264\346\230\216.md" | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git "a/docs/\347\273\264\346\212\244\350\257\264\346\230\216.md" "b/docs/\347\273\264\346\212\244\350\257\264\346\230\216.md" index 79ca370..43b8fc4 100644 --- "a/docs/\347\273\264\346\212\244\350\257\264\346\230\216.md" +++ "b/docs/\347\273\264\346\212\244\350\257\264\346\230\216.md" @@ -402,6 +402,25 @@ dotnet src/LivingVillage.Headless/bin/Release/net8.0/LivingVillage.Headless.dll `p24-zoom-houses.png`/`p24-zoom-villagers.png` 局部放大含民居与村民、`p24-tour-0{1,2,3}.png` tour 页、`tour512/` 全量帧),白块回归 0 命中。 +## 巡游村民可见性 + 孤立石板治理(P25) + +- **成因**:NPC 行动目标 `Sim.actionTarget` 固定在遗留四个活动点(厨房 10,10 / 家 52,10 / + 集市 32,24 / 工位 52,38),512x384 世界里它们落在左上区域,NPC 出生后从核心走向那里; + 原巡游路点走桥/门/核心,故大多数采样帧 `visible-npcs` 只有 0-3。 +- **解法(Desktop 取证钩子,不动 Kernel/Sim 数值路径)**:新增 `LV_RIVERSCAPE_VILLAGE_TOUR=1`, + 巡游路点改为在这四个村民活动点之间环游(`villageTourWaypoints`)。512x384 跑 150 s: + `visible-npcs>=8` 的采样 **112/152 = 74%**,进入村庄段后 **108/122 = 89%**(后 90 s 91%), + 峰值 30/30;日志 `/tmp/opencode/lv-p25-village150.txt`。确定性不变。 +- **孤立石板修复**:成因是步骤 4 的泊松装饰石块(`GroundTile.Stone=2` 单格渲染成灰石板), + 512x384 有 292 个孤立石板。新增 `Params.DecorativeStones`(默认 true),`paramsForSize` + 对大于 256x192 的图关闭 → 大图不再产孤立路面 tile(装饰关闭后大图石块全部属于路网)。 + 64x48/256x192 保持开启,checksum 6042052 / 1284656962 不变。 +- 回归:`LargeMapHasNoIsolatedStoneTiles`(大图无孤立石块、石块全属路网)、 + `DecorativeStonesDisabledOnLargeMaps`;Desktop 134 -> 136。 +- 取证:`/tmp/opencode/lv-p25-art/`(`p25-map-512x384-seed4242.png` 整图无灰石板、 + `p25-zoom-village.png` 放大含 >=8 村民、`p25-tour-0{1,2,3,4}.png` tour 页、`tour/` 全量帧), + 白块回归 241 张 0 命中。 + ## 已验证命令 ```bash @@ -495,6 +514,20 @@ timeout 240 xvfb-run -a -s "-screen 0 1280x720x24" env LV_AUTOPLAY_SAMPLE=1 \ dotnet src/LivingVillage.Desktop/bin/Release/net8.0/LivingVillage.Desktop.dll # 局部放大由 tour512 帧裁 480x360 后 2x 最近邻放大(含民居+村民) +# P25 村民可见性巡游:路点在 Sim 四个活动点间环游,150s 循环,多数采样帧 >=8 村民 +timeout 220 xvfb-run -a -s "-screen 0 1280x720x24" env LV_AUTOPLAY_SAMPLE=1 \ + LV_RIVERSCAPE_TOUR=1 LV_RIVERSCAPE_VILLAGE_TOUR=1 LV_RIVERSCAPE_WIDTH=512 \ + LV_RIVERSCAPE_HEIGHT=384 LV_RIVERSCAPE_SECONDS=150 LV_UNLOCK_FPS=1 \ + LV_NPC_VISIBLE_LOG=1 LV_AUTOPLAY_RECORD=1 LV_RECORD_EVERY=120 \ + LV_RECORD_NAME=p25-tour- LV_RECORD_DIR=/tmp/opencode/lv-p25-art/tour \ + dotnet src/LivingVillage.Desktop/bin/Release/net8.0/LivingVillage.Desktop.dll + +# P25 整图取证(无孤立灰石板) +timeout 120 xvfb-run -a -s "-screen 0 1280x720x24" env LV_MAPGEN_SHOT=1 \ + LV_MAPGEN_WIDTH=512 LV_MAPGEN_HEIGHT=384 LV_MAPGEN_SEED=4242 \ + LV_RECORD_DIR=/tmp/opencode/lv-p25-art \ + dotnet src/LivingVillage.Desktop/bin/Release/net8.0/LivingVillage.Desktop.dll + # P20 第三步:默认生成器世界的昼夜巡游录制(真走位,含桥面行走帧;p20c-* 命名) for pair in day:12.0 night:20.75; do name=${pair%%:*}; hour=${pair##*:}; \ timeout 150 xvfb-run -a -s "-screen 0 1280x720x24" env LV_AUTOPLAY_SAMPLE=1 \ @@ -547,6 +580,9 @@ python3 scripts/check-no-white-blocks.py evidence/night-run - `/tmp/opencode/lv-p13/evidence/`(P13:`walk-idle-frames.png`、`water-3phase.png`、 `smoke-3phase.png`、`water-2frame.png`、`smoke-2frame.png`、`day-panorama.png`、 `night-lantern.png`、`day-night-compare.png`、`walk-real-run.png`、`day-run/`、`night-run/`) +- `/tmp/opencode/lv-p25-art/`(P25:`p25-map-512x384-seed4242.png` 整图无灰石板、 + `p25-culled-*`/`p25-detail-*`、`p25-zoom-village.png` 放大含 >=8 村民、 + `p25-tour-0{1,2,3,4}.png` tour 页、`tour/` 全量巡游帧) - `/tmp/opencode/lv-p24-art/`(P24 512x384:`p24-map-512x384-seed{4242,7}.png` 整图、 `p24-zoom-houses.png`/`p24-zoom-villagers.png` 局部放大、`p24-tour-0{1,2,3}.png` tour 页、 `tour512/` 全量巡游帧;规格要求的 `/tmp/lv-p24-art` 被沙箱 external_directory deny,落此路径) -- cgit v1.2.3