summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-22 04:12:53 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-22 04:12:53 +0800
commita665b7da6497dfe1f514ae7bb9b3affe6928fdec (patch)
tree6a9f9a621c4ff8bad9ef9d333470a85de7dd75ae /docs
parentb7b3e799a7956010a2e93e52f5d21870c820e68a (diff)
downloadliving-village-a665b7da6497dfe1f514ae7bb9b3affe6928fdec.tar.gz
docs: P22 重挑游戏内代表帧 + 大世界默认开启评估(P22)
- 代表帧改为真实游戏内帧(HUD 近白像素判定),覆盖昼/黄昏/夜三档共 9 张, 覆盖旧标题/启动误帧;补 23:30 夜档巡游取证命令。 - 新增「大世界默认开启评估」:256x192 已是默认(P20 第三步),复核 FPS/内存/ 生成耗时与风险,结论维持默认、保留 LV_LEGACY_MAP 回退;记录 NPC 规则网格 与孤立砖石小块两项遗留观察(仅记录不改)。
Diffstat (limited to 'docs')
-rw-r--r--docs/维护说明.md40
1 files changed, 38 insertions, 2 deletions
diff --git a/docs/维护说明.md b/docs/维护说明.md
index 7eb064e..9c44f48 100644
--- a/docs/维护说明.md
+++ b/docs/维护说明.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 \