美术去数值化撤销批(用户裁 2026-11-07: 正文单点维护后半句适用域收窄至 GDD——美术圣经与 UX 为可带值参考层): 圣经恢复 77c1d360 版全量内容(hex 色值表/能量档/封印参数/坐标群/帧数档/欠账清单/换色合并登记回归, 版本 v3.45)+camp.md 顶栏 hex 与 battle.md 能量值/实测比回填+五件测试探针头注恢复原措辞(77c1d360 版, 去数值化改动全为注释已核验); 规约修订: doc-conventions 正文单点维护行——禁复制值后半句适用域收窄至 design/gdd/**, 规则句只在 owner 前半句全域不变; 两新测试保留+锚重算(帧数测试→圣经 §8.4:539, 互查测试→§4.1:220)+头注改对照措辞; 登记面保留改措辞(唯一事实源→落点速查索引); 待办欠账条目改双登记措辞(圣经欠账清单+守门件豁免账)。保留不动: 三执行件+manifest 86 套+能力行+GDD 侧换代+三目录结构。凭据: 七触碰套件单跑 all green(exit=0)+--docs 域闸【验收通过】exit=0

This commit is contained in:
DKChan committed 2026-11-07 05:57:37 +08:00
1 parent b35a639d9e
commit 0a6b115be7
13 files changed
+127 -126

No files matched your search

@@ -1,6 +1,6 @@
# tests/unit/presentation/animation_frame_spec_test.gd — 动画帧数规格守门(定值面=本测试)
# 断言面:①帧数规格表冻结(待机循环 4 帧/攻击准备 6 帧单次/受击 2 帧——样张冻结定值落码于本表,
# 文档侧只述规则并指路本测试);②现役四态单帧形制锚定(idle/walk 32×32、attack 92×92、
# 断言面:①帧数规格表冻结(待机循环 4 帧/攻击准备 6 帧单次/受击 2 帧——样张冻结定值,
# 规格表与圣经 §8.4 帧数规格条对照,守门防漂移);②现役四态单帧形制锚定(idle/walk 32×32、attack 92×92、
# hit 88×92——现役为单帧状态件,序列帧资产入包时按规格表逐件判帧数并同批换代本套件);
# ③死亡=灰化+碎裂退场(非帧件,无帧数断言面)。
# 运行:godot --headless --path game --script res://tests/unit/presentation/animation_frame_spec_test.gd
@@ -20,7 +20,7 @@ const CURRENT_FORM := {
func _init() -> void:
# oracle: design/art/art-bible.md:538 (帧数规格条——样张冻结定值组)
# oracle: design/art/art-bible.md:539 (帧数规格条——样张冻结定值组)
_test_spec_table()
_test_current_form()
quit(Kit.finish("animation_frame_spec_test"))
@@ -28,7 +28,7 @@ func _init() -> void:
# ① 规格表冻结面(帧数档定值单点=本表)
func _test_spec_table() -> void:
# oracle: design/art/art-bible.md:538 (帧数规格表冻结组)
# oracle: design/art/art-bible.md:539 (帧数规格表冻结组)
Kit.check("待机循环 4 帧在表〔帧规格 V1〕", SPEC.get("idle", 0) == 4)
Kit.check("攻击准备 6 帧单次在表〔帧规格 V2〕", SPEC.get("attack", 0) == 6)
Kit.check("受击 2 帧在表〔帧规格 V3〕", SPEC.get("hit", 0) == 2)
@@ -36,7 +36,7 @@ func _test_spec_table() -> void:
# ② 现役单帧形制锚定(真实加载链——资产被换形制而未走规格表时此处红)
func _test_current_form() -> void:
# oracle: design/art/art-bible.md:538 (现役单帧形制组)
# oracle: design/art/art-bible.md:539 (现役单帧形制组)
for fn: String in CURRENT_FORM:
var tex: Texture2D = load("res://assets/art/character/" + fn)
var want := Vector2(CURRENT_FORM[fn])