工程(基线合一批·golden单基线跨平台+补锚14张+审核关卡立规): 分平台基线机制拆除(2026-11-08用户裁:跨平台渲染必须一致,禁加基线消化差异)——windows 6件基线提升到golden/根,删windows/mac两平台目录与根目录遗留(level_map.png+边车,零引用核实); 闸件去平台化(render_gate.sh GOLDEN直拼/golden_compare.py删_PLAT与plat_missing/golden_baseline_refresh.sh落点改根+--screens换代入口); 拆自愈采集(ci.yml步+tools/ci/golden_selfheal.sh——CI自动落基线=既当裁判又当选手,测量数据已采完退役); 补锚14张(用户裁:发现少了就补,备案清零)——shot_probe扩九态(营地五窗真点热点开窗/图例真点钮/战末结算与三选一直调喂真实形态文案/调试浮窗直调)+battle段呼吸相位冻结(motion_scale0.5+1.2s动画完结锚定,board_shot同款)+热点键→基线语义名映射(dummy→tree/board→codex); 渲染闸屏态浮层golden段(golden_compare 14面)+shot_checker 16屏清单; 基线审核关卡立规(test-conventions §8.2:逐张审核确认后才入库生效+审核记录落档+非卡片批基线操作同关卡;process-conventions五·实现行:未审核的基线禁合回;req-card/iter技能特殊标注——豁免面直改); 实测依据: mac真渲染vs windows基线四指标(棋盘0.025~0.033%/menu 0.674% changed,RGB零色偏,块平均≈0)全在容差带内——数据归档reports/基线合一批-反哺点-2026-11-08.md; 读数: shot_probe直跑16图问题=0+渲染闸直跑exit=0(20面全PASS,新候选changed=0.00%)+bash -n×3+py_compile+文档域闸绿; 基线审核记录: 20张全部DKChan 2026-11-08确认(README审核记录节)
This commit is contained in:
1 parent
26a01c026f
commit
126e583fed
38 files changed
+263
-110
No files matched your search
+36
-8
@@ -34,7 +34,7 @@ REPO="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
. "$REPO/tools/gate_platform.sh" # 跨平台件(平台探测/路径形式/带超时执行/孤儿清杀)
|
||||
GAME="${1:-$REPO/game}"
|
||||
GAME_WIN="$(gate_game_path "$GAME")" # Godot --path 接受形式(Windows 混合斜杠,其他平台原样)
|
||||
GOLDEN="$REPO/game/tests/golden/$(gate_platform_id)" # 本平台基线目录(按平台各存,比较器同口径)
|
||||
GOLDEN="$REPO/game/tests/golden" # 单基线跨平台(2026-11-08 用户裁:跨平台渲染必须一致,差异由容差带吸收)
|
||||
TMP="$(mktemp -d /tmp/rendergate_XXXXXX)"
|
||||
trap 'rm -rf "$TMP"' EXIT
|
||||
_rc=0
|
||||
@@ -75,7 +75,7 @@ if ! grep -q "问题=0" "$TMP/shot.log"; then
|
||||
echo "[render_gate] FAIL — shot_probe 未干净完成(exit=${st},缺失屏/空文件/路径断裂见上)"; _rc=1
|
||||
fi
|
||||
if [ "$_rc" -eq 0 ]; then
|
||||
python3 tools/shot_checker.py "$SHOT" shot_menu.png shot_settings.png shot_career.png shot_camp.png shot_level.png shot_battle.png shot_status.png | sed 's/^/[render_gate] /'
|
||||
python3 tools/shot_checker.py "$SHOT" shot_menu.png shot_settings.png shot_career.png shot_camp.png shot_level.png shot_battle.png shot_status.png shot_camp_forge.png shot_camp_chest.png shot_camp_tree.png shot_camp_codex.png shot_camp_notebook.png shot_battle_end.png shot_curio_pick.png shot_legend.png shot_debug.png | sed 's/^/[render_gate] /'
|
||||
_rc="${PIPESTATUS[0]}"
|
||||
[ "$_rc" -ne 0 ] && echo "[render_gate] FAIL — shot_checker A-D 断言存在红(S1 停机点:首跑存量 FAIL 全量呈报登记待办清单)"
|
||||
fi
|
||||
@@ -118,7 +118,7 @@ done
|
||||
|
||||
echo "======== 棋盘 golden 逐像素(T2——裁剪→对比,容差 provisional) ========"
|
||||
if [ ! -d "$GOLDEN" ]; then
|
||||
echo "[render_gate] FAIL — 本平台($(gate_platform_id))基线目录缺失:${GOLDEN}(基线按平台各存、在库=验收断言②)"; _rc=1
|
||||
echo "[render_gate] FAIL — 基线目录缺失:${GOLDEN}(基线入库=验收断言②)"; _rc=1
|
||||
elif [ ! -s "$BD/board_meta.json" ]; then
|
||||
echo "[render_gate] SKIP — board_meta.json 缺失(取证段已红),golden 对比不判"
|
||||
else
|
||||
@@ -150,7 +150,7 @@ fi
|
||||
|
||||
echo "======== 菜单 golden 逐像素(迭代 28 T4——启动态全屏基线)========"
|
||||
if [ ! -s "$GOLDEN/menu_boot.png" ]; then
|
||||
echo "[render_gate] FAIL — $GOLDEN/menu_boot.png 基线缺失(菜单 golden 未建——本平台跑 tools/golden_baseline_refresh.sh --menu)"; _rc=1
|
||||
echo "[render_gate] FAIL — $GOLDEN/menu_boot.png 基线缺失(菜单 golden 未建——跑 tools/golden_baseline_refresh.sh --menu)"; _rc=1
|
||||
elif [ ! -s "$SHOT/shot_menu.png" ]; then
|
||||
echo "[render_gate] SKIP — shot_menu.png 缺失(shot_probe 段已红),菜单 golden 不判"
|
||||
elif [ ! -f "$GAME/assets/fonts/ui_font_fusion_pixel_zh_hans.ttf" ] || [ ! -f "$GAME/assets/art/ui/button_stone.png" ]; then
|
||||
@@ -159,12 +159,41 @@ else
|
||||
MENUG="$TMP/menugolden"
|
||||
mkdir -p "$MENUG"
|
||||
cp "$SHOT/shot_menu.png" "$MENUG/menu_boot.png"
|
||||
python3 tools/golden_compare.py "$REPO/game/tests/golden" "$MENUG" menu_boot.png | sed 's/^/[render_gate] /'
|
||||
python3 tools/golden_compare.py "$REPO/game/tests/golden" "$MENUG" menu_boot.png | sed 's/^/[render_gate] /'
|
||||
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
|
||||
echo "[render_gate] FAIL — 菜单 golden 超容差(S2 停机点口径:核对热区——按钮换墨/布局变更属预期面=显式重制基线+呈报;超预期面=L3)"; _rc=1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "======== 屏态/浮层 golden 逐像素(golden 补锚批 2026-11-08——七屏锚+营地五窗+四浮层)========"
|
||||
if [ ! -s "$SHOT/shot_camp.png" ]; then
|
||||
echo "[render_gate] SKIP — shot_camp.png 缺失(shot_probe 段已红),屏态/浮层 golden 不判"
|
||||
else
|
||||
SG="$TMP/sgolden"
|
||||
mkdir -p "$SG"
|
||||
cp "$SHOT/shot_camp.png" "$SG/camp_screen.png"
|
||||
cp "$SHOT/shot_settings.png" "$SG/settings_screen.png"
|
||||
cp "$SHOT/shot_battle.png" "$SG/battle_screen.png"
|
||||
cp "$SHOT/shot_career.png" "$SG/career_screen.png"
|
||||
cp "$SHOT/shot_status.png" "$SG/status_panel.png"
|
||||
cp "$SHOT/shot_camp_forge.png" "$SG/camp_forge.png"
|
||||
cp "$SHOT/shot_camp_chest.png" "$SG/camp_chest.png"
|
||||
cp "$SHOT/shot_camp_tree.png" "$SG/camp_tree.png"
|
||||
cp "$SHOT/shot_camp_codex.png" "$SG/camp_codex.png"
|
||||
cp "$SHOT/shot_camp_notebook.png" "$SG/camp_notebook.png"
|
||||
cp "$SHOT/shot_battle_end.png" "$SG/battle_end.png"
|
||||
cp "$SHOT/shot_curio_pick.png" "$SG/curio_pick.png"
|
||||
cp "$SHOT/shot_legend.png" "$SG/legend.png"
|
||||
cp "$SHOT/shot_debug.png" "$SG/debug_overlay.png"
|
||||
python3 tools/golden_compare.py "$REPO/game/tests/golden" "$SG" \
|
||||
camp_screen.png settings_screen.png battle_screen.png career_screen.png status_panel.png \
|
||||
camp_forge.png camp_chest.png camp_tree.png camp_codex.png camp_notebook.png \
|
||||
battle_end.png curio_pick.png legend.png debug_overlay.png | sed 's/^/[render_gate] /'
|
||||
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
|
||||
echo "[render_gate] FAIL — 屏态/浮层 golden 超容差(S2 停机点口径:核对热区——预期面=显式重制基线+呈报审核;超预期面=L3)"; _rc=1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
echo "======== 关卡视口 golden 逐像素(卷轴视口批——两 Shot 面:入口停点+Boss 列锚定)========"
|
||||
LM="$TMP/lmapshots"
|
||||
@@ -182,9 +211,8 @@ scan_log "level_map_shot_probe" "$TMP/lm.log"
|
||||
if [ "$_rc" -eq 0 ]; then
|
||||
for b in lmap_entry.png lmap_boss.png; do
|
||||
if [ ! -s "$GOLDEN/$b" ]; then
|
||||
# 两 Shot 面(2026-11-05 用户裁)各平台独立冻结——本平台缺基线=未冻结态记 SKIP 不判红
|
||||
#(windows 先锚;他平台冻结义务归收尾呈报),已锚平台照常逐像素严判
|
||||
echo "[render_gate] SKIP — $GOLDEN/$b 基线缺失(本平台未冻结——跑 tools/golden_baseline_refresh.sh --lmap)"
|
||||
# 两 Shot 面(2026-11-05 用户裁)缺基线=未冻结态记 SKIP 不判红(先锚后盯),已锚照常逐像素严判
|
||||
echo "[render_gate] SKIP — $GOLDEN/$b 基线缺失(未冻结——跑 tools/golden_baseline_refresh.sh --lmap)"
|
||||
else
|
||||
LMG="$TMP/lmgolden"
|
||||
mkdir -p "$LMG"
|
||||
|
||||
Reference in new issue
Block a user