From a665b7da6497dfe1f514ae7bb9b3affe6928fdec Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 22 Sep 2026 04:12:53 +0800 Subject: docs: P22 重挑游戏内代表帧 + 大世界默认开启评估(P22) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 代表帧改为真实游戏内帧(HUD 近白像素判定),覆盖昼/黄昏/夜三档共 9 张, 覆盖旧标题/启动误帧;补 23:30 夜档巡游取证命令。 - 新增「大世界默认开启评估」:256x192 已是默认(P20 第三步),复核 FPS/内存/ 生成耗时与风险,结论维持默认、保留 LV_LEGACY_MAP 回退;记录 NPC 规则网格 与孤立砖石小块两项遗留观察(仅记录不改)。 --- ...273\264\346\212\244\350\257\264\346\230\216.md" | 40 ++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'docs') 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 7eb064e..9c44f48 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" @@ -338,8 +338,32 @@ dotnet src/LivingVillage.Headless/bin/Release/net8.0/LivingVillage.Headless.dll - headless:`--performance-baseline` 3 次 `ticks/s` 区间 **189,595–445,377**(宿主负载相关), `allocated_bytes≈3.03 MB/6000 ticks`、`gen0=0`,`final_digest=953775FA…`、 `performance_determinism=PASS`(未触 Kernel/Sim 数值路径)。 -- 取证:`/tmp/opencode/lv-p21-art/`(`p21-day-*`/`p21-night-*` 昼夜巡游代表帧 7 张, - `raw-day/`、`raw-night/` 全量帧),白块回归 0 命中。 +- 取证:`/tmp/opencode/lv-p21-art/`(P22 重挑后的游戏内代表帧 9 张: + `p21-day-bridge-01`/`p21-day-river-01`/`p21-day-buildings-0{1,2}`、 + `p21-dusk-bridge-01`/`p21-dusk-street-01`、`p21-night-bridge-01`/`p21-night-street-01`/ + `p21-night-lantern-01`;原始帧 `raw-day/`、`raw-night/`、`raw-night2/`),白块回归 0 命中。 + +## 大世界默认开启评估(P22) + +- 结论:**256x192 生成器世界已经是默认可玩世界**(P20 第三步即已切换,`riverscapeActive` + 在非 legacy/非 map-scale/非 sample 时成立),`LV_LEGACY_MAP=1` 等回退开关保留。P22 复核 + 证据支持维持现状,未再改默认值。 +- 实测对比(本机 Xvfb 1280x720x24,Desktop Release,`LV_UNLOCK_FPS=1` 放开 vsync, + 丢 5s warmup 后按秒采样;两者工作负载不同,仅作量级对比): + - 256x192 生成器(巡游,1x 模拟):`mean 230.4 / min 199.5 / max 302.8 FPS`(58 样本)。 + - 64x48 样例世界(sample 脚本,2x 模拟):`mean 163.5 / min 113.9 / max 224.3 FPS`(65 样本)。 + 小世界无裁剪收益、屏内 NPC 更多且 2x 模拟,反而更慢;两种世界都远高于 60 FPS 目标。 + - 内存:256x192 运行中 `VmRSS` 181.9–183.4 MB;64x48 为 179.5–182.3 MB —— 差异在噪声内, + 内存由 MonoGame 运行时/图集主导,与地图尺寸基本无关。 + - 生成耗时:256x192 约 52–70 ms、64x48 约 2 ms(一次性,发生在进入世界前,无可见卡帧)。 +- 风险:唯一成本是启动时约 60 ms 一次性生成,无逐帧开销(视口裁剪 97.9%);headless + `final_digest` 与 `performance_determinism` 不受影响(未触 Kernel/Sim 数值路径)。回退路径 + 完整,可随时 `LV_LEGACY_MAP=1` 或 `LV_MAP_SCALE=N`。**评估结论:维持 256x192 默认。** +- 遗留观察(仅记录,留给后续单): + - 初始 NPC 站位是核心区内的**规则网格**(`MapGen.fs` 第 253 行「30 个 spawn:核心区内的 + 规则网格」),P20 巡游首帧会看到整齐排布;巡游开始后自然散开,暂不改。 + - 个别帧右侧有**孤立砖石小块**(地面 `GroundTile.Stone=2` 单格,`VillageArt.fs:664` 绘 + `StonePathSprite`),疑似路网/门阶的单格支路残留,需后续单用定点帧确认后再修。 ## 已验证命令 @@ -402,6 +426,18 @@ for pair in day:12.0 night:20.75; do name=${pair%%:*}; hour=${pair##*:}; \ LV_RECORD_DIR=/tmp/opencode/lv-p21-art/raw-$name LV_AUTOPLAY_START_HOUR=$hour \ dotnet src/LivingVillage.Desktop/bin/Release/net8.0/LivingVillage.Desktop.dll; done +# P22 补夜档巡游(23:30),并从中重挑「游戏内」代表帧覆盖启动/标题画面误帧 +# HUD 判定:y in [2,35) 且 x in [0,w/2) 的近白像素 > 500 => 游戏内帧(标题/启动为 0) +timeout 150 xvfb-run -a -s "-screen 0 1280x720x24" env LV_AUTOPLAY_SAMPLE=1 \ + LV_RIVERSCAPE_TOUR=1 LV_AUTOPLAY_RECORD=1 LV_RECORD_EVERY=40 LV_RECORD_NAME=p21-n2- \ + LV_RECORD_DIR=/tmp/opencode/lv-p21-art/raw-night2 LV_AUTOPLAY_START_HOUR=23.5 \ + dotnet src/LivingVillage.Desktop/bin/Release/net8.0/LivingVillage.Desktop.dll + +# P22 默认评估:64x48 样例世界 60s 帧率采样(LV_PERF_SOAK_SECONDS 让脚本循环采样) +timeout 120 xvfb-run -a -s "-screen 0 1280x720x24" env LV_LEGACY_MAP=1 \ + LV_AUTOPLAY_SAMPLE=1 LV_UNLOCK_FPS=1 LV_PERF_SUMMARY=1 LV_PERF_SOAK_SECONDS=60 \ + 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 \ -- cgit v1.2.3