Compare commits

..
205 Commits
Author SHA1 Message Date
DKChan dfd3a9e29c 合并(架构审查5.1+5.2文档批·用户令): 处置记录(5.1设计讨论裁决+普查五处+19符号总表+取证现址)+code-conventions §1.6拆分交接与封装边界两条(本批修复与闸件共同依据)+architecture.md v1.35(主角账三件HeroStats/GainJournal/GpWallet与刷新账件RefreshBank四行补登记替代失效HeroLedger行+MetaProgression基础层补登记行+拆件定稿节冻结计数摘除+CurioStop/RunLedger旧指称订正; EC8热重载规格经用户裁决保留原状,一度摘除已撤回); 已并master(fa7e759b)解冲突; 文档域闸全绿
ci / gates (push) Failing after 12m1s
2026-11-04 00:27:49 +08:00
DKChan 644c56939a Merge branch 'master' into arch51-docs
# Conflicts:
#	design/engineering/architecture/architecture.md
2026-11-04 00:05:53 +08:00
DKChan e614773aec 文档设计(架构审查5.2·EC8撤回·用户裁): 热重载规格恢复原状——用户裁决近期将完善实装(实装去向=用户另立待办条目+他会话写卡,规格即实装底稿),本批一度摘除的GDD侧规格全部撤回:三份GDD(数据配置/战斗结算/棋盘生成)checkout回退至本批前原状(版本行随内容归位v1.2/v1.6/v1.2),architecture.md抗热重载快照句恢复原措辞+最近更新行如实注记撤回;本文档批净效果=主角账三件与刷新账件补登记+MetaProgression补行+冻结计数摘除+CurioStop/RunLedger旧指称订正(architecture.md v1.32); 文档域闸全绿 2026-11-03 23:50:52 +08:00
DKChan fa7e759b73 合并(架构审查P1余项·收口补笔): §四相关账全部补齐(4.1表 presentation 行零动作句/4.2表 S7 行私有成员面移交 §5.1/4.4末低覆盖四件零动作句+文首处置状态行改写)+待办清单「架构审查余项」专条状态推进「文档设计中」缺口只剩④架构文档漂移; pipeline_gate PASS 红项0; §四至此无未落笔项,§五 P2 仍未处置(报告禁退役)
ci / gates (push) Successful in 36s
2026-11-03 21:57:15 +08:00
DKChan 80c68ac444 文档(架构审查P1余项·收口补笔): §四相关账全部补齐——①审计报告三处未落笔子项补处置句:4.1表 presentation 行(main.gd randi 建种子,零动作,豁免通道限定用途已在册 code-conventions §4 第10条)、4.2表 S7 行「不管私有成员直取面」尾巴(§四对 S7 只裁扫描面与清单并点已闭合;私有成员面无静态判据可造且真做要改 core/settlement 协作契约属需求改动,缺口在册移交 §5.1)、4.4末「低覆盖另计四件」(零动作,hero_stats/skill_lottery/shop_session/curio_deck 各有能力行代表用例承接,skill_lottery 已由1件升2件,已满足新落 §8.3 登记义务) ②文首处置状态行改写为§四全部闭合含三子项、§五未处置禁退役、登记位改指待办清单专条 ③待办清单「架构审查余项」专条(迭代50收尾新立,原「架构审查优化讨论」条目已随状态机出口删除)状态由「待文档设计」推进「文档设计中」,缺口改写为只剩④架构文档漂移三处并写明同族 §5.1/§5.3/§5.4 随批入册,实况段补 2026-11-03 三组裁决记录含读数订正与已落地闸件凭据——状态行按 pipeline_gate 现行判据只写状态词(括号凭据已废止,§12.1),证据落实况段。验证:pipeline_gate PASS 红项0(28条目·50总表行·卡片口径2张全过) 2026-11-03 21:57:08 +08:00
DKChan 6640711758 合并(架构审查P1余项·闸件落地): §四待执行三项做完( S8 目录域反向对账+S7/S8 清单并单点 B1_SET+文案派生; S9/S10 扫描面空转自检)+architecture v1.34 S 表同步+审计报告改判已落地; static_scan 13条规则绿退出码0; §四 P1 四条全部闭合,第五节P2与待办清单未动
ci / gates (push) Successful in 7m50s
2026-11-03 20:37:48 +08:00
DKChan c40db898aa 工程(架构审查P1余项·闸件落地): §四待执行三项同批做完并同步文档——①static_scan.sh 的 S8 加 settlement/ 目录域反向对账(实有 .gd 未登记进清单即红,只覆盖该目录并写明根下四件结算码不在目录域内、仍归「模块归属」B1 登记面),S7 的 S7_B1_SET 与 S8_FILES 两份14文件抄本合一为单点 B1_SET(两份靠人工同步必漂),绿文案「10 个 .gd」改派生计数并申报反向对账已在案 ②audit_type_hints.py/audit_file_headers.py 各补扫描面空转自检(缺目录或零个 .gd 即红、绿时打印面件数;原实现 rglob 空集与 is_dir continue 两处静默绿,违背 test-conventions §7 零命中自检辅证与脚本前言自立纪律) ③architecture S 表 S8 行登记单点与反向对账判据、S9/S10 偏差句改判已清偿、版本1.33→1.34 ④审计报告 §4.2 待执行清单改判已落地并记验证口径。验证:static_scan 全量13条规则绿退出码0;两件负证(面清单改成不存在目录各返回1)正证(真实面158个 .gd 归零PASS)。§四 P1 四条至此全部闭合;零需求卡片(纯闸件属工程改动),待办清单与第五节P2按用户令未动 2026-11-03 20:37:31 +08:00
DKChan 47c752eaf3 合并(CI追绿·迭代50收尾): gdd_lint R3措辞+能力行回表+capability_audit sim锚面扩入
ci / gates (push) Successful in 26s
2026-11-03 20:00:07 +08:00
DKChan 6add37b68c 修复(CI追绿·迭代50收尾): run29两闸红因三处——①roadmap下一步「2026-11-03 新条」措辞触发gdd_lint R3正文修订注记,改「在册」去日期式叙述 ②能力行敌方增益自体落点代表用例名实断裂(_test_enemy_buff_targets_self→_smoke_enemy_buff_targets_self,实况=实现侧_smoke定名,iter50批末核对漏检此行,卡片退役后卡在通道消失即暴露) ③capability_audit真实入口锚面结构性缺口——入口宿主在game/sim/(battle_driver/auto_player)而扫描面排除sim,卡片退役后无持久锚即红; 锚面扩入sim测量件(判据面有意放宽:被锚入口本在库内,补的是卡片死后的持久锚通道,非放水),头注与报错文案同步; 本地复核gdd_lint 0不通过+capability_audit strict红项0 2026-11-03 20:00:06 +08:00
DKChan 276252fc5d 合并(架构审查P1余项·裁决落文): 四份规约与审计报告标注;第四节四条定案(RNG不扩面改文字纪律/S9-S10-S13三面不扩+S8反向对账与S9-S10空面自检列待执行归工程批/S3维持warning/4.3结案/4.4改判为无登记惯例并落覆盖登记义务);待办清单与roadmap未动(第五节P2未处置,整份审计未闭合)
ci / gates (push) Failing after 25s
# Conflicts:
#	design/engineering/architecture/architecture.md
2026-11-03 19:53:00 +08:00
DKChan abfd70549b 文档(架构审查P1余项·裁决落文): 第四节四条定案进规约与审计报告标注——①code-conventions §4 新增第13条按来源分档(S系扫描面一律止于产品码三目录;tests/probe/sim 各由运行期通道承接:闸00/01/02、闸03/04/05〔含同目录 type_glow_shot_probe 人工取证件与 probe_ui_util 共用面两件不入闸〕、不入CI的手动调参批量;三目录允许自建 RandomNumberGenerator 条件=必须显式定种,禁的是不定种形态;该禁止无机器闸、由文字纪律+独立验收审计人工评审承载;并废止「测量面」一词对本文件统称用途,保留 run_all_gates 选闸原义)②architecture S 表补齐登记面(标题 S1–S8→S1–S13、S11/S12/S13 三行入表、S1/S2 加适用域注、S3 加维持warning裁定、S9/S10 缺空面自检查登记为已知偏差)、版本1.31→1.32 ③test-conventions §8.3 新增「新增core件的覆盖登记义务」(点名或申报经宿主链覆盖,明示非覆盖率要求;立每core件点名闸与补11件空套件两案裁否,凭 test-conventions §7「覆盖率不是目标」)+process-conventions §3 第6条加承接指向 ④审计报告四处标注:4.1不扩面裁定与读数订正(8处→7处,experiment_density 随迭代50 T9 退役;randomize() 两处命中均在注释、实际调用零命中)、4.2三面不扩(三层存量实跑≈2162处:S9 1070/S10 117/S13 975,其中禁调试打印274与循环内await70属工具码功能需要;产品码面归零不可换存量红)+S8现14文件非9+纯目录域方案证伪(四件结算码在core根下)+待执行清单三项归工程改动批零卡片、4.3结案(三处豁免2026-10-31迭代44已清偿,基线现5键)、4.4定性改判为「无按文件登记惯例」+读数4件→11件(后一档三件全是迭代44/46/49拆件产物=复发模式)。待办清单与roadmap按用户裁不动(整份审计未闭合),报告顶部加禁退役注记防收尾误删 2026-11-03 19:52:03 +08:00
DKChan 990bdf9fdd 合并(迭代50·批后收尾): 反馈落文+目检登记+账面换代+产出物退役六件
ci / gates (push) Failing after 31s
2026-11-03 19:51:29 +08:00
DKChan e41339b7bb 收尾(迭代50·批后收尾): 反哺点十条处置闭合(增益状态v1.6删过时实装行/architecturev1.32 preview_reveal登记+tree_rules换代/奇物v1.5 cap必填与取值域/覆盖域表减动效行翻已覆盖/SPAWN_AREA_CELLS+spend_discount表字段+battle_driver签名三处零登记零落点/五份零反哺确认)+目检五项登记体验验证清单㊿(实现报告原编㊾撞号改㊿)+MC锚代表性注记落sim-data/README(重跑归一档用户发起)+产出物退役六件(三需求卡片+反哺点+实现报告+验收审计——吸收即死+证据只留最新)+待办清单三卡条目删除(架构审查余项未决先迁再死另立新条)+roadmap迭代50行已完成与当前位换代 2026-11-03 19:51:06 +08:00
DKChan 942b23cda8 合并(CI追绿·run27修复): verdict豁免扫描判定反转纠正
ci / gates (push) Successful in 15s
2026-11-03 17:17:05 +08:00
DKChan 9ea5c93f44 修复(CI追绿·run27): verdict豁免条件错误扫描判定写反——error_scan语义=干净时exit 0(与verdict主路径!error_scan=命中互为镜像),豁免要求扫描净应直接调正不带!; 上笔补丁逻辑反转致豁免永不生效(run27十探针仍124红) 2026-11-03 17:17:05 +08:00
DKChan b6305e35bb 合并(CI追绿·run26修复): probe退出段挂死受控例外+render_gate工件锚与python3×5+基线登记05b/03/05绿位; 预期run27首次全绿
ci / gates (push) Failing after 7m57s
2026-11-03 17:05:26 +08:00
DKChan ace7b45841 工程(ci追绿·基线登记): game/tests/.gates/baseline.json全绿版入库——含05b色板闸条目(此前提交版缺05b致「无基线记录」判红)与03/05绿位(mac全量目标态); 原件=本地在飞脏件(另一追绿会话产出,待提交面),本批随修复合入 2026-11-03 17:04:16 +08:00
DKChan c9b16b7f34 修复(CI追绿·run26): 三残余根因——①probe_gate verdict加macOS退出段挂死受控例外(PASS签名+错误扫描双证齐全按完成判定,headless探针同样挂死run26实证) ②render_gate三探针if-124首分支拆除改工件锚(上轮半补丁只删了elif漏了if首分支,board PASS后仍被拦红) ③裸python×5→python3(scan_log/shot_checker/crop/compare,runner无python别名——与run16/23同族末例) 2026-11-03 17:03:27 +08:00
DKChan 2bf23d0e05 合并(ci远端化·mac基线建基): golden/mac四张基线入库(棋盘三图+menu_boot,Mac图形会话窗口化生成,跨run读数逐位一致;触发原因=迁远端后渲染闸需mac平台基线,按平台各存windows/不动)
ci / gates (push) Failing after 8m31s
2026-11-03 16:44:20 +08:00
DKChan ea59ac78ba 素材(ci远端化·mac基线建基): golden按平台各存的mac/四张基线入库——棋盘三图(board_L1_dungeon/L2_underdark/L3_deep_underdark,裁剪区900x760)+启动态菜单(menu_boot全屏1280x800); 生成=baseline-mac工作流(run25,Mac图形会话窗口化渲染,tools/golden_baseline_refresh.sh); 触发原因=CI迁远端Mac runner后渲染闸需mac平台基线(2026-11-03用户裁按平台各存,跨平台逐像素必失配),windows/基线不动; 预检=四张人工目检无字形回退/无渲染异常,探针双帧取证三关全PASS且跨run读数逐位一致(1912/3816/3792) 2026-11-03 16:44:19 +08:00
DKChan 24365a383a 合并(CI追绿·run23): refresh裁剪步python→python3
ci / gates (push) Successful in 14s
2026-11-03 16:37:29 +08:00
DKChan 2ba0949f0b 修复(CI追绿·run23): golden_baseline_refresh裁剪步python→python3——runner无python别名(与run16 static_scan同类,上轮修了static_scan漏了本件) 2026-11-03 16:37:29 +08:00
DKChan d8ca0a7453 合并(CI追绿·竞态修复): 窗口化探针判定改锚工件——quit-after与quit(0)竞速124非真红(run21实证),refresh两处+render_gate三处改工件判定
ci / gates (push) Successful in 14s
2026-11-03 16:11:07 +08:00
DKChan 75ae8d58d8 修复(CI追绿·run19/21竞态): 窗口化探针判定改锚工件——quit-after 3000帧与探针quit(0)竞速,GPU加速下12s即耗尽帧限,quit-after胜出时Godot以124离场被误判超时红(run21实证:探针12s完活PASS+meta齐全后124); refresh两处+render_gate三处判定改meta/PASS签名/取证文件/问题=0工件锚,124非真红不再判闸; 退出码权威判据让位于可观测工件面(退出通道被平台竞速污染的受控例外,判据面收窄有实证依据) 2026-11-03 16:10:20 +08:00
DKChan b39fcdc90c 合并(CI追绿·补): baseline-mac导出步落yml
ci / gates (push) Successful in 14s
2026-11-03 15:55:37 +08:00
DKChan 180ba8c9a9 修复(CI追绿·补): baseline-mac导出步落yml(上笔提交时Edit工具对worktree路径误报漏装,commit实际只含两sh) 2026-11-03 15:55:37 +08:00
DKChan 484382ae54 合并(CI追绿·run17修复): 探针守卫预算提额(360/420)+baseline-mac基线导出步(/Users/Shared/baseline_out)
ci / gates (push) Successful in 16s
2026-11-03 15:54:20 +08:00
DKChan ab87285945 修复(CI追绿·run17): 窗口化探针守卫预算提额——Intel Mac上quit-after 3000帧排空需100-200s叠加探针本体逼近180s上限(run12实证:PASS打印后被守卫击杀于退出段,124误报meta缺失); golden_baseline_refresh菜单240→420棋盘180→360,render_gate三探针180→360; baseline-mac.yml加基线导出步(复制到/Users/Shared/baseline_out供人工取回,作业工作区会被清理) 2026-11-03 15:54:19 +08:00
DKChan 53e62bfafe 合并(CI追绿·fix-ci-obs续2): static_scan解释器回落(python→python3)——runner无python别名致三审计127静默判红; 提交版基线无05b条目(在飞批脏件待提交面)确认05b红因=基线登记缺失; 预期run17:02保持绿(POSIX已验)+09三审计真面首曝
ci / gates (push) Failing after 8m44s
2026-11-03 08:35:30 +08:00
DKChan be1f3c07f0 修复(CI追绿·fix-ci-obs续): static_scan解释器回落——runner PATH只有python3(闸脚本横幅python:python3为证),硬编码python三处调用=127 command not found审计零输出静默判红(run15实证:S9/S10/S13三FAIL零明细行); 加PY_BIN解析(python→python3→无则显式红),三调用改$PY_BIN; 本地全量跑复核 2026-11-03 08:35:16 +08:00
DKChan 82b9c9f533 合并(CI追绿·fix-ci-obs续): run_all套件执行器平台分派(Windows cmd.exe逐位保留/POSIX sh -c同步串行+pkill树杀)——run15根因77套件全数秒死=cmd.exe mac不存在; 可观测性三件已先行合入(红态回显加宽/关键行grep/失败清单打印); 合回推送后run16读02真面与远端S9/S10/S13明细
ci / gates (push) Failing after 8m2s
2026-11-03 08:23:44 +08:00
DKChan 03d53b1fc4 修复(CI追绿·fix-ci-obs续): run_all套件执行器平台分派——Windows cmd.exe形态逐位保留(/V:ON延迟展开+ERRORLEVEL落盘+taskkill树杀),POSIX新支(/bin/sh -c同步串行:引擎退出再落$?,create_process拿sh pid供存活轮询;截止杀pkill -P子进程先于kill父防孤儿); 根因=run15远端77套件全数秒死(24/18/18/17四分片)=cmd.exe在mac不存在create_process失败pid<0逐套件判红; Windows回归单套验证绿+S9/gdstyle绿 2026-11-03 08:22:55 +08:00
DKChan 8c53948737 合并(CI可观测性·fix-ci-obs): 红态诊断三件——gate()回显加宽/gate_unit关键行grep/run_all失败超时清单打印; 动机=run14的17套件崩死清单与远端静态扫描明细滞留runner,下一轮CI回执即可读取定位
ci / gates (push) Failing after 3m37s
2026-11-03 08:13:32 +08:00
DKChan 574f202405 工程(CI可观测性·fix-ci-obs): 远端红因诊断三件——gate()红态回显加宽(明细行[Rx]/[Sxx]/违规/存量形态入grep,tail 12→60——static_scan明细行不匹配旧词表致红因滞留runner)+gate_unit红态改关键行grep(套件FAIL清单/超时/ABORT/汇总,tail 12→80)+run_all失败汇总补打印failed_paths与timed_out_paths清单(原先只有计数无名单); 动机=run14的17套件崩死与远端S9/S10/S13违例明细全部滞留runner侧不可诊断,远端回传唯一通道=终端日志回显; 本地77套面单套验证+S9归零+gdstyle ok 2026-11-03 08:13:23 +08:00
DKChan 20a4b3d5bc 合并(CI红态修复·fix-ci-mac): S9三处R1参数化补齐(迭代50新码hit/expect/dom)+闸脚本分片空数组bash bug修复(mac bash3.2 unbound variable四分片秒挂——02全闸未跑即红的根因); 遗留红项归属在飞CI迁移工程批:03/05探针mac退出挂两形态+mac golden基线缺失+05b基线登记+远端S10/S13差异; 本地77套件复核全绿+S9归零+gdstyle ok; 合回后post-merge钩子推送复验
ci / gates (push) Failing after 3m40s
2026-11-03 08:03:33 +08:00
DKChan 64ed22a9f5 修复(CI红态追绿·fix-ci-mac续): 闸脚本run_all_gates.sh:367空数组展开bash bug——_user_args[@]在mac bash3.2×set -u下unbound variable四分片秒挂(测试未跑即红),改安全展开惯用法(空参归零不越set -u,非空照常传参); bash -n 过 2026-11-03 08:03:24 +08:00
DKChan c6fab7e9a5 修复(CI红态追绿·fix-ci-mac): S9三处R1参数化补齐(hit/expect/dom字典数组注解——迭代50新码,本地audit_type_hints PASS归零)+闸脚本run_all_gates.sh:367空数组展开bash bug修复(_user_args[@]在mac bash3.2×set -u下unbound variable,四分片秒挂测试未跑——改${var:+${var[@]}}惯用法); 遗留红项归属在飞CI迁移工程批不在本笔:03/05探针mac退出挂(headless与窗口化两形态,render侧--quit-after已修仍挂124=判别实验结论待收编)+mac golden基线目录缺失(需mac侧golden_baseline_refresh生成)+05b新闸基线登记+远端S10/S13与本地差异(runner缓存疑); 77套件全绿复核(config_db_test素材导入补刷后29 checks绿) 2026-11-03 08:02:22 +08:00
DKChan 8d3a12ec9c 合并(迭代50·三卡): 敌方状态个体化(owner_key多桶/增益技自体落点/死亡即清/呈现逐卡,V1-V8)+断言补齐(四域V1-V16,新件settings_store_test与boss_gate_test)+架构审查3.1+3.2整改(乙丙戊丁甲A类庚己组C组D全落,V1-V15,新件4含负面件); 独立验收审计两轮(首轮不通过→缺漏三条整改→复验通过,报告reports/iter50-验收审计-2026-11-03.md); 单元77套件+冒烟15项+gdstyle全绿; 合回后post-merge钩子自动跑CI全量域闸,回执后台挂ci_watch
ci / gates (push) Failing after 3m26s
2026-11-03 07:11:16 +08:00
DKChan bd64a0e4ac 审计归档补全(迭代50): 首轮不通过全文回填(前笔476a32a3仅含复验轮—输出文件提取源缺首轮段,从审计体hand-back文本重建)+终判通过注记 2026-11-03 07:10:55 +08:00
DKChan 476a32a3ad 审计归档(迭代50): 首轮不通过全文(缺漏三条:V14未落地虚假绿/V2名实断裂/报告第九节失实)+复验通过全文(三条闭合实证)+终判通过(L2归档路径随本件落盘闭合) 2026-11-03 07:07:49 +08:00
DKChan 63fc3e74c4 文档设计(架构审查5.2文档漂移订正·用户授权直改): 四项漂移归真——①architecture.md失效HeroLedger行删除,主角账三件(HeroStats/GainJournal/GpWallet)与刷新账件RefreshBank四行按盘上实件补登记(附CurioStop行落账指称随拆件改指HeroStats+GainJournal+RefreshBank、RunLedger退役叙述两处HeroLedger指称改现行件名)②拆件定稿节冻结计数摘除(1313行/50成员——活体清单不冻结计数,历史读数查git)③EC8热重载死链规格退役(用户总判据3死代码不保留·2026-11-02先例,依2026-11-03会话授权):数据配置.md v1.3八处摘除(管线行/热重载段——软着陆例外消失fail-fast全域统一/下游两行/HUD行删除/验收#6删除重编号/P2行删除/调参表热重载门行删除/计数器纪律句订正)+战斗结算.md v1.7两处(开张序列去关门步/上游行)+棋盘生成.md v1.3一处(热重载从句删)+architecture.md抗热重载句改授予时定格——set_reload_gate/reload代码面退役留待P2卡,architecture.md:88公开面登记与:386-387序列现态保留④MetaProgression基础层补登记行(四Autoload唯一跨Autoload依赖件,构造双形态+注册顺序即依赖序)——架构文档v1.32; 文档域闸全绿 2026-11-03 07:02:25 +08:00
DKChan 6cb1cf5efc 审计整改(迭代50·缺漏三条补齐): V14落地minesweeper_rules_test(_test_preview_reveal_readonly五断言:形态A/B零状态写入+实挖差集F2同口径逐位+preview前后cell_revealed零增量—根因=t8b patch脚本漏写落盘调用文件零触碰,12→17 checks绿)+V2具名承接件落地level_shop_economy_test(_test_spend_discount_from_rule_key:shop.tres零诊断+字段不在位+折后价discount_pct推导+未激活原价—192→195 checks绿)+实现报告第九节订正与第十节审计整改记录+决定记录#10(forge_table闭集钉数34→32补账—R3摘名必然连带强度不减) 2026-11-03 07:00:44 +08:00
DKChan 07caad9d54 文档设计(架构审查5.1封装修复·补录): 取证注意行追加一笔——godot-master 终审补查普查漏项 SlotStore→SaveManagerCore 反向私取约13处(slot_store.gd:26-28/38-39/61-76/92-97/119/129/134/159-162, 直用 _save._read_only/_reset_to_default/_data/_rename_overwrite/_peek_summary_at), 与普查处3(save_manager→SlotStore)同一对类相反方向, 处置并入需求卡片T3存档面(卡片已折入); 方向已抽查核实(slot_store.gd _save._* 实存); 其余零改动; 文档域闸复跑全绿(8闸) 2026-11-03 06:37:26 +08:00
DKChan a2886a5336 iter50-卡3:卡C(架构审查3.1+3.2整改): T0基线对账+乙案规则键参数字典全库贯通+丙案节点图三参数入表域并单点+戊案出生区入表+丁案经济三件+甲案死效果通道退役+A类①双写四处置+庚案驱动循环收敛+己案sim信息面出口(preview_reveal+0格连锁)+组D退役+组C确认; 断言V1-V15+负面件+新件4; 77套件+gdstyle 0新增全绿; 产出物实现报告与反哺点清单落位 2026-11-03 06:31:05 +08:00
DKChan cd133932f9 iter50-卡2:卡B(断言补齐): 四域13新断言+2处既有扩展——①增益结算链V1-V5 ②设置存储V6-V8 ⑤Boss门控V9/V10 ⑥锻造V11-V16; 新件settings_store_test与boss_gate_test; manifest+2; 73套件全绿 2026-11-03 06:31:05 +08:00
DKChan e658492703 iter50-卡1:卡A(敌方状态个体化): 容器换代owner_key多桶(个体键单点/授予写点3处/死亡清/消费面随动/呈现逐卡)+断言V1-V8+armor_roll申报换代(个体键读数语义保留)+主角侧回归绿; 单元71套件+冒烟15项全绿 2026-11-03 06:31:04 +08:00
DKChan ab5d75a208 合并(CI红态修复·退出挂死): 窗口化探针五处加--quit-after 3000(macOS quit后主循环不退实证+判别实验收编)
ci / gates (push) Successful in 14s
2026-11-03 06:27:35 +08:00
DKChan d9bc158756 修复(CI红态·退出挂死收编): golden_baseline_refresh与render_gate五处窗口化探针调用加--quit-after 3000——macOS窗口化quit(0)后主循环不退出(判别实验diag_rc=0实证:有quit-after即正常退出,无则124超时); 判据不受影响(签名串+meta+错误扫描三闸保留,探针真失败quit(1)先于兜底) 2026-11-03 06:27:34 +08:00
DKChan 67bf8f9332 合并(工程批·诊断): baseline-mac加quit-after判别实验步
ci / gates (push) Successful in 14s
2026-11-03 06:23:59 +08:00
DKChan 8dc24b3c17 工程(ci远端化·诊断): baseline-mac加quit-after判别实验步——board_shot_probe PASS后quit(0)挂死实证(run6=124),判别主循环退出丢失vs迭代内卡死 2026-11-03 06:23:58 +08:00
DKChan e44c72a6c3 合并(工程批·基线工作流): baseline-mac.yml手动触发型——mac基线生成走runner图形会话,只生成不提交(Q6),人工目检后入库
ci / gates (push) Successful in 13s
2026-11-03 06:11:28 +08:00
DKChan 7cb4cc7ec1 工程(ci远端化): 新增baseline-mac手动触发工作流——mac平台golden基线生成(runner图形会话窗口化渲染); Q6纪律=只生成不提交,人工目检后显式入库; host模式无node故纯shell步骤 2026-11-03 06:11:27 +08:00
DKChan 1c3f38b5de 合并(CI红态修复·地雷批): 全库20处$变量紧邻多字节字符加花括号——C-locale bash并入变量名失败路径必炸set -u(golden基线重制line70实证)
ci / gates (push) Failing after 2m33s
2026-11-03 06:04:43 +08:00
DKChan 953447e1d5 修复(CI红态·基线刷新脚本地雷): 全库20处$变量紧邻多字节字符批量加花括号——C-locale bash把多字节字符并入变量名,失败路径遇set -u必炸(golden基线重制board刷新FAIL分支line70实证,真因被掩盖); 覆盖golden_baseline_refresh/probe_gate/render_gate/run_all_gates/static_scan/mac_setup 2026-11-03 06:04:42 +08:00
DKChan 277ca158db 文档设计(架构审查5.1封装修复·修正): 处置记录两笔订正——①接收方卡片实名补「批」字(reports/需求卡片-架构审查5.1封装修复批-2026-11-03.md, 写卡代理落盘核实); ②普查处2 adventure_runner→BreakpointStore 读数按写卡代理实核改 37处/32行(首版记37行——5行各含2处访问), 取证注意行同步登记; 其余零改动; 文档域闸复跑全绿(8闸) 2026-11-03 06:03:38 +08:00
DKChan 19c990b11b 合并(CI红态修复·run4追绿): 检出改纯shell克隆——actions/checkout@v4为JS系动作需node运行时,host模式runner无node即败(run4实证); 作业自带github.token克隆,ci.yml头注立规禁JS系Actions动作
ci / gates (push) Successful in 15s
2026-11-03 05:58:51 +08:00
DKChan cf2fea3432 修复(CI红态·run4): 检出改纯shell克隆——actions/checkout@v4为JS系动作需node运行时,host模式runner无node即败(run4实证Cannot find node in PATH); 作业自带github.token克隆本仓,全库禁用JS系Actions动作并在ci.yml头注立规(引入Actions前必须核对执行器形态) 2026-11-03 05:58:42 +08:00
DKChan cc561d7ced 合并(工程批·CI迁远端·用户令): 素材回git(2026-11-03裁推翻0929裁定,256件+边车入库,仓库自包含)+闸脚本跨平台化(gate_platform.sh单点封装,cygpath/taskkill/PowerShell/裸timeout全收编,引擎定位GODOT_BIN环境变量优先)+golden基线按平台各存(windows/迁入,比较器平台子目录,fail-closed)+远端CI触发链(.gitea/workflows/ci.yml master推送触发+domain_route.sh乙案域分流+ci_watch.sh改Gitea API轮询+post-merge钩子改推送触发,push失败落push_failed防静默)+mac_setup.sh自举件(ci-runner专用账户+自动登录图形会话+LaunchAgent+Godot/gdstyle/Pillow系统装,bundle形态保签名,镜像路线退役)+三规约文档换代(本地CI→远端CI)+目检清单㊾登记; 本地跑批件ci_runner.sh与post-commit追绿钩子退役; 端到端验收随本合并触发
ci / gates (push) Failing after 5s
2026-11-03 05:56:08 +08:00
DKChan 3be3f3e7c1 文档设计(架构审查5.1封装修复·用户裁): 设计讨论结论落档两交付——①处置记录 reports/处置-架构审查5.1封装修复-2026-11-03.md(总判据六条/根因定稿三无叠加/普查五处 core 105行107处19符号+presentation 227行出卡/逐项裁决记录/19符号行为归属总表/架构锚点; 接收方=需求卡片-架构审查5.1封装修复-2026-11-03.md+待办清单架构审查优化讨论条目, 卡片成立即退役); ②code-conventions.md 新增 §1.6 拆分交接与封装边界(条一拆分交接定义=职责边界+交接定义双齐备才算拆分合格, 先例=BoardInstaller 引用束注入; 条二封装边界=跨对象禁访问下划线成员只走公开面)——本批修复与后续闸件共同依据; GDD 零改动; 文档域闸全绿(8闸 all_green) 2026-11-03 05:39:07 +08:00
DKChan b55e676121 工程(ci远端化·修复): Pillow第四轮根因=ci-runner家目录从未创建(sysadminctl只登记不创建,首次运行输出not created在案未被接住)——账户段后补家目录兜底(mkdir+chown+createhomedir), Pillow改系统级安装绕开--user与家目录时序; Godot wrapper实测已通过(4.7.2.stable.official rc=0) 2026-11-03 05:23:10 +08:00
DKChan 88cdef09aa 工程(ci远端化·修复): Godot安装前mkdir -p /usr/local/lib(cp -R父目录缺失近失) 2026-11-03 04:33:50 +08:00
DKChan e154479532 工程(ci远端化·修复): Godot安装改整bundle形态——官方签名封bundle Info.plist,抽裸二进制被taskgated判Code Signature Invalid SIGKILL(实证:codesign invalid Info.plist+bundle形态rc=0); 装/usr/local/lib/Godot_ci.app+/usr/local/bin/godot包装转发; Pillow安装加-H修sudo -u的HOME污染(缓存误写调用者目录) 2026-11-03 04:33:31 +08:00
DKChan c35b0ecf4f 工程(ci远端化·修复): 第三轮两根因——SRC_ZIP路径漏v前缀致复用探测落空(下载URL修了路径没跟)+macOS BSD mktemp禁X后带后缀(GNU允许可缀尾,首轮404的字面残留文件致File exists); 三处mktemp模板改尾X形态+脚本头部加字面残留清理+gate_platform同型地雷同修; 全部分支条件已在Mac本机实测(复用命中/mktemp形态/包完整性/目标目录) 2026-11-03 04:25:31 +08:00
DKChan 17352f85b0 工程(ci远端化·修复): mac_setup gdstyle支持本地预置包复用+tar结构校验; 自举前置件全部由SSH预置(用户sudo运行零下载等待——Godot 170MB+gdstyle已落Mac共享位) 2026-11-03 04:22:32 +08:00
DKChan fb5f2d42e5 工程(ci远端化·修复): mac_setup Godot URL模板修正(双stable+漏v前缀致404)+镜像假zip校验(200错误页体当失败, unzip -tq守卫双处)+chunk_dl.py收编(分片并行断点续传下载器,已实证方案仓库化) 2026-11-03 04:16:48 +08:00
DKChan f5c3fa935d 工程(ci远端化·修复): mac_setup变量引用紧跟全角标点被C-locale bash并入变量名致unbound——,root改${PW_FILE},root; 全库同型地雷扫描清零 2026-11-03 04:13:40 +08:00
DKChan 3d4173774f 工程(ci远端化·阶段四改版): mac_setup按专用账户图形会话形态重写——LaunchDaemon改LaunchAgent(挂ci-runner会话)+自动登录(/etc/kcpassword编码+autoLoginUser,密码root600)+保留全部隔离设计(随机密码不可登录/无admin/可写面限定); 渲染闸窗口来源=ci-runner图形会话(快速用户切换与日常使用并存); 依据=用户裁专用账户方案+渲染硬需求,WindowServer只在已登录会话存在的机制约束 2026-11-03 04:05:03 +08:00
DKChan 65ffd7f1d8 工程(ci远端化): ci.yml触发范围收紧为master分支推送——开发分支推送不触发远端(防worktree批推送空烧引擎时长; 分支级验证=开发期手动档), 与「分支级验证=开发期手动跑批」既有口径对齐 2026-11-03 03:22:02 +08:00
DKChan 165a28f6d1 工程(ci远端化·件核修复): doc_term退役词「随批」一处改写(目检清单㊾判据列); run_all_gates头注本地CI表述换代(件核grep残留归零); architecture.md车道分层节验证口径换代远端CI 2026-11-03 03:21:53 +08:00
DKChan 79b87119fb 工程(ci远端化·阶段六): 文档换代——AGENTS.md运行与验证首条+车道铁律+硬性红线+改动四类四处换代(本地CI→远端CI,分流语义,runner依赖注记); process-conventions §1第1/3/4条+§3第8/9条+§4换远端CI口径(ci_runner/post-commit退役在案,导入刷新归工作流); test-conventions §4换代; 体验验证清单㊾登记Mac端渲染基线目检两项(基线正确性+渲染闸全链,登记不阻塞); 依据=2026-11-03用户裁CI迁远端 2026-11-03 03:19:04 +08:00
DKChan 0019ef1514 工程(ci远端化·阶段四五): 远端CI触发链落地——新增.gitea/workflows/ci.yml(push触发,runs-on=ci-mac,域分流经tools/ci/domain_route.sh:游戏码批=全量/文档批=--docs秒级/纯闸件批=skip,乙案语义); ci_watch.sh整体重写为远端模式(轮询Gitea commit-status API,python urllib,令牌GITEA_TOKEN或git凭据库,回执合同不变:ci-status.json+ci-history.jsonl,红态red_gates=失败job名单); post-merge钩子改推送触发(push失败落push_failed判定防静默)+后台挂ci_watch; 退役本地CI件(ci_runner.sh+post-commit钩子,git rm); 新增tools/ci/mac_setup.sh自举件(专用账户ci-runner随机密码不可登录/Godot4.7.2+gdstyle v0.4.0 darwin装/usr/local/bin+Pillow+LaunchDaemon系统级常驻,镜像路线退役后环境配方的仓库化); 依据=用户裁CI迁远端Mac host模式 2026-11-03 03:15:03 +08:00
DKChan c28d01ccb0 工程(ci远端化·阶段三): golden基线按平台各存——四张现行基线(棋盘三图+menu_boot)迁入windows/子目录, mac/待Mac端重制后入库; golden_compare.py按sys.platform自动拼平台子目录(缺本平台基线=fail-closed显式红并给重制指引, 禁静默绿); render_gate基线断言路径与golden_baseline_refresh写入落点全改平台子目录; gate_platform.sh新增gate_platform_id; 依据=用户裁跨平台逐像素必失配(字形/抗锯齿机制差异), 平台内部严格度不降 2026-11-03 03:09:27 +08:00
DKChan b3928f8167 工程(ci远端化·阶段二): 闸脚本跨平台化——新增tools/gate_platform.sh单点封装(平台探测/路径形式/纯bash带超时执行/孤儿清杀/进程计数,双平台双栖); run_all_gates cygpath×2换封装+PY解析加存在性守卫(修非Windows误选幽灵venv路径); probe_gate/render_gate/golden_baseline_refresh的cygpath/taskkill/PowerShell/tasklist/裸timeout全部收编封装,Windows侧原逻辑保留走平台分支; run_smoke/run_system_test DEFAULT_GODOT改GODOT_BIN环境变量优先; gdstyle_gate DEFAULT_BIN平台化(macOS=/usr/local/bin/gdstyle,自举件装v0.4.0 darwin包); 依据=第七轮容器实测断点清单+runner迁移Mac host模式裁决 2026-11-03 03:07:10 +08:00
DKChan 0e7fdfb84c 工程(ci远端化·阶段一): 素材回git(2026-11-03用户裁推翻2026-09-29裁定)——256件运行时美术+导入边车入库, .gitignore撤game/assets/art拦阻块加.import例外; 闸脚本执行位+100755(tools/*.sh+game/tests/*.sh, Linux/macOS直启所需); 依据=仓库自包含原则, 修复新克隆缺素材闸预检必红的根因 2026-11-03 03:01:05 +08:00
DKChan 6261b36ecd 合并(迭代50编排·用户令): 三卡合批编入——敌方状态个体化(2.25)/断言补齐(2.75)/架构审查3.1+3.2整改(中值7.875), 合计≈12.875个工作日〔用户特批2026-11-03超10〕; 卡序=个体化先行→断言补齐(T0按个体键新API落笔)→架构审查殿后; 三条目状态推进已编迭代50; pipeline_gate PASS(30条目/50总表行/交叉核3链/卡片5张全过); 编排批零代码面, 文档域闸随commit点 2026-11-03 02:55:32 +08:00
DKChan d12063a24f 编排(迭代50·用户令): 三卡合批编入——敌方状态个体化(2.25)/断言补齐(2.75)/架构审查3.1+3.2整改(中值7.875), 合计≈12.875个工作日〔用户特批2026-11-03超10〕; 卡序=个体化先行(StatusContainer换代owner_key多桶为下游API依赖)→断言补齐(T0按换代后个体键API落笔)→架构审查殿后(取证表#8/#10锚点受前批漂移最小); 三条目状态推进已编迭代50; pipeline_gate PASS(30条目/50总表行/交叉核3链/卡片5张全过) 2026-11-03 02:55:23 +08:00
DKChan 5529617d7e 合并(用语强标准对齐批·用户令): 两处「一句白话定义」弱标准换成「展开成完整白话句」——doc-conventions §4:46 与 00-游戏概念:44, 与 §4:57 通行检验标准并成单口径(spec-AC); 禁用词表与冻结机制保留(强标准=人工质量线, 词表=机器执法线); .qoder STC 副本经用户确认在用保留; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-03 02:52:44 +08:00
DKChan f2ea8adabe 规则(用语强标准对齐·用户令): 两处弱标准「首现处附一句白话定义」对齐 §4:57 强标准「展开成完整白话句」——doc-conventions §4:46(加「同通行检验标准」指针, 术语表登记保留)与 00-游戏概念:44(词句直换); 同一输入两标准违反 spec-AC 红线(AGENTS.md:114), 弱说法全仓清零(grep 核过现行文件仅此两处); 禁用词表与冻结机制不动, .qoder STC 副本经用户确认在用保留 2026-11-03 02:52:36 +08:00
DKChan 974d6487fb 合并(CI追绿·fix-archreview-ci): 红闸两件清零——08e能力审计两行能力行真实入口改可核形态(ShopSession.shop_shelf()/Main._on_refresh_confirmed()+sweep双锚)+08 doc_term退役词订正(待办清单:19 裁决台账→逐项裁决记录); 红件最小单元复跑零红后文档域闸全绿(7a674a00); 合回后post-merge钩子复验全量 2026-11-03 02:31:47 +08:00
DKChan 7a674a0045 修(CI追绿·fix-archreview-ci): 红闸两件清零——08e能力审计两行真实入口改可核类.方法形态(货架位数行=ShopSession.shop_shelf()/刷新文案行=Main._on_refresh_confirmed()+sweep双锚)+08 doc_term退役词「裁决台账」改「逐项裁决记录」(待办清单:19); 红件最小单元复跑两闸零红 2026-11-03 02:31:17 +08:00
DKChan 7d88e109ed 合并(架构审查3.1+3.2整改批·设计落文与写卡): 五份GDD落文(天赋树v0.12规则键参数表+失实句订正/关卡节点图生成v1.4/冒险结构v1.4/地形变异v1.2/棋盘生成v1.2)+处置记录落档(总判据六条+裁决台账+方案甲~庚+取证18处现址)+需求卡片v1.2(15节全/11卡估时8工日/R1-R15对照表/削弱申报9条/零待裁点; grilling一轮19条+终审4条全折入)+待办两条目(架构审查条推进已写卡+charge_layers无属主数据游离专条待写卡); 讨论段裁决=用户逐项亲裁,总判据=机制数据长在所属封装实体内部属性/零缺省/死代码不保留/sim零规则副本; CI红不回滚——红项修复走fix-分支追绿 2026-11-03 02:23:26 +08:00
DKChan 3748ac66b6 合并(回答风格换代批·用户令): 对话输出规则重构合回——用词封闭(先描述后命名/删已立名豁免/同物同名)+判断挂依据(三种合法依据/结论行后必须跟依据清单)+交出前自检三新规替换旧不自造黑话条款; eli5 与 simplified-technical-chinese 两技能接线(2026-10-15 已装全仓零引用, 本次起对话第1条为其对话面最小集); doc-conventions §4 沟通面收敛为书面件、对话面划归 AGENTS.md; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-03 02:17:53 +08:00
DKChan f17f2614f5 规则(回答风格换代·用户令): AGENTS.md 回答风格重构——三条核心原则扩为四条(用词封闭:先完整描述后短说法/删已立名豁免/同物同名; 判断挂依据:三种合法依据+结论行后必须跟依据清单+无据标推测), 新增交出前自检清单与重讲改写工具节(接线 eli5 与 simplified-technical-chinese); doc-conventions §4 沟通面收敛为书面件、对话面指向 AGENTS.md; 依据=本场对话病历(结论无链/现造词替代描述/规则零自检)+ASD-STE100 与核查链调研 2026-11-03 02:16:33 +08:00
DKChan e9761e7189 待办条目状态推进(架构审查优化讨论): 文档设计已闭合+待写卡 → 文档设计已闭合+已写卡(卡片v1.2路径), 写卡凭据段补记(grilling 19条+终审4条折入, 11卡估时8工日, 能力行10增5改1删); 未闭合余项④⑤⑥⑦维持 2026-11-03 01:37:30 +08:00
DKChan 2f43b81ddc 修卡(架构审查3.1+3.2整改批·godot-master终审折入): v1.1→v1.2——阻断三处(B10/B11 测试适配面改闭合判据:meta_progression_forge 17触点+feat_vouchers 3处+adventure_feats rebuild 30处全列,削弱申报追加第9条,B12 全卡签名统一参数化泛型 Dictionary[Variant, Variant]/Array[Variant]防S9 R1A/R3,新增红线条款)+建议一处(S11 .uid收口步入T10); 验修19条销号全过+三份grep对账闭合+工程五点三过一风险一缺口已修; 闸PASS 2026-11-03 01:36:40 +08:00
DKChan a05fd7b8aa 需求卡片(架构审查3.1+3.2整改批) v1.1: 15节全+11张T卡估时8工日+对照表R1-R15+能力行10增5改1删+削弱申报8条+零待裁点开工门U0; v1.0→v1.1 折入grilling一轮19条(B1battle_fx_host签名/B2测试适配11处/B3削弱申报7·8条/B4注入序/B5manifest+4行/B6口径A四处/B7level_gen_params_test/B8基线25件口径/B9断言案挂R1+S1-S10)及追认meta_forge_test:737; pipeline_gate PASS 2026-11-03 01:21:18 +08:00
DKChan 82c5487e04 合并(敌方个体化卡批·用户令): 写卡批合回——需求卡片成文(V1-V8+断言换代申报两件, godot-master终审通过+grilling零待裁点)+README两能力行+待办条目→已写卡; pipeline_gate PASS(4张卡口径); 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 23:58:30 +08:00
DKChan 87385b41ec 写卡(敌方状态个体化批): 需求卡片成文——容器按个体多桶换代(hero/e生成序键,单点约定)+3写点(combat_segment增益技归施放者/reward_grant全体循环逐体发/damage_controller被命中者)+消费面随动(clamped_pool带owner_key/defender_ac/nest_count/结算快照)+死亡即清(unit_died→purge_owner)+呈现投影各读各的; V1-V8八断言挂四既有测试宿主,零新增文件; 断言换代申报两件(armor_roll V1-V3个体键重写语义保留/settlement_segments衰减相位逐桶等价换代); godot-master终审通过(架构四查全过,P3一处S9类型标注句折入T0-1); grilling零待裁点; README两能力行入表+覆盖域表增益状态行随动; 待办条目→已写卡; pipeline_gate PASS(卡片口径4张) 2026-11-02 23:58:22 +08:00
DKChan 639a399f5b 合并(敌方状态个体化设计批·用户令): 四件GDD落文——硬规矩改个体归属+目标规则词表四词+增益技归施放者自己+警觉/AC合流/呈现随动; 存储方案A案(逐个体授予,权威调研背书); 待办新条目登记+单体寻址条目并入退役; 设计讨论会话内闭合(用户四裁:A案/词表宽度/自增技目标/数量上限语境); pipeline_gate PASS; --docs全绿; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 23:28:32 +08:00
DKChan cf26c1c49c 文档(敌方状态个体化设计批·用户令): 四件落文——增益状态v1.5(硬规矩「敌方侧共享」改「实例按个体归属」,〈单体寻址扩展位〉节重写为〈目标规则与个体归属〉通则节:目标规则封闭词表四词/合并匹配认个体/个体死亡即清/呈现各读各的/实装随该批) 敌人系统v1.5(增益技落点=施放者自己——现行一只施放全体受益属实现错误随批纠正,警觉授予随动) 战斗结算v1.6(警觉side-wide句与AC合流句个体化) battle.md(敌方增益呈现行个体化); 存储方案=逐个体授予独立实例(用户裁A案,权威调研十余案例同构——StS/ITB/CataclysmDDA/GAS;阵营桶仅服务换人继承,本项目敌人开战一次性入场无此路径); 词表收四词,种类级不预收(不预先建面); 待办清单新条目登记(文档设计已闭合+待写卡)+原单体寻址条目并入退役; pipeline_gate PASS; --docs全绿 2026-11-02 23:28:21 +08:00
DKChan 6562e41902 处置记录+条目状态推进(架构审查3.1+3.2): 处置-架构审查3.1+3.2整改-2026-11-02.md 落档(接收方=架构审查优化讨论条; 总判据六条/裁决台账/设计方案甲~庚/取证18处现址表/sim组A-E要点/GDD闭合凭据/不在本卡范围); 待办条目状态 待文档设计→文档设计已闭合+待写卡(缺口属性删,未闭合余项④⑤⑥⑦移实况) 2026-11-02 23:19:56 +08:00
DKChan 15352170db 文档(架构审查整改·3.1+3.2 设计落文): 五份 owner 文档为硬编码数值入表立事实源——天赋树 v0.12(新增『规则键参数表』六键参数名与取值域/订正三处『限次值事实源=meta_tree.tres』与『机制硬编码无表行』失实句/economy_spend 折价参数自 shop 表收回节点行/验收标准补参数字典校验) · 关卡节点图生成 v1.4(调参表补三行: 岔口取三去路概率/同深度节点宽度上限/填充交替起始; 产出约束宽度行改指针) · 冒险结构 v1.4(调参表补货架位数行/GP 参数行标注聚散两参数归天赋树/『每次抽 3』改指针) · 地形变异 v1.2(调参表改取值域+指针形态, 补 pack_min 行; 订正 per_level_bonus 文档 +2 ↔ 表值 0 漂移; 公式与形状句改指针) · 棋盘生成 v1.2(调参表补出生区边长行; 两条布雷公式『−9』改指针; r0_max_cap 域下限改指针); 文档域闸全绿(cb92ab10) 2026-11-02 23:05:13 +08:00
DKChan cb92ab1036 登记(架构审查讨论发现): EffectPort biz_fact 键 charge_layers 无属主数据游离处置条——闭面五键四键各有领域实体持数据,唯 charge_layers 背后为 action_economy 裸账本(_charge_layers),全仓零内容件注册停手转蓄力订阅,厚积薄发/铁壁仅存注释假想面; 缺口=闭面收窄四键+转蓄框架退役或豁免的写卡裁决(会话已裁删除方向,含『机制数据长在所属封装实体内部属性』总判据); 状态待写卡; 蓄力周转专长(swap_charge_layers)不受影响 2026-11-02 15:14:33 +08:00
DKChan 51ad632945 合并(收尾·迭代49批后收尾·用户令): 反哺点九条落文闭合(architecture v1.31轴戊两件与四行已建件现状+ui_registry三域句柄分域换代/术语表v1.26立效果端口件掷格件〔用户裁〕/camp v2.6窗壳已实装注记/08-Alpha v1.25营地行窗壳注记/体验验证清单㊽目检两项/static_scan S8头注计数订正); 能力审计闸件补探针通道〔用户令〕(代表用例代码在渠道扩game/probe/, 对齐test-conventions §8.9双通道——迭代49三卡退役暴露潜伏缺陷, 13红/9行清零且核对比卡在更严); 产出物退役六件(三需求卡片+反哺点+实现报告+验收审计, 吸收即死+证据只留最新, 549683a5可考); 账面换代(待办清单三卡条目整条删除+roadmap迭代49行已完成+当前位换代: 迭代1-49全完成, 下一步=迭代50编排待发令); worktree --docs全绿(ecdd77e1); 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 08:58:40 +08:00
DKChan ecdd77e15f 收尾(迭代49批后收尾·用户令): ①反哺点九条落文——architecture v1.31(轴戊两件换代已建件现状[EffectPort六Callable路由/掷格件roll批束四键/选行算子返表行]+功能层action/reward/fx_host/damage四行端口接线与类变量实数10/11/15/12+ui_registry行三域句柄分域换代[run/menu两子容器新建/ModalFlow升格注册面直驻/register_layer迁驻]+寻址ui.flow两处换代+UiCampModals行平铺面清零)+术语表v1.26立「效果端口件」「掷格件」两条〔用户裁〕+camp.md v2.6叠层与开合补窗壳形态已实装注记+08-Alpha v1.25三·界面营地行补窗壳形态在役注记+体验验证清单㊽登记目检两项(五窗观感/窗内滚动手感)+static_scan.sh S8头注计数句订正10→14(入批前存量漂移); ②能力审计闸件补探针通道〔用户令〕: 代表用例「代码在」渠道扩game/probe/探针件(文件在库+func在件内即认), 对齐test-conventions §8.9双通道原文——迭代49三卡退役暴露潜伏缺陷(探针行向来只靠卡片正文字符串作保,13条代表用例红/9行), 修后13行全经代码在锚定且核对比卡在更严; ③产出物退役六件(吸收即死+证据只留最新): 三需求卡片+iter49反哺点+实现报告+验收审计(审计通过缺漏0例外1在案,合并提交549683a5可考; shot_career读数盯守经CI渲染闸绿0782d46c了结); ④账面: 待办清单三卡条目整条删除(状态机出口)+roadmap迭代49行已完成(2026-11-02)两列退役保留字+当前位换代(迭代1-49全完成,下一步=迭代50编排待发令,候选=断言补齐批卡)+README两能力行「计划用例」锚随卡退役摘除(用例已落地,断言尾缀标记保留); C4生涯.md核查零义务仅记录; 修复区审计红0; --docs全绿后合并回master 2026-11-02 08:58:00 +08:00
DKChan 50dd6d8c43 合并(状态表批注退役): 删 status_effects.tres 表尾 99-141 八段历史批次叙事批注(2026-09-13 减伤墙调参批 至 2026-09-20 只续时不叠层批)——refresh 叙事两段与现行行值(全 accumulate)相反; 2026-11-02 用户裁整段删不留头注/指路行, 行值/schema 零改动(44 行纯删除); 防护核查=四扫描域(game/tests/tools/design/schemas)对批注字面零引用; 两闸=流水线闸 PASS+code 域闸验收通过无新增红; 待办清单同名条目整条删除; 回执后台挂 ci_watch 2026-11-02 08:35:11 +08:00
DKChan 504ad5129b 状态表批注退役:删除 status_effects.tres 表尾 99-141 行八段历史批次叙事批注(2026-09-13 减伤墙调参批 至 2026-09-20 主角增益只续时不叠层批),diff=44 行纯删除零新增,行值/字段/schema 零改动,文件以 rows 数组收尾行干净结束
裁决依据:2026-11-02 用户裁整段删除、不留任何头注或指路行——refresh 叙事两段(weaken 续时、attack_up/ac_up 只续时不叠层)已与现行行值相反(现行全 accumulate)

防护核查:全仓 grep 批注段八批名+特征字面片段,指定扫描域 game/tests/、tools/、design/、game/data/schemas/ 零引用;换装护栏测试只断言行值不触注释;doc_term_audit 扫描域不含 .tres;其他数据表同名批注块系各表自身历史注记,不指向本段

两闸结果:pipeline_gate PASS(待办清单 32 条目);run_all_gates --code 验收通过、闸况与基线一致无新增红(00 冒烟/01 系统/02 单元集成 4 分片/03 探针/05 渲染/05b 色板/09 静态扫描/10 熵增全绿);回执 dirty_game 注记系批内先闸后提交顺序所致,属开发期参考件,合回验收=合回后 post-merge CI 全量

待办清单同步:「status_effects.tres 陈旧批注处置——refresh 叙事批注段」条目按直改序列整条删除
2026-11-02 08:34:55 +08:00
DKChan 0782d46ca6 合并(修红·断言补齐卡批): 覆盖域表四行缺口句补回待办清单指路——能力审计四红清零; error_scan/render_gate两红判缓存失配假红(EffectPort/RewardRoller类在树可证,本批零代码触面),合并后CI起手刷缓存复验追绿; fix区审计红0+pipeline_gate PASS; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 07:42:07 +08:00
DKChan b956dd7c6c 修红(断言补齐卡批): CI能力审计四红修复——覆盖域表四行(难度/增益/设置/锻造)缺口句补回「见待办清单」指路(闸判据:部分覆盖行缺口须指待办清单,写卡批删指路句致红); fix区capability_audit红0+pipeline_gate PASS; 另两红(error_scan打EffectPort/RewardRoller解析+render_gate取证缺失)为缓存失配假红——两类别名在树可证,本批零代码触面,CI起手--editor --quit刷缓存后复验 2026-11-02 07:42:01 +08:00
DKChan 549683a54b 合并(迭代49·效果端口与掷格分件+模态句柄分域+营地五界面真窗口化三卡): 轴戊两件建件(EffectPort六Callable路由/闭面五键/RewardRoller掷格面迁出/受理账面留守/行为零变化round_flow逐位134检查主证)+句柄册三域化(UiModals 14→3纯字段/run menu两子容器/ModalFlow升格注册面直驻/全仓寻址换代529命中+V1结构断言)+营地五窗真窗口化(WINDOW_SIZE 720×640单点/modal_shell窗壳/career同壳/探针V1-V8); 三卡各里程碑步代码域闸全绿+独立验收审计通过(缺漏0例外1在案); S13只降不升全达成; CI全量归post-merge钩子后台跑 2026-11-02 07:39:05 +08:00
DKChan 5f5e7a0029 iter49-收尾:iter49实现报告+反哺点清单 2026-11-02 07:38:54 +08:00
DKChan 2f450f4b25 合并(断言补齐卡批·用户令): 写卡批合回——需求卡片成文(reports/需求卡片-断言补齐批-2026-11-02.md, V1-V16十六断言四域零行为改动)+README五行能力行入表+覆盖域表五处缺口句订正+待办条目8→已写卡; grilling两问两裁零待裁点; pipeline_gate PASS(6张卡口径); 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 07:34:40 +08:00
DKChan f41903a3b0 写卡(断言补齐批): 需求卡片成文——①增益状态结算链V1-V5(迭代48已盖叠层续时,余衰减逐值/全清/满层拒/独立并存/首授快照) ②减动效存储契约V6-V8(探针已盖全链,余store本体单元) ⑤Boss出场门控V9-V10(每区域恰一终点+端到端boss行集;Σ×r_boss无运行时承载不造断言) ⑥锻造工坊V11-V16(全路线价格梯/多级购买/拒购零副作用/祝福零泄漏/默认值解耦/甲型双轴); 13新函数+2扩展零行为改动, 两新文件落位预检与规范预算在案; README五行能力行入表+覆盖域表五处缺口句订正(④除名终态口径); 待办条目8→已写卡(凭据=卡路径)+增益状态凭据v1.1→v1.4订正; grilling两问两裁(单卡四域+审计子代理通道)零待裁点; pipeline_gate PASS(卡片口径6张) 2026-11-02 07:34:34 +08:00
DKChan 041d509b4d iter49-卡3:营地五界面真窗口化批(窗壳形态换装):WINDOW_SIZE 720×640单点+modal_shell窗壳骨架+career同壳+screen_flow_probe V1-V8窗壳形态段 2026-11-02 07:30:34 +08:00
DKChan 240f1a1769 iter49-卡2:模态句柄分域批(句柄册三域化):UiModals 14→3纯字段容器+run/menu两新子容器+ModalFlow升格注册面直驻+全仓寻址换代+V1结构断言 2026-11-02 07:30:33 +08:00
DKChan 11beb4fc59 iter49-卡1:效果端口与掷格分件批(轴戊两件建件):EffectPort六Callable路由+RewardRoller掷格面迁出+两业务类零引擎直连+effect_port_test V1-V3 2026-11-02 07:30:33 +08:00
DKChan 926b05a61c 合并(锻造验收节批·用户令): 两件直改——①锻造工坊.md补验收标准节九条(判据绑结构不绑值,豁免件同步移除,能力审计回绿) ②待办清单条目8推进: ④战斗表现除名+范围收窄五类+状态→文档设计已闭合+待写卡; 文档批写面=design/+待办清单+capability_audit豁免行(闸令连带); 设计闭合凭据=锻造工坊.md v0.11; pipeline_gate PASS; --docs八闸全绿; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 07:07:59 +08:00
DKChan 38e08f6c2d 文档(锻造验收节批·用户令): 锻造工坊.md补验收标准节九条——柜台解锁与默认值解耦/路线解锁双通道并联/窗口内容/单选注入与树零攻防/切换语义/定价结构/存档闭合/祝福件负断言/甲型双轴可感, 判据全绑结构与关系不绑provisional值, 状态行v0.10→v0.11; capability_audit豁免件移除锻造工坊(闸令:豁免件已有验收标准节); 待办清单条目8推进: ④除名(用户裁灰化碎裂纯表现锦上添花,探针+人工目检已合规,呈现与battle.md零触碰), 范围收窄五类(②多语言③音频⑤数值落带三延期面注明归属), 实况补四件关联文档凭据, 改动面补工具代码档, 状态待执行→文档设计已闭合+待写卡; 设计闭合=会话内九条清单用户点头, pipeline_gate PASS(33条目/49行), --docs八闸全绿 2026-11-02 07:07:54 +08:00
DKChan cdc50e06de 合并(工程清理批·用户令): 六件直改——①palette_check基线建档+双门②机检化+05b色板闸 ②extract_checks补check_quiet(1719→2133三重自证) ③样张S1b四色墨断言(31/31全绿) ④main.gd死preload清理10条 ⑤ui_kit/path_check注释换代 ⑥CAMP_HEADER_BAND评估=改名中性化归ui_kit令牌批; run_all_gates02传参核查=d32ff342已完成漏删; 待办清单7条目删除; pipeline_gate PASS; 合回后post-merge钩子自动跑CI全量域闸(含新05b色板闸), 回执后台挂ci_watch 2026-11-02 06:29:36 +08:00
DKChan 9c36c7a237 工程(工程清理批·用户令): 六件直改合批——①palette_check基线建档+双门②机检化: golden/palette_baseline两PNG(token92色∪素材快照1274色=并集1346色)+gen_palette_baseline.py建档刷新件+闸脚本05b色板闸(code域,quick/影响面SKIP)+头注基线纪律, 门①语义检查与48计数上限不承载(口径归art-bible owner,呈报); ②extract_checks补check_quiet静默通道: CALL_RE/DEF_RE扩双通道+collect_call按匹配长偏移+quiet列记channel:check_quiet, 自证三重(双计等式2155==2155/新旧对拍1719→2133=+414入账/往返--diff PASS零差异), test-conventions§5.2局限备案句随批换代; ③样张S1b四色墨×PANEL_DATA垫牌≥4.5:1色值对表断言(读数4.97–5.62与审计复算逐位一致, 样张31/31全绿; V10基线对拍图artwork环境件--save-baseline重建); ④main.gd死preload清理10条(登记8条复核多出2条, 7具名消费面已迁main_ui_build拆件自持, 逐条grep复核零代码使用), presentation 17套件全绿+冒烟15项0失败兜底; ⑤注释换代: ui_kit TEX_HERO_PORTRAIT「48px档」→原稿分辨率+显示档读PORTRAIT_DISPLAY_H, path_check头注删日期批注记; ⑥CAMP_HEADER_BAND退役评估: 4处消费面核过(关卡屏2/商店1/KeystoneBadge工厂1), 退役删除不成立, 处置=改名中性化归ui_kit令牌批顺带(零值变化); ⑦run_all_gates 02传参核查=d32ff342已完成漏删零改动; 待办清单7条目整条删除(状态机出口), pipeline_gate PASS(33条目/49总表行); 产出物=reports/工程改动报告-工程清理批-2026-11-02.md 2026-11-02 06:29:27 +08:00
DKChan 7e9e57fd3a 合并(修卡批·营地五界面真窗口化·godot-master终审): 需求卡片v1.0→v1.1——阻断一处(生涯标题墨WARM→INK_TITLE随石板皮亮底订正,契约9范围限定)+建议三处(收闭点名生涯窗/V3V2容差口径/V7 await帧)全折入; 审裁决=修后即可开工; grilling四轮零待裁点不变; pipeline_gate PASS; 迭代49行卡片路径不变 2026-11-02 05:06:46 +08:00
DKChan 4de6111c56 修卡(营地五界面真窗口化批·godot-master终审折入): v1.0→v1.1——阻断一处(生涯标题「生 涯」墨token WARM压亮石板皮≈1.1:1静默违§7.2: T1明写订正WARM→INK_TITLE设置/状态面板先例,契约9「token零改」范围限定=BG_BRIGHT内容板文字)+建议三处(T2段尾收闭点名生涯窗on_camp_closed名单不含career_overlay防残留泄段/V3裸等值改V1容差0.01判等+V2恰等80注记/V7喂入后await帧再断防陈旧布局值); 审裁决=修后即可开工; grilling四轮零待裁点 2026-11-02 05:06:45 +08:00
DKChan df80bfb38d 合并(修卡批·效果端口与掷格分件·godot-master终审): 需求卡片v1.0→v1.1——阻断三处(契约2闭面改五键+biz_fact补答rider两键/S7_B1_SET补登reward_roller/白盒指址申报改符号族全量约17行21处)+建议五处(复位五拍/T3清单补四件/V1期望输出锚/V3合成行零推表/combat_segment写点时序论证)+README:87代表用例补V2; 审裁决=修后即可开工; grilling三轮零待裁点不变; pipeline_gate PASS; 迭代49行卡片路径不变 2026-11-02 04:58:10 +08:00
DKChan 29295bd75e 修卡(效果端口与掷格分件批·godot-master终审折入): v1.0→v1.1——阻断三处(①rider_tier两键三方矛盾:契约2闭面改五键声明三when事实+两rider运行态读数,biz_fact规格补答两rider键,V3阴性对照守卫不变;②S7_B1_SET漏登reward_roller.gd:T2步与§7结构图补齐,轴戊S7/S8随动两新件全登;③variant_placement白盒指址申报漏计:四处→economy内部符号族全量约17行21处五符号(_rollable_rows/_pool_weight/_biased_cell_rows/board_skew/luck_bias_query),F12/§3.1/§7/T2/§9申报表五处同改)+建议五处(复位五拍/T3套件清单补四件/V1期望输出补订阅锚与读数面/V3合成行effect段逐字抄铁壁行零推表/combat_segment等价论证换唯一写点时序)+README:87能力行代表用例补V2三函数并列; 审裁决=修后即可开工; grilling三轮零待裁点 2026-11-02 04:58:09 +08:00
DKChan 937ba1075f 合并(修卡批·模态句柄分域·godot-master终审): 需求卡片v1.0→v1.1——阻断两处(T1期望串补modals.段·R6同改/T0验证①收窄presentation域+全仓零残留移T1验证④)+建议六处(24键口径/§8补camp容器头注随批/flow枚举补两点/混行概括句/architecture行号v1.30/正检grep拆三条)全折入; 审裁决=修毕可直接开工; grilling四轮零待裁点不变; pipeline_gate PASS; 迭代49行卡片路径不变 2026-11-02 04:53:37 +08:00
DKChan 881f96f56b 修卡(模态句柄分域批·godot-master终审折入): v1.0→v1.1——阻断两处(①T1期望串漏modals.段:ui.menu.debug_overlay→ui.modals.menu.debug_overlay,R6同改;②T0验证①grep排程不可满足:收窄game/presentation当步域,全仓零残留grep移T1新增验证④)+建议六处(node()24键与平铺区间剔76行/§8补ui_camp_modals头注两句随批/flow枚举补:123:251/营地混行概括句口径/architecture行号换代v1.30现行:169:170:201/正检grep拆三条各限include); 审裁决=修毕可直接开工; grilling四轮在案零待裁点 2026-11-02 04:53:35 +08:00
DKChan 4b5e311d1d 合并(fix-doc-term·CI追绿): 体验验证清单.md:577 退役词「报错」→「错误」——迭代48收尾批引入的08 doc_term红(名词岗退役词,2026-10-15口径); 红态修复走fix worktree免重塑免数卡; 本地术语闸复验疑似现行1→0; 合回后post-merge钩子自动跑CI全量域闸复验追绿, 回执后台挂ci_watch 2026-11-02 04:48:23 +08:00
DKChan 90b74fcd0a 修复(doc_term红·CI追绿): 体验验证清单.md:577 退役词「报错」→「错误」(名词岗,2026-10-15退役口径)——迭代48收尾批(64c675f9)登记目检项引入,aa396eb9尖CI 08 doc_term红; 本地复验疑似现行1→0,fix-doc-term免重塑免数卡 2026-11-02 04:48:22 +08:00
DKChan aa396eb987 合并(收尾·迭代48批后收尾·用户令): 反哺点十六条处置闭合——落文13处(art-bible v3.36背景实装化与STAGE_BG退役改指/art-prompts v2.14/battle-stage-prompts v1.9/battle.md/HUD框架/数据配置v1.2/增益状态v1.4词表累加+十行补护身defensive_stance存量漏登/08-Alpha v1.24立绘行换在役〔用户裁〕/术语表立「显示档」条〔用户裁〕/美术两清单站桩行已交付)+architecture v1.30 SCHEMA_VERSION失真句订正(迭代41测试债批遗留义务); 目检十项登记㊻+迭代41测试债三项补登记㊼; 产出物退役九件(五件iter48+三需求卡片+迭代41测试债批实现报告,遗留义务全清); 待办清单三卡条目删除+两条新登记(tres批注处置待裁/ui_kit注释顺带件)+roadmap迭代48行已完成+当前位换代(迭代1-48全完成,下一步=三写卡批待编排); pipeline_gate PASS; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch
# Conflicts:
#	roadmap.md
2026-11-02 04:38:31 +08:00
DKChan 64c675f96f 收尾(迭代48批后收尾): 反哺点十六条处置闭合——①落文: art-bible v3.36(§6.1背景实装化三句+§4.1换色合并登记③STAGE_BG退役改指SLOT_BACKDROP)+art-prompts v2.14(组四按档派生已落位+组一已实装消费)+battle-stage-prompts v1.9(ground_h已回填100+四柱已退役)+battle.md(布局字段补ground_h+光柱氛围层退役句)+HUD框架(B区行补三关背景与连续地面层+布局几何清单补地面层高)+数据配置v1.2(布局表用途句补地面层高)+增益状态v1.4(stack_policy词表换代accumulate+现行九行→十行补护身defensive_stance行〔迭代39存量漏登补录〕+累加行六→七行)+08-Alpha v1.24(立绘显示清晰度行换在役〔用户裁〕)+术语表立「显示档」条〔用户裁〕+美术两清单站桩行已交付换代; architecture v1.30(ConfigDB行SCHEMA_VERSION失真句订正——迭代41测试债批遗留义务,现役=save_manager SAVE_FORMAT_VERSION); ②目检十项登记体验验证清单㊻+迭代41测试债批三项补登记㊼(原报告漏登补齐); ③产出物退役九件(吸收即死+证据只留最新): iter48反哺点/实现报告/验收审计/停机呈报/代拍板追认单+三需求卡片(合回4c94eee3)+迭代41测试债批实现报告(遗留义务已清:闸基线换代随工程小件批落地/SCHEMA_VERSION本批落文/目检㊼); ④账面: 待办清单三卡条目整条删除(状态机出口)+status_effects.tres陈旧批注处置(待文档设计)与ui_kit.gd注释顺带换代(待执行)两条新登记(未决先迁)+roadmap迭代48行已完成(2026-11-02)与两列退役保留字+当前位换代(迭代1-48全完成,下一步=三写卡批待编排) 2026-11-02 04:35:56 +08:00
DKChan 5d1a27de68 合并(编排批·迭代49·用户令): 三卡编入迭代49——①效果端口与掷格分件(中值2.625天)②模态句柄分域(1.875天)③营地五界面真窗口化(2.75天), 合计≈7.25个工作日常规带零特批; 卡序=核心域先行(EV锚逐位主证早曝,表现两卡殿后集中目检,用户裁); 三条目状态推进已编迭代49; pipeline_gate PASS(41条目/49总表行/交叉核6链/卡片8张全过); 编入不等于开工,实现段待/iter 49发令; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 04:33:52 +08:00
DKChan 9728391098 编排(迭代49·用户令): 三卡编入——效果端口与掷格分件(中值2.625)/模态句柄分域(1.875)/营地五界面真窗口化(2.75), 合计≈7.25个工作日常规带零特批; 卡序=核心域先行(端口分件EV锚逐位主证早曝,表现两卡殿后集中目检,用户裁); 三条目状态推进已编迭代49; pipeline_gate PASS(41条目/49总表行/交叉核6链/卡片8张全过) 2026-11-02 04:33:40 +08:00
DKChan 9bdcaa4dc0 合并(工程+文档批·B7色板整屏总闸·用户令): art-bible v3.36 §4.1色板第三层「整屏有效色数总闸」——裁判面=成片出现的颜色数(有效色数),上限128待定现用,构成推导源32x2+48+16,超限先合并压缩禁加色绕行,测量口径归闸件; shot_checker判据换代——有效色数=面积≥0.25%成片颜色(锯齿/字缘/阴影环/渐变中间带不判断,用户裁降噪口径),地板40整屏口径不变,上限128; 阈值四档扫描实测定0.25%(现役七屏有效24~74全绿,无治理面); 待办条目完成整条删除; pipeline_gate PASS(41条目); 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 04:27:38 +08:00
DKChan e3d362b767 工程+文档(B7色数治理·用户令): 色板整屏总闸三件落地——art-bible v3.36 §4.1色板分层增第三层「整屏有效色数总闸」(裁判面=成片出现的颜色数,上限128待定现用,构成推导源32x2+48+16,超限先合并禁加色,测量口径归闸件不载圣经)+shot_checker判据(有效色数=面积≥0.25%成片颜色,锯齿/字缘/阴影环/渐变中间带不判断·2026-11-02用户裁降噪口径;地板40整屏口径不变;上限128)+待办条目「正常屏唯一色数收敛」完成整条删除(双轨口径/上限/落点三点用户裁决闭合,现役七屏有效24~74全绿无治理面,吸收即死); 阈值扫描四档实测定0.25%(1-4Kpx中间带=阴影环渐变居所整带滤净,0.5%+连icon级token色都漏); 闸烟测camp eff=24与扫描一致 2026-11-02 04:27:27 +08:00
DKChan 5999cc7ba4 合并(写卡批·效果端口与掷格分件·用户令): 需求卡片-效果端口与掷格分件批-2026-11-02 v1.0 落 master——按 architecture v1.29 轴戊建 EffectPort(业务类唯一效果发射出口窄门面)+RewardRoller(装配期格面资源摇号)两件, 业务类零引擎直连零账面触碰/受理账面留守, 行为零变化(同种子逐位+结构断言+S13只降不升); T0-T4估2.63工作日, 对照表9行七格(variant_placement四处白盒指址换代=唯一削弱申报,判据零删改); grilling三轮零待裁点(开工门=U0, 签名级缺陷一轮修正); pipeline_gate PASS(卡片8张全过); README能力行「效果发射端口单点」+待办条目推进已写卡; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 04:19:42 +08:00
DKChan 575cdb116c 写卡(效果端口与掷格分件批·用户令): 需求卡片v1.0 零待裁点+README能力行维护+待办条目推进已写卡 2026-11-02 04:19:07 +08:00
DKChan 54f73e4f33 合并(文档批·B5战斗域结构深拆设计闭合·用户令): architecture.md v1.29拆件定稿节轴戊——效果端口件(暂名EffectPort: 业务类唯一效果发射出口,EffectEngine/EffectContext/计数器账面收归宿主侧,单实现零接口抽象)+掷格件(暂名RewardRoller: 装配期格面资源摇号,受理账面留RewardEconomy,衔接=格→身份映射); 行为零变化红线全款(命中序=声明序/明细行词表零触碰/deferred观测面不回退/EV·MC锚逐位零漂移); 功能层四行随动注记; 待办条目文档设计已闭合+缺口删除; pipeline_gate PASS; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 03:45:09 +08:00
DKChan 61229cee49 文档设计(B5战斗域结构深拆·用户令): architecture.md v1.29拆件定稿节轴戊——效果端口件(暂名EffectPort,业务类唯一效果发射出口,引擎/上下文/计数器账面归宿主侧,单实现零接口抽象)+掷格件(暂名RewardRoller,装配期摇号面,受理账面留RewardEconomy,衔接=格→身份映射)两件设计定稿; 行为零变化红线全款(命中序/明细行词表/deferred观测面不回退/EV·MC锚逐位); 功能层四行随动注记(action_economy/reward_economy/BattleFxHost/damage_controller); 待办条目设计闭合+缺口删除+状态推进; 用户两点裁决(端口形态甲/分件切向甲)会话在案,待裁点清零 2026-11-02 03:44:57 +08:00
DKChan f50a078ea6 合并(写卡批·营地五界面真窗口化·用户令): 需求卡片-营地五界面真窗口化批-2026-11-02 v1.0 落 master——五界面从近全屏面板/全屏深色叠层换统一居中定尺寸窗壳(起点720x640·遮罩0.6·内容超高窗内滚动·生涯页同壳,窗板panel_skinned石板皮+生涯页BG_BRIGHT内容板两契约随grilling落卡), 开合路由/互斥/关闭钮/ESC序行为面零改; T0-T3估2.75工作日, 对照表8行七格+削弱申报零删改; grilling四轮零待裁点(开工门=U0); pipeline_gate PASS(卡片7张全过); README能力行「营地五窗统一窗壳形态」+待办条目推进已写卡; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 02:45:17 +08:00
DKChan 8a889bfcd0 写卡(营地五界面真窗口化批·用户令): 需求卡片v1.0 零待裁点+README能力行维护+待办条目推进已写卡 2026-11-02 02:44:33 +08:00
DKChan 01f57139b6 合并(文档批·营地五界面真窗口化定稿·用户令): camp.md v2.5叠层开合节——五窗统一居中定尺寸窗壳(起点720x640,窗明显小于屏场景大面积可见,终值随样张目检校准,内容超高窗内滚动)+生涯页同壳同形态(全屏深色叠层退役); 遮罩0.6/互斥/关闭钮/ESC序维持三点裁决; 待办条目凭据换代v2.5+改动面补游戏代码档; pipeline_gate PASS; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 02:16:14 +08:00
DKChan a848c4f280 文档设计(营地五界面窗口化·用户令重开): camp.md v2.5叠层开合节真窗口化定稿——五窗统一居中定尺寸窗壳(起点720x640,窗明显小于屏场景大面积可见,终值随样张目检校准,内容超高窗内滚动)+生涯页同壳同形态(全屏深色叠层退役); 遮罩0.6/互斥单开/各窗关闭钮/ESC优先序维持2026-11-01三点裁决不变; 待办条目实况补记两点补裁+凭据换代v2.5+改动面补游戏代码档; 用户两点裁决(窗口几何/生涯页形态)会话在案,待裁点清零 2026-11-02 02:16:04 +08:00
DKChan 4b626261d6 合并(fix-iter48ci·CI红三项修复): S11注释退役词换代+08c卡①R7能力行README在册全称+02显示档红=主区纹理缓存陈旧(修复区新鲜环境自证,合回后CI导入刷新自愈); 修复区窄验三件全绿 2026-11-02 02:09:36 +08:00
DKChan 857c80e0ba fix-iter48ci: CI红三项修复——S11注释退役词「单元套件」→「单元测试」(stage_background_test:2)+08c流水线闸卡①R7能力行格换README在册全称「战斗屏三区几何与棋盘格边长(分辨率两档×四档板型)」(0657370b先例格式修)+02显示档14红=主区.godot纹理缓存陈旧(合并后素材落递晚于CI导入刷新,九键全红为陈旧签名;修复区新鲜环境50PASS自证)——窄验stage_background 20绿/standee 50绿/pipeline PASS 2026-11-02 02:09:26 +08:00
DKChan 4c94eee369 合并(迭代48·状态合并累加制+立绘显示档+战斗区背景替换三卡): 卡①六行accumulate+累加臂+V1–V4断言+甲案裁决随动(deferred自描述键+相位分类归绿,EV三锚零漂移)/卡②九件原稿分辨率入包+显示档九键钉值+V13–V18+样张30/30+三面对照图/卡③ground_h单源+背景三关选图+连续地面层+光柱与STAGE_BG/BEAM_LIGHT退役+V1–V6含审计补差源码锚; 独立验收审计通过(首轮窄口径不通过三项缺漏修齐后复审通过); 合回后post-merge钩子自动跑CI全量域闸 2026-11-02 01:58:40 +08:00
DKChan 84e3d46a6a iter48-收尾:产出物终态——实现报告(三卡全收口+实际对照表结果列+读数留痕+目检十项)+反哺点16条+停机呈报(甲案裁决闭合记载留根因)+独立验收审计(首轮窄口径不通过三项缺漏修齐,复审通过——审计报告§九)+代拍板追认单(三卡白名单全用零超出) 2026-11-02 01:58:26 +08:00
DKChan 3b60048b1a iter48-卡3:卡③(战斗区背景替换批,含审计补差V6源码锚): ground_h单源回填100+schema地面校验拆辅助+背景三关变体层(TEX_STAGE_BG_FMT+set_board_type选图单点,空串归dungeon,缺图回退链)+连续地面层(TEX_STAGE_GROUND底贴B区底高读表)+两处接板同步守卫行+四柱光柱层与BEAM_LIGHT/STAGE_BG退役(菜单_beams_rect不动)+两对比锚改读SLOT_BACKDROP(阈值不变)+stage_background_test 20checks全绿(V1–V6含审计补差两源码锚断言)+layout_probe追加断言两档PASS+ui_contrast 36测点绿 2026-11-02 01:58:24 +08:00
DKChan 4c3f0f6082 iter48-卡2:卡②(立绘显示档批): 九件素材原稿分辨率入包(紧裁零降采样,STANDEE_SRC_H九键+产物计数自证)+standee_motion显示档PORTRAIT_DISPLAY_H九键钉值(_place_portrait按档算倍率,缺键push_error按1×)+portrait_probe扩display_size/display_scale+闸件standee_asset_check换口径(源高==原稿表值/显示宽≤150酋长157例外逐字)+样张站桩段按显示档取数(A4解冻重校88×92,V10并排30/30)+V13–V18全绿(50checks)+三面对照图 2026-11-02 01:58:23 +08:00
DKChan 1e35ab947b iter48-卡1:卡①(状态合并累加制批): 六行stack_policy refresh→accumulate+schema词表换代+容器累加臂(_apply_accumulate只加时长,层数快照不变)+roll_multiplier五段式探针(V1/V2/V3)+table_structure_guard V4+damage_controller标签换代+甲案裁决随动(2026-11-02用户裁): _ineffective_row载荷deferred自描述键(非行为改动)+round_flow _row_phase分类补deferred→战斗段——相位单调断言归绿,EV三锚0.9148/1.0012/1.1948逐位不变 2026-11-02 01:58:22 +08:00
DKChan 26f00af7a8 合并(写卡批·模态句柄分域·用户令): 需求卡片-模态句柄分域批-2026-11-02 v1.0 落 master——UiModals 平铺12句柄按域抽 run/menu 两子容器(营地六件先例不动)+ModalFlow 升格 UiRegistry 直驻+register_layer 注册面随迁, 行为零变化纯句柄搬家(类变量 14→3, 旧寻址形全仓零命中, 换代面529行钉file:line); grilling四轮零待裁点(开工门=U0)+代拍板白名单5项在卡; pipeline_gate PASS(44条目/48总表行/卡片6张)+capability_audit零红; README能力行新增「模态句柄分域寻址面」4行+既有「模态覆盖层编排与输入锁」2行换代+覆盖域表HUD框架行补名; 待办清单条目推进已写卡; 合回后post-merge钩子自动跑CI全量域闸, 回执后台挂ci_watch 2026-11-02 01:49:04 +08:00
DKChan e575de2344 写卡(模态句柄分域批·用户令): 需求卡片v1.0 零待裁点——12平铺句柄分域抽容器(run/menu)+ModalFlow升格注册面直驻+register_layer随迁, 行为零变化纯句柄搬家, 全仓寻址换代面529行实测钉file:line; T0-T2估1.9工作日; 对照表六行七格(新增能力行=模态句柄分域寻址面已入README+覆盖域表HUD框架行); grilling四轮裁决全落(.uid落库+合同表零改动静态判据申报); pipeline_gate PASS+capability_audit零红; 待办条目推进已写卡(卡片路径入实况) 2026-11-02 01:47:57 +08:00
DKChan a5c89d6773 合并(迭代47批后收尾): 反哺点十二条处置闭合——落文八处(architecture v1.28营地域六件行+camp.md v2.4顶栏实装+art-bible v3.35围墙实装值与32色子板行+camp-scene-prompts v1.4落位实测+生涯v1.4 P6甲落地+08-Alpha v1.23 Esc例外+asset-path-map与美术清单入库确认)+shotchecker判据互斥随裁决在案零落文面+两未决迁待办新条(palette_check双门机检化/CAMP_HEADER_BAND令牌退役评估)+目检五项登记体验验证清单㊺+产出物退役九件(三卡/反哺点/两报告/需求澄清/美术方案提案/双审复核)+待办清单营地条整删两注记+roadmap迭代47行已完成与当前位换代(迭代1-47全完成)+README能力行改名回表四处(收尾核对义务)+R3句式两处; 文档域闸验收通过与基线一致(回执bd54d1f4); 合回后post-merge钩子自动跑CI全量域闸,回执后台挂ci_watch 2026-11-02 00:24:39 +08:00
DKChan bd54d1f46d 收尾(迭代47批后收尾): 反哺点十二条处置闭合——①落文八处: architecture v1.28(营地域六件归属行增补——UiCampModals/CampSceneView/营地四子界面视图族/camp_esc_overlay+MainEscFlow/CampHudBand/CampRefreshBus;D1行营地面现状化四柜台退役;ui_registry行子容器与层序合同槽换代camp_overlay退役换camp_scene+四子界面+camp_esc_overlay;产品码首个键盘输入入口main._unhandled_input契约9注记)+camp.md v2.4(顶栏刷新单口实装回填——进档与写口尾触发现开界面与HUD同步取现值;叠层节卡④⑤引用随手清)+art-bible v3.35(§6.2围墙细条句实装落盘值(0,261,1280,49)底锚y310·桩身43锁定·备选A'存档在案;§4.1营地场景环境子板32色行——并集272收敛32违例对0,色值事实源=入包量化产物,换算式登记无逐色值差异呈报)+camp-scene-prompts v1.4(八物件落位实测contain表——board130x121/gate240x211/dummy120x180/forge240x193/tent251x170/chest106x90/notebook100x66/campfire160x149,锚定底中心+顶锚;量化缩放实况注记——32色重量化+非整数倍contain换算判据口径)+生涯.md v1.4(营地行条带撤下现状化+P6甲落地节换代+期二条带处置义务清空)+08-Alpha v1.23(键盘手柄行Esc例外注记+营地两行在役换代+需求澄清死链改git沿革)+asset-path-map与美术清单§3.5(营地十件实装入库确认scene_camp_*十件在役TEX_CAMP_*十键消费+终审置换同径注记);②反哺#10 shot_checker色数判据互斥已随82b2cbea/8e294de9用户裁决落地(阈值40/camp特判删除/色数收敛待办新条91f91744)零落文面;③反哺#12 CAMP_HEADER_BAND令牌退役评估迁待办新条(随令牌批处置非独立强删)+palette_check基线建档与双门机检化迁待办新条(实现报告§7.2未决先迁);④目检五项登记体验验证清单㊺(场景观感含十件素材终审观测/七物件点选反馈/大门篝火动线/Esc三动线与HUD/四子界面视觉);⑤产出物退役九件(吸收即死+证据只留最新): iter47反哺点+实现报告+验收审计+三需求卡片(合回3443890d)+需求澄清(08-Alpha引用改git沿革)+营地场景图美术生成方案提案(camp.md:31留痕句改git沿革)+卡④⑤双审复核(遗留节零未决);提案-营地色彩与氛围脚本按art-bible§6.2/camp-scene-prompts依据行活引用保留;⑥账面: 待办清单营地交互重做条整条删除(五卡全落地状态机出口)+UI贴图重构条与图鉴条落地注记+两条新登记,roadmap迭代47行已完成(2026-11-01)+两列退役保留字+当前位换代(迭代1-47全完成,下一步=迭代48待/iter发令);⑦闸红修复三处: gdd_lint R3两处(08-Alpha合回+日期句式去修订注记形态)+capability_audit四红(收尾核对改名回表义务——README:144/148真实入口object_pressed信号改锚CampSceneView._gui_input()/README:145计划名_on_confirm_new_adventure改落地名_on_confirm_accepted与main._resume_from_menu/README:146计划用例_test_forge_rows改落地名_run)〔纯测试清单维护〕 2026-11-02 00:24:14 +08:00
DKChan bfa0a8bed3 合并(工程+规则·CI回执等待异步化·用户令): ci_watch.sh新件+process-conventions§1.3回执等待纪律+AGENTS.md运行与验证一句; iter技能总收口步同口径换代(.zcode豁免面主区直改,不入本笔)——合回落地先呈报本批总结,回执等待一律run_in_background挂ci_watch.sh,禁前台sleep/轮询;两会话实证(合并→呈报阻塞20.5分钟/全天前台sleep等闸); 合回后post-merge钩子自动跑CI全量域闸 2026-11-02 00:11:05 +08:00
DKChan e340f14e87 工程+规则(CI回执等待异步化·用户令): ci_watch.sh新件(认领判据=回执commit为合并提交或后代+回执时刻晚于合并,半截JSON重试,900s超时防挂死,经git公共目录恒读主区回执)+process-conventions§1.3回执等待纪律+AGENTS.md运行与验证一句+iter技能总收口步换代——合回落地先呈报总结,回执等待一律run_in_background后台任务,禁前台sleep/轮询;两会话实证(合并→呈报阻塞20.5分钟/全天前台sleep等闸) 2026-11-02 00:10:25 +08:00
DKChan de5e31ed55 合并(迭代46批后收尾): 反哺点落文七处(奇物v1.4/行动经济v1.4/战斗结算v1.5/地图战斗资源v1.4/architecture v1.27/art-bible v3.34/battle.md下限句退役换锚点判据)+目检四项登记体验验证清单㊹+产出物退役十一件(三卡/两反哺点/两报告/两审计/停机呈报/卡B复核)+待办清单三条目整删+roadmap迭代46行已完成与当前位换代+art-bible入库合并冲突标记修复+refresh_feats_test补登记run_all.gd(02全量漏件补位,能力行代码面锚定成立); 文档域闸验收通过与基线一致(回执73fc11eb); 合回后post-merge钩子自动跑CI全量域闸 2026-11-01 23:52:05 +08:00
DKChan 73fc11eba4 收尾(迭代46批后收尾): 反哺点九条处置闭合——①落文七处: 奇物v1.4(换图系七件设计声明改已实装——节标题/基线不变句/件表构成句30→37行三代换,稀有度14/13/10/0·cap均1入句)+行动经济v1.4(改写节标题已实装换代+折后价floor取整与门槛扣费同源细则+调参表两行已入feats.tres)+战斗结算v1.5(换图系节已实装换代+board_refreshed统一事实挂点句+全局受伤事件四路径统一经唯一发射口与消费族改述——含护盾吸收在内既有订阅对四路径同等生效)+地图战斗资源v1.4(清图奖励只在清图批兑付句——弃图刷新不触发清图事件/换图新图不发清图奖励/刷新专长GP走战斗内缓冲)+architecture v1.27(BattleRefreshFlow行增补——换图刷新流程件可用性门/折后价单点/执行序/成功事实登记,S7_B1_SET增补在案;damage_controller行现状化——唯一发射口唯一消费族四路径统一;action_economy行现状化——dig_paid命中单点+request_refresh收折后价入参;GrantSegment句现状化——成功刷新事实消费+轮末治疗计数兑付面)+art-bible v3.34(§4.1换色合并登记①②实况化——STAND_STONE_RIM/EDGE源常量已删、#4C4038补代码名PLAZA_EDGE;§8.2高墙口沿高光Color8(196,172,132)→#C9AF83即BRICK)+battle.md(棋盘格尺寸公式可读下限30px句退役——换锚点判据句:可读性以用户验收现行画面为锚、全域禁人造阈值、结构钳制[26,46]管算式、接线守卫=生产写入值与单点算式严格相等、最大板推定读数留痕不作判红);②术语表零新增(本批新名均属代码标识符);③10-31清单第8条算例表改数不执行——算例表已随布局几何单点化批退役无落点;④art-bible v3.33入库合并冲突标记顺手修复(HEAD/docs-mood-ban两侧同文取一);⑤目检四项登记体验验证清单㊹(卡A刷新动机观感/卡B名字行14px底线/口沿换值/回退描边;卡C14×14可辨读性已随锚点裁定用户实机背书免登记);⑥产出物退役十一件(吸收即死+证据只留最新): iter46两反哺点清单+两实现报告+两验收审计+三需求卡片(卡A/B合回34bb62a5/卡C合回ab5a45af)+停机呈报(裁决已落+卡Cv2.0落地被取代)+卡B grilling复核报告——判据全过: 反哺点全落文、遗留读数义务零(卡C§七/卡AB§十已了结)、引用面=roadmap行保留字+待办清单条目随整删出清;⑦账面: 待办清单三条目整条删除(迭代43批后待裁两点/封锁-蓄力combo·换图系七件/棋盘格边长三方取值——三卡合回,状态机出口),roadmap迭代46行已完成(2026-11-01)+卡片报告两列退役保留字+当前位换代(迭代1-46全完成,下一步=迭代47待/iter发令);⑧闸红修复两件: gdd_lint R3 roadmap收尾叙述去「作废」字样(退役无落点句改述)+capability_audit 11红——refresh_feats_test.gd原经卡片申报走02关联档选跑未登记run_all.gd清单,卡片退役后能力行代码面锚定失效且02全量漏件,补登记进套件清单(expect=0)由全量CI承接〔纯测试维护〕;提案-弃图刷新系专长流派按用户前令保留不入退役 2026-11-01 23:51:46 +08:00
DKChan 3443890df2 合并(迭代47·营地场景图批+Esc浮窗与顶栏批+句柄子容器批): 三卡收口——营地场景图十层落地(CampSceneView+layout表fail-fast+十件素材)/四柜台拆解五子界面+CampRefreshBus单口+CampOverlay退役/Esc浮窗四态路由+HUD栏+设置语境分支/camp.md v2.3定稿吸收(半透明遮罩0.6场景根留底/Esc先关窗);独立验收审计通过(处置后);--code闸全绿(88d1344d对齐);合回后post-merge钩子自动跑CI全量域闸 2026-11-01 23:44:56 +08:00
DKChan c620214e06 iter47-收尾:迭代48编排合入(纯文档面): roadmap迭代48行+待办清单状态——纯文档收尾 2026-11-01 23:44:29 +08:00
DKChan 6208a9cd1a iter47-卡3:卡⑤(迭代47·Esc浮窗与营地顶栏批): Esc浮窗四态路由+CampHudBand顶栏栏+设置语境分支+断言批+审计补差+master取用+camp.md v2.3定稿吸收(半透明遮罩0.6场景根留底/Esc先关窗Q1甲换代)——终态六枚落满 2026-11-01 23:44:29 +08:00
DKChan bbeeea77e0 iter47-卡2:卡④(迭代47·营地场景图新建批): 十层素材落地+CampSceneView场景图+layout表fail-fast+四柜台拆解五子界面+大门篝火动线+断言迁移批+审计补差——CampOverlay退役全仓零残留 2026-11-01 23:44:29 +08:00
DKChan 0761071b37 iter47-卡1:卡⑥(迭代47·营地模态句柄子容器批): UiCampModals子容器+camp_overlay句柄迁移modals.camp.overlay二层——43处改指零行为变化,--code闸all_green 2026-11-01 23:44:29 +08:00
DKChan eff87256b6 合并(迭代48编排·用户令): 三卡编入——状态合并累加制+立绘显示档批+战斗区背景替换合计≈6.1工作日常规带; 卡序核心域先行表现殿后; 累加卡对照表能力行格机检口径顺手修(闸红5→0); 三条目状态已编迭代48; pipeline_gate PASS 2026-11-01 23:29:32 +08:00
DKChan 261ff5b615 编排(迭代48·用户令): 三卡编入——状态合并累加制(中值≈1.125d)/立绘显示档批(≈0.85d)/战斗区背景替换(中值≈4.125d),合计≈6.1个工作日常规带零特批; 卡序=核心域先行(EV锚L3预案早曝)表现两卡殿后集中目检; 三条目状态推进已编迭代48; pipeline_gate PASS(44条目/48总表行/7交叉链/11卡全过) 2026-11-01 23:29:30 +08:00
DKChan 0657370be9 修卡(状态合并累加制批·流水线闸格式): 对照表能力行格换代机检口径——R2-R5「同 R1 新增行」简写改全称「新增:同名状态合并策略(叠加/累加/并存)与剩余次数语义」、R6 既有名补 README 在册全称; 闸红5→0 2026-11-01 23:29:28 +08:00
DKChan 240448be7f 合并(art-bible版本行订正): v3.32→v3.33——合并冲突解消笔误一行订正,内容零变化 2026-11-01 23:24:45 +08:00
DKChan f0f5d8b437 文档(art-bible版本行订正 v3.32→v3.33): 合并冲突解消笔误——v3.33 重编在案(bfea1475),合并提交 c94c2108 版本行误取 HEAD 侧 v3.32;一行订正,内容零变化 2026-11-01 23:24:44 +08:00
DKChan c94c2108e3 合并(文档批·art-bible§2情绪明暗禁令删除+营地五界面窗口化定稿): v3.33——禁令整块删除(明亮基调正向方向,压暗逐案样张目检)+引用网九处随清+camp.md v2.3叠层开合定稿(五功能窗口/遮罩0.6/互斥单开/Esc先关窗)+待办营地五界面条目文档设计已闭合; 与立绘批v3.32撞号已重编v3.33(冲突=版本行,取v3.33); 合回后post-merge钩子自动跑CI全量域闸 2026-11-01 23:21:49 +08:00
DKChan f4902bc746 合并(写卡批·状态合并累加制): 需求卡片-状态合并累加制批-2026-11-01 v1.1双审齐(grilling两轮+godot-master)零待裁点; README能力行新增同名状态合并策略+覆盖域表更新; 待办条目推进文档设计已闭合+已写卡; 合回后post-merge钩子自动跑CI全量域闸 2026-11-01 23:20:47 +08:00
DKChan bfea147581 版本重编(art-bible v3.32→v3.33): 与立绘显示档批的独立 v3.32 撞号——两批内容零重叠、版本身份标记不可共享,本批(§2禁令删除批)合回前重编 v3.33 2026-11-01 23:20:39 +08:00
DKChan 8e294de976 合并(闸修·shot_checker色数阈值40+色数收敛待办登记): 用户裁阈值40(正常实测地板60的2/3)+camp特判删除+std≥8名分补注;正常屏色数过杂登记待办治理;迭代47侧merge master取终态,T6重跑即真营地复跑验证 2026-11-01 23:17:12 +08:00
DKChan 91f91744cd 登记(待办清单·用户令): 新条目「正常屏唯一色数收敛」——七屏实测60~1579色数过杂记治理,待美术设计讨论(目标上限/收敛手段/与§4.1两层色板条款关系),状态待文档设计,改动面文档+美术素材;本批只调闸阈值不动色板 2026-11-01 23:17:04 +08:00
DKChan c3206f86b2 闸修(shot_checker色数阈值64→40·用户裁): A段唯一色数改正常实测地板余量制——现行七屏实测60(营地场景图,七屏最低)~1579,阈值40=地板2/3,低于一切正常屏;行内语义改「色数异常回落」,camp=32特判随零特判令删除;头注补双名分(std≥8=圣经§7.2文字4.5:1推论下界之下+正常实测最低19.3之上的空屏绊线;色数40=正常地板余量);art-pipeline-tools口径行同步 2026-11-01 23:17:02 +08:00
DKChan f33f9c1cfe 合并(立绘显示档批·美术设计线闭合+卡片 v1.1 双审订正): art-bible v3.32 站桩立绘显示档三档绝对高 96/144/188+源=原稿像素网格禁入包降采样、08 v1.22 覆盖行、art-prompts v2.13 §5.4 按档派生工单、character-design 与两张美术清单随动、待办条目推进「美术设计已闭合+已写卡」、reports 卡片+双审报告入库、能力清单补「站桩显示档与素材分辨率绑定」行。本批只落设计与卡片,代码与素材实装待 /iter 发令。合回即由 post-merge 钩子后台跑本地 CI 全量域闸。 2026-11-01 23:02:34 +08:00
DKChan fc30e984c6 写卡(立绘显示档批 v1.1·grilling+godot-master 双审后执行级订正): reports/需求卡片-立绘显示档批-2026-11-01.md 新立(T0–T3 估 0.85d、零待裁点、验收 V13–V18 绑显示档高/纵横倍率/源高钉值/键集自检)+reports/复核-双审-...md 双审报告。阻断两条已补卡:①原稿目录不入 git 且 sync_worktree_assets 不同步 artwork、pixelize 缺件静默空跑 exit 0——T1 补显式主区根路径+产物计数自证=9;②素材不入 git、worktree→主区无同步通道且 standee_asset_check 不在闸清单,合回后敌侧落位无人看守——T3 补「九件落递主区再触发 CI」收口步、V13 逐件钉源高防旧降采样稿蒙混。其余订正:样张 A4 硬锁 46×48 与 96×96 方框列入解冻面、主角源明写切 2× 稿、get(key,96.0) 兜底违反自卡契约 2/6 改 push_error+V18 键集自检、灰矮人 0.76× 与地图头像 0.52× 补已接受项并点名目检、T1/T3 闸件口径时点三处互斥统一为同批、注释随动面补全(含反向引用已注销禁令的旧句)、§14 注销「核测试键登记值」空操作(gdstyle 不扫 tests)、浮点判等一律 is_equal_approx、两表对账双审结论相左故 V17 真断言+读不到走 L2 禁当红禁当绿。能力清单补行「站桩显示档与素材分辨率绑定」(写卡段义务,代表用例 _check_display_tier)。待办条目状态推进「美术设计已闭合+已写卡」。闸况:pipeline_gate PASS(9 卡)、--docs 零新增红。 2026-11-01 23:02:00 +08:00
DKChan 25b2a0bd33 文档设计(立绘显示档·美术设计线闭合): art-bible v3.32——§8.2「站桩立绘源档 36–94、显示 ×2」条换代为「站桩立绘显示档=三档绝对高 96/144/188」+源=原稿像素网格、入包禁再降采样、显示倍率=档高÷源高(NEAREST)、体量顺序由显示档承载不由源高承载、放大与超宽登记为已接受项;排版条 >150 溢出举例随动(食人魔入大档);槽位条「高度的整数倍档」改「高度的绝对档(档高取整数像素值)」消与倍率制的字面冲突;§8.3③ 闸规格改按显示档校验。character-design §5.5 指路行换代。08 v1.22 覆盖行改「立绘显示清晰度(原稿分辨率+三档显示)」,出口=9 件按档落位+目检。art-prompts v2.13 §5.4 手绘重产工单改按档派生工单(九件、零绘制、色值以现役稿为准)+产出状态随动。两张美术清单站桩行随动。根因凭据=现行入包稿与原稿 dom_block_resize 产物逐像素相同(diff 空),细节损失属入包前降采样而非形象工艺。2026-10-14「须手绘重产」方向经用户裁作废、现有形象即终稿;#A79CB8 保留在板本批不消费、色板额度议题另批。 2026-11-01 23:01:40 +08:00
DKChan 82b2cbeaff 合并(闸修·shot_checker camp屏色数判据): 三读法裁决A案落地——camp屏唯一色数阈值64→32对齐场景环境子板32色上限(环境层在场语义,防空白std≥8不动),art-pipeline-tools口径行同步;迭代47侧merge master取用,T6重跑即真营地复跑验证 2026-11-01 20:26:53 +08:00
DKChan 4f52e288b1 闸修(shot_checker·camp屏唯一色数阈值64→32·停机呈报三读法裁决A案): 营地场景图批渲染闸红(std=55.6/colors=60)与art-bible§4.1场景环境子板每屏≤32色硬上限互斥——A段camp屏阈值分屏化取子板上限值32(环境层在场语义:未渲染只剩UI≈28色即触红),其余屏64不动,防空白语义std≥8不变;art-pipeline-tools口径行同步;tools/闸件工程改动直改通道(用户委托裁决) 2026-11-01 20:26:45 +08:00
DKChan a93e6c0005 修卡(状态合并累加制批·godot-master审查线补齐): 必改1+注5落卡——补第三处refresh语义断言申报(damage_controller_test:376标签换代,行为面仍绿)/布尔受理行定性改attack_up(accumulate行)/探针四段式改五段式/改名行号清单补:159调用点/tres保持CRLF/孤立验证五套件扩六(EV锚套件round_flow提前曝红);引擎语义核验零阻塞(容器改写无缝/S9零新键/加载期fail-fast属实/测试harness全兼容) 2026-11-01 19:51:46 +08:00
DKChan dda2238f32 文档(art-bible§2情绪明暗禁令删除+营地五界面窗口化定稿·用户令): §2禁令整块删除——用户裁明亮基调为正向方向,压暗属普通设计决策逐案走样张目检(禁令查无正向拦截实例,三道硬闸在位:基调正向句/冻结样张/明度三档带机检); 引用网九处随清(§2格底尾句/结算三拍§2禁令标签去签设计零变化/§3.2砖缘豁免声明/§6.1背景/§6.3迷雾自查段/§9.1取弃表/§9.2反面行改风格基准非禁令/character-design提灯允许域/checklist封印特效/battle·level-map明度分层引用句换代); art-bible v3.31→v3.32; camp.md v2.2→v2.3叠层与开合定稿=五功能窗口·场景根留底+半透明压暗遮罩(复用模态遮罩件0.6锚)+五窗互斥单开+Esc先关窗后浮窗四态+各窗关闭钮; 待办营地五界面条目缺口消解状态推进文档设计已闭合(零新美术,实现卡强依赖卡④完工) 2026-11-01 19:01:07 +08:00
DKChan a9c006e7d1 写卡(状态合并累加制批·grilling两轮复核): 卡v1.0零待裁点——六行合并策略refresh→accumulate累加制实装卡(T0基线读数/T1表行+词表+容器累加臂+V1-V3断言与换代申报三处/T2产出物落位+独立验收审计); EV锚红L3停机条款(重锚归用户档位); 表批注零触碰(4a2ed961用户恢复令在案,范围边界在卡); 待办条目状态推进文档设计已闭合+已写卡; README能力行新增同名状态合并策略+覆盖域表增益状态行更新 2026-11-01 08:23:12 +08:00
DKChan 5ad72f44a0 合并(卡⑥v1.1·双审后执行级订正): 类缓存刷新步/static_scan路径/V尾缀落点/V3计数留痕/契约计数与退役句/迁移面实测8文件/node()改写措辞——grilling+godot-master双审通过,设计面零改动;合回后post-merge钩子自动跑CI全量域闸 2026-11-01 06:55:25 +08:00
DKChan c585a6bd73 修卡(卡⑥v1.0→v1.1·grilling+godot-master双审后执行级订正): T0命令路径订正game/tests/static_scan.sh+禁手改基线; T1补类名缓存刷新步(--editor --quit,语言纪律5)+ui_modals头注同步+断言尾缀落点步+复跑面扩改指面8文件+句柄同一性链:108; V3判据改gate绿+计数=14留痕+观测面局限申报(闸对14/15同零命中); 契约2计数句(过渡期含overlay/终态六枚)+契约3注S13兜+2起+契约4补overlay随卡④T3退役删除; F4迁移面实测8文件40余处入卡; node()措辞改写分支key不改名+白名单收窄match平铺; T2切分预案——设计面零改动,双审确认与现役先例同构 2026-11-01 06:55:16 +08:00
DKChan c009cf7b1e 合并(迭代47写卡批·机检预算裁决): 卡⑥营地模态句柄子容器批v1.0新立排执行序第一+卡④v3.2/卡⑤v1.5子容器口径+待办清单分域重构条登记+roadmap换代——停机呈报裁决最小改动落地,零基线欠账;合回后post-merge钩子自动跑CI全量域闸 2026-11-01 06:16:13 +08:00
DKChan b991f52ac2 写卡+编排(迭代47机检预算裁决·用户令): 新立卡⑥营地模态句柄子容器批v1.0(UiCampModals分域容器+camp_overlay句柄迁移+node()camp二层寻址,迭代47执行序第一位,≈0.75d)——停机呈报裁决最小改动:营地六句柄落子容器禁平铺; 卡④v3.1→v3.2(文件表ui_camp_modals行+落位预检/预算三查补行+存量触面补列ui_modals/ui_registry/main_ui_build三件+S13预期14→14+T0/T3子容器口径); 卡⑤v1.4→v1.5(浮窗句柄落子容器+契约7寻址钉死+「14→15恰贴」算术缺陷作废订正); 待办清单(营地条实况换代+开工门销号+执行序)+新登记「模态句柄册分域重构」待写卡条(全量分家另立批); roadmap迭代47行卡⑥排第一+周期≈15; 复核报告裁决注记——pipeline_gate绿 2026-11-01 06:16:06 +08:00
DKChan cd121b18c2 合并(迭代47文档批追绿): S11禁用词「单元套件」→「单元测试」README:142+卡④V14两处——红项修复,合回post-merge复验追绿 2026-11-01 05:04:05 +08:00
DKChan 83a4fbf5c5 修复(迭代47文档批追绿·fix-i47-term): S11禁用词「单元套件」→正词「单元测试」两处(README:142能力行真实入口+卡④V14真实入口格)——2026-10-22 测试术语重构批禁用词表在案,CI红项修复,合回post-merge复验追绿 2026-11-01 05:03:52 +08:00
DKChan 70d071f850 合并(迭代47文档批·开工门落文): camp-scene-prompts v1.3 §5五裁点改已裁+art-bible v3.31 §6.2同步+卡面指针随动与义务了结+V14测试名钉死+README V14锚——用户令非迭代义务本会话清零;合回后post-merge钩子自动跑CI全量域闸 2026-11-01 04:55:38 +08:00
DKChan 8be5d425ca 文档批(迭代47开工门落文·用户令本会话完成): camp-scene-prompts v1.2→v1.3 §5待裁五点改已裁(帐篷300×170追认/门扇240×220追认+门洞x520-760对齐/布告板(845,268,130,140)/描边奶油色追认/环境子板色值不前置T1量化后按§4.1登记); art-bible v3.30→v3.31 §6.2待裁行同步改已裁; 卡④v3.1卡⑤v1.4版本指针v3.24→v3.31+§5反哺点义务了结(落文完成·README已入表确认)+V14测试名钉死camp_scene_layout_test.gd:_test_layout_hotspot_geometry; README能力表V14用例锚补入; 复核报告遗留节换代——非迭代义务本会话清零,迭代47仅剩/iter发令 2026-11-01 04:55:28 +08:00
DKChan 4554e0e702 合并(迭代47写卡批·双审修订): 卡④v3.1+卡⑤v1.4——双审后用户令修订,开工门四项裁断销号(五裁点拍板/P3·P5口径/T1后处理随iter令)+Esc四态语义契约9新立+浮窗自收+判据订正+成片漂移就地订正;零待裁点零阻塞,迭代47可开工;合回后post-merge钩子自动跑CI全量域闸 2026-11-01 04:41:29 +08:00
DKChan b75688c6ca 修卡(迭代47双卡·grilling+godot-master双审修订): 卡④v3.1——开工门四项裁断销号(五裁点逐点拍板/P3·P5销号口径/T1后处理随iter令授权)+现状事实换2026-11-01盘面(smoke退役宿主改指·句柄迁移·行号实测·TEX_CAMP常量落点)+Godot风险项落卡(1024档换算式逐张登记·节点选型钉死Control根+TextureRect+子节点序·layout fail-fast校验入V14·V1场景层序断言·T2实现约束); 卡⑤v1.4——契约9 Esc四态语义与接线定稿(事件驱动_unhandled_input·禁Input轮询·不挂ui_cancel·pressed非echo)+契约3谓词钉死+契约4动线首步浮窗自收+契约5触发主体+V4/V6判据订正+死信排序约束改述+文件表补ui_modals/main_ui_build+V7扫描面扩两新件; 双审复核报告落reports——零待裁点零阻塞,迭代47可开工 2026-11-01 04:41:21 +08:00
DKChan ab5a45af00 合并(迭代46卡C·棋盘格边长口径收口批v2.0): 格边长算式单点化+探针人造阈值退役(MIN_CELL删·等价守卫·推定留痕)+四档板型入卫(62→74checks)——行为零变化·独立验收审计通过·批末代码域闸七闸all_green·锚点读数留档(基座40/33/30/28·全屏46/46/46/46)与卡§2.7逐值一致;battle.md:144下限句退役走反哺点通道;拆批续合回=迭代46最后一卡,合回后post-merge钩子自动跑CI全量域闸 2026-11-01 03:29:48 +08:00
DKChan afee92476d 合并(alpha清单状态刷新批·用户令): 08-Alpha版本标准三行现状换代——营地交互重做行(卡④美术闭合v3.0重立+同编迭代47)/真人试玩轮次行(未核销面换代㉚–㊸)/战斗一屏样张行(待做→部分在役,规格半闭合)——v1.20→v1.21+02索引指针随动;条目零增删;合回落地post-merge钩子自动跑CI全量域闸 2026-11-01 03:13:10 +08:00
DKChan b5433285b4 文档(alpha清单状态刷新·用户令): 08-Alpha版本标准三行现状换代——①营地交互重做行换代(卡④美术设计闭合=样张过审2026-10-31+v3.0现行有效卡重立,与卡⑤Esc浮窗同编迭代47待开工;删'余三前置未销号/卡⑤未编排'过期句)②真人试玩轮次行换代(未核销面=㉚–㊸待用户核销,旧句'㉚㉛未核销+迭代34三项待登记'过期——三项已登记㉜,迭代42无玩家可见改动未登记)③战斗一屏样张行待做→部分在役(规格半闭合=目标规格清单落art-bible五张规格表2026-10-30+五项实装定值与样张机检随迭代43入库;未结半=出口未达,方向稿用户目检㊶先行)——v1.20→v1.21,02系统清单版本指针随动;条目零增删,Alpha内容范围冻结不动 2026-11-01 03:13:03 +08:00
DKChan 546ed1d611 iter46-收尾 2026-11-01 03:10:26 +08:00
DKChan 37ed6ab426 iter46-卡1:棋盘格边长口径收口批v2.0——MIN_CELL阈值退役改等价守卫+算式单点_cell_for+四档入卫(74checks/探针两档绿/审计过) 2026-11-01 03:10:25 +08:00
DKChan 5269ed4080 合并(fv25退役与欠账登记批): 〔fv25〕表内注释存在性断言退役——守载体不守信息,行留任仍由fv12从解析数据守,02套件67→66项;待办清单登记「hobgoblin 内容三件套补齐」条目(2026-11-01/来源=审计发现/状态=待文档设计,凭据=敌人系统.md v1.1)——欠账登记迁待办清单唯一登记处,禁再以表内注释+机检承载;用户令工程改动经worktree车道合回,合回后post-merge钩子自动跑CI全量域闸 2026-11-01 02:11:16 +08:00
DKChan 5ecfabc251 Merge branch 'master' into fv25退役 2026-11-01 02:11:05 +08:00
DKChan 57084e0bd3 工程+登记(fv25退役与欠账登记批·用户令): 删 table_structure_guard_test〔fv25〕断言——守「表内注释存在性」与游戏行为无关(行留任仍由fv12从解析数据守,注释机检守载体不守信息,用户裁无验证价值),连带摘fv12消息尾缀〔fv25〕与②块注释「缺口登记随行」句,02套件67→66项;登记待办清单「hobgoblin 内容三件套补齐」条目(2026-11-01/来源=审计发现/状态=待文档设计,凭据=敌人系统.md v1.1「hobgoblin缺口登记」节2026-10-13迭代24反哺④)——欠账登记迁待办清单唯一登记处,禁再以表内注释+机检承载;GDD正本登记不动 2026-11-01 02:11:04 +08:00
DKChan 12af4fe00c 合并(合回即删改回批·用户令): 删区时机改回「合回即删」2026-09-19原裁——「CI全量绿→删区」系10-30本地CI化批夹带改动未经用户单独裁断;红态修复车道换轨新开fix-修复worktree(免重塑免数卡),追绿复验落post-merge(post-commit降兜底);规则文本五文件十一处随动+iter/.qoder技能豁免面直改;件核旧语义零残留;合并落地即删区=新规首次实操 2026-11-01 02:09:46 +08:00
DKChan 22809f9b79 工程+文档(合回即删改回批·用户令): 删区时机改回2026-09-19原裁「合回即删」——「CI全量绿→删区」系10-30本地CI化批(c91bbddd)重写§1时夹带、未经用户单独裁断,10-31车道恢复批(94628fca)沿用未复位;恢复收口=冻结→件核→并master→重塑→主区merge --no-ff→合回落地即git worktree remove+删分支,CI由post-merge钩子在合回落地时自动触发、与删区解耦;红态修复车道换轨=新开修复worktree(fix-<任务名>分支,非iter<N>形免重塑免数卡,修复归属原批卡片)修复合回追绿,追绿复验落post-merge,post-commit钩子降为红态主区直提兜底触发(机件零动);规则文本五文件十一处随动:AGENTS车道铁律行/运行与验证首条/改动四类行,process-conventions §1.2收口序列与红态句/§1.3/§1.9①,test-conventions §4,iter技能两处+.qoder镜像两处(.zcode/.qoder豁免面主区直改不入git);件核=旧语义全库grep零残留,守卫数卡提示「回任务worktree」语义仍准(拦截时任务区尚在)零动 2026-11-01 02:09:29 +08:00
DKChan 94dfa7e79b 合并(编排批): 卡C棋盘格边长口径收口批v2.0回编迭代46——迭代行卡列补卡C路径/编入时间换代2026-11-01/预计周期≈8.625不变/状态保持进行中(用户裁);待办条目状态追加已编迭代46;当前位换代=卡C v2.0待/iter发令回worktree iter46续工+迭代47已编排待开工;battle.md:144退役归文档批待发令;文档域闸绿(7fd50fc4) 2026-11-01 02:08:41 +08:00
DKChan 7fd50fc485 编排(卡C v2.0回编迭代46): 棋盘格边长口径收口批v2.0(2026-11-01用户裁锚点换代后重立,写卡批e7090bc9)重编入迭代46——迭代行卡列补卡C路径、编入时间换代2026-11-01、预计周期≈8.625不变;状态保持进行中(用户裁,卡A/卡B已合回34bb62a5、剩余卡C约0.5日);待办条目状态追加已编迭代46(已写卡段保留);当前位下一步换代=卡C v2.0待/iter发令回worktree iter46续工(WIP两件复用一件返工)+battle.md:144退役归文档批待发令+迭代47已编排待开工;当前位措辞避R3修订注记形态(gdd_lint);流水线闸PASS 2026-11-01 02:08:06 +08:00
DKChan e7090bc9c1 合并(写卡批): 卡C棋盘格边长口径收口批v2.0重立合回——2026-11-01用户裁锚点换代(可读性锚点=用户验收的现行渲染值,基座档14×14=28px达标;可读下限30px句与探针36px人造阈值全退役,MIN_CELL手抄常量删除);探针判据换锚=实读与单点算式_cell_for严格相等+结构钳制+13/14推定留痕;grilling独立复核四项打回全落(S13实测更正max-class-variables=31/推定死断言删除/重构类两契约条款补齐/对拍不一致归L3#2);文档域闸绿(3a8634ab);battle.md:144退役落文归文档批待发令 2026-11-01 01:53:44 +08:00
DKChan 3a8634ab92 写卡(卡C v2.0·grilling复核修正): 独立复核四项打回全落——①§3补两条重构类必填条款(禁为机检文本保留无效成员/拆分边界纪律四要件,判据权威=code-conventions §1.1);②S13数字簇实测更正max-class-variables 32→31(baseline:11),连带§1/§9L3#1升32/§13/T4四处;③删对照表行4推定est≤0死断言(clampi兜底下数学不可达,正中test-conventions§8.4多层防御禁则),推定有效性归零尺寸前置;④推定读数对拍不一致处置句=§9L3#2呈报禁实现侧改锚 2026-11-01 01:53:22 +08:00
DKChan 92e9c70a8d 合并(表批注误删恢复批·用户令): 18 张数值表批注全量恢复——10-31 清理批系对用户指令的误读(文档内容误读为代码配置文件批注),经用户令回滚;恢复源=263050ad,feats 以现行内容回插原位 11 行,逐表校验内容行与现行零变化 2026-11-01 01:42:57 +08:00
DKChan 4a2ed96182 工程(表批注误删恢复批·用户令): 18 张数值表 ; 批注全量原样恢复——10-31 表批注清理批系对用户指令的理解错误(用户「表批注相关的东西放到 git 记录」指文档内容,误读为代码配置文件批注并经错误框架的选项确认执行),经用户令全量回滚;恢复源=263050ad(删除前末版),其中 feats.tres 以现行内容(迭代46卡A换图系七件新增行)为基底回插原位 11 行批注,adventure/battle_layout 原本无批注零恢复;逐表校验=内容行与合回现行零变化、仅批注行差异 2026-11-01 01:42:22 +08:00
DKChan 33525d19de 写卡(棋盘格边长口径收口批·v2.0重立): 2026-11-01用户裁锚点换代——可读性锚点=用户验收的现行渲染值(基座档14×14=28px达标),battle.md可读下限30px句与探针36px人造阈值全部退役(MIN_CELL手抄常量删除,全仓禁第二份阈值抄本);探针判据换锚=实读cell_size与单点算式_cell_for严格相等+结构钳制[26,46]+13/14推定留痕(≤0退化判据,非阈值);v1的探针门槛36→30方向作废,WIP三件复用判定=算式单点/四档冒烟原样复用+探针件返工;§2现状重锚2026-11-01(算例表已随1cdef6ba退役/布局事实源=battle_layout.tres五字段/实测读数40/33/30/28与46顶格为锚点);同步面battle.md:144退役走反哺点通道(归文档批);零待裁点,U0开工门 2026-11-01 01:39:59 +08:00
DKChan 3499638dee merge(迭代47编排): 营地交互重做卡④营地场景图新建批+卡⑤ESC浮窗与营地顶栏批同编迭代47——整批≈14.25个工作日经用户裁授带日期特批标记;待办清单条目状态追加已编迭代47;流水线闸PASS 2026-11-01 01:18:21 +08:00
DKChan e075f92e0f 编排(迭代47·营地交互重做卡④⑤整批): 卡④营地场景图新建批(≈10.5日)+卡⑤ESC浮窗与营地顶栏批(≈3.75日)同编迭代47,执行序卡④→卡⑤,合计≈14.25个工作日超10日经用户裁整批并授带日期特批标记;待办清单「营地交互重做·五张需求卡片」条目状态追加「已编迭代47」(已写卡段与卡片路径原样保留);流水线闸PASS(迭代总表47行/卡片路径8条全在场) 2026-11-01 00:13:11 +08:00
DKChan 34bb62a55b 合并(迭代46·拆批): 卡A换图系双基座七件批+卡B站桩名字行提档与地台色合并批合回——独立验收审计通过零缺漏(对照表V1-V12与卡B六行逐行核·八套件自跑全绿·削弱全申报面);卡C棋盘格边长口径收口批经用户裁拆批退回写卡段(触发卡片L3#2停机点,停机呈报+待办缺口在案);合回后post-merge钩子自动跑CI全量域闸 2026-10-31 18:36:13 +08:00
DKChan ceb816cd39 merge(master): 车道恢复批并入(worktree铁律回归+pre-commit直改闸退役,94628fca) 2026-10-31 18:34:33 +08:00
DKChan eb5dc1e7cb iter46-收尾 2026-10-31 15:13:32 +08:00
DKChan aba54ab228 iter46-卡2:名字行提档FS_HINT14+地台色合并: 退役两常量改指BRICK/PLAZA_EDGE+golden三张0.00%留痕 2026-10-31 15:13:32 +08:00
DKChan 3fa99583fb iter46-卡1:换图系双基座七件批: 七件实装+全局damage_taken统一+BattleRefreshFlow拆件+词表扩签+数据37行——代码域闸全绿 2026-10-31 15:13:32 +08:00
543 changed files with 14638 additions and 5983 deletions

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
# mac 平台 golden 基线生成工作流(workflow_dispatch 手动触发型,2026-11-03)。
# 用途:渲染基线按平台各存——mac 基线必须在 Mac 的图形会话里窗口化渲染产出(Windows 基线不可跨平台替代)。
# 纪律(Q6):本工作流只「生成」候选基线文件(落在 runner 作业工作区,不提交不入库);
# 入库走人工通道:人工目检四张基线(体验验证清单㊾)→ 取回文件显式提交并写明触发原因。
# 禁由 CI 自动提交基线(防静默重制掩盖视觉回归)。
# 运行形态:runs-on=ci-mac(host 模式,作业活在 ci-runner 图形会话内——窗口可开、截图可用)。
name: baseline-mac
on:
workflow_dispatch:
jobs:
refresh:
runs-on: ci-mac
timeout-minutes: 30
steps:
- name: 检出(纯 shell 克隆)
env:
TOKEN: ${{ github.token }}
run: |
git clone -q "https://${TOKEN}@git.kuaimeo.com/${GITHUB_REPOSITORY}.git" "$GITHUB_WORKSPACE/repo"
cd "$GITHUB_WORKSPACE/repo" && git log --oneline -1
- name: 导入缓存刷新
run: |
cd "$GITHUB_WORKSPACE/repo"
/usr/local/bin/godot --headless --path game --editor --quit
- name: 退出判别实验(quit-after 能否解 macOS 窗口化退出挂死)
run: |
cd "$GITHUB_WORKSPACE/repo"
mkdir -p /tmp/shots_diag
/usr/local/bin/godot --path game --quit-after 3000 res://probe/board_shot_probe.tscn -- /tmp/shots_diag
echo "diag_rc=$?"
ls -la /tmp/shots_diag/ | head -8
- name: 基线生成(棋盘三图)
run: |
cd "$GITHUB_WORKSPACE/repo"
GODOT_BIN=/usr/local/bin/godot bash tools/golden_baseline_refresh.sh "$GITHUB_WORKSPACE/repo/game"
ls -la game/tests/golden/mac/ || true
- name: 基线生成(菜单全屏)
run: |
cd "$GITHUB_WORKSPACE/repo"
GODOT_BIN=/usr/local/bin/godot bash tools/golden_baseline_refresh.sh "$GITHUB_WORKSPACE/repo/game" --menu
ls -la game/tests/golden/mac/ || true
- name: 基线导出(/Users/Shared 不随作业清理,供人工取回目检)
run: |
mkdir -p /Users/Shared/baseline_out
cp -f "$GITHUB_WORKSPACE/repo/game/tests/golden/mac/"*.png /Users/Shared/baseline_out/
chmod 644 /Users/Shared/baseline_out/*
ls -la /Users/Shared/baseline_out/
+51
View File
@@ -0,0 +1,51 @@
# 远端 CI 工作流(2026-11-03 用户裁:CI 迁远端 Mac runner,host 模式直跑)。
# 触发:master 收到 push(post-merge 钩子合回自动推,或人手推 master)——分支推送不触发
# (开发分支不烧远端引擎时长;分支级验证=开发期手动跑批档)。
# 跑什么由 tools/ci/domain_route.sh 按改动域分流(乙案)——
# 游戏码批=两域全量(含渲染闸);文档批=文档域秒级闸;纯闸件/管线批=零触发。
# 运行环境:Mac host 模式(tools/ci/mac_setup.sh 自举),GODOT_BIN/GDSTYLE_BIN 由自举件安装到位。
# 检出用纯 shell 克隆:host 模式执行 JS 系动作(actions/checkout)需要 node 运行时,
# runner 机器无 node——首跑实证「Cannot find: node in PATH」即败(run 4),本仓禁用 JS 系动作,
# 引入新 Actions 前必须确认其执行器形态(shell/composite 可,node/docker 不可)。
# 闸清单与域划分唯一出处 = tools/run_all_gates.sh(本文件只负责触发与分流,不另列闸件)。
name: ci
on:
push:
branches: [master]
jobs:
gates:
runs-on: ci-mac
timeout-minutes: 90
steps:
- name: 检出(纯 shell 克隆)
env:
TOKEN: ${{ github.token }}
run: |
git clone -q "https://${TOKEN}@git.kuaimeo.com/${GITHUB_REPOSITORY}.git" "$GITHUB_WORKSPACE/repo"
cd "$GITHUB_WORKSPACE/repo"
git log --oneline -1
- name: 域分流(乙案)
id: route
run: |
cd "$GITHUB_WORKSPACE/repo"
bash tools/ci/domain_route.sh "${{ github.event.before }}" "${{ github.sha }}"
- name: 导入缓存刷新(闸前置——.godot 不入 git,冷检出一付)
if: steps.route.outputs.mode != 'skip'
run: |
cd "$GITHUB_WORKSPACE/repo"
/usr/local/bin/godot --headless --path game --editor --quit
- name: 跑闸
if: steps.route.outputs.mode != 'skip'
env:
GODOT_BIN: /usr/local/bin/godot
GDSTYLE_BIN: /usr/local/bin/gdstyle
run: |
cd "$GITHUB_WORKSPACE/repo"
MODE="${{ steps.route.outputs.mode }}"
if [ "$MODE" = "full" ]; then ARGS=""; else ARGS="--docs"; fi
echo "[ci] 域=$MODE 跑闸参数=$ARGS"
bash tools/run_all_gates.sh $ARGS
+3 -4
View File
@@ -53,10 +53,9 @@ archive/
# === 在途图像素材(2026-10-02 用户裁:artwork/ 整目录不入库,取消 md 例外——此前文本指引入库留痕的口子关闭)===
artwork/
# === 游戏包美术素材(2026-09-29 裁定维持:素材不入 git,运行时资源本地生成不入库)===
game/assets/art/**
!game/assets/art/**/*.md
!game/assets/art/**/
# === 游戏包美术素材(2026-11-03 用户裁:素材回 git,推翻 2026-09-29 不入库裁定——
# 仓库自包含原则:远端 CI 与任何新克隆必须拉到完整可跑素材)===
!game/assets/art/**/*.import
# === 模拟数据缓存层(2026-10-03 用户裁:sim-data/ 数据件不入库——最新 MC 锚常驻留盘作分析缓存,无数值调整不重跑;同日二裁:README+分析工具三件留库,其余留盘)===
sim-data/*
+23 -13
View File
@@ -16,7 +16,7 @@
## 运行与验证(工作目录 = 含 project.godot 的切片目录)
- **合回验证 = 本地 CI(2026-10-30 用户裁)**:git merge 合回 master 落地后,post-merge 钩子(`tools/hooks/post-merge`)后台触发 `tools/ci_runner.sh` 跑一次全量域闸(调 `tools/run_all_gates.sh` 不带参数档,02 全套件),结果落 `game/tests/.gates/ci-status.json`(commit/绿红/红闸名单+关键日志行/耗时)+`ci-history.jsonl` 流水账;CI 红态下每个修复提交经 post-commit 钩子(`tools/hooks/post-commit`)自动追绿复验,绿态与无状态零触发——批内提交零钩子检查、合回只验一次,同一份字节禁止第二次人手跑。CI 红不回滚合并,红项在案、修复提交追绿;开工先读 CI 状态,红未修不开新批。跑批起手自动 `--editor --quit` 刷类名缓存(.godot 缓存不入 git,防合并后失配假红)。`tools/run_all_gates.sh` 仍是全部验证闸的**唯一入口与唯一清单,域划分与选闸算法只写在它这一个地方**,闸件增减与分域调整都只改它,文档禁另列清单;`--code`/`--docs`/`--quick` 手动档只服务开发期按域跑批(开发期窄测纪律见 process-conventions §6),不构成验收;全量回归由用户自发发起
- **合回验证 = 远端 CI(2026-11-03 用户裁,取代 2026-10-30 本地 CI)**:git merge 合回 master 落地后,post-merge 钩子(`tools/hooks/post-merge`)自动 `git push origin master` 触发远端 CI(Gitea Actions,runner=Mac 本机 host 模式,环境自举件=`tools/ci/mac_setup.sh`),工作流(`.gitea/workflows/ci.yml`)按改动域分流(分流算法单点=`tools/ci/domain_route.sh`):游戏码批=两域全量含渲染闸,文档批=文档域秒级闸,纯闸件/管线批=零触发。回执由 `tools/ci_watch.sh remote` 轮询 Gitea API 写回 `game/tests/.gates/ci-status.json`(合同不变:commit/绿红/红闸(job 级)+job 日志链接/耗时)+`ci-history.jsonl` 流水账;**回执等待一律后台(2026-11-02 用户裁)**:合回落地先向用户呈报本批总结,随即 run_in_background 运行 `tools/ci_watch.sh remote <合并提交>`,禁前台 sleep/轮询等 CI(细则=process-conventions §1 第 3 条)。CI 红态不回滚合并——红项在案、修复批合回即再推再验追绿;开工先读 CI 状态,红未修不开新批。同一份字节禁止第二次人手跑。`tools/run_all_gates.sh` 仍是全部验证闸的**唯一入口与唯一清单,域划分与选闸算法只写在它这一个地方**,文档禁另列清单;`--code`/`--docs`/`--quick` 手动档只服务开发期按域跑批(开发期窄测纪律见 process-conventions §6),不构成验收;全量回归由用户自发发起。**runner 依赖**:Mac 需开机在线(关机=远端任务排队延后);换机/重装按 `tools/ci/mac_setup.sh` 自举
- 单件直跑(调试期最窄确认用,**不构成验收**):冒烟测试 `python tools/run_smoke.py`(`game/tests/smoke_boot.tscn` 极小启动场景)· 系统测试 `python tools/run_system_test.py`(宿主 `game/tests/system_test.gd`)· 场景探针 `…console.exe --headless --path . res://probe/ui_probe.tscn` · 单元与集成 `… --script res://tests/run_all.gd`
- 调参批量:`--script res://sim/adventure_monte_carlo.gd`(全冒险期望)· `res://sim/reward_expectation.gd`(奖励期望);关卡完成率/难度类测量一律走全冒险
- 数值验证:`python tools/balance_verifier.py`(采集端 `res://sim/verifier_batch.gd`,报告与原始数据落 `sim-data/`)
@@ -40,7 +40,7 @@
| 时机 | 权威文档 |
|---|---|
| 批次开工 / 流程纪律 | `design/engineering/process-conventions.md`——车道铁律(一切改动走独立 worktree,主区只作合并落点)、合回后本地 CI、五段流水线、批次清单、测试两入口与 MC/闸机细则、像素纪律 |
| 批次开工 / 流程纪律 | `design/engineering/process-conventions.md`——车道铁律(一切改动走独立 worktree,主区只作合并落点)、合回后远端 CI、五段流水线、批次清单、测试两入口与 MC/闸机细则、像素纪律 |
| 流水线段入口 | 技能对照——doc-design=文档设计(兼任反哺点落文)/asset-ingest=美术录入/req-card=写卡/iter-plan=迭代编排/iter=实现(五者均装于项目 `.zcode/skills/`);登记不立技能;批后收尾与中间文档退役=batch-closure(同一目录);格式与状态机权威=`design/engineering/doc-conventions.md` §12 |
| 定代码方案 / 写代码 / 改代码前 | `design/engineering/code-conventions.md`——结构/契约/语言/数值/流程五类硬纪律(反例库 = 同目录 code-conventions-cases.md) |
| 定测试方案 / 写测试 / 改测试前 | `design/engineering/test-conventions.md`——探针标配 / 回归断言 / 提交前验证 / 验收清单落码 |
@@ -53,28 +53,38 @@
## 回答风格规则(只管对话输出;文档写作归 doc-conventions §2–§4)
### 三条核心原则(按优先级)
### 四条核心原则(按优先级)
1. 不自造黑话、不自创词语。项目文档已立名与行业通用词=已有词;其余必须引入时当场一句白话定义(三形态表与判据见 doc-conventions 第 4 节)。为省字压出的新短语按造词处理,宁可多两字用现成说法。
2. 简洁。同一意思只说一遍;能用一句不说两句。硬约束、数字、前提条件不参与压缩;信息完整与简洁冲突时保信息。
3. 介绍一个物体、一个概念、一个问题,多角度讲清楚;每角度信息点 ≤3 个,禁止违背第 2 条。
1. **用词封闭**:对话里可用的词=日常汉语+用户先用过的+当场展开过的。展开=先完整描述再给短说法,描述交代三样:指什么对象、怎么运作、带来什么后果。短说法只认两个来源:用户用过的直接跟用;自己提议的必须等用户回话里用过一次才成立。项目文档定过名的词不豁免,对话里首次出现照样先展开。同物同名:同一东西从头到尾一个叫法,不换词;一个词不指两个东西。起名的固定顺序=先描述、再命名、后沿用,禁止颠倒。
2. **判断挂依据**:判断=「X 是/不是/造成了/应该」类陈述;每个判断后面必须跟依据。依据只认三种:仓库文件+行号或逐字引用(给行号就必须真读过那几行);本对话的消息号或原话;外部链接。三种都拿不出的判断必须当场标「这是推测」;说不出依据就答「不知道/没查过」,禁止编造。答复形状=结论行→依据清单→细节。
3. **简洁**:同一意思只说一遍;能用一句不说两句。硬约束、数字、前提条件不参与压缩;信息完整与简洁冲突时保信息。
4. **多角度**:介绍一个物体、一个概念、一个问题,多角度讲清楚;每角度信息点 ≤3 个,禁止违背第 3 条。
### 简洁细则
- 禁换说法重复:同一判断换个措辞再说一遍 = 违规。
- 禁换说法重复:同一判断换个措辞再说一遍=违规。依据与展开不算重复——依据是支撑判断的材料,展开是第一次给出来历,都是新信息。
- 禁铺垫、过渡句、客套话、总结句。认领责任的一句(如「是我的失误」)不算客套;所禁是铺垫与重复道歉。
- 禁填充句式:其实/说白了/本质上来说——直接给结论。
- 短句为主,一行一个意思;装不下拆成短句,不算啰嗦。
- 短句为主,一行一个意思;一句只说一件事。装不下拆成短句,不算啰嗦。
- 答完即止。所禁是无新信息的客套邀约;回答含待用户决断的分叉或待授权动作时,末尾一句决策请求不受限。
### 多角度细则
- 触发:解释概念、评估方案、回答「X 好不好」。事实型问题判据=答案能否一句装下:装得下一句直答;装不下按格式优先级上清单,不算硬凑角度。
- 评估与呈报类第一行=结论行:判断+一句主理由;角度列表随后。
- 评估与呈报类第一行=结论行:判断+一句主理由;结论行之后必须紧跟依据清单(核心原则第 2 条),依据不齐不出结论;角度列表随后。
- 角度池(示例集非封闭集,按问题选 2~5 个;机制与流程题可自造稳定轴命名):现状(现在是什么、缺什么)· 本质(是什么、解决什么)· 代价(要什么前提)· 边界(何时不成立)· 对比(与替代方案差异)· 风险(最常见失败方式)。
- 每个角度 = 关键词 + 一个判断 + 至多一句理由。
- 每个角度=关键词+一个判断+至多一句理由;角度里的判断按核心原则第 2 条挂依据。
- 角度之间用编号,不用「另外、此外、同时」串联。
### 交出前自检
长答复(三段以上或含多个判断)交出前过一遍清单:一、每个判断都挂依据了吗?二、每个非日常汉语的词都先展开了吗?三、有没有只有自己知道来路的内容?哪项不过改哪项,改完再交。自检不产出一节文字,产出是改过的答复本身;用户质疑时必须能复述自检过程。
### 重讲与改写工具
- 把一个主题讲成零基础图解:/eli5。
- 简明技术中文(STC)技能:限定用词与句式的中文写法规范,含词表与检查脚本;写或改写中文技术说明、把回答改写得更清楚时调用(/simplified-technical-chinese)。核心原则第 1 条是它的对话面最小集。
### 格式优先级
能画图的内容一律画图说明,图是第一优先载体;枚举用列表,二维对照用表格;散文是最后手段。
@@ -93,11 +103,11 @@
## 硬性红线(勿违反;操作细则在 process-conventions.md 与各规约)
- 车道铁律(2026-10-31 用户裁恢复)——主工作区只作合并落点,一切开发/设计改动走独立 worktree:`git worktree add ../g-plan2-<任务名> -b <任务分支>`(建区即跑 `tools/setup_worktree_userdir.sh`),收口=冻结→件核→并 master→重塑→主区 `git merge --no-ff`→CI 全量绿→删区,CI 红回任务 worktree 修复合回;主区唯一合法写动作=合并,agent 侧由 worktree-guard 拦主区 Edit/Write 与非 merge 提交;豁免面仅 `.zcode/`、`.qoder/`(不入 git,主区直改);commit 点零钩子检查(pre-commit 直改闸已退役),全量验证归合回后本地 CI(`tools/hooks/post-merge` 触发,见「运行与验证」首条);`--no-verify` 仅属用户,agent 禁用(细则见 process-conventions §1)
- 车道铁律(2026-10-31 用户裁恢复)——主工作区只作合并落点,一切开发/设计改动走独立 worktree:`git worktree add ../g-plan2-<任务名> -b <任务分支>`(建区即跑 `tools/setup_worktree_userdir.sh`),收口=冻结→件核→并 master→重塑→主区 `git merge --no-ff`→删区(合回即删,2026-09-19 原裁),CI 红不回滚合并——新开修复 worktree(`fix-<任务名>` 分支,免重塑免数卡)修复合回追绿;主区唯一合法写动作=合并,agent 侧由 worktree-guard 拦主区 Edit/Write 与非 merge 提交;豁免面仅 `.zcode/`、`.qoder/`(不入 git,主区直改);commit 点零钩子检查(pre-commit 直改闸已退役),全量验证归合回后远端 CI(post-merge 钩子推送触发,见「运行与验证」首条);`--no-verify` 仅属用户,agent 禁用(细则见 process-conventions §1)
- **仓库根禁止设会话状态文件**(`active.md` 已废除)——现状看 roadmap「当前位」,待办看待办清单,过程看 git 提交信息,产出物看 `reports/`;任何文档禁止另设「当前状态快照」节,两处记同一件事必然漂移(细则见 doc-conventions 第 10 节)
- 测试执行两入口铁规——只有迭代 loop 开发与用户点名两个触发入口;其余会话零测试,需测试支撑先请示并注明未跑测
- 合回后验证 = 本地 CI 全量域闸全绿(唯一强制验证点;唯一入口、唯一闸清单、唯一域划分与选闸算法仍只在 `tools/run_all_gates.sh`,禁在文档另列;触发与追绿语义见「运行与验证」首条与 process-conventions §1)。开发期手动跑批按需选档(`--code` 关联档选测——02 跑「卡片申报 ∪ diff 推导」并集套件、三件保险恒跑、横切面回落全量——算法只在闸脚本内定义),手动跑不构成验收;全量回归由用户自发发起。文档面批与代码面批验收同走合回 CI 全量(`--docs` 仅属开发期手动档,process-conventions §1)
- **改动四类**——**需求改动**(游戏代码,含随逻辑写/改的测试代码):唯一走「写需求卡片+编入迭代批次」通道;迭代实现批禁写 `design/` 整个目录、两份根流程清单(`待办清单.md`/`体验验证清单.md`)与 `game/tests/README.md`(能力清单,归写卡段维护)(含新增/修改/删除),设计文档对它只读、是写测试与实现代码的输入依据;两份流程清单的条目状态只由流水线各段推进,实现批禁止顺手改;产出物只准写 `reports/`;合回后由本地 CI 全量验证(红项修复提交追绿,process-conventions §1)。**工程改动**(tools/、闸件、模拟测量工具、纯测试维护——不改变游戏行为的配套代码)、**文档设计改动**、**美术素材改动**:不写需求卡片、不编迭代批次,由用户发令走独立 worktree 直改+合回(车道铁律,commit 点零钩子检查);大体量改动(含触及代码面的工程改动如纯测试维护)同车道无特殊通道;文档设计类写入走 doc-design 技能(登记条目格式由流水线闸强制)
- 合回后验证 = 远端 CI 闸全绿(唯一强制验证点;唯一入口、唯一闸清单、唯一域划分与选闸算法仍只在 `tools/run_all_gates.sh`,禁在文档另列;触发与追绿语义见「运行与验证」首条与 process-conventions §1)。开发期手动跑批按需选档(`--code` 关联档选测——02 跑「卡片申报 ∪ diff 推导」并集套件、三件保险恒跑、横切面回落全量——算法只在闸脚本内定义),手动跑不构成验收;全量回归由用户自发发起。远端按改动域分流:文档面批走文档域秒级闸,代码面批走两域全量(分流算法单点=`tools/ci/domain_route.sh`)
- **改动四类**——**需求改动**(游戏代码,含随逻辑写/改的测试代码):唯一走「写需求卡片+编入迭代批次」通道;迭代实现批禁写 `design/` 整个目录、两份根流程清单(`待办清单.md`/`体验验证清单.md`)与 `game/tests/README.md`(能力清单,归写卡段维护)(含新增/修改/删除),设计文档对它只读、是写测试与实现代码的输入依据;两份流程清单的条目状态只由流水线各段推进,实现批禁止顺手改;产出物只准写 `reports/`;合回后由远端 CI 验证(红项修复合回追绿,process-conventions §1)。**工程改动**(tools/、闸件、模拟测量工具、纯测试维护——不改变游戏行为的配套代码)、**文档设计改动**、**美术素材改动**:不写需求卡片、不编迭代批次,由用户发令走独立 worktree 直改+合回(车道铁律,commit 点零钩子检查);大体量改动(含触及代码面的工程改动如纯测试维护)同车道无特殊通道;文档设计类写入走 doc-design 技能(登记条目格式由流水线闸强制)
- 五段流水线铁律——**需求改动**(游戏代码)按「登记 → 文档设计/美术设计 → 写需求卡片 → 迭代编排 → 实现」五段推进,段间不自动流转、每段转进由用户发令;编入迭代的卡片必须设计闭合+零待裁点——需求卡片任何工作量皆可写、皆可编入迭代,工作量限制只属迭代层(迭代估时总量 <5 个工作日=「冻结待凑批」、不可开工);流水线闸 `tools/pipeline_gate.py` 强制(已注册进 run_all_gates.sh 文档域);实现段零裁断——卡片没写清=上游缺陷,停该卡退回上游,禁内联求裁(process-conventions §2,格式与状态机=doc-conventions §12)。工程/文档设计/美术素材三类改动不走写卡与编排段:(如需设计讨论)→ 用户发令 → 独立 worktree 直改 → 合回 CI(车道细则=process-conventions §1)
- MC/模拟:无数值改动零跑;档位硬闸见 `sim-data/README.md`「MC 采集档位表」,一档只能由用户发起
- 闸机轮次纪律:新码先孤立验证 → 出红只跑红件最小单元 → 长批先最小参数试车 → 开工扫坑册(process-conventions §6)
+8 -8
View File
@@ -17,7 +17,7 @@
**通用规格纪律**:
- 交付格式 PNG 透明底;动画用序列帧或精灵表(SpriteFrames),帧数规格随样张定(候选档已成文 art-bible §8.4)。命名规范候选草案见 art-bible §8.3。
- **分辨率档位已定案:1280×800 + 1920×1080 两档**,窗口不可调、格边长按档位计算,后续调整走修订;像素画布基准见 **art-bible §8.2**(主角人设原图 48×72〔人设侧画布〕;站桩立绘/战斗状态图源高 48;棋盘小人 32×32 二头身;敌种逐键源档 36–94;整数倍缩放纪律;终值归样张冻结,待办清单已登记)。
- **分辨率档位已定案:1280×800 + 1920×1080 两档**,窗口不可调、格边长按档位计算,后续调整走修订;像素画布基准见 **art-bible §8.2**(棋盘小人 32×32 二头身独立源档;站桩立绘=原稿分辨率入包、显示按三档绝对高 96/144/188 缩放,定值单点与逐件归档见 §8.2 站桩立绘显示档条)。
- 程序化占位是现行结构冻结条款:资产未就位的槽位保持占位渲染,不空窗。
- **复用闸(♻ 渠道四道验收,一道不过不入包)**:① 色板量化——改色对齐 art-bible §4.1 token,不保留原包杂色;② 吸色检查——无 HSV 色相 300°–345°(紫赤禁入带);③ 灰度/色弱可辨——去色相后仍可辨且不与语义件混淆;④ 授权干净——CC0 优先,CC-BY 署名记入设置/关于页,license 不明的一律不用。
@@ -59,14 +59,14 @@
## 2. P1 —— 角色级(样张通过后开工,ComfyUI)
> 提示词规格卡 art-prompts.md 现行为 **v2.0**(主角三态+八敌种,逐资产自包含完整提示词,整段可直贴)。
> 提示词规格卡 art-prompts.md 现行为 **v2.14**(主角三态+八敌种逐卡提示词仍在册;站桩立绘走 §5.4 按档派生、不重画)。
### 2.1 主角战斗小人
- **要什么**:待机 / 攻击 / 受击 三态起步(移动态样张后定);透明底 PNG。
- **风格/规格**:小人原型——**窄、直立、对称,轮廓凹凸 ≤2**;2~3 头身两档下剪影均成立;主色小人蓝 `#2E86DE`(候选值,样张冻结终稿);格内占位最窄、不吞数字位。
- **来源**:✦ ComfyUI(prompt 卡 v2.0 §2);剪影原型是设计载荷(宽≥高/凹凸计数/甲档/紫赤独占),素材站无对的,不复用。
- **现状**:站姿样张已有先例(源文件已清理);战斗三态未出。
- **现状**:战斗三态在役(迭代 6 T3 落位);2026-11-01 显示档改中档 144;2026-11-02 迭代 48 落位:三态原稿分辨率入包、显示按档缩放。
### 2.2 八敌种形象(键集事实源 = `data/tables/enemy.tres` 行键)
@@ -81,7 +81,7 @@
| 钩爪恐魔 hook_horror | 普通怪(钩爪/多足轮廓注意凹凸计数控制) | light | 第三关群行捕食者,小体量可辨 |
| 灰矮人石君王 duergar_king | **Boss:锐角与不对称**,体量最大 | heavy | 第三关 Boss;紫赤色相独占+形状独占双通道 |
- **通用规格**:亮色描边+落影底盘轮廓通道硬规则;透明底 PNG;每敌种 2–3 版候选;护甲类型视觉区分方案已落 art-bible §5.3(已定稿)。
- **通用规格**:亮色描边+落影底盘轮廓通道硬规则;透明底 PNG;显示档三档绝对高 96/144/188、源=原稿不降采样(art-bible §8.2 v3.32);护甲类型视觉区分方案已落 art-bible §5.3(已定稿)。
- **来源**:✦ ComfyUI(prompt 卡 v2.0 §3,八敌种+L2 熊地精变体共 9 卡);理由同 §2.1——不复用。
- **联动**:显示名以 `data/tables/enemy.tres` 与敌人系统文档为准(L2 熊地精=bugbear 复用,显示名熊地精系)。
@@ -132,8 +132,8 @@
- **要什么**:营地场景图 10 张——`scene_camp_bg`(背景层,不透明全幅=天空+远山+整片地面+门洞内一条通向远处的小路)+ `scene_camp_wall`(围墙层,透明底=横贯全宽密排木桩墙+两根门柱,门洞留透明缺口)+ `scene_camp_gate / forge / chest / notebook / dummy / board / campfire`(七个可点物件)+ `scene_camp_tent`(承载件)。钥石顶栏图标沿用现役 `icon_keystone`。
- **来源/规格**:**✦ 插画级**(作者自跑远程生图管线);烛光黄 `#F6C667` + 木色 `#8A5A34`(art-bible §6.2);2× 源档出图、最近邻降采样到 1280×800;后处理=抠底/降采样/色板量化/描边统一。**出图登记照 [remote-gen-prompts](remote-gen-prompts.md) 头注轻量口径执行:用途+生成时间必注,其余参数有则记。**
- **排期**:营地交互重做**美术自立批**(不占迭代位;UI 贴图重构批已搁置)。终稿落 `game/assets/art/scene/`,消费常量 `UiKit.TEX_CAMP_*`。
- **现状**:全占位。
- **排期**:已执行(随迭代 47 卡④,2026-11-01 合回)。终稿落 `game/assets/art/scene/`,消费常量 `UiKit.TEX_CAMP_*`。
- **现状**:已入包(2026-11-01 迭代 47 卡④——十件按锁定矩形 contain 落位、营地主色板 32 色重量化;用户游戏内终审如有置换意见,按同径替换)。
### 3.6 字体(全局 UI 像素字,已定稿单套)
@@ -162,7 +162,7 @@
| 站桩石板地台件 `scene_stage_plaza.png` | 近景地台独立件(art-bible §6.1/§8.2) | 源 48×12、九宫格横向拉伸、顶缘受光线 2px 不随拉伸变形;跨三关恒定,不吃 `wall_ambient` tint;连续地面层在其下方,先保留 | ⚙/✦ 自产 |
| 特殊技动画终稿 | 并入 §2.3 三档意图动画,不另起体系 | 攻/防两型旧口径由三档替代 | ✦/⚙ 自产(同 §2.3) |
| 连锁坍塌显形演出 | 连锁展开触发时的连锁演出 | 与音频方向同批配对登记;「坍塌显形」=连锁展开的玩家可见名 | ♻ 粒子/碎块改色 + ⚙ 坍塌结构自产 |
| 封印特效 | 该动作的呈现名 = **封印**(art-bible §3.2):**施印瞬间特效 + 印记常显形态**两件 | 印记旗面走封印黑 `#000000`(现行封印色,色史归 art-bible §4.1);特效走运动+色相(§2:状态/情绪不走明度,空间光照可走);现行占位 = 封印黑「旗」字形;印记常显形态可与 §3.3 旗面像素化合并出 | ✦/⚙ 自产(精灵+粒子,烟尘光点可 ♻ 改色) |
| 封印特效 | 该动作的呈现名 = **封印**(art-bible §3.2):**施印瞬间特效 + 印记常显形态**两件 | 印记旗面走封印黑 `#000000`(现行封印色,色史归 art-bible §4.1);特效走运动+色相(现行取法——明度分层不动);现行占位 = 封印黑「旗」字形;印记常显形态可与 §3.3 旗面像素化合并出 | ✦/⚙ 自产(精灵+粒子,烟尘光点可 ♻ 改色) |
| 弹道/退场等动画密度 | 战斗表现输入清单,方案未定 | 样张锁动画方案后启动 | ♻ 通用弹道/光点/消散粒子改色为主 |
**现状**:三关舞台背景层与连续地面层已交付(2026-10-31 入包 `game/assets/art/scene/`:dungeon v10c / underdark v10c / deep_underdark v10c,均 1280×252;共用地面 v12b,1280×100,按作者裁保留原亮度 L≈0.132);小石台件已在役。
@@ -187,7 +187,7 @@
└─> 敌种呈现形态裁决 ✅已完成(全站桩,卡片式已弃)
徽章(3.1)/节点图(3.2)/效果图标(3.4) —— 独立线,可随时插队
♻ 复用件(3.2/3.4/3.5/3.6/演出粒子) —— 不依赖样张,可随时插队(入包闸 = §0 复用四道)
字体(3.6)接入归表现批;营地场景图(3.5)归营地交互重做美术自立批
字体(3.6)接入归表现批;营地场景图(3.5)已随迭代 47 卡④ 入包(2026-11-01)
分辨率档位 ✅已定案(1280×800 + 1920×1080,2026-09-22 用户确认);art-bible §8 资产规范 ✅已成文(2026-09-23)——像素基准/画布/命名/帧数候选值就位,终值归样张批冻结
```
+23 -22
View File
@@ -1,6 +1,6 @@
# 美术圣经(Art Bible)— Dungeon Sweeper
> 项目:Dungeon Sweeper(扫雷 × 自动战斗 闯关 Roguelike)· 状态:**第 1–9 节定稿**;现行为 v3.30,历次修订明细见 git 提交史
> 项目:Dungeon Sweeper(扫雷 × 自动战斗 闯关 Roguelike)· 状态:**第 1–9 节定稿**;现行为 v3.37,历次修订明细见 git 提交史
>
> **Art Director Sign-Off(AD-ART-BIBLE)**:历次批均未签核——此为 Lean/Solo 模式(非 PHASE-GATE)下的现行治理状态;full 门禁签核时机待用户表态。
> 风格基调:地牢题材但**非暗黑风**——轻快明亮的幻想冒险风,全年龄;像素风;角色 2~3 头身。
@@ -30,7 +30,7 @@
**原则二|明亮为皮,明度分档为骨**(取自 Moonlighter、Peglin;锚定 P1 可读性前提、P4 探险氛围)
取 Moonlighter 的暖质地砖与亲和冒险者气质、Peglin 的明快全年龄洞穴色彩:全局暖倾向、无压抑。可读性由**格底明度分档**承载——已开格(数字所在格)明度走世界底层档(§2 明度分层;格态语义见《排雷玩法》;美术侧据此未开格走受光墙顶档、已开格走挖出空间沉暗档,与 §8.5 图底分离同轴),亮族数字墨直接画在格底上,直画对比 ≥4.5:1 恒成立。**数字色牌为后备手段**——仅复杂格底(物件纹样/变异纹带/微光叠加致格底对比不足)时垫牌后备(画法 §3.3、色值 §4.1)。格子本体美术放开:纹理、材质、装饰变体、类型纹样皆可入画;格底参数域见 §4.1 硬指标(分档明度域、饱和上限),仍避 Boss 禁入色相带。与参考之别:ITB 以半透明压暗板承载信息;本作格底功能分档(信息可读性服务,属 §2 明度分层允许域),情绪压暗仍禁。验收:机检〈1–8 全档数字对所在已开格底对比 ≥4.5:1〉
取 Moonlighter 的暖质地砖与亲和冒险者气质、Peglin 的明快全年龄洞穴色彩:全局暖倾向、无压抑。可读性由**格底明度分档**承载——已开格(数字所在格)明度走世界底层档(§2 明度分层;格态语义见《排雷玩法》;美术侧据此未开格走受光墙顶档、已开格走挖出空间沉暗档,与 §8.5 图底分离同轴),亮族数字墨直接画在格底上,直画对比 ≥4.5:1 恒成立。**数字色牌为后备手段**——仅复杂格底(物件纹样/变异纹带/微光叠加致格底对比不足)时垫牌后备(画法 §3.3、色值 §4.1)。格子本体美术放开:纹理、材质、装饰变体、类型纹样皆可入画;格底参数域见 §4.1 硬指标(分档明度域、饱和上限),仍避 Boss 禁入色相带。与参考之别:ITB 以半透明压暗板承载信息;本作格底功能分档(信息可读性服务)。验收:机检〈1–8 全档数字对所在已开格底对比 ≥4.5:1〉
*设计测试:当格子美术与数字可读性冲突时,先调格底明度档,复杂格底垫色牌后备,不动格子画。*
@@ -69,7 +69,7 @@
> 本节服从第 1 节宣言「明快的地牢,轻快的扫荡,仔细的推理」。能量值为全作统一 0–10 刻度:0 静谧,10 沸腾。
>
> **明度分层(硬规则)**:明度按视觉层分带——**信息面层**(数字/UI 数据/预告/语义标识)最高、**世界中层**(格底顶面/角色/物件)居中、**世界底层**(背景/纵深/远景/已开空间)可更低;层间明度差服务空间纵深与光照(Moonlighter 式洞穴层次)。**情绪明暗禁令**:明度变化禁止用于**情绪表达**——画面禁止靠压暗/渐晕阴沉下来;roguelike 失败重开,世界无光暗记忆;Darkest Dungeon 式压暗仍在 §9.2 反面清单。**状态表达不受本禁令约束**:状态可用明度、色相、饱和、运动、元素任一手段承载。**允许域**:空间纵深、光照氛围、形体塑造。类型微光的明度梯度(§4.2)属信息面层内梯度,不扰世界层明度档。验收:目检〈情绪表达不走压暗/渐晕;三档明度带层间灰度可分〉
> **明度分层(硬规则)**:明度按视觉层分带——**信息面层**(数字/UI 数据/预告/语义标识)最高、**世界中层**(格底顶面/角色/物件)居中、**世界底层**(背景/纵深/远景/已开空间)可更低;层间明度差服务空间纵深与光照(Moonlighter 式洞穴层次)。类型微光的明度梯度(§4.2)属信息面层内梯度,不扰世界层明度档。验收:目检〈三档明度带层间灰度可分〉
>
> **世界底层两子带**:世界底层拆两条子带——**底层下沿带 L 0.014–0.06**(远景、洞窟纵深、B 区舞台底、屏幕根底)与**底层上沿带 L 0.08–0.14**(已开格底、迷雾记忆态合成底),子带间隔 ≥0.02。拆两子带用于解决**世界底层内部** B 区舞台底(L=0.036)与 D 区已开格底(L≈0.10)同层难辨的问题——两者同属世界底层,单带下跨度 0.126 吃掉层间间隔 0.08,灰度图上会表现为两个不同的底。§1.4 整屏②项约束的是层间可分(底层上沿 0.14 对世界中层下沿 0.22,差 0.08 本就满足),②项不约束同层内可分,故本条不属②项的成立要件,而是世界底层内部的可读性纪律。验收:机检〈同一屏的世界底层成员全部落进两条子带之一,两子带 L 区间不重叠且间隔 ≥0.02〉
@@ -84,15 +84,15 @@
### 2.2 轮末自动战斗结算
- **主情绪**:延迟兑现的清算爽感——扫雷之因逐行兑现为战果;完美封印(概念定义与兑付结构见《地图战斗资源》)的高光兑现——结算带高光行,以其为全场喝彩级的最高反馈档
- **色彩性格**:情绪不走明度(§2 禁令),色彩转向金橙主导、饱和拉高;数字色转译为弹道色沿行推进
- **色彩性格**:情绪由色相与饱和承载——金橙主导、饱和拉高,明度分层不动;数字色转译为弹道色沿行推进
- **氛围形容词**:酣畅、递进、一气呵成
- **能量**:7/10,随连击爬升
- **承载元素**:兑现光带逐行横扫棋盘,开格化箭雨、印记化暴击砸向敌人,因果全程可见可归因。验收:目检〈兑现光带逐行横扫、因果可见可归因;情绪表达不走压暗〉
- **承载元素**:兑现光带逐行横扫棋盘,开格化箭雨、印记化暴击砸向敌人,因果全程可见可归因。验收:目检〈兑现光带逐行横扫、因果可见可归因〉
### 2.3 清图奖励与换图
- **主情绪**:短促丰收——宝箱揭盖式的喜悦,三五秒即收,不拖节奏
- **色彩性格**:全屏饱和峰值:金粒喷泉与彩纸迸发,饱和瞬时拉满后回落;明度不动(§2 情绪禁令)
- **色彩性格**:全屏饱和峰值:金粒喷泉与彩纸迸发,饱和瞬时拉满后回落;明度分层不动
- **氛围形容词**:丰收、轻快、干脆
- **能量**:8/10,尖峰后速降
- **承载元素**:最后一格碎砖中喷出的 GP 喷泉,叮当落入 UI 钱袋。验收:目检〈金粒喷泉短促收敛,饱和峰值后回落〉
@@ -108,7 +108,7 @@
### 2.5 战斗失败(冒险终结)
- **主情绪**:温柔的惋惜与「再来一次」的邀请——有分量、不惩罚,像合上一册冒险日志
- **色彩性格**:情绪不走明度(§2 禁令),色相转暖灰掺暮蓝;全作禁血红与黑场,唯此一拍最静
- **色彩性格**:情绪由色相承载——色相转暖灰掺暮蓝,明度分层不动;全作禁血红与黑场,唯此一拍最静
- **氛围形容词**:惋惜、安静、余温、可再来
- **能量**:1/10
- **承载元素**:小人坐在碎砖上摇头掸灰,落下的封印印记逐枚化作光点收回行囊。验收:目检〈无血红与黑场;色相转暖灰掺暮蓝〉
@@ -159,7 +159,7 @@
### 3.2 环境几何
- **雷图棋盘呈现基准**:战棋地块质感 × 正俯视角——取 ITB 参考图(`references/itb_1.jpg`)的地表质感骨架:地块纹理多样、起伏体块感、岛缘/砖缘厚度、格上装饰小立牌;但相机一律正上方垂直向下,格线屏轴对齐,**禁等距/斜视角与菱形格**;形状语言仍守总纲圆角方形。砖缘厚度与岛缘立体面属形体塑造,不属状态/情绪表达,不受 §2 情绪明暗禁令约束(属 §2 明度分层允许域;顶面格底仍守 §4.1 参数域)。装饰小立牌属 ITB 参考的观感元素,本作不采用;装饰变体走氛围层纪律(纹理级/物件级形状家族,见下方装饰变体条),零信息纪律以原则三为准。验收:目检〈棋盘正俯视、格线屏轴对齐、无菱形格〉 ←原二;原三;§2
- **雷图棋盘呈现基准**:战棋地块质感 × 正俯视角——取 ITB 参考图(`references/itb_1.jpg`)的地表质感骨架:地块纹理多样、起伏体块感、岛缘/砖缘厚度、格上装饰小立牌;但相机一律正上方垂直向下,格线屏轴对齐,**禁等距/斜视角与菱形格**;形状语言仍守总纲圆角方形。砖缘厚度与岛缘立体面属形体塑造(顶面格底仍守 §4.1 参数域)。装饰小立牌属 ITB 参考的观感元素,本作不采用;装饰变体走氛围层纪律(纹理级/物件级形状家族,见下方装饰变体条),零信息纪律以原则三为准。验收:目检〈棋盘正俯视、格线屏轴对齐、无菱形格〉 ←原二;原三;§2
- **地砖**:一切环境体由同一圆角方形衍生:未开 = 完整凸砖,已开 = 同形缺角碎裂,雷 = 碎裂加巢穴纹(危险格玩家说法见《排雷玩法》);只以"完整度"叙事,不为状态新造形。验收:目检〈三格态仅以完整度区分,无新造状态形〉 ←原三;P4
- **装饰变体(未开格氛围层)**:覆尘完整砖之上叠加裂纹/碎石斑/物件级点缀等装饰。物件级装饰(小石块/陶片/骨殖等)须走**专属装饰形状家族**(与信息元素形状语言隔离、灰度下不与任何逻辑元素同形),数量配额按图类型定(候选 3–5 种,样张已冻结,§1.4),一律残缺、内凹、低对比而自然后退(§3.4);零信息纪律(分布随机、与雷/安/类型零相关、灰度下禁止制造新分类特征、分布每板一次跨轮不复掷)以原则三为准,此处不赘。验收:目检〈物件级装饰不与任何逻辑元素同形;装饰残缺低对比后退〉 ←原三
- **结果整格表达(已开格)**:已开格按当格结果整格表达(结果清单见原则三);画法——产资源格的家族物件纹样用 §3.1 道具点剪影语言(直线几何体)角嵌于砖缘,砖心与数字字形占位区留白(已开格仍承载数字);危险格巢穴纹较已开格更凶一档,形状+颜色双通道。验收:目检〈产资源格嵌家族纹样且砖心留白;巢穴纹更凶一档〉 ←原三;P3
@@ -172,7 +172,7 @@
- **高墙瓦片体系|光照纪律(单一北受光)**:北缘 = 墨线内侧 1px 微亮棱(就地取色提亮,禁宽亮带);西/东缘 = 墨线后直进纹理、不加修饰;南缘 = 墨线 + 立面窄暗条(约 1/3 格高,横层理叠石、禁竖条纹栅栏感)。验收:目检〈北缘亮棱、南缘窄暗条;无宽亮带、无竖条纹栅栏感〉
- **高墙瓦片体系|凹角收头**:角点单像素落线;南立面侧凹角加 1px 立面收头——带身与转角竖线同列收尾,禁悬空、禁突出。验收:目检〈凹角收头与转角竖线同列,无悬空突出〉
- **高墙瓦片体系|现行定稿**:`game/assets/art/board/terrain_*`(16 唯一墙瓦片 + 5 地面瓦片变体;词表与查表逻辑落码于 `board_world.gd`)。验收:机检〈terrain_* 素材 16 墙瓦片 + 5 地面变体在库,查表逻辑与词表一致〉
- **高墙瓦片体系|高墙感 D 投影档与整板悬崖**:南临空墙格 = 立面口沿高光 2px `Color8(196,172,132)` + 双段暗带(0.16/0.25 格边,黑罩 α0.60/0.82);北邻墙地面格 = 三段渐隐投影(顶带 0.22 格边,α0.28 起);整板悬崖 = 板底/右侧 `DEPTH_PX 8px` 暗面 + 列分隔竖缝 + 岩层横纹 + 口沿高光 + 接触 AO + 底线收边 + 悬浮影(游戏 `board_world.gd` 同款结构件,样张脚本与游戏渲染常量同源)。验收:目检〈南临空墙格呈口沿高光+双段暗带;北邻墙地面格呈三段渐隐投影;整板悬崖结构件齐备〉
- **高墙瓦片体系|高墙感 D 投影档与整板悬崖**:南临空墙格 = 立面口沿高光 2px `#C9AF83`(201,175,131——代码色 `BRICK`,与掩尘枚同源单点) + 双段暗带(0.16/0.25 格边,黑罩 α0.60/0.82);北邻墙地面格 = 三段渐隐投影(顶带 0.22 格边,α0.28 起);整板悬崖 = 板底/右侧 `DEPTH_PX 8px` 暗面 + 列分隔竖缝 + 岩层横纹 + 口沿高光 + 接触 AO + 底线收边 + 悬浮影(游戏 `board_world.gd` 同款结构件,样张脚本与游戏渲染常量同源)。验收:目检〈南临空墙格呈口沿高光+双段暗带;北邻墙地面格呈三段渐隐投影;整板悬崖结构件齐备〉
- **变异格形状通道**(双通道之"形",与色无关):底砖圆角外轮廓不变,砖面内缘绘一圈定宽专属几何纹带(纹带形全作不与他类共用),砖心留白予数字与旗;验收标准 = **灰度截图下仍可分类**。种类清单 = 地形变异六类型已定稿(地形变异 GDD;荆棘丛/藤蔓缠绕/岩浆/烬覆/落石/矿尘):**纹带形按轴只分两种**——伤害轴(荆棘丛/岩浆/落石)= 刺/缺排斥形,信息轴(藤蔓缠绕/烬覆/矿尘)= 遮蔽/缠绕形;同轴跨图类型只做色板变体(§4.3 `variant_tint` 槽),不做新纹形。岩浆纹带橙红须与危险红互辨(变异格不是雷,色相邻近有混淆风险);信息轴遮蔽呈现禁止侵入数字字形占位区(§1.4 验收 1 延伸)。验收:目检〈六类型纹带灰度下仍可分类,同轴不新增纹形;岩浆纹带与危险红互辨〉 ←原一(纹理位次第 4,让位于数字/小人/旗);原三
### 3.3 UI 形状语法(方向指导,细则见 §7.1)
@@ -209,10 +209,11 @@
- **图标槽柔和档 `#806A4E`(SLOT_BACKDROP_SOFT)**|BCard 图标槽底:对米色卡面 PANEL_DATA 3.69:1(深档 SLOT_BACKDROP #3E362C 8.53:1 过强、像硬贴补丁,故槽底另立柔和档),槽内白图标 5.14:1,满足 ≥3:1 图形参考线硬约束;仅 BCard 图标槽换档,B 区状态槽仍用深档 SLOT_BACKDROP。验收:机检〈槽内白图标对槽底 ≥3:1〉
- **群伤微光暗档 `#A61D37`(TG_GLOW_AOE)**|类型微光群伤组的**明度档**(UI token 板,占 1 枚额度,**余量 3→2**):色相 349° 与亮档 `#FF2D55` 零移动,明度落 V=0.65 档——即 §4.2「微光 = 色相+明度双码」里明度侧的落法;与 §4.2「红只说危险」不相撞(微光组色相刻意错开语义红,见 §4.2「类型微光色带」条)。已在役(`ui_kit.gd` 常量与 `type_glow_test.gd` 守门断言),本节为登记转正。验收:机检〈ui_kit.gd TG_GLOW_AOE 与 type_glow_test 断言的 H/S 逐位一致、V 落 0.65 档〉
- **站桩石板地台板身 `#968264`(STAND_STONE)**|战斗屏场景环境子板(分层②,不占 48 token 额度):B 区站桩地台板身与顶缘的材质色,跨三关恒定、不吃 §4.3 `wall_ambient` tint(地台是 §6.1 定死的世界中层承载面,随关卡变会破 §2 明度分层的层间关系)。转正前即在役。验收:机检〈战斗屏场景环境子板色数 ≤32 且本值在册〉
- **营地场景环境子板(分层②,不占 48 token 额度)**:营地场景十层环境色按子板制落地——各层独立量化并集 272 色经最近对合并收敛至 **32 色、违例对 0**,十层按终版色板重量化回写(2026-11-01 迭代 47 卡④)。色值不另立逐值清单,事实源=入包素材 `scene_camp_*` 十件的量化产物;换算与合并过程登记于 artwork 工作区换算式登记(git 提交 3443890d 一线可考)。验收:机检〈营地屏唯一色数判据(shot_checker 闸件承载,2026-11-01 用户裁口径)〉
- **重甲冷灰金属材质色 `#868C9A`(ARMOR_PLATE_COLD,token 名暂拟、随实装批登记)**|语义/UI token 板(**分层①**,占 1 枚额度,**余量 2→1**;用户裁):重甲档甲材质色;character-design §5.3 通道 = 甲面覆盖率 × 甲材质色,甲材质色按甲档统一,故石君王岩石板甲**同引本枚、不另计额度**;材质色跨屏恒定,落分层①不落分层②(环境色才随场景走)。过门情况:第二道门按宽松口径(禁止三通道全 <8)与在册色逐一比对,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(色相 222°,不占红/金/蓝/紫赤/绿语义段、不在 300°–345° 禁入带;材质色不进信息层与语义物件岗)。对比实测:对深素底 `#282220` 4.65:1、对舞台底 `#3E362C` 3.52:1(图形 ≥3:1 门槛);相对亮度 L≈0.261 落 §2 世界中层 0.22–0.45 带。验收:机检〈本值入板后全板色对中三通道差全部 <8/255 的对数 = 0〉
- **卓尔浅紫灰皮 `#A79CB8`(DRIDER_SKIN,token 名暂拟、随实装批登记)**|语义/UI token 板(**分层①**,占 1 枚额度,**余量 1→0,额度用尽**;用户裁):蛛化卓尔精灵上体皮色(体块主色,L≈0.355 落 §2 世界中层带)。过门情况:第二道门同上行口径,**无三通道全 <8 的对 → 过门**;§4.2 语义检查过门(色相 264°,避开 300°–345° 禁入带,紫赤独占仍归 `#8F2F6A`;不占本节五语义段)。对比实测:对深素底 `#282220` **6.04:1**、对舞台底 `#3E362C` **4.57:1**——**两处均过图形 ≥3:1 门槛**(本轮新算)。验收:机检〈本值入板后全板色对中三通道差全部 <8/255 的对数 = 0〉
- **换色合并登记五处(用户裁,部件色落值)**|按本表「不过门即触发换色合并、禁加色绕行」执行,五处**零新增额度**(各件原拟新增候选一律不取):① 主角铲刃浅铁灰(原拟 `#A8AEB8`)→ 并入 `FOG_MEMORY_INK #C4C4C4`,**部件取值 = `#C4C4C4`**;② 主角提灯铜色(原拟 `#C08A3A`)→ 并入 `GOLD_DEEP #B07A14`,**部件取值 = `#B07A14`**;③ 食人魔酋长暖褐皮(原拟 `#B08050` / `#A97C4E`)→ 并入 `暖石 #B8A582`,**部件取值 = `#B8A582`**;④ 石君王灰皮(原拟 `#9A968C` / `#949089`,按**次级皮**口径——板甲视同体块主色、灰皮属次级皮故不受 L 0.22–0.45 约束)→ 并入 `STONE #786E62`,**部件取值 = `#786E62`**;⑤ 轻甲护甲图标木色 `#8A5A34`(深素底下 2.72:1 不过门;原拟新增木色亮档 `#C49A5E`)→ 并入 `WARM_FAINT #CDB88C`,**部件取值 = `#CDB88C`**(8.08:1)。**一色两岗代价已随裁定接受**:① 的 `#C4C4C4` 语义岗 = 迷雾记忆墨(§6.5)、② 的 `#B07A14` 属金族(§4.2 金只说收益与兑现)——两者均作角色随身件材质色用,不进信息层与语义物件岗;③④⑤ 无语义岗冲突。验收:机检〈五处部件取值点全部改指合并目标色,四枚原拟新增候选值零入板〉
- **换色合并登记三处**|按本表「不过门即触发换色合并、禁加色绕行」执行,三处零新增额度:①`#C4AC84`(地台顶缘受光线,代码 `STAND_STONE_RIM`)→ 并入 `#C9AF83`(掩尘,并与 §8.2 高墙口沿高光 `Color8(196,172,132)` 统一为同一枚);②`#5A4C3A`(地台描边,代码 `STAND_STONE_EDGE`)→ 并入 `#4C4038`;③`#3E342A`(舞台底,代码 `STAGE_BG`)→ 并入 `#3E362C`(状态槽底)。①②的绘制点全部改指合并目标色、源常量删除——程序化回退绘制与已落合并值的贴图保持一致;③随 §6.1 舞台背景插画批一并处置:背景资产接管该绘制面时本常量随绘制点退役或改指,禁单独为改值出批。验收:机检〈①②两枚源常量全仓零引用,绘制点全部改指合并目标色〉
- **换色合并登记三处**|按本表「不过门即触发换色合并、禁加色绕行」执行,三处零新增额度:①地台顶缘受光线 `#C4AC84` 已并入 `#C9AF83`(掩尘枚 `BRICK`,与 §8.2 高墙口沿高光同枚)——源常量已删除(全仓零引用,退役断言测试串为预期例外),绘制点全部改指 `#C9AF83`;②地台描边 `#5A4C3A` 已并入 `#4C4038`(代码 `PLAZA_EDGE`,ui_kit 唯一落点)——源常量已删除,绘制点全部改指;③舞台底 `#3E342A`(代码 `STAGE_BG`)→ 并入 `#3E362C`(状态槽底)——已随 §6.1 舞台背景插画批处置完毕(2026-11-02 迭代 48):源常量已删除(常量表零键),背景资产接管该绘制面,程序化平色缺图回退改指 `SLOT_BACKDROP`(`#3E362C`)。程序化回退绘制与已落合并值的贴图保持一致。验收:机检〈①②两枚源常量全仓零引用,绘制点全部改指合并目标色〉
**对比硬指标(可测)**:数字可读性由**格底明度分档**承载——棋盘数字亮墨 **L≥0.75** 对**已开格底 L 0.08–0.14** ⇒ 直画对比 **≥4.5:1 恒成立**(WCAG AA,样张逐组合抽测冻结);**色牌后备**:色牌素色恒定 **L≥0.70**、牌上数字深墨 **L≤0.027** ⇒ 任意牌墨组合 ≥4.5:1(实测样例:#33261B/#F5EAD3 = 12.3:1)。未开格底槽(含全部图类型)相对亮度 **L≥0.30**(墙顶面受光档)、HSV 饱和 **≤0.55**、避 Boss 禁入色相带;已开格底走世界底层档(见上)。物件识别不依赖格底(§5.1 轮廓通道),旗面、金色不作识别依赖。验收:机检〈亮墨对已开格底 ≥4.5:1;未开格底 L≥0.30、饱和 ≤0.55;任意牌墨组合 ≥4.5:1〉 ←原二;地形变异 AC-9
@@ -221,6 +222,7 @@
- **换色合并欠账清单(全板重扫 6 对不达标,逐对清偿)**:`#18120C` ↔ `#181410`、`#33261B` ↔ `#362B20`、`#362B20` ↔ `#3A2E22`、`#3E362C` ↔ `#3E3731`、`#3E4048` ↔ `#3F4147`、`#453723` ↔ `#4A3B2A`——六对按「不过门即换色合并」纪律逐对清偿(并进最近既有色);清偿前该对不视作合规,清偿动作落本节修订。**本节所举反例 `#3A2E22` ↔ `#362B20` 正在这 6 对之内**,与本口径自洽。验收:机检〈全板色对中三通道差全部 <8/255 的对数 = 0〉
- **色板分层**:色板分两层管理——① **语义/UI token 板**:全作共享,硬上限 **48 色**,管 UI 语义色、墨色、材质色,跨屏恒定;② **场景环境子板**:**每屏一套,≤32 色,允许跨屏不共享**(环境色 = 天空、地面、植被、石材、火焰等随场景走的颜色)。新增环境色仍须过两道门(§4.2 语义检查 + 与既有任一色 RGB 三通道差禁止全部 <8/255),但**不占用 48 token 额度**;不过门照旧走「换色合并」,**禁加色绕行**。单张 PNG 的像素域色数上限 **≤32 色**另由 `standee_asset_check` 执法(按单图像素域取值方式计数,与本表 token 计数互不干扰)。额度不足时向作者报告,由作者决定压缩或合并既有色。验收:机检〈token 板 ≤48;每屏环境子板 ≤32〉
- **整屏有效色数总闸(色板第三层,2026-11-02 用户裁)**|整屏的色板纪律裁判面=**画面上成片出现的颜色数(有效色数)**,不是逐像素去重总数:多源并集与程序混合(压暗遮罩/软阴影/渐变/tween 中间帧)使逐像素色数随素材与渲染状态大幅漂移(实测同屏不同时点差一至九倍),不可治理也不承载观感。整屏唯一色数只保留「渲染真实发生」的存在性地板(地板值归闸件承载);**色板纪律的上限闸=每屏有效色数 ≤128**(**待定现用**——现行即执法、修订走登记,释义同色板增量纪律条)。构成推导源:双环境层 32×2+token 板 48+混合容差 16(←本条色板分层;推导源非额度分配,各层额度照旧独立执法)。超限处置沿色板增量纪律:先合并压缩既有色再进,禁加色绕行。有效色的测量口径(面积阈值等实现参数)归色数检查器承载,本圣经不载。验收:机检〈各屏有效色数 ≤128,口径=色数检查器现行定义〉
### 4.2 语义色彩规则
@@ -377,11 +379,11 @@
- **双舞台常驻下的 B 区环境**:战斗画面区(站桩立绘所在)的背景 = 明亮地窟,与 §1 风格基调同源——暖倾向、无压抑;背景整体**低对比自然后退**(§3.4 焦点预算延伸):背景禁止构成完整凸形、禁止抢 B 区立绘与 D 区数字的焦点,识别层级恒为 立绘 > 背景。验收:目检〈背景无完整凸形、立绘最抢眼〉
- **舞台正面目标**:B 区 = **地窟看台**——立绘脚下地台/落影承载(世界中层),背景环境层低饱和后退、明度走世界底层档;角色禁止直接贴平色底。规格与终值归整屏样张闸(§1.4)冻结。**地台面上零文字**——暖白 `#F0E2C8` 对地台板身 `#968264` 实测仅 2.89:1,已越 §7.2 的 4.5:1 硬指标,落法按 §7.2「文字禁直接压纹理底」(垫容器、素牌或罩层),非新条款;站桩文字位改垫素底或落进结算明细带(实装=站桩名字行垫 `HP_BAR_BACK` 深档素底牌、文字基线上移至地台顶上方——2026-10-30 落地)。验收:目检〈立绘脚下有地台/落影,非贴平色底〉+机检〈B 区站桩文字位正下方像素非地台板身色 #968264〉
- **明度分层适用**:背景氛围的情绪表达仍禁止以压暗/渐晕实现(§2 禁令);空间纵深与洞穴感走明度分层允许域——世界底层档、光照氛围、色相饱和与形体承载(§3.2 同款逻辑)。验收:方向性
- **明度分层适用**:空间纵深与洞穴感走明度分层——世界底层档、光照氛围、色相饱和与形体承载(§3.2 同款逻辑)。验收:方向性
- **图类型联动**:背景层按 `board_type` 选三张变体(`scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png`,方向取 §6.3 三关色板候选);**背景不再走 §4.3 `wall_ambient` tint**(该槽保留给棋盘/世界的墙雾氛围,避免对三张背景二次染色)。紫赤仅 Boss 战允许短暂进入背景氛围纹样(§2.6 色相独占的舞台侧延伸,高饱和独占不变),非 Boss 战高饱和紫赤禁入。验收:机检〈背景吸色无非 Boss 高饱和紫赤;背景素材不引用 `wall_ambient` 槽〉
- **场景构成(2026-10-31 用户裁)**:B 区舞台从远到近分三段——**顶部空区**:洞顶以上的昏暗空间,只留深色空区,**不画钟乳石、吊锥、悬挂物或任何可辨形状**;**远景(纵深洞厅)**:不是贴墙的后壁,按远/中/近三层组织——远层暗剪影(远处洞口/通道、层叠岩体、洞底轮廓)、中层主要细节层(岩台、岩柱、凹壁、裂缝)、近层左右暗色岩框;剪影被中层部分遮挡、不贴顶、不孤立,**禁贴墙感、禁单件圆柱贴顶、禁砖石墙/规则砌缝/方整石块**;三关母题(地精=支洞/木栈道/木桩围栏;卓尔=巨柱/石笋/蛛网/螺旋塔剪影/巨菇/石桥;灰矮人=石笋城郭/棱角石厅/石桥/矿道口/烟囱塔)见 `battle-stage-prompts.md` §3.2;**分隔带**:远壁根部与近景地面之间一条不规则碎石带/阴影缝,边界清楚但不笔直,**禁瓷砖缝、踢脚线、规则台阶**;**近景地面**:干净压实泥土为主,全幅只零星几颗小石、散点分布,中央平缓留空给角色站位,**禁成排/成堆碎石、满铺砂砾、泥点噪声、瓷砖、规则铺装、草、木地板**。纵深与三段构图归 §1.4 样张;逐条要素、分层提示词与否定后缀 = `battle-stage-prompts.md`(本文件不重复维护)。验收:目检〈顶部无钟乳石/吊锥;远景有纵深、非贴墙;无孤立圆柱贴顶;近景为泥土碎石;分隔带不规则;中央无大障碍〉
- **图层归属(2026-10-31 用户裁)**:背景层 = 三关变体 `scene_stage_bg_dungeon/_underdark/_deep_underdark.png`(顶部空区+纵深洞厅远景,不画近景地面;按 `board_type` 选一张);近景地面 = **独立连续地面层** `scene_stage_ground.png`(泥土/砂砾/碎石地面,全宽、底边贴 B 区底、顶缘即分隔带;高度读布局表 `ground_h`,字段由地面层实装批新增并回填,本批终稿高 100、代码批落表);现有每角色小石台 `scene_stage_plaza.png` 保留,叠在连续地面之上。连续地面层与小石台**三关共用**、跨关恒定、**不吃 `wall_ambient` tint**(世界中层承载面随关卡换明度会破 §2 层间关系);背景三张变体各自带关卡色族,不再叠 tint。验收:机检〈三张背景文件名带 board_type 后缀;地面层/小石台文件名无 board_type 后缀;背景与地面层均不引用 `wall_ambient` 槽〉
- **资产渠道与契约**:✦ 插画级(演出类场景贴图,清单 §4 联动登记);战斗一屏样张(§1.4 清单 1.2)含背景出样。**背景层 = 三张按关卡变体** `scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png`(源 = 基准屏宽 × `stage_h`,读布局表 `game/data/tables/battle_layout.tres`;显示 1×;按 `board_type` 选图;**不走 `wall_ambient` tint**);三张共用本节构图规则,仅岩体形态与色族按 §6.3 三关方向不同。**背景只画顶部空区+纵深洞厅远景,不画近景地面**:结算期明细带整条压住 B 区底带(带高 = `log_band_h_settle`,读布局表),近景地面在独立层;画进背景等于画一件永远看不见、且会随背景变体重复的东西。**连续地面层** = `scene_stage_ground.png`(源 = 基准屏宽 × `ground_h`,读布局表;显示 1×;三关共用、跨关恒定、不吃 tint);地面层是极宽薄条,出图与后处理按 `battle-stage-prompts.md` §2.2 的工艺(可平铺纹理条/最宽档裁切,禁横向拉伸)。**光柱不迁入背景**:三张背景均不画光柱/光带/光束/光晕与任何光源实体,明暗只由岩体层理与暗部承载;现行四柱程序层是临时占位,资产到位后直接退役(代码批)。资产已入包(2026-10-31),四柱程序层与平色底由代码批退役/改指;出图工单 = `battle-stage-prompts.md`,交付记录见本节「B 区舞台背景与共用地面的交付绑定」。验收:目检〈三关背景可辨为不同洞窟,非同一图换色;远景有纵深、非贴墙;无孤立圆柱贴顶;背景无地台/地面结构件、无砖石墙、无瓷砖地面、无光柱/光带;地面层为泥土/砂砾/碎石〉
- **图层归属(2026-10-31 用户裁)**:背景层 = 三关变体 `scene_stage_bg_dungeon/_underdark/_deep_underdark.png`(顶部空区+纵深洞厅远景,不画近景地面;按 `board_type` 选一张);近景地面 = **独立连续地面层** `scene_stage_ground.png`(泥土/砂砾/碎石地面,全宽、底边贴 B 区底、顶缘即分隔带;高度读布局表 `ground_h`,字段已由实装批回填 100〔2026-11-02 迭代 48〕);现有每角色小石台 `scene_stage_plaza.png` 保留,叠在连续地面之上。连续地面层与小石台**三关共用**、跨关恒定、**不吃 `wall_ambient` tint**(世界中层承载面随关卡换明度会破 §2 层间关系);背景三张变体各自带关卡色族,不再叠 tint。验收:机检〈三张背景文件名带 board_type 后缀;地面层/小石台文件名无 board_type 后缀;背景与地面层均不引用 `wall_ambient` 槽〉
- **资产渠道与契约**:✦ 插画级(演出类场景贴图,清单 §4 联动登记);战斗一屏样张(§1.4 清单 1.2)含背景出样。**背景层 = 三张按关卡变体** `scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png`(源 = 基准屏宽 × `stage_h`,读布局表 `game/data/tables/battle_layout.tres`;显示 1×;按 `board_type` 选图;**不走 `wall_ambient` tint**);三张共用本节构图规则,仅岩体形态与色族按 §6.3 三关方向不同。**背景只画顶部空区+纵深洞厅远景,不画近景地面**:结算期明细带整条压住 B 区底带(带高 = `log_band_h_settle`,读布局表),近景地面在独立层;画进背景等于画一件永远看不见、且会随背景变体重复的东西。**连续地面层** = `scene_stage_ground.png`(源 = 基准屏宽 × `ground_h`,读布局表;显示 1×;三关共用、跨关恒定、不吃 tint);地面层是极宽薄条,出图与后处理按 `battle-stage-prompts.md` §2.2 的工艺(可平铺纹理条/最宽档裁切,禁横向拉伸)。**光柱不迁入背景**:三张背景均不画光柱/光带/光束/光晕与任何光源实体,明暗只由岩体层理与暗部承载;原四柱程序层与平色底已退役(2026-11-02 迭代 48:背景资产接管该绘制面,平色缺图回退改指状态槽底色)。资产已入包(2026-10-31);出图工单 = `battle-stage-prompts.md`,交付记录见本节「B 区舞台背景与共用地面的交付绑定」。验收:目检〈三关背景可辨为不同洞窟,非同一图换色;远景有纵深、非贴墙;无孤立圆柱贴顶;背景无地台/地面结构件、无砖石墙、无瓷砖地面、无光柱/光带;地面层为泥土/砂砾/碎石〉
- **B 区舞台背景与共用地面的交付绑定(2026-10-31 入包)**:三张背景与一张地面已按本节契约入包 `game/assets/art/scene/`——`scene_stage_bg_dungeon.png` / `scene_stage_bg_underdark.png` / `scene_stage_bg_deep_underdark.png` 均 1280×252、不透明全幅、单张 ≤32 色、按 `board_type` 选图;`scene_stage_ground.png` 1280×100、顶缘以上透明、单张 ≤32 色、三关共用。地面按作者 2026-10-31 裁保留候选 v12b 原亮度(实测不透明域 L≈0.132,低于 §2 世界中层 0.22–0.45,登记为作者例外;后续调亮归调参/替换,不重开设计);背景实测 L:dungeon 0.0148、underdark 0.0132、deep_underdark 0.0111(后两者低于世界底层下沿带下限 0.014 不超过 0.003,登记读数)。验收:机检〈四件文件名与尺寸逐位相符;地面顶缘以上 alpha=0、不透明域 ≤32 色;背景不透明全幅 ≤32 色〉+目检〈三关可辨、无光柱、地面读作泥土〉。参考指针:`asset-path-map.md` `scene/` 行、`battle-stage-prompts.md` §2/§4。
- **近景地面与地台走独立件**:连续地面层 `scene_stage_ground.png` 与角色脚下小石台 `scene_stage_plaza.png` 均为独立层,三关共用、跨关恒定。小石台源 48×12、九宫格横向拉伸、顶缘受光线 2px 不随拉伸变形(规格见 §8.2);连续地面层的顶缘即分隔带(不规则碎石/阴影缝,不是直线亮边)。独立的两条理由——① 三张背景按关卡变体,地面若画进任一背景就得三张各画一遍、且三关站位面会漂移;② 结算期明细带整条压住底带(带高读 `log_band_h_settle`),地面在独立层才能跨关恒定并保持世界中层承载面不变。小石台先保留,是否退役归实装批/后续裁决。验收:机检〈地台件按九宫格拉伸后顶缘受光线宽度恒为 2px〉+目检〈连续地面为泥土碎石、顶缘不规则〉
@@ -390,12 +392,12 @@
- **情绪与色域**:承载 §2.8——全作最暖:烛光黄 `#F6C667` × 木色 `#8A5A34`(§7.2),中等饱和,无棋盘式高对比。
- **场景构成**:一张可点击的营地场景图(1280×800,与工程档同幅面)。远景=天空与远山;中景=**独立成层的木围墙**(密排竖木桩、桩顶削尖、不透缝无横木)与**半开的营地大门**;近景=中央篝火、左侧锻炉铁砧、右侧帐篷与宝箱、帐篷旁的笔记本,另有木桩与挂在围墙上的布告板。**中景带自底部往上约 2/3 处起**;**近景物件可覆盖围墙,唯一例外=中间门洞必须留空、不被任何物件遮挡**。七个可点物件的功能绑定归 `camp.md`,本节只定画法。
- **图层拆分(10 张)**:场景按「远景/中景/近景要素各自成层」拆——`scene_camp_bg` 背景层(z0,不透明全幅)=天空+远山+整片地面+门洞内一条通向远处的小路;`scene_camp_wall` 围墙层(z1,透明底)=横贯全宽密排木桩墙(左右两段)+两根略高的门柱,**门洞处留透明缺口**透出背景层的小路;`scene_camp_board` 布告板(z2)、`scene_camp_gate` 门扇(z3)、`scene_camp_dummy` 木桩/`scene_camp_forge` 锻炉/`scene_camp_tent` 帐篷(z4)、`scene_camp_chest` 宝箱/`scene_camp_notebook` 笔记本(z5)、`scene_camp_campfire` 篝火(z6,最前)=八个物件层,各透明底单件一张。**帐篷**为承载件、不可点。围墙独立成层的好处:桩高可单独锁死、门洞做透明缺口、背景层不混入暖木色。提示词与坐标 = `camp-scene-prompts.md`,消费常量 = `asset-path-map`。
- **交付形态**:**背景层 1 张(不透明全幅)+ 围墙层 1 张 + 八个物件层 = 10 张**,其中 9 张透明底、1 张不透明全幅 + 一份坐标表(贴图矩形/命中矩形/z 序)。**篝火例外**:命中矩形只取下半(火堆),上半(火焰)只作特效展示。围墙层落盘按细条 `(0, 240, 1280, 70)` 裁,不做全幅(全幅约 3.9 MB 显存,细条约 0.35 MB)。
- **交付形态**:**背景层 1 张(不透明全幅)+ 围墙层 1 张 + 八个物件层 = 10 张**,其中 9 张透明底、1 张不透明全幅 + 一份坐标表(贴图矩形/命中矩形/z 序)。**篝火例外**:命中矩形只取下半(火堆),上半(火焰)只作特效展示。围墙层落盘按细条裁,不做全幅(全幅约 3.9 MB 显存,细条约 0.35 MB);**实装落盘矩形 `(0, 261, 1280, 49)`、底锚 y310**(Y 压缩按桩身 43px 终稿锁定值精确,落带内〔规划带 (0,240,1280,70)〕;备选 A′〔带高 70/桩身 62〕存档 artwork 同目录——2026-11-01 迭代 47 卡④ 实装)。
- **色彩与氛围依据**:营地场景的冷暖分工(冷的大面积后退、暖的小面积前进)、空气透视三档与大面积用色规则 = `reports/提案-营地色彩与氛围脚本-2026-10-23.md`。本节不复述色值;新增环境色按 §4.1 场景环境子板条款登记(每屏一套、≤32 色、过 §4.2 语义检查与 RGB 三通道差 ≥8/255 两道门)。
- **交互四态(零新素材,全部程序化)**:悬停=**轮廓亮边 + 浮动**(浮动须整像素吸附);按下=位移 1px;**禁用/未解锁=降明度 + 去饱和**(§2 已缩窄至情绪域,状态表达不受限),**仅锻炉(锻造工坊)与宝箱(秘宝匣)两件会有此态**;已解锁=常态。
- **钥石余额**:常驻画面顶部的一行小 HUD 栏(高 48px,**浮层覆盖,不挤压画面**)。
- **事实源边界**:解锁条件/价格/存档写入归元进度 GDD 与 `MetaProgression`;素材命名与路径归 `asset-path-map`;清单登记归 `art-assets-checklist` §3.5。
- **待裁(本节不填数,由作者定)**:① **营地环境子板色值**——色彩脚本只给定色方向,落地色值属 §4.1 单点,须过 §4.2 语义检查与 RGB 三通道差 ≥8/255 两道门;② **门扇与门洞的高宽比例**——中景带自底部往上约 2/3 处起之后高度有限,门扇高度远超围墙带,两者关系待作者重定;③ **帐篷的落地尺寸**——帐篷体量大于被替换的旧承载件,尺寸待作者重定;坐标草案的现行出口见 `camp.md` 的指路句。
- **已裁(2026-11-01 用户裁,随迭代 47 卡④ 开工门销号)**:① **营地环境子板色值**——不前置拍板:T1 量化场景实际用色后按 §4.1 场景环境子板条款登记(每屏一套、≤32 色、过 §4.2 语义检查与 RGB 三通道差 ≥8/255 两道门);② **门扇与门洞的高宽比例**——门扇 240×220 追认现值,坐标按门洞 x520–760 对齐(`camp-scene-prompts.md` §2.3);③ **帐篷的落地尺寸**——300×170 追认现值(各素材第一张样本稿已过审为终稿,重定即触发重出,不裁)。
### 6.3 三关图类型色板候选(board_type 换挡方向)
@@ -422,7 +424,6 @@
- **记忆态可读性判据**:数字对合成底**归一后(真实渲染面)三关 ≥4.5:1**(WCAG 硬指标;合成底 L1 #4C4038/L2 #3F4147/L3 #3E4048;行值与素材随动,测点=ui_contrast_probe 迷雾段)。**归一注**:装载亮度归一是现行生产路径(`board_view._normalize_floor_luma`),原图均值≠渲染面,复算须落归一后底。可辨性自查(三通道,随样张/实机自检):①对全黑未开格——合成底 #3E3731(L≈0.036)对 L0,实机目检常光档可分(暗房档一并抽检);②对灯光区内活态已开格——主判据=数字墨灰度差(记忆墨 L0.55 对亮墨三档 L≥0.75 / 色牌 #F5EAD3 L≈0.83,灰度 ΔL≥0.20)+ 色相通道(记忆态近中性灰,对活态暖底暖墨);③格态三形在记忆态保持灰度可辨——形通道经纹理+灰罩形态不变,沿 §1.4 验收 2 同源判据。验收:机检〈ui_contrast_probe 迷雾段记忆墨对比 ≥4.5:1〉←§1.4
- **迷雾过渡边:硬边(逐格二值)**:灯光区边界 = **整格二值切换**(区内全渲染 / 区外全黑或记忆态),**不做渐变过渡带、不做半透明晕边**。理由:①边界是信息边界不是氛围晕——渐变中间态 =「看得见但看不清」,破数字可读硬指标与记忆态明度档;②现行事实源验收断言(边界格呈态、两态逐位一致)须格级二值可判;③与砖面整格表达(§3.2 高墙瓦片体系)、ITB 格内信息分层气质同轴。无动画,减动效无涉。←现行事实源;§1.2 原则一;§3.2
- **与结算期去饱和的叠加共存**:结算期去饱和偏移(settlement_fx_view,同族先例)与迷雾调制叠加规则 = **记忆态为终态档**——区外已开格在结算期保持记忆态档、**不再叠加**结算去饱和(灰显已含去饱和语义,二次调制无信息增量且明度不可控);灯光区内格照常吃结算去饱和;全黑格两态无差。叠加态随实施批共存校验 + 探针断言(provisional,实机目检可代拍)。验收:机检〈叠加态下记忆态灰显不被二次调制〉
- **§2 明度禁令自查**:迷雾遮蔽与记忆态灰显属 §2 明度分层**光照氛围允许域**(洞穴举灯的空间光照呈现,与 Moonlighter 取列「亮地板/暗深渊/发光体」光照层次同族),非情绪压暗(§9.2 Darkest 反面条款不触——那禁的是情绪表达)、非状态明暗编码(格态语义仍由形+色相承载,灰度下三态可辨不受扰)。←§2;§9.1;§9.2
---
@@ -516,19 +517,19 @@
- **全局纹理过滤与平滑渐变件例外**:`project.godot` `default_texture_filter=0`(Nearest)全局——像素风 UI 皮(九宫格/主题石纹样式盒/滑轨抓子/勾选/箭头图标)翻 Nearest=意图面;**显式 LINEAR 豁免清单(有意例外)= vignette / gradient_base / beams 三件程序化平滑渐变件**——保平滑连续 alpha 的程序化氛围件(§7.6 三已裁);新增平滑件须同批入册本清单,禁静默挂 LINEAR。翻转面枚举与冒烟断言(6 条)在闸。验收:机检〈过滤面枚举与 LINEAR 清单逐项一致〉
- **显示档登记例外(64 源 0.5×,待素材批消除)**:柜台四枚 `icon_forge/workshop/atlas/keystone`(64×64 源)显示档统一 **32px = 0.5×**;状态九枚(32×32 源)mini(站桩)档 **16px = 0.5×**。两处均系「显示尺寸侧唯一可调、素材一字节禁改」红线下的人工检整数半倍档,登记为**待消除例外**——素材设计出 32px 源后回归 1×。常规档显示一律 1×(状态九枚 32px、手绘十枚 20px/40px 双档、BCard 图标槽 40px=2×、**护甲类型图标三枚 24px=1×**——源 24×24,归甲类整数倍纪律)。验收:机检〈显示档与登记表一致〉
- **乙类·角色与单位精灵**(有机形体、非文字):允许运行时非整数倍缩放(NEAREST 过滤不变),容忍轻度像素宽窄不均;判据 = 实机目检,可感不适即回整数档。乙类免逐案豁免。验收:目检〈立绘无可感拉花〉
- **站桩立绘槽位=高定宽随**:立绘/精灵槽位只定「高度的整数倍档」,宽度随源图宽高比自适应——**禁止把全部立绘塞进统一方框强拉**(纵横倍率必须恒等)。反面实例:统一方框把窄条生物源(细长本体裁掉透明边)按主角比例横拉压扁发花。乙类的非整数豁免只覆盖**等比**缩放,不含纵横异倍变形。验收:机检〈立绘纵横倍率恒等〉
- **站桩立绘槽位=高定宽随**:立绘/精灵槽位只定「高度的绝对档(档高取整数像素值)」,宽度随源图宽高比自适应——**禁止把全部立绘塞进统一方框强拉**(纵横倍率必须恒等)。反面实例:统一方框把窄条生物源(细长本体裁掉透明边)按主角比例横拉压扁发花。乙类的非整数豁免只覆盖**等比**缩放,不含纵横异倍变形。验收:机检〈立绘纵横倍率恒等〉
- **1920×1080 档策略**:全局等比(stretch=canvas_items+aspect **keep**)——16:10 设计在 16:9 窗口=等比 1.35×+左右黑边各 ~96px,构图与 1280×800 基准档完全一致;甲类 1.35 非整数缩放例外注记:轻度宽窄不均系本档位接受代价(像素游戏 shipped 常态),实机目检可感不适→回乙案(1920 独立 2× 基准)重议;乙类同前款。验收:目检〈1920 档构图与 1280 档一致〉
- **画布基准(暂定值)**:
- **主角人设原图 = 48×72**(1× 基准,暂定;与站姿降采样可读性验证一致);
- **棋盘小人 = 32×32 二头身派生版(暂定,允许更小)**——独立资产,自人设定稿压缩派生(character-design §5.4),不吞数字位、占位 ≤ 0.75× 格边长;板越小占比摩擦越大(13×13 / 14×14 更小,算例见 [battle.md](../gdd/ux/battle.md)「棋盘格尺寸公式」),32px 源档的去留已定终值 = **保留 32×32 源档**(沿「独立小源档」路线;N=12 板下显示占位上限 27px = 0.84 倍,正落本节乙类非整数缩放许可范围,**连豁免都不用再办**),待决标注注销;
- **站桩立绘源档 = 八敌逐键定档**:主角 48 不变;八敌源档高 = goblin 36 / giant_spider 38 / duergar 46 / hook_horror 58 / bugbear 62 / ogre_chief 74 / drider 90 / duergar_king 94,显示一律 **×2 整数档(NEAREST)** = 72–188。定档依据 = 生物体型三约束(钩爪恐魔>灰矮人、灰矮人<熊地精、食人魔>熊地精——体量=物种体型,非强度线性映射,见 character-design §5.2);可读性实测门槛 = 源高 ≥32(24 糊/32 可读/48 清楚/64 细节完整),全阶梯 36–94 达标;派生管线 = pixel-1.png 紧裁 → 等比缩至档高 → dom_block_resize 块内众数降采样(tools/pixelize_candidates.py `STANDEE_TIER_H`,`SIZES` 降格为管线上游中间分辨率表);体量存在感经整屏对比校验(B 区高读 `stage_h`/立绘显示上限 188)。验收:机检〈standee_asset_check 逐键档高校验〉
- **站桩立绘排版**:① 区高 B 区 ≈1/3 屏 / C 区 ≈2/3 屏,**扫雷盘原尺寸不缩、格子不变**(区高事实源 = 布局表 `battle_layout.tres`;压缩由 C 区面板空档吸收);② 站桩内部重排——立绘双脚落石台上缘(弃盒内居中)、**血条+状态/名字行落底排**(立绘→血条→状态 顺序,全场血条对齐一线;血条嵌石板位、台缘线留作地面线、落影保留接地感),状态空时该行退化为名字行;③ 大体档(显示 >150px 级:drider/duergar_king)**允许向上溢出盒顶 N px**(N 由实装批按实测尺寸算定,**与背景/光柱无关**——现行溢出区恰为临时光柱氛围层〔§6.1 方向稿四柱,x 基准 110/900/1055/1210@1280,`battle_stage_view.gd:47-56`〕,正式舞台背景插画(三关变体)到位后该层直接退役(背景不画光柱),**溢出判定不随之变更**;横向禁止压到顶部中央轮次·阶段指示,溢出上限由实装批用真图复算 x 区间定),血条仍落底(落底排的第二个收益=头部探顶不带出血条);意图徽标悬浮头顶上方(探顶档压胸);④ 「血条悬浮头顶+立绘盒内居中」排式已弃——盒顶固定 y 与盒内居中在高盒下拉开血条-立绘空洞。验收:目检〈血条一线对齐、大体档溢出不压轮次指示〉
- **站桩立绘显示档 = 三档绝对高**:小型 96 / 中型 144 / 大型 188。逐件归档——小:地精、巨蜘蛛、灰矮人;中:主角、钩爪恐魔、熊地精;大:食人魔酋长、蛛化卓尔、灰矮人石君王。**源 = 原稿像素网格**(八敌 `pixel-1`、主角手修 2× 三态稿),紧裁后原样入包,**禁再降采样**;显示倍率 = 档高 ÷ 源高,NEAREST,宽度随源图比例(高定宽随不变,见上条)。定档依据 = 生物体型(体量=物种体型,非强度线性映射,见 character-design §5.2),**顺序由显示档承载、不由源高承载**。已接受项:中型三件与地精/巨蜘蛛的源高(92/94/123/90/81)低于档高,属放大显示;食人魔酋长显示宽 157 超桩盒 150。验收:机检〈standee_asset_check 逐件显示档高与归档一致、纵横倍率恒等〉+目检〈同屏体量顺序成立〉
- **站桩立绘排版**:① 区高 B 区 ≈1/3 屏 / C 区 ≈2/3 屏,**扫雷盘原尺寸不缩、格子不变**(区高事实源 = 布局表 `battle_layout.tres`;压缩由 C 区面板空档吸收);② 站桩内部重排——立绘双脚落石台上缘(弃盒内居中)、**血条+状态/名字行落底排**(立绘→血条→状态 顺序,全场血条对齐一线;血条嵌石板位、台缘线留作地面线、落影保留接地感),状态空时该行退化为名字行;③ 大体档(显示 >150px 级:食人魔酋长/蛛化卓尔/灰矮人石君王)**允许向上溢出盒顶 N px**(N 由实装批按实测尺寸算定,**与背景/光柱无关**——现行溢出区恰为临时光柱氛围层〔§6.1 方向稿四柱,x 基准 110/900/1055/1210@1280,`battle_stage_view.gd:47-56`〕,正式舞台背景插画(三关变体)到位后该层直接退役(背景不画光柱),**溢出判定不随之变更**;横向禁止压到顶部中央轮次·阶段指示,溢出上限由实装批用真图复算 x 区间定),血条仍落底(落底排的第二个收益=头部探顶不带出血条);意图徽标悬浮头顶上方(探顶档压胸);④ 「血条悬浮头顶+立绘盒内居中」排式已弃——盒顶固定 y 与盒内居中在高盒下拉开血条-立绘空洞。验收:目检〈血条一线对齐、大体档溢出不压轮次指示〉
- **站桩石板地台件**:`scene_stage_plaza.png`,源 48×12、九宫格横向拉伸、顶缘受光线 2px 不随拉伸变形;跨三关恒定、不吃 §4.3 `wall_ambient` tint(独立理由见 §6.1 近景地台独立件条)。验收:机检〈地台件按九宫格拉伸后顶缘受光线宽度恒为 2px〉
### 8.3 导出格式与命名规范
- **归档纪律**:图片素材**不入 git 版本管理**——仓库只保留运行时引用资产(game/assets);生成链路原始产物(AI 原图/中间产物/候选版本)归档至 `archive/` 并择机上对象存储备份;主文档(圣经/GDD/清单)**禁引用 artwork/ 散文件路径**——定稿成图以 game/assets 为唯一事实源,过程稿引用一律用归档包路径或描述性出处。验收:机检〈主文档 grep 无 artwork/ 散文件路径〉
- **入包与对账检查器(挂点已立,实现随 PRD 工具批)**:①**色板检查器**——扫描新素材色板,报新增色/近色告警/超 §4.1 上限(48)拦截,挂素材流入包步(asset-path-map §2 第 3 步);②**路径核对器**——扫描 asset-path-map 声明的全部路径,悬空/未清即报,随大批与审计例行跑;③**standee_asset_check 硬闸升级规格**——按 §8.2 逐键定档校验体量与档高、像素域色数 ≤32、无非整数倍缩放痕迹、描边亮度达标(亮描边明度档);把「高定宽随」教训变成代码闸而非文字。验收:机检〈三检查器在闸可跑〉
- **入包与对账检查器(挂点已立,实现随 PRD 工具批)**:①**色板检查器**——扫描新素材色板,报新增色/近色告警/超 §4.1 上限(48)拦截,挂素材流入包步(asset-path-map §2 第 3 步);②**路径核对器**——扫描 asset-path-map 声明的全部路径,悬空/未清即报,随大批与审计例行跑;③**standee_asset_check 硬闸升级规格**——按 §8.2 显示档逐件校验显示档高与归档、纵横倍率恒等、像素域色数 ≤32、描边亮度达标(亮描边明度档);把「高定宽随」教训变成代码闸而非文字。验收:机检〈三检查器在闸可跑〉
- **交付格式**:PNG 透明底;动画 = 序列帧或引擎精灵表(SpriteFrames),帧尺寸恒定、横向等宽排列(候选)。验收:目检〈交付件透明底无杂边〉
- **命名规范(候选草案)**:`<域>_<对象键>_<状态|变体>[_<序号>].png`,全小写 snake_case;**对象键 = 数据表主键**(effect_id/reward_id/cell_type/enemy_id——图标键契约 §4.6 的文件侧延伸:资产文件名键 = 图标键,全局恒定禁运行时换图);图类型变体后缀 = board_type 键(`_dungeon`/`_underdark`/`_deep_underdark`);候选评审件与终稿分目录(`artwork/candidates/` 承载评审件)。验收:机检〈命名与目录检查器零红〉
@@ -557,7 +558,7 @@
| 参考 | 取 | 弃 |
|---|---|---|
| **Into the Breach** | 格内信息分层、攻击预告上格范式、战棋地块质感骨架(§1.2 原则一;§3.2) | 冷暗军事色调、压暗信息板、斜切 HUD(原则二;§3.3) |
| **Moonlighter** | 暖质地砖与砖缝质感、亲和冒险者气质、木石暖色道具(原则二/原则三);**光照层次与明度纵深**(亮地板/暗深渊/发光体三档,§2 明度分层) | 全拟物倾向(§3.3 半拟物边界);Darkest 式情绪压暗(§9.2) |
| **Moonlighter** | 暖质地砖与砖缝质感、亲和冒险者气质、木石暖色道具(原则二/原则三);**光照层次与明度纵深**(亮地板/暗深渊/发光体三档,§2 明度分层) | 全拟物倾向(§3.3 半拟物边界);Darkest 式压暗(§9.2 反面基准) |
| **Peglin** | 明快全年龄洞穴色彩、胖体量亲和怪(§5.1 普通怪原型) | 色块依赖——先读轮廓后读颜色(§5.1) |
- **反面条款已成文**(§9.2);反面参考**图证**待本作素材生成后增补。验收:方向性
@@ -566,7 +567,7 @@
| 反面参考 | 违反条款 | 立法理由 |
|---|---|---|
| **Darkest Dungeon** 式压暗 | §2 情绪明暗禁令(明度分层下仍禁) | 状态与情绪只走色相/饱和/运动/元素四手段,不以变暗表达情绪(失败重开,世界无光暗记忆) |
| **Darkest Dungeon** 式压暗 | §9.2 反面基准(风格取向记录,非禁令——压暗属普通设计决策,逐案走样张与目检) | 失败重开,世界无光暗记忆——明亮基调下不以整屏变暗作常态表达 |
| **传统扫雷白牌/贴纸式数字承载** | §1.2 原则二(明度分档为骨) | 数字由格底明度分档承载、直画入世界;色牌仅复杂格底后备——满屏白牌=电子表格观感,非游戏画面 |
| **Enter the Gungeon** 式粒子与色相爆炸 | §3.4 焦点预算;§4.2 色相纪律 | 信息层禁止被特效与杂色吞没,特效入画先过焦点预算 |
| **Hades** 式特效密度 | §2.2 兑现爽感的上限 | 爽感靠逐行因果归因,不靠满屏特效;承载元素以 §2.2 清单为界 |
+1 -1
View File
@@ -176,7 +176,7 @@ python tools/shot_checker.py <截图目录>
python tools/shot_checker.py <截图目录> shot_menu.png shot_battle.png
```
**判据或口径**:A 屏级骨架——PNG 存在、任一边 1280、灰度 std 不低于 8、唯一色数不低于 64。B 文字对比——战斗 C 区面板与明细带提示的 WCAG 不低于 4.5:1。C 明度三档——战斗屏信息面高于世界中,世界中高于世界底。D 文字禁压纹理——文字框背景中带灰度 std 不高于 18。F 文字在——菜单标题框内与中位灰度差大于 60 的像素占比落在 2% 到 55%。B/C/D 只在清单含 `shot_battle.png` 时跑,F 只在含 `shot_menu.png` 时跑,其余屏只跑 A。全过 0,缺参数或任一失败 1。
**判据或口径**:A 屏级骨架——PNG 存在、任一边 1280、灰度 std 不低于 8(取值在圣经 §7.2 文字 4.5:1 推论下界之下、正常实测最低 19.3 之上)、唯一色数不低于 40(正常实测地板 60 的 2/3,低于一切正常屏;色数异常回落=画面异常信号)。B 文字对比——战斗 C 区面板与明细带提示的 WCAG 不低于 4.5:1。C 明度三档——战斗屏信息面高于世界中,世界中高于世界底。D 文字禁压纹理——文字框背景中带灰度 std 不高于 18。F 文字在——菜单标题框内与中位灰度差大于 60 的像素占比落在 2% 到 55%。B/C/D 只在清单含 `shot_battle.png` 时跑,F 只在含 `shot_menu.png` 时跑,其余屏只跑 A。全过 0,缺参数或任一失败 1。
**已知坑与适用边界**:截图必须由窗口化 `shot_probe` 产出;headless 没有渲染面,截图是空的。`shot_meta.json` 缺失时 B/C/D 直接判 meta 几何缺失,不会跳过。尺寸断言按「任一边等于 1280」放行;1920×1080 截图两边都不等于 1280,会被判非工程档,与文件头「1920 档 1.5×」说明不一致,按源码为准。焦点预算是目检项,机检不判。
+33 -40
View File
@@ -1,4 +1,4 @@
# 生图提示词卡(角色级资产)v2.12
# 生图提示词卡(角色级资产)v2.14
> **性质**:美术清单生图通道(✦ 用户自跑,现走线上 API)的执行侧文件——每资产一段**自包含完整提示词**:正向 = 通用底座+主体+动作已拼妥、负向 = 通用底座+增补已并妥,整段复制直接贴进工作流即可,**不需要读其他文件、不需要拼装**。人物规格转写自 [character-design.md](character-design.md)(人物设计 v1.0,自 art-bible §5 迁出,圣经 §5 为存根),风格/色彩条款转写自 [art-bible](art-bible.md)(§4.1 主色板 / §4.2 语义色规则);冲突时人物规格以 character-design 为准、色彩以 art-bible 为准。
> **边界**:本文件只管**角色级**资产的生图通道。图标/格面/样张走脚本管线(⚙ 代理出),规格在 art-bible §4.6 与 [art-assets-checklist](art-assets-checklist.md),不需要提示词。**场景级资产(营地场景图的背景层与八个物件层)另立 [camp-scene-prompts](camp-scene-prompts.md);战斗舞台背景层与连续地面层另立 [battle-stage-prompts](battle-stage-prompts.md),本文件不覆盖**;两卡的角色/场景分工以「谁的资产谁出卡」为界,同一段提示词不两处维护。战斗舞台的小石台件与护甲类型图标三枚的**出图工单**登记在本文件 §5;§5 只把各权威节的定值收进逐件工单,不立新值。意图动画三档是动画资产,等一屏样张锁方案后另立规格卡,本文件不覆盖。
@@ -290,7 +290,7 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon
> **定值纪律(§8 头注 定值单点纪律)**:本节**指路不立值**——色值 = 圣经 §4.1(含场景环境子板)、尺寸与缩放 = §8.2、明度带 = §2、甲档 = character-design §5.3、命名 = §8.3 + asset-path-map。本节新增零定值;凡圣经未定的值,一律进本节 §5.5 缺口,不在本节填空。
> **验收标注纪律**:逐条按三档标 `←机检: <断言>` / `←目检: <判据>` / `←方向性`,照圣经头注 2026-10-06 用户拍板的写法。
> **流程**:出图前后一律走 §0 五步;出图登记义务照 remote-gen-prompts 头注轻量口径(用途+生成时间必注,其余参数有则记),随候选图存 `artwork/candidates/<资产名>/`;登记不作正稿遴选前置。
> **产出状态**:组二地台件与组三护甲三枚已按各节 ⑤「程序化产出即终稿」产出入包(`scene_stage_plaza.png` 48×12、`ui_armor_light/ward/heavy.png` 24×24,路径见各组 ① 字段;登记=战斗一屏样张批,合并提交 3b66d1a6);组一背景插画已迁至 [battle-stage-prompts](battle-stage-prompts.md)(仍待出图),组四立绘重产仍待出图。
> **产出状态**:组二地台件与组三护甲三枚已按各节 ⑤「程序化产出即终稿」产出入包(`scene_stage_plaza.png` 48×12、`ui_armor_light/ward/heavy.png` 24×24,路径见各组 ① 字段;登记=战斗一屏样张批,合并提交 3b66d1a6);组一背景插画见 [battle-stage-prompts](battle-stage-prompts.md)(三张背景+共用地面已入包并已实装消费——按关选图+连续地面层落码,四柱光柱层与平色底已退役),组四改按档派生(不重画)已落位:九件按原稿分辨率入包、显示按三档绝对高缩放(定值单点=art-bible §8.2,派生管线见 §5.4 工单)。
### 5.1 组一 · B 区舞台背景插画(1 件)
@@ -375,25 +375,27 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon
- ←方向性: 冷灰与全作暖底成材质对比(§5.3),不靠明度差与地台 `#968264`(L≈0.234)抢读——立绘与地台的可辨归 §5.1 轮廓通道
- 来源与工艺:♻ 素材站 plate armor 肩甲/胸甲类图标改色 → 闸四道;⚙ 兜底 24×24 内肩 + 胸两块甲板,与全作暖底成材质对比(§5.3 冷灰金属与暖底对比)
### 5.4 组四 · 主角与三 Boss 立绘重产(4 件)
### 5.4 组四 · 站桩立绘按档派生(9 件,不重画)
**四件共用字段**
> 本节是站桩立绘的**按档派生**工单:现有形象即终稿、禁改形象;清晰度靠保留原稿分辨率+显示按三档绝对高缩放解决,不重画、不生成。
**九件共用字段**
| 字段 | 值 |
|---|---|
| ① 路径与命名 | `game/assets/art/character/character_hero_portrait.png` + `game/assets/art/character/character_enemy_<enemy_id>.png`(域键 `character`,对象键 = `hero` / enemy_id,命名照 §8.3 与 asset-path-map §3 现役写法) |
| ② 尺寸档与像素网格 | **源档高逐键** = 主角 48 / ogre_chief 74 / drider 90 / duergar_king 94(§8.2 立绘源档表,逐件值见本节 5.4.1–5.4.4);**宽随源图宽高比,纵横倍率恒等**(§8.2 站桩立绘槽位 = 高定宽随条,禁把立绘塞进统一方框强拉);九宫格 = 否;显示一律 **×2 整数档** = 96 / 148 / 180 / 188;**乙类**(角色与单位精灵)——乙类允许非整数,本批按 §8.2 定案走 ×2 整数档 |
| ③ 色板约束 | 进**语义/UI token 板**(§4.1 分层①);**48 余量 0**(2026-10-28 用户裁:本组新增卓尔浅紫灰皮 1 枚,全板余量 2 → 0,额度已用尽)。逐件沿用 character-design §5.4 / §5.5 已登记色值;该两节只给形容词未给色值的部件,**2026-10-28 用户裁已落值**——四处换色合并(零额度)+ 卓尔浅紫灰皮新增 1 枚,逐件取值见本节 5.4.1–5.4.4,额度账见 §5.5 缺口 4。**石君王岩石板甲 = 重甲甲材质色、与 §5.3.3 同一枚,工单直接引 `#868C9A`、不另计额度**。单张像素域色数 ≤32。第二道门同本节 5.1 |
| ② 尺寸档与像素网格 | **源 = 原稿像素网格**(八敌 `pixel-1`、主角手修 2× 三态稿),紧裁后原样入包,**禁再降采样**;**显示档 = 三档绝对高**——小 96(地精/巨蜘蛛/灰矮人)、中 144(主角/钩爪恐魔/熊地精)、大 188(食人魔酋长/蛛化卓尔/灰矮人石君王),定值单点 = art-bible §8.2;显示倍率 = 档高 ÷ 源高,NEAREST,宽随源图比例(高定宽随、纵横倍率恒等,禁方框强拉);九宫格 = 否 |
| ③ 色板约束 | 色值以**现役稿**为准,本批零新增色、零换色;单张像素域色数 ≤32(`pixel-1` 与手修 2× 稿实测均 ≤32)。`#A79CB8` 保留在板、本批不消费,色板额度议题另批讨论 |
| ④ 明度带归属 | **世界中层 L 0.22–0.45**(§2 世界中层 = 格底顶面 / 角色 / 物件)——判定对象 = 角色体块主色。描边与落影底盘属轮廓通道(character-design §5.1)、紫赤点缀属 §4.2 色相独占的语义色,两者都不按明度带判定 |
| ⑤ 是否程序化件 | 否 → **须手绘**。口径 = **精细手绘像素**(2026-10-14 用户裁:仍是像素风,手绘像素簇 + 更高源密度;不是插画、不是 HD-2D、不回退高清图);**禁 AI 降采样当终稿**。现行 AI 降采样立绘 = 占位态,按 §7.1 占位完成条款须在终稿闸前换代 |
| ⑤ 是否程序化件 | 否 → **零绘制**:源 = 现有原稿,本批不生成、不重画(现有形象即终稿)。§7.1 占位完成条款对本组不适用——现役稿即终稿 |
| ⑥ 验收判据 | 见下方共用验收 |
| ⑦ 出图操作要点 | 见下方工艺要点(手绘,不产生图提示词) |
| ⑦ 操作要点 | 见下方派生要点(零绘制,不产生图提示词) |
**共用验收(四件都要过)**
- ←机检: 源档高逐位等于 48 / 74 / 90 / 94,显示 = 源 ×2(96 / 148 / 180 / 188),过滤 = NEAREST
- ←机检: 逐件显示档高与归档一致(小 96 / 中 144 / 大 188),过滤 = NEAREST,纵横倍率恒等;源高低于档高者按已接受放大项登记(主角 92 / 钩爪 94 / 熊地精 123 / 地精 90 / 巨蜘蛛 81)
- ←机检: 单张像素域色数 ≤32
- ←机检: 脚底基线对齐(派生管线四条:等比整数缩放 + 降色 ≤32 + 脚底基线对齐 + 命名合规)
- ←机检: 脚底基线对齐(紧裁 + 底中锚;命名合规、像素域色数 ≤32 同旧)
- ←机检: 主角描边 = `(40,19,13)`;敌方描边取暖白族(非黑、非深褐)—— character-design §5.1 主角描边例外条
- ←机检: Alpha 直出——不透明区外缘 1px 环内无生成底残留(无 R/G/B 三通道均 ≥230 且 alpha > 0 的像素),防抠图白边
- ←机检: 零 HSV 300°–345° 像素(drider / duergar_king 两 Boss 除外,§4.2 独占)
@@ -401,48 +403,39 @@ Seamless tileable pixel art texture of dry dirt ground, top-down, for a dungeon
- ←目检: 放大 4 倍,轮廓与衣服是成组的像素,不是降采样噪点(三判据①)
- ←目检: 显示 96–188px 下脸、铲、旗、物种能认出来,不必先读名字(三判据②)
- ←目检: 显示仍用邻近采样,不出现插画那种平滑渐变(三判据③)
- ←方向性: 精细手绘像素气质——不是插画、也不是半像素半高清
- ←方向性: 现有形象即终稿,本批禁改形象
三判据出处 = `reports/美术审计-cursor会话存档-2026-10-14.md` §2.2。
**工艺要点(手绘)**
**派生要点(零绘制)**
1. 出件顺序 = 先主角、再三 Boss(Alpha 范围 = 主角 + 三 Boss 重产,其余敌种当前可读则保留到 Beta)。
2. **源密度判据 = 三判据②**:显示 96–188px 下脸、铲、旗、物种可认——照这条反推源档即可,逐键定档已完成(§8.2),本批不必再猜档位。
3. 手绘起稿顺序 = 剪影(§5.1 archetype)→ 体块主色 → 暗部与受光 → 描边 → 落影底盘。
4. 逐件 2–3 版候选;登记照 remote-gen-prompts 头注轻量口径(用途+生成时间必注,手绘作者有则记),随候选图存 `artwork/candidates/<资产名>/`。
5. 候选评审 = 并排横评,**隐去文件名与来源后按三判据逐条判读**(§0 五步第 1 步「便于横评」的手绘侧落法),不靠记忆与印象拍板。
6. 出件 = 透明 PNG(Alpha 直出,禁先出白底图再抠);入包前过 §8.3 色板检查器(报新增色 / 近色告警 / 超 48 上限拦截)。
1. 出件顺序 = 先主角三态,再三 Boss,再其余四敌(同管线,无绘制差异)。
2. 每件 = `pixel-1`/手修 2× 稿紧裁(去透明边、底中锚)→ 原样落 `game/assets/art/character/character_*`;**不做 `dom_block_resize`**。
3. 入包前过 §8.3 色板检查器与 standee_asset_check(按 §8.2 显示档校验逐件档高与纵横倍率)。
4. 桩盒宽 150 与 >150 溢出档的实装口径归代码批(art-bible §8.2 排版条);食人魔超宽 8px 为已接受项。
**5.4.1 主角(源 48 / 显示 96)**
**5.4.1 主角(中档 144)**
- 形象 = character-design §5.4 形象锚逐字执行:蓝兜帽取下披肩、暖米白上衣、深棕工装裤、额前护目镜、半指手套、卷裤脚皮护膝、圆头挖掘铲、结构式冒险背包配朱红矩形旗、腰挂提灯
- 已登记色:兜帽 `#2E86DE` / 上衣 `#EFE3C8` / 长裤 `#6B4A2E` / 皮革 `#8A5A34` / 眼 `#33261B` / 旗 `#C63D22` / 描边 `(40,19,13)`
- 已落值(2026-10-28 用户裁):**铲刃浅铁灰 = `FOG_MEMORY_INK #C4C4C4`**;**提灯铜色 = `GOLD_DEEP #B07A14`**——两件均走换色合并、零额度(character-design §5.4 对这两件只有形容词,账见 §5.5 缺口 4)。代价已随裁定接受:`#C4C4C4` 一色两岗(语义岗 = 迷雾记忆墨 §6.5)、`#B07A14` 属金族(§4.2 金只说收益与兑现);两者均为角色随身件材质色,不进信息层与语义物件岗
- 破例记账:背包 + 旗 = 主角对 §5.1「对称」的唯一破例组,旗面朝向恒定画右;轮廓凹凸预算按背包 + 旗整组记账
- 朝向:战斗画面的侧身面向怪物形象属状态图(§5.4 生成顺序口径);重产沿用现役朝向,不重新裁定
- 形象 = 现役稿即终稿,character-design §5.4 形象锚已兑现于现役素材;朝向沿用现役,不重新裁定
- 色 = 以现役稿为准(§5.5 缺口 4 的额度账随色板议题另批处理)
- 源 = `hero-ref/edit/normal_2x.png`(内容 88×92);attack/hit 用 `attack_2x.png`/`hit_2x.png`
**5.4.2 食人魔酋长 ogre_chief(源 74 / 显示 148)**
**5.4.2 食人魔酋长 ogre_chief(大档 188)**
- 档位 = 精英档(形状仍守精英档:普通怪形 + 恰一处垂直延伸 = 头顶骨与羽冠,底盘不变;第一关关底 Boss 战,不升 Boss 形)
- 甲档 = 轻甲 → 甲面覆盖率 ≈ 0:皮条 / 骨饰点缀、裸身为主,零甲板零符纹
- 主色域 = 暖褐皮、圆肚;**暖褐皮 = `暖石 #B8A582`**(2026-10-28 用户裁:换色合并、零额度;体块主色带 §5.4 ④ L 0.22–0.45 校验 L≈0.387 ✓;character-design §5.5 该行原只有形容词)
- 档位 = 大型(三场 Boss 战全归大型);形状仍守精英档剪影——普通怪形 + 恰一处垂直延伸(头顶骨与羽冠),底盘不变
- 甲档 = 轻甲(皮条/骨饰点缀、裸身为主,零甲板零符纹)——现役稿已如此
- 源 = `ogre_chief/pixel-1.png`(158×189);显示宽 157 超桩盒 150 为已接受项
**5.4.3 蛛化卓尔精灵 drider(源 90 / 显示 180)**
**5.4.3 蛛化卓尔精灵 drider(大档 188)**
- 档位 = Boss(敌类中唯一允许锐角与不对称者,体量最大)
- 甲档 = 魔法护甲 → 符纹饰带(暖白,覆盖率居中);蛛腹几丁质属天然甲壳,不计甲档
- 独占:紫赤 `#8F2F6A`(色相 323°)+ 形状独占双通道;全项目色相 300°–345° 只许本件与 5.4.4 出现
- **卓尔上体浅紫灰皮 = `#A79CB8`**(2026-10-28 用户裁:**新增 1 枚**,入 §4.1 分层①——在册紫族四枚全部语义岗占用且 L <0.22,无一可复用)。体块主色带 L 0.22–0.45 校验 L≈0.355 ✓;色相 264° 避 300°–345° 禁入带,紫赤独占仍归 `#8F2F6A`。**对比实测(本节新算,此前未给值)**:对深素底 `#282220` **6.04:1**、对舞台底 `#3E362C` **4.57:1**——两处均过 §4.1 图形 ≥3:1 门槛
- 大体档:显示 180 > 150 → 允许向上溢出盒顶(§8.2 站桩排版③ 甲案;溢出量 N 由实装批用真图复算 x 区间定,血条仍落底)
- 档位 = 大型;紫赤 `#8F2F6A` 色相独占 + 形状独占双通道维持现役稿
- 甲档 = 魔法护甲(符纹饰带)——现役稿已如此
- 源 = `drider/pixel-1.png`(140×189);皮色 `#A79CB8` 保留在板、本批不消费
**5.4.4 灰矮人石君王 duergar_king(源 94 / 显示 188)**
**5.4.4 灰矮人石君王 duergar_king(大档 188)**
- 档位 = Boss(锐角与不对称,体量最大档)
- 甲档 = 重甲 → 金属甲板(冷灰,覆盖率最大)
- 独占:紫赤 `#8F2F6A` + 形状独占双通道;大地 / 岩石主题
- 岩石板甲与灰皮(2026-10-28 用户裁,character-design §5.5 该行原只有形容词):**岩石板甲 = 重甲甲材质色,与 §5.3.3 同一枚 → 直接引 `#868C9A`,不另计额度**;**灰皮 = `STONE #786E62`**(按**次级皮**口径——石君王重甲覆盖率最大、板甲视同体块主色,故灰皮属次级皮、不受 L 0.22–0.45 约束;换色合并、零额度)
- 大体档:显示 188 > 150 → 溢出盒顶同 5.4.3
- 档位 = 大型(锐角与不对称);紫赤独占 + 岩石板甲维持现役稿色
- 源 = `duergar_king/pixel-1.png`(133×189)
### 5.5 缺口(四条 · 缺口 1/2/4 于 2026-10-28 已裁转指路,缺口 3 结论已立)
+2 -2
View File
@@ -17,8 +17,8 @@
| 素材 | 状态 | 需求文档 |
|---|---|---|
| 主角战斗小人(待机/攻击/受击三态) | ✅ B区站桩三态全接(2026-09-29 迭代 6 T3:normal/attack/hit 48px 档入包+挂事件切换+结算回 idle,短驻自回;棋盘 1.5×/脚锚25%/椭圆影在役不变;hit 态源=new-hit.pxo 已程序导出) | [character-design](character-design.md) + [art-prompts](art-prompts.md) §2 |
| 八敌种形象(L2 熊地精=bugbear 复用,不单列) | ✅ B区站桩八敌真图服役(2026-09-29 迭代 6 T1/T2:pixel-1 源→48px 档统一比例/底中锚/众数投票降采样,character_enemy_<键>.png 按常量入位,字形回退退役为缺位兜底;素材不入 git 本地在盘)。八敌源档已定(36–94,art-bible §8.2),旧统一 48 档为过渡形态,新档重产落位归 PRD(tools/pixelize_candidates.py `STANDEE_TIER_H` 已改,产出与定档总图一致) | [art-bible](art-bible.md) §5 + [art-prompts](art-prompts.md) §3 |
| 主角战斗小人(待机/攻击/受击三态) | ✅ B区站桩三态全接(2026-09-29 迭代 6 T3:normal/attack/hit 48px 档入包+挂事件切换+结算回 idle,短驻自回;棋盘 1.5×/脚锚25%/椭圆影在役不变;hit 态源=new-hit.pxo 已程序导出;2026-11-01 显示档改中档 144(源=手修 2× 三态稿,art-bible §8.2 v3.32))✅ 已交付(2026-11-02 迭代 48:三态按原稿分辨率入包、显示按档缩放落位,机检全绿) | [character-design](character-design.md) + [art-prompts](art-prompts.md) §2 |
| 八敌种形象(L2 熊地精=bugbear 复用,不单列) | ✅ B区站桩八敌真图服役(2026-09-29 迭代 6 T1/T2:pixel-1 源→48px 档统一比例/底中锚/众数投票降采样,character_enemy_<键>.png 按常量入位,字形回退退役为缺位兜底;素材不入 git 本地在盘)。2026-11-01 显示档换代=三档绝对高 96/144/188(art-bible §8.2 v3.32)✅ 已交付(2026-11-02 迭代 48:八件源 = 原稿不降采样入包、显示按档缩放落位,闸件新口径全绿) | [art-bible](art-bible.md) §5 + [art-prompts](art-prompts.md) §3 |
| 意图准备动画三档 | ◐ | [art-bible](art-bible.md) §4.6.4 |
## P2 图标与格面(可与样张并行)
+1 -1
View File
@@ -27,7 +27,7 @@
|---|---|---|
| `character/` | 角色棋盘帧 + B 区立绘 | character_hero_idle/walk(棋盘 32×32 朝左基准)、character_hero_portrait(B 区立绘 46×48)+ character_enemy_<键> 八敌 |
| `fx/` | 特效帧 | shovel_swing_f0/f1/f2(挥铲三帧,握把锚 (18,12)) |
| `scene/` | **场景图**(背景层 + 地面层 + 围墙层 + 可点物件层;营地场景图首批) | 营地 10 张:`scene_camp_bg`(背景层,不透明全幅=天空+远山+地面+门洞小路)+ `scene_camp_wall`(围墙层,透明底、门洞留透明缺口)+ `scene_camp_gate / forge / chest / notebook / dummy / board / campfire`(七个可点物件)+ `scene_camp_tent`(承载件,不可点)+ `scene_stage_bg_dungeon` / `scene_stage_bg_underdark` / `scene_stage_bg_deep_underdark`(B 区战斗舞台背景层三关变体,✦ 插画级,顶部空区+远景天然洞壁,不画近景地面,按 board_type 选图)+ `scene_stage_ground`(B 区连续近景地面层,✦ 插画级,泥土/砂砾/碎石+顶缘分隔带,跨关恒定)+ `scene_stage_plaza`(B 区角色脚下小石台,48×12 九宫格件)——B 区战斗舞台背景与连续地面 2026-10-31 已入包;登记超前:营地场景图批落地前盘上未建 |
| `scene/` | **场景图**(背景层 + 地面层 + 围墙层 + 可点物件层;营地场景图首批) | 营地 10 张:`scene_camp_bg`(背景层,不透明全幅=天空+远山+地面+门洞小路)+ `scene_camp_wall`(围墙层,透明底、门洞留透明缺口)+ `scene_camp_gate / forge / chest / notebook / dummy / board / campfire`(七个可点物件)+ `scene_camp_tent`(承载件,不可点)+ `scene_stage_bg_dungeon` / `scene_stage_bg_underdark` / `scene_stage_bg_deep_underdark`(B 区战斗舞台背景层三关变体,✦ 插画级,顶部空区+远景天然洞壁,不画近景地面,按 board_type 选图)+ `scene_stage_ground`(B 区连续近景地面层,✦ 插画级,泥土/砂砾/碎石+顶缘分隔带,跨关恒定)+ `scene_stage_plaza`(B 区角色脚下小石台,48×12 九宫格件)——B 区战斗舞台背景与连续地面 2026-10-31 已入包;营地 10 张 2026-11-01 随迭代 47 卡④ 入包(`scene_camp_*` 十件在役、`TEX_CAMP_*` 十键消费;用户游戏内终审如有置换,按本行键名同径替换) |
| `board/` | 砖面/封印印记(三关换皮 + 封印印记件) | terrain_floor_<board_type>_<n>.png(三关地面系)、seal_mark.png |
## 4. 坐标/朝向等工程侧约定备查
+6 -6
View File
@@ -1,7 +1,7 @@
# 战斗舞台背景 · 分层生图提示词卡 v1.8
# 战斗舞台背景 · 分层生图提示词卡 v1.9
> **性质**:B 区战斗舞台背景(顶部空区+远景天然洞壁+近景连续泥土地面+分隔带)的出图执行侧文件。背景按三关出三张变体,地面三关共用一张;场景级资产,与角色级 [art-prompts](art-prompts.md) 并列,两文件互不覆盖。
> **依据**:场景构成与图层归属 = [art-bible](art-bible.md) §6.1;三关方向 = art-bible §6.3;色板 = art-bible §4.1(战斗屏场景环境子板);尺寸 = `game/data/tables/battle_layout.tres`(背景读 `stage_h`;地面读 `ground_h`,该字段由地面层实装批新增并回填);命名与路径 = [asset-path-map](asset-path-map.md);后处理 = [art-pipeline-tools](art-pipeline-tools.md)。
> **依据**:场景构成与图层归属 = [art-bible](art-bible.md) §6.1;三关方向 = art-bible §6.3;色板 = art-bible §4.1(战斗屏场景环境子板);尺寸 = `game/data/tables/battle_layout.tres`(背景读 `stage_h`;地面读 `ground_h`,字段已回填 100〔2026-11-02 迭代 48 落表〕);命名与路径 = [asset-path-map](asset-path-map.md);后处理 = [art-pipeline-tools](art-pipeline-tools.md)。
> **边界**:只管三张背景变体与一张共用地面的提示词与验收;角色、格面、图标、小石台 `scene_stage_plaza.png` 与样张走 art-prompts 与脚本管线,不在本卡。
> **建立**:2026-10-31 · 状态:三关背景变体与共用地面已按本工单出图并入包(选定=dungeon v10c/underdark v10c/deep_underdark v10c/ground v12b,落点与读数见 art-bible §6.1「B 区舞台背景与共用地面的交付绑定」);出图通道由作者自定(参考候选可用内置 ImageGen,水印可留;入包终稿须干净)。
@@ -12,7 +12,7 @@
1. **出图**:按 §2 把提示词贴进生图渠道;每次出图先放 §1 的风格参考图。**先只出 dungeon 背景 1 张**,作者确认风格前缀后,再出 underdark / deep_underdark 两张变体与连续地面层。
2. **入库**:候选原图放 `artwork/candidates/scene_stage_bg/`(三关变体用 `dungeon_*` / `underdark_*` / `deep_underdark_*` 命名)与 `artwork/candidates/scene_stage_ground/`;`_登记.txt` 记用途与生成时间。
3. **后处理**:三张背景不去底(不透明全幅);连续地面层去底转透明(顶缘以上键控)+最近邻降采样+色板量化+底测试条;工具清单与已知边界见 [art-pipeline-tools](art-pipeline-tools.md)。
4. **转正**:终稿转入 `game/assets/art/scene/`;三张背景按 `board_type` 选图、连续地面层接线与布局表 `ground_h` 字段由实装批落码。
4. **转正**:终稿转入 `game/assets/art/scene/`;三张背景按 `board_type` 选图、连续地面层接线与布局表 `ground_h` 字段均已实装落码〔2026-11-02 迭代 48〕。
---
@@ -92,7 +92,7 @@ Do not add any of the following: realistic, photorealistic or 3D rendering; pain
**画什么**:全宽近景地面——**干净压实泥土为主**,整片平整、中低明度;全幅只保留**零星 3–5 颗小石**,散点分布、不成排不成堆;顶缘为不规则泥土边+阴影缝,可带 2–3 颗小石;中央平缓留空;地面跨三关恒定。
**不画什么**:瓷砖、砖缝、规则铺装、石板块、踢脚线/直亮边;草、木地板;远景/洞壁/天空;角色、生物、道具、火把/灯;中央大石或碎石堆挡站位;满铺碎石、密集砂砾、成排/成堆碎石、亮色浅棕大片、泥点噪声、垃圾杂物。
**出图画布**:终稿 = 基准屏宽 × `ground_h`(`battle_layout.tres` 新增字段,地面层实装批回填);本件是极宽薄条,平台无对应宽高比时按横向可平铺纹理条出图(左右无缝,宽度取平台方档,高度取 `ground_h` 的整数倍),终稿裁/平铺到目标宽高比,禁横向拉伸。试片阶段可按构图比例先出,终稿尺寸读表。
**出图画布**:终稿 = 基准屏宽 × `ground_h`(`battle_layout.tres` 字段已回填 100);本件是极宽薄条,平台无对应宽高比时按横向可平铺纹理条出图(左右无缝,宽度取平台方档,高度取 `ground_h` 的整数倍),终稿裁/平铺到目标宽高比,禁横向拉伸。试片阶段可按构图比例先出,终稿尺寸读表。
**正向提示词**:
@@ -167,11 +167,11 @@ Do not add any of the following: realistic, photorealistic or 3D rendering; pain
## 5. 待裁与待办(不阻塞提示词成文)
1. **三张背景按 `board_type` 选图**——游戏代码改动,走需求卡片+迭代;背景 `wall_ambient` tint 退役,棋盘/世界的该槽保留。
2. **`ground_h` 字段**——布局表新增字段,地面层实装批回填;本卡试片按构图比例,终稿读表。
2. **`ground_h` 字段**——布局表新增字段,已由实装批回填 100〔2026-11-02 迭代 48〕;本卡试片按构图比例,终稿读表。
3. **冷/灰色入板**——underdark / deep_underdark 需要的冷蓝灰、灰黑与矿脉色按 art-bible §4.1 战斗屏场景环境子板两道门入板;三张背景共用该子板 ≤32 色。
4. **地面层出图工艺**——极宽薄条;默认横向可平铺纹理条(左右无缝);若作者要整幅不拼接,另议。
5. **小石台 `scene_stage_plaza.png`**——先保留;是否退役归实装批/后续裁决。
6. **四柱光柱程序层退役**——光柱不迁入背景;背景资产入包后该程序层退役(代码批)。
6. **四柱光柱程序层退役**——光柱不迁入背景;该程序层已随背景实装批退役〔2026-11-02 迭代 48〕。
7. **风格前缀**——首张 dungeon 背景试片后由作者确认,确认后才出另外两张与地面层。
8. **可选要素池**——按 §3.2 可选项本版关闭;要加走本卡修订。
+11 -7
View File
@@ -1,4 +1,4 @@
# 营地场景 · 分层生图提示词卡 v1.2
# 营地场景 · 分层生图提示词卡 v1.4
> **性质**:营地场景图(1280×800,一张可点击场景图 + 十张分层:背景层 1 + 围墙层 1 + 八个物件层)的出图执行侧文件。**场景级资产,与角色级 [art-prompts](art-prompts.md) 并列,两文件互不覆盖**。
> **依据**:色彩与氛围 = `reports/提案-营地色彩与氛围脚本-2026-10-23.md`(本卡不复述色值);坐标与层序 = `artwork/2026-10-23-营地场景/布局草案-1280x800.html`;物件命名与消费链 = [asset-path-map](asset-path-map.md);画法与交付形态 = [art-bible](art-bible.md) §6.2。冲突时色彩以色彩脚本为准,画法以 art-bible 为准。
@@ -105,6 +105,8 @@ Do not add any of the following: realistic, photorealistic or 3D rendering; pain
| 笔记本 | 5 | 100×80 | 200×160 | §3.7 |
| 篝火 | 6 | 160×160 | 320×320 | §3.8 |
**落位实测(2026-11-01 迭代 47 卡④,锁定矩形 contain 呈报备案追认值)**:布告板 130×121/门扇 240×211/木桩 120×180/锻炉 240×193/帐篷 251×170/宝箱 106×90/笔记本 100×66/篝火 160×149——贴图锚定=底中心(帐篷/锻炉/宝箱/篝火/笔记本)+顶锚(门扇悬挂/布告板挂墙);命中矩形按锁定值。换算式登记(源 2× 档→落位尺寸)存 artwork 工作区,git 提交 3443890d 一线可考。
**3.1 布告板(→ 图鉴)**
```
A wooden notice board hung on a wall, with two or three blank pinned papers, no writing on them, one corner of a paper slightly curled; wood brown #8A5A34 frame, warm tan stone #C9AF83 papers.
@@ -162,6 +164,8 @@ A campfire made of a ring of grey stones around crossed stacked logs with a warm
- 目检:密排竖木桩、桩顶削尖、不透缝、无横木;门洞 x1040–1520 **完全透明**(透出 bg 小路)、无门扇
- 单张色数 ≤32(量化后)、缩放为整数倍无拉伸痕迹
> **量化与缩放实况注记(2026-11-01 迭代 47 卡④ 落地)**:围墙层与八件已按营地主色板 **32 色重量化回写**(art-bible §4.1 子板行——违例对 0);落位缩放实况=源 2× 档经后处理换算为锁定矩形 contain(×0.1934–0.4404 非整数倍),「整数倍无拉伸痕迹」判据的机检面以落位实测尺寸与目检兜底执行。
**八件**
- 单件居中、四周留边、整件完整不出画
- 底色均匀 `#F2F2F2`、奶油描边闭合(去底脚本要能识别到屏障)
@@ -171,10 +175,10 @@ A campfire made of a ring of grey stones around crossed stacked logs with a warm
---
## 5. 待裁(不阻塞出图,阻塞坐标表与定稿)
## 5. 已裁(2026-11-01 用户裁,随迭代 47 卡④ 开工门销号;不再阻塞坐标表与定稿)
1. **帐篷尺寸**:现 300×170 待重定,重定后按比例重出
2. **门扇高宽**:现 240×220,围墙带只有 43px 高;围墙独立成层后门扇叠在门洞上,两者高宽关系待裁
3. **布告板位置**:现 y330 悬空在围墙下方,建议 `(845, 268, 130, 140)` 挂回围墙带
4. **描边颜色追认**:本卡按奶油色(去底技术前提);若改参照物的深灰褐,需换去底方案
5. **营地环境子板色值**:art-bible §4.1 为数值单点,色值待作者拍板,本卡不复述
1. **帐篷尺寸**:300×170 追认现值(各素材第一张样本稿已过审为终稿;重定即按比例重出、不裁)
2. **门扇高宽**:240×220 追认现值,坐标按门洞 x520–760 对齐(§2.3);围墙带桩身高 43px、门扇叠在门洞上的叠放关系随此锁定
3. **布告板位置**:采纳建议值 `(845, 268, 130, 140)` 挂回围墙带(y330 悬空案弃);终值随坐标表(卡④ `camp_scene_layout.tres`)落盘
4. **描边颜色**:奶油色追认——去底脚本「奶油描边膨胀 3px 当屏障」的技术前提随现值锁定(§1 注记同源);改深灰褐须换去底方案全批重出,不裁
5. **营地环境子板色值**:不前置拍板——T1 量化场景实际用色后按 art-bible §4.1 两道门登记(语义检查+RGB 三通道差 ≥8/255),本卡仍不复述色值
+2 -2
View File
@@ -42,7 +42,7 @@
- **兜帽披肩**:兜帽**不戴在头上**,取下披于肩上——露出棕色短发与整脸(表情可读),蓝色兜帽披在肩头仍是最近的"己方"识别点;三态同款披肩。
- **圆头挖掘铲(武器)**:持铲不持剑——**铲 = 本作核心动词"挖安全格"的角色化**,挖掘与攻击共用同一动作语义(攻击表现即挥铲,后续攻击类表现优先围绕铲展开)。画法:圆头铲刃 + 木柄(木柄走木色族 `#8A5A34`,铲刃浅铁灰、不做冷灰重甲质感);**待机态 = 铲插立在地上、一只手扶在铲柄顶端**;攻击/受击态仍为手持。刀光/铲击光效/弹道不进精灵图(归战斗演出另立资产)。
- **冒险背包与背包旗(身份件)**:背负**结构式冒险背包**——翻盖+皮扣带的帆布背包(暖卡其布面,皮革件走木色族),**宽 ≈1.5× 体宽**:双肩背负、两侧各略超出身形一点;**禁圆麻袋化**(措辞弃"鼓胀掳获袋")、**禁特里式 3× 超宽**(反面参照:旷野之息特里;正面参照:合金弹头双主角大背包、超级马里奥奇诺比奥队长)。**旗杆插在背包一侧**(不要求完整可见,**被头部遮挡一部分亦可**),旗子**尺寸大于头部**,短杆**矩形**旗旗面 = **旗朱红 `#C63D22`**(人设背包旗与棋盘封印色**脱钩**——封印色仅作用于棋盘格封印旗,色史归 art-bible §4.1;人设旗形为矩形非三角,以 normal/hit 定稿成图为基准),把"宣告落旗"的角色化焊在人设上,主角即背包旗持有者(**动作呈现名 = 封印**,见 art-bible §3.2;背包旗**不**视作封印印记的携带形态——旗面旗朱红矩形,与棋盘封印黑旗形色均不同,仅保留"主角即背包旗持有者"的身份叙事)。三条纪律:①旗面红=旗朱语义**仅旗非服饰**(负向 `no red clothing` 不拦截正向 `red flag`——红服饰禁令与红旗的边界由正向句显式锁色值;封印黑仍为棋盘格封印旗专属色,圣经 §4.1 不变);②背包+旗 = 主角对 §5.1"对称"的**唯一破例组**(语义配件非装饰),旗面朝向恒定画右、跨素材一致;③轮廓凹凸预算按"背包+旗"整组记账,样张(圣经 §1.4)验证背负后剪影仍窄、仍可辨、不超格宽。
- **护目镜与腰灯**:**护目镜推在额前**(兜帽披肩后直接戴于额上,不戴眼上——眼睛是表情载体;皮革带+圆镜片,防尘挖掘者的职业信号);**提灯挂腰间,定案不手持**(小号铜色提灯,**不点亮**;空间光照属圣经 §2 明度分层允许域,**提灯点亮为候选**,点亮形制(光晕半径/暖色值/与舞台光照关系)归整屏样张重议;头部饰品唯一化,头灯方案已弃)。
- **护目镜与腰灯**:**护目镜推在额前**(兜帽披肩后直接戴于额上,不戴眼上——眼睛是表情载体;皮革带+圆镜片,防尘挖掘者的职业信号);**提灯挂腰间,定案不手持**(小号铜色提灯,**不点亮**;空间光照走圣经 §2 明度分层,**提灯点亮为候选**,点亮形制(光晕半径/暖色值/与舞台光照关系)归整屏样张重议;头部饰品唯一化,头灯方案已弃)。
- **衣着细节**:**棕色半指手套**(挖土护手,露指保灵巧读感)+ **裤脚卷起、棕色皮护膝**(挖掘跪地的工装感)——小件走皮革木色族,不占剪影凹凸预算,不新增语义色。
- **三态**:① 待机 = 窄、直立、对称(§5.1 小人原型,含背包、旗与提灯记账);② 攻击 = 允许破对称,整体仍窄、不超格宽;③ 受击 = 无血红、无伤害数字(伤害数字归 HUD 层,不进精灵图)。
- **随身件 = 秘宝形象候选池**:铲、旗、背包、提灯四件随身件是未来秘宝设计的**形象候选池**——道具实装可借用主角身上已有的同款(彩蛋闭环:玩家在道具栏认出主角身上的物件);具体道具语义/数值归秘宝 GDD,人设侧义务 = 四件画得出来、认得出。
@@ -67,7 +67,7 @@
- **主色域 = 物种本色**,不受圣经 §4.2 语义色禁则约束(该禁则管格面与 UI 的逻辑色,角色身体主色豁免);**两例外**:禁入带 300°–345° 全角色禁入(仅 drider/duergar_king 两 Boss 独占)、蓝族禁入敌方主色(§5.4 同款)。
- **L2 熊地精 = bugbear 复用**(第二关三行,显示名熊地精系,非独立键):同剪影**换色板不换形**(色板替换走脚本管线——原则三"先换色板"的角色侧应用);变体主色避小人蓝族与禁入带。
- 每敌种出 2–3 版候选(清单 §2.2);受击反馈/死亡表现/顺位标记三类呈现下限见圣经 §4.6.4 资产需求行。
- **立绘源档高(定值单点 = 圣经 §8.2 立绘源档表,本档指路不复述)**:八敌 36–94 逐键定档 + 主角 48 不变、显示一律 ×2 整数档(NEAREST)——**数值权威一律圣经 §8.2**(定值单点纪律,圣经 §8 头注);定档经三体型约束校验(§5.2)确认;派生管线与排版规范同归圣经 §8.2。
- **立绘显示档(定值单点 = 圣经 §8.2 站桩立绘显示档条,本档指路不复述)**:三档绝对高 96/144/188,逐件归档、源档与缩放规则一律见圣经 §8.2——**数值权威 = 圣经 §8.2**(定值单点纪律,圣经 §8 头注);归档经三体型约束校验(§5.2)确认;派生管线与排版规范同归圣经 §8.2。
- **钩爪恐魔「宽≥高」豁免登记(待样张终审)**:定档源 58 高窄条束状剪影(长臂圆钩),宽高比 <1,与 §5.1 普通怪「近圆墩形宽≥高」冲突——按体量=生物天性(§5.2)登记豁免:以长臂束状轮廓为识别锚,不强行压成墩形;样张(圣经 §1.4)终审复验灰度剪影可辨性。
## 5.6 意图准备动画三档(规格承载节)
+39 -25
View File
@@ -2,8 +2,8 @@
## 文档状态
- 版本:1.26
- 最近更新:2026-10-30(迭代 42 反哺点落文——ShopSession 行对外暴露格按委托壳拆除后实测直连面重写:完整直连方法清单+set_shop_pool 调用面改述;沿革查 git)
- 版本:1.35
- 最近更新:2026-11-04(架构审查 5.2 文档漂移订正并入 P1 余项批之后——主角账三件与刷新账件四行补登记替代失效的 HeroLedger 行、MetaProgression 基础层补登记行(四 Autoload 唯一跨 Autoload 依赖件)、拆件定稿节冻结计数摘除(活体清单不冻结计数)、CurioStop 行落账指称随拆件改指;EC8 热重载规格经用户裁决保留原状(实装排期另立待办条目)、一度摘除已撤回,「抗热重载」快照句随规格保留;沿革查 git)
- 引擎:Godot 4.7.2-stable(GDScript 单语言;2026-09-07 锁定)
- 评审模式:solo(`review-mode.txt`,2026-09-12 用户拍板——TD/LP 门禁按 solo 跳过,用户授权架构产出自主推进、迭代期回调)
- 覆盖 GDD:现行全集(根索引=`design/gdd/02-系统清单.md`,文档树构成以根索引为准)
@@ -85,11 +85,12 @@
| 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API |
|---|---|---|---|---|
| **ConfigDB**(autoload,D2) | 全部玩法数值表与表现层布局配置表(`data/tables/*.tres` + `data/schemas/*.gd`);SCHEMA_VERSION;加载/校验/override/诊断状态机。**行族访问器归位各 schema 表类(表管自己的行查询),本类只留加载/校验/override/诊断门面;表持有成员按域收进四张域容器 Resource(`config_domain_combat/run/crossrun/presentation.gd`——前三件迭代 41 已建件,第四件表现层布局域 2026-10-30 建件,类型化成员 7/7/5/1);三张 resolver 表(board_gen.resolve_row/enemy.resolve_rowset/difficulty.resolve_modifiers)经 `load_tables` 装配段注入各容器,resolver 文件与键零搬移**——红线不变:本类仍是唯一加载与持有单点,"经 ConfigDB 单点读取"=经其持有的表对象 | 类型化域容器属性(每域一张容器);公开面 8(push_diag/is_fatal/reset_diagnostics/diagnostics/diagnostics_count/load_tables/set_reload_gate/reload)、类变量 10 | 无(基础层顶点) | Resource/.tres 加载、autoload 生命周期——LOW |
| **ConfigDB**(autoload,D2) | 全部玩法数值表与表现层布局配置表(`data/tables/*.tres` + `data/schemas/*.gd`);加载/校验/override/诊断状态机。**行族访问器归位各 schema 表类(表管自己的行查询),本类只留加载/校验/override/诊断门面;表持有成员按域收进四张域容器 Resource(`config_domain_combat/run/crossrun/presentation.gd`——前三件迭代 41 已建件,第四件表现层布局域 2026-10-30 建件,类型化成员 7/7/5/1);三张 resolver 表(board_gen.resolve_row/enemy.resolve_rowset/difficulty.resolve_modifiers)经 `load_tables` 装配段注入各容器,resolver 文件与键零搬移**——红线不变:本类仍是唯一加载与持有单点,"经 ConfigDB 单点读取"=经其持有的表对象 | 类型化域容器属性(每域一张容器);公开面 8(push_diag/is_fatal/reset_diagnostics/diagnostics/diagnostics_count/load_tables/set_reload_gate/reload)、类变量 10 | 无(基础层顶点) | Resource/.tres 加载、autoload 生命周期——LOW |
| **SlotStore**(`core/slot_store.gd`,D3 存档槽位域件,已建件——迭代 41 存量债批) | 存档三槽位文件域唯一所有者(自 save_manager 收编槽位族):槽位挂载与模板、激活与建删、槽位摘要窥视(peek 族);改名覆盖原语(_rename_overwrite)留 save_manager(IO 原语单点) | 槽位读写原语族+摘要投影(公开 10/类变量 4;SaveManager 与菜单消费方经 `save.slots.` 直连) | save_manager(注入路径与模板配置);FileAccess——LOW |
| **MetaStateStore**(`core/meta_state_store.gd`,D3 存档内元进度数据件,已建件——迭代 41 存量债批) | 存档内元进度数据的读写唯一层(自 save_manager 收编 accessor 族:钥石/道具解锁/树节点与叉侧/锻造路线/同调/真视/计数器/摘要——数据读写原语,不含业务规则);save_manager 与 meta_progression 双 God Class 的共同病根=该数据域摊在两文件,本件即其归一 | 写口原语 13+只读投影 6(tree_state/forge_state/attune_state/career_state 四投影+keystone_balance/item_unlocked)=公开 19(add_keystone 私有 `_add_keystone`),零 _data 副本零缓存;MetaProgression 业务层与营地/锻造 UI 消费方经 `save.meta_state.` 直连(meta 的纯转发读方法已退役) | save_manager(序列化接线);FileAccess——LOW |
| **MetaProgression**(autoload,`core/meta_progression.gd`,D3 元进度业务层) | 元进度账本服务:钥石收束入账、营地消费定价与秘宝解锁判定的纯被动服务,零信号零外发;数据读写全经注入的 MetaStateStore(`save.meta_state.` 直连);hero_override() 现算不写表(全零=白板合法态——生效注入只走冒险开始参数面显式传参) | 写口族(天赋树购买/叉侧切换/锻造解锁与升级与选中/同调装配切换等)+解锁判定与读投影;**构造双形态**=autoload 装配走 `.new()` 零参+`_ready` 从 autoload 链取依赖(工程序 ConfigDB→RngService→SaveManager→MetaProgression,注册顺序即依赖序),单测/工具走 `.new(db, save)` 直构形态(不入树零 _ready)——**四个 Autoload 中唯一有跨 Autoload 依赖的件(ConfigDB/SaveManager)** | ConfigDB(定价与档位表值);SaveManager(存档访问器,经节点路径延迟取用) | autoload 生命周期——LOW |
| **RngService**(autoload,D2) | master_seed、各流 scope 计数器(封闭流词表现值以 `RngServiceCore.PURPOSE_TAGS` 为准;增流走 P1 评审) | `set_master_seed()`(唯一调用方 C2);`open_stream(stream)` 有状态门面;`derive_at(stream, scope)` 纯函数;只读计数器 | ConfigDB(无) | 无——纯逻辑 |
| **action_economy**(A3) | AP/RAP 账本、last_round_end、轮次相位机 {Idle, Active, Waiting}、结束仲裁 | 意图与通知布尔面:notify_round_start / request_dig / request_stop / request_refresh / notify_settlement_done / notify_combat_end;预授权通道:grant_reserve_ap / finish_round_stop;ap/rap/phase 只读 | ConfigDB(ActionEconomyTable);effect_engine(事件发射 dispatch——基础层内同层引用);B1 回发 next_round_mode/battle_over | 无 |
| **action_economy**(A3) | AP/RAP 账本、last_round_end、轮次相位机 {Idle, Active, Waiting}、结束仲裁;dig_paid 命中施加抽私有单点(_apply_dig_paid_hits——矿脉储能入池面) | 意图与通知布尔面:notify_round_start / request_dig / request_stop / request_refresh(收折后价入参——折价计算归 BattleRefreshFlow 单点)/ notify_settlement_done / notify_combat_end;预授权通道:grant_reserve_ap / finish_round_stop;ap/rap/phase 只读;实测类变量 10 | ConfigDB(ActionEconomyTable);EffectPort(效果端口件——发射经端口单点;2026-11-02 轴戊设计闭合、迭代 49 卡① 建件,effect_engine 直连退役);B1 回发 next_round_mode/battle_over | 无 |
| **variation 定义**(A4) | VariationTable schema(现行 6 行:六 region——贫矿脉 global 行 2026-10-16 用户令屏蔽删行,global 型机制代码保留)与 F1 候选池门控谓词 | `variant_pool(level_index, board_type, node_type="")`(门控三维:unlock+board_types+节点身份——global 行仅 boss/elite 入池,缺省跳过零扰动);`global_variant_row(level_index, board_type, node_type)`(全局型单行决议访问器) | ConfigDB(VariationTable) | 无 |
| **status_container**(B3) | 状态实例容器(战斗域生命周期、跨轮跨图延续) | 5 API:notify_battle_start / apply_effect / query_active / decay_round / notify_battle_end | ConfigDB(StatusEffectTable) | 无(RefCounted) |
| **effect_engine**(内容数据驱动扩展批 iter17 建域) | 零运行时可变状态的系统(见「架构原则」条 8):全同步解释器——事件由宿主在明确代码点位显式调 dispatch 进件,命中序=装载声明序(feats→treasure→树规则)写死保种子复放,不是事件总线/事件循环;事件/事实/效果类型/算子四词表封闭 + 树规则合成订阅六键(posture 每关首轮窗/sense 两组限次 counter 闸·adv_ 前缀走冒险桶跨战斗持久) | rebuild(每战重建订阅表)/`dispatch(ctx, event, payload, facts)`/`validate_trigger_row` + 静态计数口 `counter`·`counter_add`·`counter_spend`·`bucket_of`·`counter_id_legal`(计数器读写只经 EffectContext 引用束,无导出/灌入接口) | ConfigDB(feats/treasure 行集)、EffectContext(四桶引用由宿主持有:round/battle 桶归编排器、level 桶归关卡域、adventure 桶归应用层——RunLedger 已随迭代 39 拆件批退役,桶字典由 adventure_runner 持有) | 无(零随机全确定) |
@@ -101,15 +102,18 @@
| 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API |
|---|---|---|---|---|
| **board_generator**(A1) | 生成算法(五阶段管线)、BoardGenTable 回填、生成期指标集、合法性谓词(clearable / R₀≠S / min_safe)、可推理率度量(metric_version);生成姿态 = MVP 同步生成 + 加载幕(切片实证 10×10/12×12 同步可接受,WorkerThread 留扩展) | `generate(L, D, rng) -> Board`;度量独立入口×3(推理器 / F3 度量 / 合法性谓词——独立纯函数、同一实现) | ConfigDB(BoardGenTable/VariationTable);board_gen 流(一次 open_stream = 一张图);dig_ap_cost 只读 | 无 |
| **minesweeper_rules**(A2) | 棋盘状态(已开集 O / 封印集 G / 小人位)、三事件面、批次仲裁、install 四不变式 | `install_board(board)`;`settle_batch(intents)`(唯一提交入口);查询只读面(current_board / hero_pos / is_revealed / has_seal 等);`compute_move_path(cell)` 只读;`retire_board()`;三源拒绝(board_face / resource_face / phase)+ sub_reason 封闭枚举 | A1 产物(Board class_name 数据契约);A3 try_spend / last_round_end(迭代 41 由属性改方法)/ 相位 | 无(零表读取、零 UI——切片实证) |
| **minesweeper_rules**(A2) | 棋盘状态(已开集 O / 封印集 G / 小人位)、三事件面、批次仲裁、install 四不变式 | `install_board(board)`;`settle_batch(intents)`(唯一提交入口);查询只读面(current_board / hero_pos / is_revealed / has_seal 等);`compute_move_path(cell)` 只读;`preview_reveal(cell)` 只读预览口(零写入零事件——0 格连锁传播闭包;迭代 50 己案建口);`retire_board()`;三源拒绝(board_face / resource_face / phase)+ sub_reason 封闭枚举 | A1 产物(Board class_name 数据契约);A3 try_spend / last_round_end(迭代 41 由属性改方法)/ 相位 | 无(零表读取、零 UI——切片实证) |
| **unit_container**(B2) | hero/enemy 单位实例(hp/atk/实例池:池快照+冷却+摇定动作+保底计数)、行值快照 | spawn / query_alive / rollable_skills / special_skills / check_trigger_unlocks / set_pending_action / pending_action / basic_streak / commit_action / tick_cooldowns / apply_damage / heal / default_target / check_skill_unlocks / despawn_all(2026-09-16 敌人技能池批:query_beat/query_attack/advance 随行为环退役;rollable_skills/special_skills/check_trigger_unlocks 带 facts 参——2026-10-27 情境条件触发器实装,事实缺键=条件假拦下,百分比事实走阈值式折算) | ConfigDB(EnemyTable/SkillTable/HeroTable) | 无 |
| **reward_economy**(B4) | 格面资源身份映射(install 期预分配、Ready 只读、换图映射消亡)、极性路由字典面((类型, 极性)→ 字典行查询;路由执行归 B1 授予段)、F6 当量供给投影 | 封闭 API:roll_board / query_identity / query_full_snapshot / grant / grant_clear / retire_mapping / polarity_row / phase / weighted_pick;另有 is_mapped 静默布尔投影(批量工具用) | ConfigDB(RewardTable);BattleFxHost 经注入 Callable `luck_bias_query` 取偏运合计(reward_roll 发射与 bias_rewards 求和移至效果层完成);reward_roll 流(scope = 每次 install 批) | 无 |
| **reward_economy**(B4) | 格面资源身份映射(install 期预分配、Ready 只读、换图映射消亡)、极性路由字典面((类型, 极性)→ 字典行查询;路由执行归 B1 授予段)、F6 当量供给投影;装配期摇号面已拆出掷格件 RewardRoller(2026-11-02 轴戊设计闭合、迭代 49 卡① 建件——roll_board 装配序=守卫→复位→委托→收纳→ready;受理账面留守) | 封闭 API:roll_board / query_identity / query_full_snapshot / grant / grant_clear / retire_mapping / polarity_row / phase(weighted_pick 退役——返行选行算子迁掷格件);另有 is_mapped 静默布尔投影(批量工具用);实测类变量 11 | ConfigDB(RewardTable);BattleFxHost 经注入 Callable `luck_bias_query` 取偏运合计(reward_roll 发射与 bias_rewards 求和移至效果层完成);reward_roll 流(scope = 每次 install 批,取号经掷格件) | 无 |
| **helper_items**(A5,切片已实装秘宝域) | HelperItemTable、探测显影语义 | (契约规范源:`../../gdd/systems/跨局循环/秘宝.md`——桥接位:A2 查询接口 + A4 counter_item_ids) | A2 / A4 / B4 | 无 |
| **CurioDeck**(`core/curio_deck.gd`,A5 秘宝域令牌池件,迭代 37 自 AdventureRunner 拆出) | 三选一/商店共享池的持久多重集、抽签(候选抽取)、cap 库存与专长凭证三计数与判定唯一所有者——件只管池与判定,停点编排与兑付推进留冒险编排器 | `draw_candidates(channel)` 抽签;`consume_deck_token` / `consume_pool_purchase` 池消耗;`cap_ok` 上限判定;`feat_ticket_consider` 凭证判定;`stock_snapshot` / `pool_stock` 只读投影;商店购买消费经注入 Callable 链至 CurioStop 兑付单点(迭代 39 起转纯池——bind_handlers 反向回调已退役) | ConfigDB(秘宝令牌行集);注入 RngServiceCore(reward_pick 封闭流,禁自建随机) | 无(RefCounted 纯逻辑) |
| **ShopSession**(`core/shop_session.gd`,商店会话件,迭代 37 自 LevelRunner 拆出) | 关卡商店双模式(legacy 固定三件加定价/pool 共享令牌池)的货架、定价、购买与刷新唯一宿主——账本/钱包/装配集归宿主 LevelRunner(共享引用经 `bind` 注入,出账直接落同一引用改写宿主账本);legacy 模式零 RNG 零池消费(off 对照承载) | 货架与定价只读面(`shop_products` / `shop_shelf` / `current_price` / `shop_refresh_cost`)+写入口(`buy_product` / `buy_pool_item` / `shop_refresh` / `player_request_refresh` / `open_pool`);外部调用面=调用方经宿主 LevelRunner 公开成员 `shop` 直连(调用直连不留委托壳,2026-10-26 Middle Man 裁定;迭代 42 拆除),直连消费的方法=`shop_products`/`current_price`/`purchased_tier`/`buy_product`/`player_request_refresh`/`set_shop_pool`/`pool_price`/`shop_shelf`/`shop_refresh_free_left`/`shop_refresh_cost`/`shop_refresh`/`spend_gp`/`buy_pool_item`/`is_shop_pool`/`shop_bp_shelf`/`shop_bp_visit_buys`(另白盒两入口仅测试侧:`_draw_shelf`/`_spend_discounted`);set_shop_pool 调用面=pool 注入经 LevelRunner 构造 ctx 供给(构造期内部直调,原委托块注释「AdventureRunner._start_current_level 唯一调用方」系陈旧表述、随壳删除作废),测试面直连 `shop.set_shop_pool` | ConfigDB(商店行集);注入 RngServiceCore;宿主钱包/账本引用;pool 模式令牌消耗与判定经注入 Callable 转 CurioDeck | 无 |
| **HeroLedger**(`core/hero_ledger.gd`,冒险域主角实体账,已实装(2026-10-27 迭代 39 拆件批)) | 冒险生命周期主角数值与获得记录唯一所有者:生命与 GP 钱包(gain/spend/clear 单写原语,钱包事件发射点归件)、锻造强化快照、调试百分比、攻击/甲类型轴快照、特性持有集(活引用注入——关内兑付当关生效)、本局钥石增量与逐杀明细、真视使用记录;获得记录三层结构=获得记录列表(三选一件/商店购买/战末奖励各一条)→属性增益明细(带来源指回)→四轴汇总(由明细推导);生效上限与回血封顶公式单点归件 | 构造注入;单写原语族+只读投影;断点自交片段(账本键+获得日记键) | ConfigDB(表值读取);由 AdventureRunner 冒险开始创建、注入 CurioStop/level_runner/ShopSession/战斗 encounter | 无(RefCounted 纯逻辑) |
| **HeroStats**(`core/hero_stats.gd`,主角数值账件,已实装(2026-10-27 迭代 39 拆件批——原 HeroLedger 登记行拆件替代)) | 冒险生命周期主角数值域唯一所有者:生命账与特性持有集(活引用注入——关内兑付当关生效)、锻造强化快照、调试百分比通道、攻击/甲类型轴快照、生效上限/攻击/护甲公式与回血封顶公式单点、续玩生命钳制收口;生效公式经注入 GainJournal 只读引用取加算区汇总(无反向引用不成环) | 构造注入;单写原语族+只读投影;断点自交片段(账本键) | ConfigDB(表值读取);注入 GainJournal(只读);由 AdventureRunner 冒险开始创建、注入战斗 encounter | 无(RefCounted 纯逻辑) |
| **GainJournal**(`core/gain_journal.gd`,加算日记件,已实装(2026-10-27 迭代 39 拆件批)) | 统一冒险加算区与获得记录唯一所有者:获得记录三层结构=记录列表(三选一件/商店购买/战末奖励各一条)→属性增益明细(带来源指回)→四轴汇总(由明细同步维护);三写通道统一走 gain_bonus 单写原语(source_class=curio_pick/shop_product/battle_export);本局钥石增量与逐杀明细、真视使用记录、商店已购档数记账同域 | gain_bonus 单写原语;记录与汇总只读投影;断点自交片段(获得日记键) | 由 AdventureRunner 冒险开始创建、注入 CurioStop/level_runner/ShopSession/战斗 encounter(战末 bonus 四轴经 gain_bonus 汇入) | 无(RefCounted 纯逻辑) |
| **GpWallet**(`core/gp_wallet.gd`,GP 钱包件,已实装(2026-10-27 迭代 39 拆件批)) | 冒险局内货币唯一所有者(LevelRunner 与 ShopSession 读写全指此单点;冒险开始=0、收束清零,不入存档不入摘要) | gain/spend/clear 单写原语 | 由 AdventureRunner 冒险开始创建;宿主与商店经注入引用读写 | 无(RefCounted 纯逻辑) |
| **RefreshBank**(`core/refresh_bank.gd`,刷新账件,已实装(2026-10-27 迭代 39 拆件批)) | 三选一刷新三源账唯一所有者:X 刷新件每碰三选一重给(优先消耗不结转)/Y 营地升级行冒险周期池(用完即无)/刷新券存量账(冒险级跨停点持久)+GP 付费刷计数与报价公式;零停点态依赖(免费/付费支出的编排归 CurioStop,本件只记账) | 支出与余量原语+报价公式;断点自交片段(refresh_stock/attune_refresh_y 两键,Y 缺键回退参数面) | ConfigDB(刷新件与营地升级行表值);注入 CurioStop 支出路径 | 无(RefCounted 纯逻辑) |
| **AttuneLoadout**(`core/attune_loadout.gd`,同调配装件,已实装(2026-10-27 迭代 39 拆件批)) | 装备中的秘宝件对象集唯一所有者(每件内含充能单位与重置周期);同调充能的物化行为唯一事实源——种行/补行改写时同步(RunLedger 充能字典轨与差额对账函数退役);旧档 aux_items 同调行迁移归件 | 构造注入;充能查询/消耗/按周期重置原语;断点自交片段(attunement_charges 键,键名与策略不变) | ConfigDB(秘宝行集);TreasureItems(同调行投放面);注入战斗使用路径 | 无 |
| **CurioStop**(`core/curio_stop.gd`,三选一停点件,已实装(2026-10-27 迭代 39 拆件批)) | 三选一停点编排唯一所有者(架构原则 9 本域承载):停点三态(关卡完成三选一在途/已兑付待推进/奖励节点三选一在途)、刷新三源账(刷新件 X/营地池 Y/刷新券存量/付费刷新计数)、兑付方法族(pick/refresh/redeem/skip)、凭证出箱(RAP/时沙待注入);三选一信号面自带;零自动推进停点语义承载 | 对外=开停点/刷新/兑付/放行谓词/交断点片段五组入口+信号面(curio_choice_presented/curio_resolved);由 AdventureRunner 关卡完成受理时调用 | ConfigDB;注入 CurioDeck(抽签/摘牌)与 HeroLedger(落账);随机只经 CurioDeck 的 reward_pick 封闭流 | 无 |
| **CurioStop**(`core/curio_stop.gd`,三选一停点件,已实装(2026-10-27 迭代 39 拆件批)) | 三选一停点编排唯一所有者(架构原则 9 本域承载):停点三态(关卡完成三选一在途/已兑付待推进/奖励节点三选一在途)、刷新编排(三源账面归 RefreshBank 件、查停点态→支出→重抽重发编排留本件)、兑付方法族(pick/refresh/redeem/skip)、凭证出箱(RAP/时沙待注入);三选一信号面自带;零自动推进停点语义承载 | 对外=开停点/刷新/兑付/放行谓词/交断点片段五组入口+信号面(curio_choice_presented/curio_resolved);由 AdventureRunner 关卡完成受理时调用 | ConfigDB;注入 CurioDeck(抽签/摘牌)、HeroStats 与 GainJournal(兑付落账单写原语)、RefreshBank(刷新支出);随机只经 CurioDeck 的 reward_pick 封闭流 | 无 |
| **breakpoint_store**(`core/breakpoint_store.gd`,冒险域·断点组装与回放件,已建件——迭代 45) | 存档断点组装与回放唯一承载(自 adventure_runner 收编 6 成员+函数族):断点快照拼盘、回放回填、读侧策略分发;`BREAKPOINT_FIELDS` 27 键登记单源随件(键名/策略标签/键序冻结) | 构造=引用束注入(九引用束成员解包为原名成员——保迁移函数体逐字);`resume_adventure` 留宿主(壳+宿主侧回填语句——R2 所有权缝分家);断点键面零变化;实测类变量 15(贴顶禁再增) | adventure_runner(宿主);注入主角账三件与 curio/stop/bank/loadout 引用 | 无(RefCounted 纯逻辑) |
### 功能层
@@ -117,9 +121,10 @@
| 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API |
|---|---|---|---|---|
| **battle_orchestrator**(B1) | 段序骨架(七段结构冻结)、轮 facts 缓冲、可回放步骤流、[明细行协议](../../gdd/systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)(基础行型+扩展行两层 + 字段分层,词表以 owner「明细流水」节为准)、条款③⑤闭合对账、**战斗域全部跨系统调用权**、效果引擎宿主面与树规则挂点施加面(**已拆出 BattleFxHost 并实装(2026-10-28 迭代 40——battle_fx_host.gd/reward_grant.gd 两件在库,效果引擎宿主面归 BattleFxHost 行承载,拆件细则见「战斗编排域拆件定稿」节);2026-10-29 零豁免裁设计闭合:RoundCycle/BattleFacts 两新件随批(宿主 38→15、S13 豁免第三条注销——见下两行与定稿节轴丁)**) | `begin_battle(encounter)`;窗口/刷新意图提交面(扮演 D1);`level_clear()`;步骤流(输出契约) | B2/B3/B4 全调用面(**唯一调用方=B1 域文件集:battle_orchestrator.gd + settlement/ 五段段类 + damage_controller + 拆件后三新件**);A3 request_refresh 代理 + 回发;A2 install/retire + 三事件订阅;A1 generate(attempt 非 scope 事件);D2 SettlementTable + set_reload_gate | 无(零随机、禁 await——切片 88 冒烟实证可回放) |
| **BattleFxHost**(`core/battle_fx_host.gd`,B1 域·效果引擎宿主件,2026-10-26 编排域拆件设计定稿——实现批建件) | 效果引擎挂点施加面唯一承载(自 battle_orchestrator 收编 fx 族):事件发射与事实判定(_fx_emit/_fx_fact)、主角 AC 基线与本轮/本战 AC 累积、bonus_delta 四轴累积(战末宿主 drain 汇入账本)、揭示待兑队列与兑付(含 _fx_revealing 再入闸——同步信号回环防二次缓冲二次兑付)、树规则合成订阅的 round/battle 桶计数器持有(桶随编排器生灭语义不变) | 构造=引用束注入(防 _init max-parameters 新键);bind 时注入 emit Callable(行发射经宿主协议面单点)与兑付 Callable(RewardGrant 授予面——揭示队列 flush 回调);只读投影分两类消费方:AC 累积/bonus_delta 供宿主呈现快照与战末 drain,揭示态供宿主 A2 订阅旁路判定;`luck_bias_for(cell_count) -> int` 偏运合计查询口(体内三参形 dispatch——reward_roll 发射与 bias_rewards 求和自 RewardEconomy 收回本件,RewardEconomy 经注入 Callable 消费) | EffectEngine(EffectContext 引用束);RngServiceCore(fx_reveal 封闭流——除该流外零随机);A2 minesweeper(板读与 fx_reveal 调用);A3 action_economy(queue_ap_delta/charge_layers 读);B3 status_container 读;B2 unit_container 读(hp_ratio);DamageController(set_hero_ac_override);ConfigDB;encounter 引用 | 无(零 await——效果引擎全同步解释器) |
| **BattleFxHost**(`core/battle_fx_host.gd`,B1 域·效果引擎宿主件,2026-10-26 编排域拆件设计定稿——已建件(迭代 40 实装)) | 效果引擎挂点施加面唯一承载(自 battle_orchestrator 收编 fx 族):事件发射与事实判定(_fx_emit/_fx_fact)、主角 AC 基线与本轮/本战 AC 累积、bonus_delta 四轴累积(战末宿主 drain 汇入账本)、揭示待兑队列与兑付(含 _fx_revealing 再入闸——同步信号回环防二次缓冲二次兑付)、树规则合成订阅的 round/battle 桶计数器持有(桶随编排器生灭语义不变);2026-11-02 轴戊设计闭合落地(迭代 49 卡①):效果端口件为业务类朝向机房的窄门面——端口在本件组建、bind_port 组装期转注两业务类,计数器账面收归本件;实测类变量 15 | 构造=引用束注入(防 _init max-parameters 新键);bind 时注入 emit Callable(行发射经宿主协议面单点)与兑付 Callable(RewardGrant 授予面——揭示队列 flush 回调);只读投影分两类消费方:AC 累积/bonus_delta 供宿主呈现快照与战末 drain,揭示态供宿主 A2 订阅旁路判定;`luck_bias_for(cell_count) -> int` 偏运合计查询口(体内三参形 dispatch——reward_roll 发射与 bias_rewards 求和自 RewardEconomy 收回本件,RewardEconomy 经注入 Callable 消费) | EffectEngine(EffectContext 引用束);RngServiceCore(fx_reveal 封闭流——除该流外零随机);A2 minesweeper(板读与 fx_reveal 调用);A3 action_economy(queue_ap_delta/charge_layers 读);B3 status_container 读;B2 unit_container 读(hp_ratio);DamageController(set_hero_ac_override);ConfigDB;encounter 引用 | 无(零 await——效果引擎全同步解释器) |
| **RewardGrant**(`core/reward_grant.gd`,B1 域·奖励授予件,2026-10-26 编排域拆件设计定稿——实现批建件) | 奖励授予唯一兑付管线(自 battle_orchestrator 收编 grant 族):极性字典路由与封印溢价兑付(_grant_routed)、三种行应用(flat/percent/gp)、伤害单据提交面(_submit 族)、清图奖励与身份授予、秘宝使用编排(use_treasure 四步)、战斗域 GP 缓冲 escrow 与授予段暂存伤害闸(_defer_board_damage/_deferred_board) | use_treasure 编排入口(treasure_interact_controller 经组合根现值回调直连);授予入口(结算段类直调);只读投影(escrow 读与 GP 掉落合计——宿主呈现快照与 _roll_gp_drop 消费) | B4 RewardEconomy(polarity_row/grant);B1 域 DamageController(开单);BattleFxHost 引用(treasure_used 事件发射与计数器消耗);A2 minesweeper(校验回调/fx_reveal/remove_mines_in);A3 action_economy(相位闸/grant_ap/queue_ap_delta);B3 status_container(apply_effect/池读);B2 unit_container(hero_unit/heal);ConfigDB;注入 emit Callable、宿主 fatal Callable(battle_result 状态机唯一写点留宿主)、宿主 attune 读投影(_attune_safe_seen)、encounter 账本引用;TreasureItems 经宿主 setter 转发注入(库存注入时序在宿主构造之后) | 无(零随机零 await——授予期零随机口径,roll 值授予前已定) |
| **damage_controller**(B1 域·伤害单据管线) | 伤害单据唯一兑现管线(单据九栏目声明→分量掷点/克制修正/伤害下限归一→明细行发射;双方同规) | 兑付入口(编排侧开单)+ fx 揭示回调注入位 | B2 单位实例(单据目标传入);B1 注入(EffectContext 引用束与编排回调) | 无 |
| **damage_controller**(B1 域·伤害单据管线) | 伤害单据唯一兑现管线(单据九栏目声明→分量掷点/克制修正/伤害下限归一→明细行发射;双方同规);`damage_taken` 唯一发射口(_emit_hero_damage_taken)+唯一消费族(_apply_hero_damage_effects)——敌方攻击/地形/危险格/错误封印直伤四路径统一发射,board_flat_hero 结账前统一发射 | 兑付入口(编排侧开单)+ fx 揭示回调注入位;实测类变量 12 | B2 单位实例(单据目标传入);B1 注入(EffectPort 端口引用——轴戊设计闭合改经端口发射,迭代 49 卡① 建件;EffectContext 引用束与编排回调收归宿主侧 BattleFxHost 域,业务类零引擎直连) | 无 |
| **BattleRefreshFlow**(`core/battle_refresh_flow.gd`,B1 域·换图刷新流程件,已建件——迭代 46) | 弃图刷新流程唯一承载(自编排器收编):刷新可用性门(相位/每轮上限/储备门槛)、折后价单点(_effective_refresh_cost——专长行声明序第一命中、floor 取整、can 与执行同源)、换图执行序(扣储备→used+1→旧资源退役→旧板退役→装新板→board_refreshed 成功事实登记) | can_refresh/execute 两公开入口;调用路径呈现层→编排器两公开方法单行转发→本件;A3 request_refresh 收折后价入参 | 编排器(宿主,B1 域内唯一调用方约束同族适用);A3 action_economy(折价扣费与拒绝判据);A2 装板壳(装板与退役);RewardGrant(apply_board_refreshed 成功事实消费);feats 折价行经 ConfigDB;static_scan S7_B1_SET 已增补本件(判据口径不变) | 无(零随机零 await) |
| **BoardInstaller**(`core/board_installer.gd`,B1 域·装板域件,2026-10-29 尾波清偿批设计闭合——实现批建件,细则见「战斗编排域拆件定稿」节轴丙) | 棋盘安装与变异布置域唯一承载(自 battle_orchestrator 收编装板族六函数):生成受理、全局作用域变异决议、资源摇号资格域组装(roll_board 恰一次)、region 变异决议与连通片布置;BoardGenerator 实例随件自建自接线(宿主成员退役)——宿主侧装板后状态复位(封印/完美计数清零、板序推进、board_changed 发射、秘宝叠加层退役)留宿主薄壳,时序逐字保持 | `install(during_round) -> bool` 单入口;构造=引用束注入(rng/db/minesweeper/reward_economy/encounter 只读引用+宿主 fatal Callable——防 _init max-parameters 新键) | A1 board_generator(件内持有);A2 install_board;B4 roll_board/board_skew 写;A4 变异决议行集经 ConfigDB;board_gen/variant_place 两封闭流随件、流名与开流时点零漂移 | 无(零 await——装板全同步) |
| **RoundCycle**(`core/round_cycle.gd`,B1 域·轮循环驱动件,已建件——迭代 44) | 轮循环驱动域唯一承载(自宿主收编 7 成员):结算五段段件持有与驱动、重入门闸、开轮摇号、踩雷账 | 三参直构(host/fx_host_ref/reward_grant_ref——五段构造透传不落成员);段驱动入口由宿主接线调用;实测类变量 8/公开方法 3 | B1 宿主;settlement/ 五段段类;A3 相位读 | 无 |
| **BattleFacts**(`core/battle_facts.gd`,B1 域·战斗事实件,已建件——迭代 44) | 战斗事实域唯一承载(自宿主收编 14 成员):受理事实(encounter)、轮 facts 缓冲(reveals/seals/path)、封印判定账、事实溯源、同调快照读面;attune 状态两成员随件(行为函数留宿主) | 零参直构;宿主与段类经注入引用读写;实测类变量 15(贴顶)/公开方法 4(reset_round+三 mark 写口) | B1 宿主;A2/A3 只读 | 无 |
@@ -127,17 +132,18 @@
| **level_runner**(C1-lite,切片已建) | 关卡域生命周期(节点链推进、共享 B4 + HP 携带、关卡末 level_clear) | 节点推进接口;LevelTable(`level.tres`——节点 enum {battle,reward,rest,boss}、末节点必须 Boss、ConfigDB 跨表校验⑧) | B1(直构 BattleOrchestrator 接线战斗)、ConfigDB LevelTable | 无 |
| **run_structure**(C2) | 冒险/关卡序列、失败重开、**master_seed 唯一接线方** | (契约规范源:`../../gdd/systems/冒险循环/冒险结构.md`) | RngService.set_master_seed、C3/D2 | 无 |
| **difficulty**(C3) | DifficultyTable 回填、全部曲线数值调参所有权、战斗期望表(切片 monte_carlo 为工具原型) | 调参输出(经 D2 R1 解析/编排器传递,禁反向调用生成) | ConfigDB、B1 对账输出(调参约束清单)、A1 报告 C | 无 |
| **meta_progression**(C4,Alpha) | MetaTable、钥石账本、天赋树域(MetaTreeTable 12 节点 v0.8——Fork 一节点双态/row 字段退役/RULE_KEYS 六键/彩蛋特化觉醒,迭代 21 T1 换代)+ 同调位槽位判定(树点亮数单源——T4 槽位收编)。**存档内元进度数据读写原语归 MetaStateStore——已落地(迭代 41):本类纯转发读已退役(消费方直连 meta_state),业务规则与写口编排留本类;hero_override 内联锻造加值与树淬炼 flat;并组三组(forge_select(kind,route_id)/hero_type_axes()→{attack,armor}/tree_camp_status()→{rows,fork_groups});补 meta_state 成员装配** | 公开面 20 定稿:buy_treasure_unlock / refresh_treasure_unlocks / treasure_shop_status / forge_buy_level / forge_buy_unlock / forge_select / hero_type_axes / forge_shop_status / settle_adventure / hero_override / tree_can_buy / tree_buy / tree_toggle_fork / tree_buy_fork / tree_rule_keys / tree_camp_status / toggle_attunement / attune_camp_status / attune_refresh_charges / buy_attune_refresh | D3、C2、ConfigDB | 无 |
| **meta_progression**(C4,Alpha) | MetaTable、钥石账本、天赋树域(MetaTreeTable 12 节点 v0.8——Fork 一节点双态/row 字段退役/RULE_KEY_PARAMS 六键参数字典(迭代 50 键值字典化)/彩蛋特化觉醒,迭代 21 T1 换代)+ 同调位槽位判定(树点亮数单源——T4 槽位收编)。**存档内元进度数据读写原语归 MetaStateStore——已落地(迭代 41):本类纯转发读已退役(消费方直连 meta_state),业务规则与写口编排留本类;hero_override 内联锻造加值与树淬炼 flat;并组三组(forge_select(kind,route_id)/hero_type_axes()→{attack,armor}/tree_camp_status()→{rows,fork_groups});补 meta_state 成员装配** | 公开面 20 定稿:buy_treasure_unlock / refresh_treasure_unlocks / treasure_shop_status / forge_buy_level / forge_buy_unlock / forge_select / hero_type_axes / forge_shop_status / settle_adventure / hero_override / tree_can_buy / tree_buy / tree_toggle_fork / tree_buy_fork / tree_rules(返参数字典——迭代 50 R1 换代)/ tree_camp_status / toggle_attunement / attune_camp_status / attune_refresh_charges / buy_attune_refresh | D3、C2、ConfigDB | 无 |
### 战斗域装配现状(迭代 27——2026-10-17 用户裁写入;RunLedger 段已随迭代 39 拆件批退役,四账去向见下「冒险域拆分(现状登记)」节)
- **结算五段**:B1 编排器的每轮结算序列拆为 `game/core/settlement/` 五个段类——GrantSegment(①授予段,含封印判定与 counter/grant 助手单点)→ AuraSegment(②增益/减益段)→ CombatSegment(③战斗段)→ DecaySegment(④衰减段)→ VerdictSegment(⑤判定段,返回裁定,终局早退语义留 B1)。段序骨架冻结于 `SettlementTable.segment_order` 语义,B1 退为段序编排+接线;段类可直接 `new()` 单测(`settle_segments_test` 在役)。
- **结算五段**:B1 编排器的每轮结算序列拆为 `game/core/settlement/` 五个段类——GrantSegment(①授予段,含封印判定与 counter/grant 助手单点、成功刷新事实消费面 apply_board_refreshed 与轮末治疗计数兑付面)→ AuraSegment(②增益/减益段)→ CombatSegment(③战斗段)→ DecaySegment(④衰减段)→ VerdictSegment(⑤判定段,返回裁定,终局早退语义留 B1)。段序骨架冻结于 `SettlementTable.segment_order` 语义,B1 退为段序编排+接线;段类可直接 `new()` 单测(`settle_segments_test` 在役)。
### 战斗编排域拆件定稿(2026-10-26 用户裁写入——gdstyle 存量债波 1 设计闭合;同日独立审查(grilling+godot-master 双子代理)阻断 8 条去重 6 组全折入本节,v1.18;2026-10-28 迭代 40 实现批合回(合并提交 514457d1),本节为现状登记)
- **轴甲两件**:battle_orchestrator(1313 行/50 成员,S13 全库单文件最大户)按变化原因拆出 BattleFxHost(效果引擎宿主域)与 RewardGrant(奖励授予域)两协作件;宿主保留架构在册职责全部——战斗状态机与生命周期、轮 facts 缓冲(_facts_reveals/seals/path)、A2 三事件订阅、结算五段驱动、attune 族原位、行发射基建(_emit_row/_assert_row_source/_fatal)、呈现投影(presentation/diagnostic_snapshot 唯一出口不变)、刷新面、nest_preview_count(巢穴预告读数口——外部直读面 main.gd 与 treasure_effects_test 随批点名冻结)。拆件动机与残留债口径见待办清单「gdstyle 存量债全量清偿」条目。
- **轴甲两件**:battle_orchestrator(拆件时 S13 全库单文件最大户——行数与成员数为历史读数,冻结计数不登记,查 git)按变化原因拆出 BattleFxHost(效果引擎宿主域)与 RewardGrant(奖励授予域)两协作件;宿主保留架构在册职责全部——战斗状态机与生命周期、轮 facts 缓冲(_facts_reveals/seals/path)、A2 三事件订阅、结算五段驱动、attune 族原位、行发射基建(_emit_row/_assert_row_source/_fatal)、呈现投影(presentation/diagnostic_snapshot 唯一出口不变)、刷新面、nest_preview_count(巢穴预告读数口——外部直读面 main.gd 与 treasure_effects_test 随批点名冻结)。拆件动机与残留债口径见待办清单「gdstyle 存量债全量清偿」条目。
- **轴丙一件(2026-10-29 尾波清偿批设计闭合——实现批建件)**:battle_orchestrator 装板域六函数(`_install_new_board`/`_resolve_global_variant`/`_place_variants`/`_place_variants_apply`/`_variants_fringe`/`_adjacent_to_packs`,约 140 行;全仓仅宿主三调用点——begin_battle/中途刷新受理/player_request_refresh,实查零外部调用)按变化原因拆出 BoardInstaller,职责语句「棋盘安装与变异布置域」(生成→全局变异决议→装板受理→资源摇号→变异布置;单一变化原因=棋盘设置顺序与变异布置算法)。形态两修正(实测裁,与初案「逐字搬运」之差):①宿主复位块不随件——`_install_new_board` 体内五处计数清零、板序推进、board_changed 发射与秘宝叠加层退役留宿主薄壳 `_install_and_reset`,三调用点改调薄壳、时序逐字;②`_board_generator` 全文件仅装板族使用——实例随件自建自接线(fatal 经注入 Callable),宿主成员退役(类变量 38→37,禁无效成员义务)。encounter(23 处跨宿主)与 _reward_economy(18 处)确认留宿主、经引用束注入。文件长键(1035/1000)随本件迁出归绿;attune 族与 begin_battle 受理段序禁动不变。
- **轴丁两件(2026-10-29 零豁免裁设计闭合——实现批建件)**:RoundCycle(轮循环驱动件)与 BattleFacts(战斗事实件)见功能层表两行——宿主 38(轴丙落地后 37)→15,S13 豁免第三条注销;宿主保留面改登记为「战斗状态机与生命周期、行发射基建(_emit_row/_assert_row_source/_fatal)、呈现投影(两快照出口签名不变)、刷新面、nest_preview_count」;attune 族处置由下一条改判;treasure_inventory 注入改址追认——原「外部赋值路径零改址」句失效,level_runner 经 RewardGrant 出口直注;成员级对账以需求卡片为卡内契约(开工 T0 复核)。
- **轴戊两件(2026-11-02 用户裁甲案设计闭合——已建件,迭代 49 卡① 合回,git 提交 848723b5)**:①**效果端口件 EffectPort**(`core/effect_port.gd`)——职责语句「战斗业务类唯一的效果发射出口:收事件与载荷、交效果引擎结算、取回命中批」;实测形态=六 Callable 路由、bind_port 组装期转注、闭面五键 biz_fact、未绑零扰动缺省;`DamageController`/`ActionEconomy` 各持端口引用(同一实例、构造注入),`EffectEngine`/`EffectContext` 引用与计数器账面(value_counter 层值读后清零)收归宿主侧(BattleFxHost 域),业务类零引擎直连、零账面触碰;facts 取值束(dig_streak/charge_layers/rider_tier_*)与入站回调束(reveal/ac)随发射契约归宿主侧注入面;端口**单实现零接口抽象**(无基类无多态——GDScript 无 interface,本案不需要);端口与宿主经注入 Callable 束协作、零宿主对象引用(跨件单向接线条款适用,禁双向强引用)。②**掷格件 RewardRoller**(`core/reward_roller.gd`)——职责语句「装配期格面资源摇号:池行装配、区间行 roll、权重合成(偏运硬币/board_skew 两路投影)」;实测形态=roll 批束四键(mapping/power_roll/clear_identity/clear_power)、选行算子 `_weighted_pick_row` 返表行、fatal 经构造 Callable 链;受理账面(grant/身份查询/快照/retire/polarity_row)留 `RewardEconomy`,衔接面=格→奖励身份映射(掷格件产出、受理件接收);掷格件经注入 RngServiceCore 取号(roll_board 流 scope=每次 install 批不变、取号序零漂移)。行为零变化红线沿本节「验收红线」全款:命中序=声明序、明细行协议词表零触碰、`_ineffective_row` 载荷 deferred 自描述键观测面不回退(2026-11-02 迭代 48 卡① 甲案在案)、EV/MC 锚同种子逐位零漂移——round_flow 逐位回放 134 检查为主证(红线成立);两新件 S13 预算随卡「实现规范预算」三查已过(新件全默认阈值内、gdstyle 基线外新违规 0),`RewardEconomy` 类变量随掷格面迁出 15→11;S7 B1 域文件集与 S8 await 文件集已随批增行。
- **跨件单向接线**:RewardGrant 持 BattleFxHost 引用(treasure_used 事件发射与计数器消耗);BattleFxHost 对授予面走 bind 时注入的兑付 Callable(揭示队列 flush 回调)——禁双向强引用(两件均 RefCounted,环引用随每战新建泄漏)。行发射经 bind 时注入的 emit Callable(协议面单点留宿主——CurioDeck bind_handlers 同款先例,禁件回调宿主私有族);轮 facts 缓冲留宿主、fx 件经注入取值;_seal_consumed 留宿主(与 A2 seal_judged 订阅同域);fatal 经注入 Callable 转宿主 _fatal(battle_result 状态机唯一写点不变)。注入 Callable 亦属接线面、同单向纪律——禁为省参数改持对象引用。授予件对账本零强引用:战斗期消费经 `battle_hooks` 三键回调束(attune_consume/vision_add/negative_blast,bind_battle 缺键 assert),宿主侧三单点记账(2026-10-28 迭代 40 合并适配实装——RunLedger 类已随迭代 39 退役,直持对象引用无处可指)。
- **战斗域读面(RunLedger 退役后)**:账本读经编排器 `_journal()`/`_attune_loadout()` 现值派生(GainJournal/AttuneLoadout,enc 派生、无成员接收);冒险桶经 `enc["adv_bucket"]` 下传 `battle_fx_host.mount_buckets`;战末 bonus 四轴经 `GainJournal.gain_bonus` 汇入(2026-10-27 迭代 39 主角账三件落地、迭代 40 合并适配承接)。
- **settlement/ 段类随动**:段类构造注入直持宿主+两新件三引用(Middle Man 禁令封转发壳——调用点改指),授予段读写面点名:_grant_routed×5/_submit×6/escrow 写/_fx_new_resource_types/_feat_first_dig_used/_fx_bonus_delta 写/_apply_ac_bonus/_fx_enqueue_reveal/_flush_pending_reveals/_grant_clear_reward/counters_ctx;战斗段 _defer_board_damage 复位与 _deferred_board 结账改指 RewardGrant。四个授予段 helper(_feat_yield_adjust/_harmful_variants/_harmful_adjacent/_hits_of)与 _pool_effective/perfect_sweep_earned 留宿主(段类经宿主引用直调,现状形态)。
@@ -149,9 +155,9 @@
### 冒险域拆分(现状登记——2026-10-26 设计闭合,2026-10-27 迭代 39 拆件批实装,本节各条即现行形态)
- **应用层形态**:adventure_runner 退出上帝对象、转薄应用层(DDD 应用层形态)——只留冒险状态机、关序推进、结算受理、建件接线、效果引擎冒险桶字典持有(桶=效果引擎域数据,应用层只锚定生命周期);零领域决策。核心层表三新件行(HeroLedger/AttuneLoadout/CurioStop)即本拆分目标。
- **应用层形态**:adventure_runner 退出上帝对象、转薄应用层(DDD 应用层形态)——只留冒险状态机、关序推进、结算受理、建件接线、效果引擎冒险桶字典持有(桶=效果引擎域数据,应用层只锚定生命周期);零领域决策。核心层表新件行(主角账三件与刷新账件/AttuneLoadout/CurioStop——见基础层与功能层登记)即本拆分目标。
- **CurioDeck 转纯池**:bind_handlers 反向回调退役;商店购买消费经注入 Callable 链至 CurioStop 兑付单点——牌库只管抽签/消耗/cap 判定/凭证计数。
- **RunLedger 退役**:四账各归其主——加算区/购买记录/钥石增量/特性集/真视记录归 HeroLedger,充能归 AttuneLoadout,冒险桶字典归应用层持有;战斗侧 encounter 注入面由单一账类引用改为多路(桶字典+实体账+配装件);ShopSession 账本引用面同步换代,商店属性商品加算改经 HeroLedger 单写原语。
- **RunLedger 退役**:四账各归其主——加算区/购买记录/钥石增量/真视记录归 GainJournal、特性集归 HeroStats(GP 钱包归 GpWallet),充能归 AttuneLoadout,冒险桶字典归应用层持有;战斗侧 encounter 注入面由单一账类引用改为多路(桶字典+实体账+配装件);ShopSession 账本引用面同步换代,商店属性商品加算改经 GainJournal 单写原语。
- **level_runner**:依赖改构造注入一次给齐(后置 setter 群与商店重绑机制退役;注入活引用禁快照——特性集共享引用语义保留);商店白盒转发属性撤除;战斗→关卡信号转发族保留(战斗实例每节点新建,关卡层做战斗域稳定面)。
- **断点片段化**:各件自写自读自己的键(关卡层交关卡域五键片段:node_id/visited_ids/aux_items/shop_shelf/shop_visit_buys),缺键回退策略随领域知识归各件;应用层唯一落盘口(收齐各件片段拼成顶层快照后写盘),写触发点不变(五处);既有 27 键逐键冻结;新增获得日记键沿扩列不升版先例——旧档缺日记回退汇总键直载并跳过比对,日记在档时由日记推导汇总、与留存值不符即报错中止(迁移正确性自检)。2026-10-29 零豁免裁随动:拼盘与读侧策略机组拆出 breakpoint_store(核心层表新行),应用层落盘口与写触发点不变——宿主经件组装快照后写盘,27 键冻结不变。
- **信号直连**:adventure_runner 六转发信号族(node_entered/choices_presented/step_row/round_started/board_changed/wallet_changed)退役;呈现层在 level_started 重取点重订阅关卡对象信号(旧实例连接随引用释放消亡);「关卡开始信号前零发射」契约写进关卡件头注;「恰好连接一次」断言用 is_connected 守卫(release 模板剥 assert);三选一信号面归 CurioStop。
@@ -162,9 +168,15 @@
| 模块 | 独占职责 | 对外暴露 | 消费依赖 | 引擎 API |
|---|---|---|---|---|
| **D1 HUD**(呈现面拆分持续换代:组合根 main.gd + 三屏壳(MenuScreen/CampScreen/AdventureScreen)+ views/ 视图单元(现行承载面见「呈现层装配与会话生命周期」节;早期 9 单元清单与 LevelStripView 已随场景换代退役);营地覆盖层=四柜台并排〔树淬炼主界面/锻造工坊·秘宝匣钥匙门/图鉴常开——迭代 21 T6 程序占位重排〕) | 全部 Control/CanvasLayer(例外:BoardView 棋盘本体与 BattleStageView 站桩本体 = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界〔BoardWorld/CellUnit;StageWorld/StandeeBody——B 区 slot_row 伴随件留壳层〕,探针契约面不变——棋盘 Node2D 迁移批 Phase A 2026-09-23 / 战斗舞台 Phase B 2026-09-26)、输入→意图翻译(**唯一提交路径 = settle_batch,不直调 A3**)、呈现义务状态记录(A2×6 / B2×4 / B3×4 / B4×5 / B1×3) | 视图单元接口(信号外发、setter 只读注入) | A2 compute_move_path / ActionOutcome;A3 ap/rap;B1 步骤流行协议(数据源);ConfigDB display_name | **MEDIUM**:Control / CanvasLayer / draw_* / InputEvent / RichTextLabel——对照 breaking-changes.md 4.5–4.7 条目(CanvasItem 线条无抗锯齿羽化、设备 ID 常量、RichTextLabel 图片参数两轮变化) |
| **D1 HUD**(呈现面拆分持续换代:组合根 main.gd + 三屏壳(MenuScreen/CampScreen/AdventureScreen)+ views/ 视图单元(现行承载面见「呈现层装配与会话生命周期」节;早期 9 单元清单与 LevelStripView 已随场景换代退役);营地面=场景根+四子界面功能窗口+Esc 浮窗+顶栏 HUD 栏〔迭代 21 四柜台覆盖层已随迭代 47 卡④⑤ 退役〕) | 全部 Control/CanvasLayer(例外:BoardView 棋盘本体与 BattleStageView 站桩本体 = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界〔BoardWorld/CellUnit;StageWorld/StandeeBody——B 区 slot_row 伴随件留壳层〕,探针契约面不变——棋盘 Node2D 迁移批 Phase A 2026-09-23 / 战斗舞台 Phase B 2026-09-26)、输入→意图翻译(**唯一提交路径 = settle_batch,不直调 A3**)、呈现义务状态记录(A2×6 / B2×4 / B3×4 / B4×5 / B1×3) | 视图单元接口(信号外发、setter 只读注入) | A2 compute_move_path / ActionOutcome;A3 ap/rap;B1 步骤流行协议(数据源);ConfigDB display_name | **MEDIUM**:Control / CanvasLayer / draw_* / InputEvent / RichTextLabel——对照 breaking-changes.md 4.5–4.7 条目(CanvasItem 线条无抗锯齿羽化、设备 ID 常量、RichTextLabel 图片参数两轮变化) |
| **组合根拆件**(呈现侧写口子件:curio_interact_controller / camp_shop_presenter / treasure_interact_controller) | 代组合根执行核心写调用(冒险节点后续推进/营地购买与刷新/道具使用——依赖与回调由 main 构造注入) | 各拆件的写入口(仅组合根装配面可达;视图零直连) | 构造注入的核心写引用(推进/商店/道具各域——详见各拆件头注) | 无 |
| **ui_registry**(`presentation/ui_registry.gd`,界面注册面,已建件——迭代 44) | 呈现层接口面唯一承载:层序合同(LAYER_CONTRACT)迁驻与合同寻址、三域句柄容器 ui_screens(9 屏壳与覆盖层句柄)/ui_battle(5 战区句柄)/ui_modals(13 模态句柄+ModalFlow);组合根经其一级寻址接线,探针挂载假设迁移为 `main.ui.<域容器>.<句柄>`;七个探针别名/转发成员随批消灭 | 三容器属性+合同寻址口(RefCounted 门面,不挂树、零会话期引用);四件(UiRegistry/UiScreens/UiBattle/UiModals)类变量 3/9/5/14,ModalFlow 随 UiModals 容器构造即建 | 构造注入:三屏壳、覆盖层、战区句柄、ModalFlow(main_ui_build 交付随之改型) | 无(RefCounted) |
| **ui_registry**(`presentation/ui_registry.gd`,界面注册面,已建件——迭代 44) | 呈现层接口面唯一承载:层序合同(LAYER_CONTRACT)迁驻与合同寻址、三域句柄容器 ui_screens(9 屏壳与覆盖层句柄)/ui_battle(5 战区句柄)/ui_modals(模态句柄按域分三子容器——局内冒险域 run/菜单与跨语境域 menu〔两子容器迭代 49 卡② 新建〕/营地域 camp=既有 UiCampModals〔六句柄、两段式寻址 `modals.camp.*`——迭代 47 卡⑥〕,三子容器纯字段、两段式寻址 `modals.run.*`/`modals.menu.*`/`modals.camp.*`)+模态编排件 ModalFlow 直驻本面(自 UiModals 升格 UiRegistry 直持——迭代 49 卡②);层序合同营地槽换代=camp_overlay 退役、换 camp_scene+四子界面+camp_esc_overlay——迭代 47 卡④⑤;组合根经其一级寻址接线,探针挂载假设迁移为 `main.ui.<域容器>.<句柄>`;七个探针别名/转发成员随批消灭 | 三容器属性+flow+合同寻址口(RefCounted 门面,不挂树、零会话期引用);register_layer 迁驻注册面;四件类变量 UiRegistry 4/UiScreens 9/UiBattle 5/UiModals 3(run/menu/camp 三子容器纯字段——ui_modals 平铺面清零,12 平铺句柄全数迁 run/menu 两子容器,分域纪律册级化);ModalFlow 随 UiRegistry 构造建立(构造时点与原形态等价——注册面构造点先于装配,迭代 49 卡②) | 构造注入:三屏壳、覆盖层、战区句柄、ModalFlow(main_ui_build 交付随之改型) | 无(RefCounted) |
| **UiCampModals**(`presentation/ui_camp_modals.gd`,营地域句柄子容器,已建件——迭代 47 卡⑥) | ui_modals 营地域六句柄唯一容器(场景根/四子界面/Esc 浮窗/HUD 栏),句柄寻址两段式 `modals.camp.*`;ui_modals 平铺面已清零(12 平铺句柄全数迁 run/menu 两子容器——分域纪律册级化,迭代 49 卡②) | 子容器属性+六句柄只读投影;main_ui_build 装配交付 | 构造注入(六视图句柄);ui_modals(父容器挂载) | 无(RefCounted) |
| **CampSceneView**(`views/camp_scene_view.gd`,营地场景根视图,已建件——迭代 47 卡④) | 营地场景图唯一呈现件:十层贴图铺底(层序按 layout 表 z 序;`camp_scene_layout.tres` fail-fast 校验+七命中区几何红线——camp_scene_layout_test 承载)、七物件命中区命中即发 object_pressed(组合根路由大门/篝火/笔记本/四界面)、反参照纪律(场景根零文字按钮)、登记模态初始隐(boot 态不盖菜单) | 构造注入(贴图经 `UiKit.TEX_CAMP_*`、layout 表经 ConfigDB 表现域容器);object_pressed 信号外发;open/close 经营地域子容器寻址 | camp_screen(宿主挂载);ConfigDB;组合根(路由消费) | Control+TextureRect 树 |
| **营地四子界面视图**(`views/camp_sub_view_base.gd`+forge_view/tree_view/treasure_view/codex_view,功能窗口公共壳+四件,已建件——迭代 47 卡④) | 营地五功能窗口的四个承载视图(锻造工坊/天赋树/秘宝匣/图鉴)+公共壳(窗口壳/行板/关闭钮;生涯页挂笔记本路由不经此族);模态栈单口 open/close、五窗互斥单开;presenter 承接面零回表(树购买/锻造三意图经既有写口族) | 各 view open/close+意图信号外发;关闭钮 pressed | camp_shop_presenter/MetaProgression 写口(经组合根);CampRefreshBus(刷新广播消费) | Control |
| **camp_esc_overlay+MainEscFlow**(`views/camp_esc_overlay.gd`+`presentation/main_esc_flow.gd`,Esc 浮窗视图+四态路由件,已建件——迭代 47 卡⑤) | Esc 浮窗三钮视图(返回主菜单/设置/退出)+Esc 四态路由静态件(根态唤起/再按关窗/功能窗开着先关最上层窗〔camp.md v2.3 定稿覆盖卡面 Q1 甲〕/设置开态不误关;菜单语境不唤起);**main._unhandled_input=产品码首个键盘输入入口**(契约 9——事件驱动、禁 Input 轮询、不挂 ui_cancel、pressed 非 echo) | flow.open/close 路由口;三钮 pressed 意图信号(经组合根接线) | 组合根(_unhandled_input 前置与意图消费);模态栈(关窗单口);screen_flow(设置/返回动线) | Control+静态件 |
| **CampHudBand**(`views/camp_hud_band.gd`,营地顶栏 HUD 件,已建件——迭代 47 卡⑤) | 顶栏 48px 全宽窄条:钥石余额 badge 唯一呈现(单口取现值、显式刷新才变);set_hud_band 预留位落座 | badge 文本投影;refresh 时取现值 | CampRefreshBus(挂册广播);MetaProgression 钥石读 | Control |
| **CampRefreshBus**(`views/camp_refresh_bus.gd`,营地刷新单口件,已建件——迭代 47 卡④⑤) | 营地刷新单口唯一承载:进档尾与营地写口尾触发 refresh 广播(八写口尾改路由),现开界面与 HUD 同步取现值 | 挂册/refresh 广播 | 组合根(触发点接线);四子界面与 CampHudBand(消费) | 无(RefCounted 信号件) |
| **board_hover**(`views/board_hover.gd`,悬停预承诺呈现域件,已建件——迭代 45) | 悬停反馈域唯一承载(自 board_view 收编 11 函数族+_hover/_last_click 两成员):三语义光标、目标格边框、BFS 路径预览、chord 双击首遇锚;_r0 出生展开区成员留宿主 | 构造=引用束注入实为 7 项(cells/minesweeper/diggable 引用+格命中换算/光标写入/hover_forbidden/chord_attempted 四 Callable——卡片预估 5 项,11 函数逐字迁移的最小必需面);三入站口留宿主委托;hover_probe 读面留宿主 | board_view(宿主);输入事件经宿主入站口 | 无(RefCounted) |
| **cell_base_layer/cell_mark_overlay**(`views/`,单格两绘制域件,已建件——迭代 45) | 单格绘制域拆分(自 board_cell_unit 状态件 `_CellPaintState` 收编,入参与该层绘制命令同件):基座层(底面/描边/立面/投影/接触带/倒角,12 成员)与标识叠加层(标记/字形/徽章/封印/点迹/高亮/退色,13 成员);宿主 _draw 退为六步时序器,类变量 30→10 | 构造注入;绘制命令由宿主 _draw 按层序调用 | board_cell_unit(宿主);gdstyle 键各文件独立计数(12/13 均 ≤15) | 无(RefCounted) |
| **standee_vitals/standee_motion**(`views/`,站桩两状态件,已建件——迭代 45) | 站桩状态域拆分(自 `_StandeeState` 真实 25 成员收编):身份命值(hp/atk/状态值族,12 成员)与资产演出(动作/姿态/位移演出族,11 成员);三个演出探针计数器留宿主,宿主类变量 19→10 | 构造注入;st(沿用)/mo 两实例由宿主持有 | standee_body(宿主);battle_stage_view 写入面逐字保持 | 无(RefCounted) |
@@ -172,7 +184,7 @@
| **board_resolvers**(`presentation/board_resolvers.gd`,迭代 37 拆出) | 棋盘每格渲染数据的只读解析回调四函数(奖励徽章身份——挖掘期 Active 相位内、地形变异数字遮蔽与角标、调试加成生效值)——有态绑定件,与无态静态投影族 HudPresenter 职责互斥 | 构造注入 db、调试浮窗与结算活态取值,产出绑定 Callable 供组合根接线 | ConfigDB / DebugOverlay / 结算活态取值 Callable | 无(纯投影) |
| **main_ui_build**(`presentation/main_ui_build.gd`,迭代 37 拆出) | `_build_ui` 八步拆分件——组合根 UI 装配分步承接(三屏壳实例化、视图句柄接线、覆盖层装配与模态编排注入按步拆开);main 侧留同名薄委托,装配序与 z 序零改动 | 分步静态函数(成员访问经 root 显式传入) | 层序逻辑不在此件——唯一事实源=`ui_registry.LAYER_CONTRACT`+`ui.apply_layer_contract(root)`(迭代 44 迁驻注册面) | 同 D1(Control 装配面) |
| **main_adventure_flow**(`presentation/main_adventure_flow.gd`,迭代 37 拆出) | main 冒险流程族——菜单开局/续玩后的冒险编排接线、节点事件分发、终局面与选路屏开合;逐字搬运,main 侧留同名薄委托(探针 `main.X` 路径零迁移) | 流程静态函数(root 显式) | 局态全局住 run_scope 节点——本件零成员态、零新增信号连接(连接语句随原段搬运) | 无 |
| **main_overlay_flow**(`presentation/main_overlay_flow.gd`,迭代 37 拆出) | main 浮层流程族——设置/状态面板/生涯页/选档界面/图例/钱包事件的开合与数据投喂;逐字搬运,main 侧留同名薄委托 | 流程静态函数(root 显式) | 全部开合走组合根模态编排口(`root.ui.modals.flow.open/close`)——本件零成员态 | 同 D1 |
| **main_overlay_flow**(`presentation/main_overlay_flow.gd`,迭代 37 拆出) | main 浮层流程族——设置/状态面板/生涯页/选档界面/图例/钱包事件的开合与数据投喂;逐字搬运,main 侧留同名薄委托 | 流程静态函数(root 显式) | 全部开合走组合根模态编排口(`root.ui.flow.open/close`——ModalFlow 自 UiModals 升格 UiRegistry 直驻,迭代 49 卡②)——本件零成员态 | 同 D1 |
| **main_debug_flow**(`presentation/main_debug_flow.gd`,迭代 37 拆出) | main 调试流程族——调试浮窗开合与上下文同步、批量模拟入口、两层调试对局起手、诊断转储;逐字搬运,main 侧留同名薄委托 | 流程静态函数(root 显式) | 调试会话状态机归 debug_session.gd——本件只接线与出 UI,零成员态 | 同 D1 |
| **TilePalette**(`presentation/views/tile_palette.gd`,迭代 37 拆出) | 瓦片排版/装载:高墙/地面瓦片整批装载与运行时镜像合成、地板明度归一、数字墨族按板自适应判据、格坐标确定性散列与十六正交情形墙瓦片查表 | 查表族(读件持棋盘引用——棋盘视图 rebuild 经 `bind_board` 同步);装载缓存七成员持于件内(同板型零重载、换板重载时序同源) | 零绘制面、零玩法数据写入(绘制调用面留棋盘视图);纹理路径单点在件内 | Resource 纹理加载——LOW |
| **HeroSprite**(`presentation/views/hero_sprite.gd`,迭代 37 拆出) | 英雄精灵四态与落位装配(落位与位移演出、撞墙帧闪、挖掘弹跳、脚底锚与持握手位出口) | 由棋盘视图 `_init` 建为子件(注入世界根与壳层容器引用)——精灵本体经世界根 ensure_hero 建于 SubViewport 世界内,本件只驱动其状态 | BoardWorld 世界根;素材缺位=零精灵(棋盘视图字形「人」回退路径在役) | Node2D / create_tween(Tween 系 Node 方法——MEDIUM 域对照 breaking-changes.md) |
@@ -190,7 +202,7 @@
### 三屏壳与组合根句柄面
- 呈现场景拆为三屏壳:MenuScreen(开始菜单屏)/CampScreen(营地屏)/AdventureScreen(冒险屏——内含关卡地图与战斗两容器)。
- 屏成员寻址自实现批起迁经界面注册面(**已建件——迭代 44**):探针挂载假设 `main.X` 迁移为 `main.ui.<域容器>.<句柄>`(ui_screens/ui_battle/ui_modals 三域容器,约 867 处探针与系统测试引用随批改址);原 S13 豁免登记〔2026-10-27「组合根类变量面即探针契约面」〕注销;main.gd 类变量 49→15,注册面形态见「模块归属·呈现层」表 ui_registry 行;ModalFlow 实例随 UiModals 容器构造建立(装配早期注入点依赖其先在座);取证探针 shot_probe/fx_shot_probe 随批改址;局态一律住 RunScope 节点,禁在屏/视图侧持有局态引用。
- 屏成员寻址自实现批起迁经界面注册面(**已建件——迭代 44**):探针挂载假设 `main.X` 迁移为 `main.ui.<域容器>.<句柄>`(ui_screens/ui_battle/ui_modals 三域容器,约 867 处探针与系统测试引用随批改址);原 S13 豁免登记〔2026-10-27「组合根类变量面即探针契约面」〕注销;main.gd 类变量 49→15,注册面形态见「模块归属·呈现层」表 ui_registry 行;ModalFlow 实例随 UiRegistry 构造建立(构造时点与原 UiModals 形态等价——注册面构造点先于装配,迭代 49 卡② 升格直驻);取证探针 shot_probe/fx_shot_probe 随批改址;局态一律住 RunScope 节点,禁在屏/视图侧持有局态引用。
- **组合根拆件**=组合根构造注入、代组合根执行核心写调用的呈现侧子件(现行三件:curio_interact_controller/camp_shop_presenter/treasure_interact_controller——冒险节点后续推进、营地购买与刷新、道具使用)。视图禁直连拆件;核心写调用的可达路径仍是「视图→信号→组合根(含拆件)→核心」,依赖规则与组合根单点装配不变。成员见「模块归属·呈现层」表。
### 视觉层装配合同
@@ -259,7 +271,7 @@
|---|---|---|---|
| **worktree-guard**(ZCode PreToolUse) | `.zcode/hooks/worktree-guard.sh`(本机件,不入 git) | agent 侧车道纪律:主工作区 Edit/Write 与主区非 merge `git commit` 拦截(豁免 `.zcode/`、`.qoder/`;worktree 内目标快速放行;合并收尾提交凭 MERGE_HEAD 豁免);`git commit --no-verify` 拦截(该旗标仅属用户);iter 分支合回一卡一提交数卡校验;规则闸 | 路径性质+分支名+MERGE_HEAD+git 图 |
验证收拢为合回后本地 CI 全量(post-merge 触发),commit 点零执法;主工作区防污染由 ZCode 层守卫承担——只约束 agent,用户手工改动不受限。子代理覆盖面(2026-10-26 冷启动评估实测):子代理的工具调用不经过 ZCode 层守卫——ZCode 层实际只覆盖主会话工具调用;残余暴露面=子代理写主工作区与蓄意 `--no-verify`(该旗标整族跳过 git 层钩子),属故意越权而非遗忘型失误,与防遗忘的设计目标正交。
验证收拢为合回后远端 CI(post-merge 钩子推送 origin master 触发 Gitea Actions,runner=Mac 本机 host 模式;按改动域分流,分流单点=tools/ci/domain_route.sh),commit 点零执法;主工作区防污染由 ZCode 层守卫承担——只约束 agent,用户手工改动不受限。子代理覆盖面(2026-10-26 冷启动评估实测):子代理的工具调用不经过 ZCode 层守卫——ZCode 层实际只覆盖主会话工具调用;残余暴露面=子代理写主工作区与蓄意 `--no-verify`(该旗标整族跳过 git 层钩子),属故意越权而非遗忘型失误,与防遗忘的设计目标正交。
### 三条判定硬闸现行状态
@@ -271,22 +283,24 @@
背景事实(run_smoke 头注在案):GDScript 运行时脚本错误不改进程退出码、不计入冒烟失败数、且静默中断所在函数剩余断言——2026-09-19 状态记录 83 实证「309 项 0 失败」实为断言未跑全。这是 SCRIPT ERROR 扫描必须存在于判定层的原因。
### 静态扫描域 S1–S8 承接清单
### 静态扫描域 S1–S13 承接清单
静态扫描域规则(2026-09-12 立,沿革见 git commit log;下表为现行事实登记):
| # | 规则 | 状态 |
|---|---|---|
| S1 | 玩法代码禁 `randomize()`、自建 `RandomNumberGenerator`(D2 Rule 5) | **在位**(硬失败;扫描面 game/core + game/presentation) |
| S1 | 玩法代码禁 `randomize()`、自建 `RandomNumberGenerator`(D2 Rule 5) | **在位**(硬失败;扫描面 game/core + game/presentation)。非产品码三目录(`game/tests`/`game/probe`/`game/sim`)不进本闸与 S2——它们自建且**显式定种**的随机源是合法测量口径(同种子对拍改前改后读数),禁的是不定种形态;适用域分档与无机器闸的理由见 code-conventions §4 第 13 条(2026-11-03 架构审查 P1 余项裁:不扩扫描面,人工评审承载) |
| S2 | 禁全局随机函数 `randi()` / `randf()` / `randf_range()`——全局 RNG 绕开 RngService(specialist 补登) | **在位**(与 S1 同段硬失败;实例方法 `.randi()` 排除、`rng-seed-exempt` 豁免注记在案) |
| S3 | core/ 禁 ConfigDB 外 data 表加载(`load(` / `preload(` / `ResourceLoader.load`;schema class_name 直引豁免)(D2 Rule 2) | **在位**(warning 级——class_name 直引误报需人工复核;路径已由裸 `core` 修正为 `game/core`,此前恒零命中静默空转;豁免 config_db.gd 自身=数值单一事实源的正主) |
| S3 | core/ 禁 ConfigDB 外 data 表加载(`load(` / `preload(` / `ResourceLoader.load`;schema class_name 直引豁免)(D2 Rule 2) | **在位**(warning 级——class_name 直引误报需人工复核;路径已由裸 `core` 修正为 `game/core`,此前恒零命中静默空转;豁免 config_db.gd 自身=数值单一事实源的正主)。2026-11-03 架构审查 P1 余项裁**维持 warning 级不升硬**:升硬的前提是先有可靠的直引误报排除判据,该判据未立;本行状态即事实源,禁在别处另列 |
| S4 | core/ 禁 `extends Control/Node2D`、禁 `.tscn` preload(D2 Rule 7) | **在位**(硬失败) |
| S5 | core/ 禁裸引用 autoload 全局标识符(`ConfigDB` / `RngService` 直接写 = --script 模式 parse error)——构造注入 only(specialist 升格) | **在位**(硬失败;形态=标识符后紧跟 `.` 的成员访问,排除注释行与字符串字面量) |
| S6 | core↔core 信号连接只许方法 Callable(禁 lambda 捕获 self);发射者禁持有订阅者反向引用 | **在位**(2026-10-25 落闸:内联 lambda 禁令机器闸——同行与跨行两形态、豁免注记 `s6-signal-exempt`、盘面零存量;「发射者禁反向引用」句静态判据不成熟,归人工评审面承接、不造弱判据) |
| S7 | B1 编排唯一性:B2/B3/B4 API 符号命中文件 ⊆ B1 文件集;A2/B3/B4 零相互直调(B1 AC-43) | **在位**(2026-10-25 落闸:符号清单×B1 域文件集,族内自调用豁免、豁免注记 `s7-b1-exempt`、缺位自检;全符号形态盘面零存量) |
| S8 | 结算路径 `await` 零命中(B1 结算/编排文件集);字面量扫描 = warning 级 + 人工三要素复核(D2 AC-14 口径) | **在位**(2026-10-25 落闸:B1 域文件集 await 零命中,文件集缺位自检、排除注释与字符串;盘面零存量。本行后半句「字面量扫描=warning 级+人工三要素复核」为独立子项、仍归人工面) |
| S8 | 结算路径 `await` 零命中(B1 结算/编排文件集);字面量扫描 = warning 级 + 人工三要素复核(D2 AC-14 口径) | **在位**(2026-10-25 落闸:B1 域文件集 await 零命中,排除注释与字符串;盘面零存量。清单单点=`static_scan.sh` 的 `B1_SET`,S7 的豁免名单由它派生(原两份 14 文件抄本已并点,2026-11-03 架构审查 P1 裁)。自检两件:①清单内文件缺位即红;②**目录域反向对账**——`game/core/settlement/` 实有 `.gd` 未登记进 `B1_SET` 即红(新段类忘登记=await 面静默失效,2026-11-03 补)。反向对账只覆盖 settlement/:装板/授予/效果端口/掷格四件结算码住 `game/core` 根下,纯目录域覆盖不住,根下新增仍由本行「模块归属」B1 登记面+写卡段申报承接。本行后半句「字面量扫描=warning 级+人工三要素复核」为独立子项、仍归人工面 |
域外扩充两件(均硬失败在位):**S9** 类型闸(`tools/audit_type_hints.py`,迭代 27 T5——产品码无类型容器/有值返回缺类型/参数缺类型);**S10** 文件头闸(`tools/audit_file_headers.py`——头注 ≤8 行 + 日期/变更叙事黑名单)。
域外扩充五件(S11/S12/S13 自 2026-09-29 起陆续落闸,本表原先只登记到 S10,2026-11-03 补齐登记面):**S9** 类型闸(`tools/audit_type_hints.py`,迭代 27 T5——产品码无类型容器/有值返回缺类型/参数缺类型;扫描面=产品码三目录);**S10** 文件头闸(`tools/audit_file_headers.py`——头注 `##` 载体+日期/变更叙事黑名单;扫描面=产品码三目录);**S11** 代码注释禁用词闸(扫描面=`game/` 全域 `.gd`/`.tres`/`.md`/`.json`/`.sh`,词表单点取 `design/gdd/术语表.md`);**S12** 效果引擎无状态化旧件零残留闸(扫描面=`game/` 全域 `.gd`/`.tres`,旧符号与旧 id 字面清单为脚本字面值);**S13** 第三方质量规则闸(`tools/gdstyle_gate.py`,钉 gdstyle v0.4.0;扫描面=产品码三目录,存量以 `tools/gdstyle_baseline.txt` 欠账簿登记,判定=基线外新键红、同键数值恶化红)。
S11/S12 扫描面覆盖全域,故 sim/probe/tests 的术语与旧件面**在册**;其余十一闸(S1–S10、S13)扫描面止于产品码,非产品码三目录不受约束——分档理由与各目录的运行期承接通道见 code-conventions §4 第 13 条。**防空转自检现行状态**(本文「三层承载与判定原则」要求扫描面为空即判红):S1–S8 与 S11/S12/S13 各自带空面或缺位自检;**S9/S10 两件已补齐同款自检**(`tools/audit_type_hints.py` 与 `tools/audit_file_headers.py` 缺目录或扫描面零个 `.gd` 一律判红,并绿时打印扫描面件数供核;2026-11-03 架构审查 P1 余项的工程改动批落地,本表此前登记的「静默零命中即 PASS」偏差已清偿)。
### 三层承载与判定原则
+9 -2
View File
@@ -34,6 +34,12 @@
### 1.5 禁止事实约定
任何"大家默认这么做"的惯例必须成文进本文件(或 AGENTS.md)才算存在。写代码时发现未成文但必须遵守的约定 → 当场补条文,不许靠惯性延续。
### 1.6 拆分交接与封装边界
本节管拆分类改动的交接面与封装面,与 §1.1 拆分判据(职责轴)配合使用:§1.1 管怎么切,本节管切完之后件与件之间怎么往来。
1. **拆分交接定义**:拆出一个新类时,交付物必须同时写明职责边界与交接定义——新类构造时需要哪些依赖,由拆出它的类在构造它时一次交给它;新类需要回调拆出它的类的哪些方法,以 Callable 形式交付。两者齐备才算拆分合格。为什么:只切职责不定义交接,新件会伸手回原类内部拿东西,封装从拆件那天起就破了。正面先例=装板件的引用束注入(表数据、随机流、装板所需对象与出错回调一次性交付——架构文档「战斗编排域拆件定稿」节 BoardInstaller 行在册)。
2. **封装边界**:任何代码不得访问其他对象的下划线成员;跨对象往来只走公开方法与属性。为什么:下划线只是命名约定,语言不设防、无编译期检查——此条是封装硬纪律,违者即红。
---
## 2. 契约纪律——跨层/跨类调用的语义
@@ -66,12 +72,13 @@
4. **lambda 捕获循环变量按创建时值**——循环内先落地局部变量再捕获,或用 `bind`。
5. **重命名脚本必须同步 `.uid` 文件**;新增 `class_name` 后必须跑一次编辑器扫描刷新全局类缓存,否则 `--headless --script` 模式解析失败。
6. **`print` 格式占位符与实参类型必须匹配**(`%d` 配 String = 静默输出字面量)。
7. **语言纪律已机器化为 S9 类型闸**——`tools/audit_type_hints.py`,执行载体=静态扫描域 S9(`game/tests/static_scan.sh`),退出码 0=归零。扫描面=产品码(`game/core`+`game/data`+`game/presentation`;probe/sim/tests 不在扫描面——测量面容器直构是既有惯例)。三规则:R1 无类型容器(显式非参数化 `Dictionary`/`Array` 注解)/R2 有值返回缺返回类型(纯副作用缺 `-> void` 属写法面不入闸)/R3 参数缺类型(`_init` 豁免——构造注入面形态自由)。
7. **语言纪律已机器化为 S9 类型闸**——`tools/audit_type_hints.py`,执行载体=静态扫描域 S9(`game/tests/static_scan.sh`),退出码 0=归零。扫描面=产品码三目录(`game/core`+`game/data`+`game/presentation`);非产品码三目录的适用域分档见本节第 13 条。三规则:R1 无类型容器(显式非参数化 `Dictionary`/`Array` 注解)/R2 有值返回缺返回类型(纯副作用缺 `-> void` 属写法面不入闸)/R3 参数缺类型(`_init` 豁免——构造注入面形态自由)。
8. **`:= {}` 推断形态不算债**——`var x := {}` 类赋值推断属类型推断合法面,不入 R1 扫描;只有显式写的非参数化容器注解才算无类型容器。
9. **行级白名单通道 `# type-hint: ignore`**——豁免该行不入 S9;豁免理由必须随行注明(现行例:`board_generator` 四函数的 db 参鸭子型——typed 参拒冒烟夹具 `_BoardRowStub` 注入)。
10. **`# rng-seed-exempt` 标记豁免通道**——S1/S2 随机函数扫描对该行豁免;限定用途=非玩法 RNG 消费面的引擎熵(现行例:组合根种子编辑框空态取 `randi()`——建种子不进玩法封闭流)。
10. **`# rng-seed-exempt` 标记豁免通道**——S1/S2 随机函数扫描对该行豁免;限定用途=非玩法 RNG 消费面的引擎熵(现行例:组合根种子编辑框空态取 `randi()`——建种子不进玩法封闭流);非产品码三目录自建随机源的定种要求见第 13 条。
11. **`--script` 模式禁裸 autoload 标识符**——`ConfigDB`/`RngService` 等 autoload 名在 `--headless --script` 模式编译器不解析(parse error);产品码与测试夹具一律经节点路径取用(`get_node("/root/…")`/`AUTOLOAD_PATH_*` 常量);静态扫描域 S5 硬失败承载在位。
12. **Variant 参数化现行口径**——账本类字典/数组标注 `Dictionary[Variant, Variant]`/`Array[Variant]` 即合格(满足 R1);元素类型精化列后续事项、不入硬纪律,口径变更须用户裁决后续批次另行写入。
13. **静态扫描适用域按来源分档(2026-11-03 架构审查 P1 余项裁)**——S 系静态扫描(S1–S13)的扫描面一律止于产品码三目录,`game/tests`/`game/probe`/`game/sim` 不进任何 S 系扫描面;这三目录的可靠性由运行期通道承接,各通道是:`game/tests`=闸 00/01/02(冒烟·单元与集成·系统测试)、`game/probe`=闸 03/04/05(场景探针与渲染 golden;同目录内 `type_glow_shot_probe` 是人工取证件、`probe_ui_util` 是探针共用面,两者不入闸)、`game/sim`=不入 CI,属用户手动发起的调参与数值测量批量。三目录**允许**自建 `RandomNumberGenerator`,条件=**必须显式定种**(改前改后读数要用同种子对拍,这是全项目测量口径);三目录真正禁止的形态是不定种随机——`randomize()` 与全局 `randi()`/`randf()`/`randf_range()`,一旦命中那次运行结果不可复现,读数与取证一并失效。这条对三目录的部分目前**无机器闸**(S1/S2 扫描面不含它们):扩面需给每处合法定种挂 `rng-seed-exempt` 注记、只拦得住新增,2026-11-03 用户裁不扩,改由本条文字+批末独立验收审计的人工评审承载。术语口径:`tools/run_all_gates.sh` 里的「测量面」指 `game/tests`+`game/sim`(影响面选闸用语,`game/probe` 不在其中——改探针必须跑 03/05),与本条分档无关;本文不再用「测量面」统称这三个目录。
---
+2 -2
View File
@@ -40,10 +40,10 @@
**正面总则**:见名知意——每个名字(概念名、术语、文档与目录名)本身就说清所指,起不出这样的名字多半是概念还没想清;所见即所得——字面意思就是规则的完整意思,有隐含前提就写进句子。两句管语义透明,不与第 8 节指路存根冲突。
文档、评审输出、日志与一切沟通中**禁止自造黑话**——比喻性生造词、只有作者自己懂的缩略语:
文档、评审输出、日志中**禁止自造黑话**——比喻性生造词、只有作者自己懂的缩略语(对话输出面的用语与证据规则归 AGENTS.md「回答风格规则」,不在本节范围):
- 只能使用:(a)人人可懂的直白语言,或(b)游戏行业通用术语(如 flood fill、战争迷雾、连锁展开、结算、增益/减伤)。
- 指代新概念用直白描述性短语(正例:"实测可推理率");确需命名时:首现处附一句白话定义,并登记进 `design/gdd/术语表.md`。
- 指代新概念用直白描述性短语(正例:"实测可推理率");确需命名时:首现处展开成完整白话句(同「通行检验标准」),并登记进 `design/gdd/术语表.md`。
- 唯一例外:玩家在游戏里也会看到的专属名词(道具名、界面用语)。文档内部的机制概念不得造词。
**自造词的三种固定形态(全部禁止)**:
+8 -8
View File
@@ -7,12 +7,12 @@
## 1. 分支纪律(worktree 铁律)
主工作区(master 检出)只作合并落点,一切开发/设计改动禁止直接发生在主工作区(2026-10-31 用户裁恢复;2026-10-30 的「主区直改+直提」车道与 commit 点 pre-commit 直改闸随之退役;验证模型不动——合回后本地 CI 仍是唯一强制验证点):
主工作区(master 检出)只作合并落点,一切开发/设计改动禁止直接发生在主工作区(2026-10-31 用户裁恢复;2026-10-30 的「主区直改+直提」车道与 commit 点 pre-commit 直改闸随之退役;验证模型同构——合回后远端 CI 是唯一强制验证点,2026-11-03 用户裁,细则见本节第 3 条):
1. **worktree 车道(一切面)**:每批先建独立 worktree:`git worktree add ../g-plan2-<任务名> -b <任务分支>`;建区后立刻跑 `tools/setup_worktree_userdir.sh`——给该区独立 Godot user 目录(测试夹具、试玩日志、截图产物不与其他区共用;主区不生成,真实档保持原位)。所有改动与提交都在 worktree 内自由进行——commit 点零钩子检查(`tools/hooks/pre-commit` 已删除)。豁免面仅 `.zcode/`(钩子与配置)与 `.qoder/`(本机 harness 配置)允许主工作区直改——两份实测均不入 git(走 worktree 反而带不进去,改动只对本机生效)
2. **收口顺序(固定)**:**冻结 → 件核 → 并 master → 重塑 → 主区合回 → CI 验证 → 删区**——代码与断言改完即冻结,全仓件核 grep 查残留;master 已被别的批次推进时先在 worktree 内 `git merge master` 解冲突(必须在合回之前,合回后才并=CI 验的是中间态);**重塑**=迭代分支(iter<N> 形)合回前执行 `python tools/reshape_cards.py`,把分支线性史按卡末态快照压成一卡一笔(可选追加一笔纯文档收尾),master 台账由此每卡一行——工具自带「重塑前后树逐字节一致」断言与 backup 分支,不改任何文件内容;非迭代批免重塑;然后主工作区 `git merge --no-ff <任务分支>`——这是主区唯一合法写动作(合回守卫对迭代分支数卡校验,未归卡提交拦下)。**CI 全绿后才 `git worktree remove`+删分支;CI 红不删区——回任务 worktree 修复提交再合,追绿后删区**。游戏类测试(冒烟/单测/MC/探针)批内默认零执行(两入口铁规,见 §4),用户点名或当场问才跑
3. **合回后验证(本地 CI,2026-10-30 用户裁)**:git merge 合回 master 落地后 post-merge 钩子(`tools/hooks/post-merge`)后台触发 `tools/ci_runner.sh merge` 对 master 尖跑一次全量域闸——唯一强制全量验证点;CI 红态下每个修复提交经 post-commit 钩子(`tools/hooks/post-commit`)自动追绿复验(钩子仅主工作区生效——修复合回落地即触发),绿态与无状态零触发。重跑判据:同一份字节禁止第二次人手跑;有意义的重跑只剩「验证修复」一类。CI 红不回滚合并——红项记 `game/tests/.gates/ci-status.json`,开工先读 CI 状态,红未修不开新批。跑批起手 `--editor --quit` 刷类名缓存(在册坑:.godot 缓存不入 git,合并后失配假红假绿)。并跑语义=跑完补跑(coalesce):跑批期间新触发不中断当前轮,轮尾对最新尖端补跑,绝不逐笔各跑一轮
4. **执法分层(全机械,零自觉依赖)**:①`.zcode/hooks/worktree-guard.sh`(PreToolUse,本机件不入 git)——agent 侧:主工作区 Edit/Write 与主区非 merge `git commit` 拦截(豁免 `.zcode/`、`.qoder/`;worktree 内目标快速放行;合并收尾提交凭 MERGE_HEAD 豁免)、`git commit --no-verify` 拦截(该旗标仅属用户)、iter<N> 分支合回的一卡一提交数卡校验、规则闸(写 design//game/ 前核对会话规约读取记录)。②post-merge/post-commit 钩子——本地 CI 触发(仅主工作区;任务 worktree 内的合并不触发)。③git 层不设车道钩子(pre-commit 直改闸已退役)——用户手工改动不受限;ZCode 层只约束 agent(子代理不经守卫层)
2. **收口顺序(固定)**:**冻结 → 件核 → 并 master → 重塑 → 主区合回 → 删区**——代码与断言改完即冻结,全仓件核 grep 查残留;master 已被别的批次推进时先在 worktree 内 `git merge master` 解冲突(必须在合回之前,合回后才并=CI 验的是中间态);**重塑**=迭代分支(iter<N> 形)合回前执行 `python tools/reshape_cards.py`,把分支线性史按卡末态快照压成一卡一笔(可选追加一笔纯文档收尾),master 台账由此每卡一行——工具自带「重塑前后树逐字节一致」断言与 backup 分支,不改任何文件内容;非迭代批免重塑;然后主工作区 `git merge --no-ff <任务分支>`——这是主区唯一合法写动作(合回守卫对迭代分支数卡校验,未归卡提交拦下)。**合回落地即 `git worktree remove`+删分支(合回即删,2026-09-19 原裁);post-merge 钩子已在合回落地时自动触发 CI,红态不回滚合并——新开修复 worktree(`fix-<任务名>` 分支,非 iter<N> 形免重塑免数卡)修复提交再合,落地复验追绿后删修复区**。游戏类测试(冒烟/单测/MC/探针)批内默认零执行(两入口铁规,见 §4),用户点名或当场问才跑
3. **合回后验证(远端 CI,2026-11-03 用户裁取代本地 CI)**:git merge 合回 master 落地后 post-merge 钩子(`tools/hooks/post-merge`)自动 `git push origin master` 触发远端 CI(Gitea Actions,runner=Mac 本机 host 模式),工作流按改动域分流(分流算法单点=`tools/ci/domain_route.sh`:游戏码批=两域全量含渲染闸,文档批=文档域秒级闸,纯闸件/管线批=零触发)——唯一强制验证点。回执由 `tools/ci_watch.sh remote` 轮询 Gitea API 写回 `game/tests/.gates/ci-status.json`(合同不变:commit/verdict/red_gates/key_lines/note),agent 开工先读 CI 状态的纪律不变,红未修不开新批。CI 红态不回滚合并——修复走新开修复 worktree(`fix-<任务名>` 分支,非 iter<N> 形免重塑免数卡),修复合回落地即再推再验追绿(追绿同链;本地跑批件 `ci_runner.sh` 与本地追绿钩子 post-commit 已退役)。导入缓存刷新(.godot 不入 git 的在册坑)由工作流「导入缓存刷新」步接管。**回执等待纪律(2026-11-02 用户裁)**:合回落地即向用户呈报本批总结,回执等待一律以 run_in_background 后台任务运行 `tools/ci_watch.sh remote <合并提交>`(认领判据与容错细则=该件头注),禁前台 sleep/轮询循环等 CI;后台任务唤醒会话后按回执续行——绿即删区收口,红或超时即呈报走修复批。闸重跑等一切分钟级跑批等待同此纪律
4. **执法分层(全机械,零自觉依赖)**:①`.zcode/hooks/worktree-guard.sh`(PreToolUse,本机件不入 git)——agent 侧:主工作区 Edit/Write 与主区非 merge `git commit` 拦截(豁免 `.zcode/`、`.qoder/`;worktree 内目标快速放行;合并收尾提交凭 MERGE_HEAD 豁免)、`git commit --no-verify` 拦截(该旗标仅属用户)、iter<N> 分支合回的一卡一提交数卡校验、规则闸(写 design//game/ 前核对会话规约读取记录)。②post-merge 钩子——远端 CI 触发(推送+挂回执等待;仅主工作区,任务 worktree 内的合并不触发)。③git 层不设车道钩子(pre-commit 直改闸已退役)——用户手工改动不受限;ZCode 层只约束 agent(子代理不经守卫层)
## 2. 五段流水线
@@ -44,12 +44,12 @@
5. **涉数值改动先采改前读数**——与改后同随机种子配对比较并写明逐项比对口径;无数值改动禁跑模拟
**实施**
6. **新功能必配新测试**——新增玩法/机制必须配套新测试套件进 `tests/run_all`;没有对应测试的变更不许合并;并按 test-conventions §8 挂进改动—验收对照表,没有对照表行的行为改动同样不许合并
6. **新功能必配新测试**——新增玩法/机制必须配套新测试套件进 `tests/run_all`;没有对应测试的变更不许合并;并按 test-conventions §8 挂进改动—验收对照表,没有对照表行的行为改动同样不许合并。拆件/重构产出的新 core 件不属新增玩法,由 test-conventions §8.3「新增 core 件的覆盖登记义务」承接(被 tests 面点名,或在能力行申报「经宿主链覆盖」),核对动作归本清单第 10 条的收尾提交
7. **验收改动先行声明**——验收变化(基线换代/探针增改/旧断言改判)预先写进需求卡片,禁事后补
**完成**
8. **合回后 CI 验证(唯一强制验证点)**——主工作区 `git merge --no-ff <任务分支>` 落地后 post-merge 钩子自动跑全量域闸(不带参数档,02 全套件),判定与红项落 `game/tests/.gates/ci-status.json`。全量是唯一强制档:跨卡触面、探针与未申报套件的消费漏网只有全量闸能抓(迭代 44 实证),关联档选测的盲区由它兜底。合回前独立验收审计通过(iter 技能第 5 步),未过不合回。该脚本是全部验证闸的**唯一入口、唯一清单与唯一域划分(含选闸算法与套件族映射表)**,闸件增减、分域调整都只改它;**本文与其他文档禁另列闸件清单**(清单散落多处正是 iter27 漏跑 `probe_gate --full` 的成因)。开发期手动跑批按需选档(按文件性质判域:代码面→`--code`,文档件→`--docs`,两类都有→全量;`--code` 关联档选测——02 只跑「需求卡片申报 ∪ diff 推导」并集套件、00 冒烟/01 系统测试/09 静态扫描三件保险恒跑、横切面回落全量——算法见闸脚本),手动跑不构成验收。闸件(`tools/` 下机检脚本与闸壳)自身的改动不占 CI 全量——其质量义务=落批时人工确认闸可跑通且判据口径未变;闸真崩溃时 CI 判红在案(跑不出回执=verdict 红,fail-closed 语义保留)
9. **重跑语义(2026-10-30 用户裁,取代原「每批一次/合并后零复跑」口径)**——同一份字节禁止第二次人手跑;允许的重跑只剩两类:① CI 红后的修复提交(post-commit 钩子自动追绿复验,每笔修复至多触发一轮);② 用户自发发起的全量回归。「跑都跑了再跑一遍保险」「顺手改点再补一跑」都不构成重跑理由。类名缓存刷新与开机确认由 CI 跑批起手接管(§1 第 2 条),合并后无手工动作
8. **合回后 CI 验证(唯一强制验证点)**——主工作区 `git merge --no-ff <任务分支>` 落地后 post-merge 钩子自动推送 origin master 触发远端 CI;远端按改动域分流(§1 第 3 条),游戏码批跑全量域闸(不带参数档,02 全套件),判定与红项由 `ci_watch.sh remote` 写回 `game/tests/.gates/ci-status.json`。全量是游戏码批的强制档:跨卡触面、探针与未申报套件的消费漏网只有全量闸能抓(迭代 44 实证),关联档选测的盲区由它兜底。合回前独立验收审计通过(iter 技能第 5 步),未过不合回。`tools/run_all_gates.sh` 是全部验证闸的**唯一入口、唯一清单与唯一域划分(含选闸算法与套件族映射表)**,闸件增减、分域调整都只改它;**本文与其他文档禁另列闸件清单**(清单散落多处正是 iter27 漏跑 `probe_gate --full` 的成因)。开发期手动跑批按需选档(按文件性质判域:代码面→`--code`,文档件→`--docs`,两类都有→全量;`--code` 关联档选测——02 只跑「需求卡片申报 ∪ diff 推导」并集套件、00 冒烟/01 系统测试/09 静态扫描三件保险恒跑、横切面回落全量——算法见闸脚本),手动跑不构成验收。闸件(`tools/` 下机检脚本与闸壳)自身的改动不占 CI 全量——其质量义务=落批时人工确认闸可跑通且判据口径未变;闸真崩溃时远端 CI 判红在案(job 失败=verdict 红,fail-closed 语义保留)
9. **重跑语义(2026-10-30 用户裁,取代原「每批一次/合并后零复跑」口径)**——同一份字节禁止第二次人手跑;允许的重跑只剩两类:① CI 红后的修复合回(post-merge 钩子再推再验,每轮修复至多触发一轮);② 用户自发发起的全量回归。「跑都跑了再跑一遍保险」「顺手改点再补一跑」都不构成重跑理由。导入缓存刷新由远端工作流「导入缓存刷新」步接管,合并后无手工动作
10. **批次完成后的登记义务**——合回 master 后按 doc-conventions §12.1 推进待办清单条目状态(做完整条删除),涉及迭代编排的在 roadmap 迭代总表与顶部「当前位」节换代——执行入口=项目技能 batch-closure(批后收尾与中间文档退役),跨会话教训写记忆库。批次过程与结论由 git 提交信息承载,禁止再写会话状态文件(见 doc-conventions 第 10 节)。`design/` 与根规则文件(`AGENTS.md`/`roadmap.md`/`待办清单.md`/`体验验证清单.md`)实现批禁写,见 §12
11. **文档同步闸(实现批禁写文档)**——实现批**禁写 `design/` 整个目录与根规则文件**,**另禁写 `game/tests/README.md`(能力清单,归写卡段维护,test-conventions §8.9)**,要往外交代的东西一律落 `reports/`:实现报告 `reports/iter<N>-实现报告-<日期>.md`(各卡状态+实机目检总清单+遗留读数义务+实现决定记录——超白名单/超卡片明列范围事项逐条记「决了什么/为什么/代价/撤销方式」,全部按卡执行时只写一行「零拍板」)、GDD 反哺点清单 `reports/iter<N>-反哺点-<日期>.md`(每条写清哪个文件哪一节、改成什么、依据是什么)。设计权威文档(GDD/art-bible)**任何批都不直改**:用户在会话中逐点裁决后,由工程/文档设计改动批(直改类)写入 `design/`(执行入口=doc-design 技能),并把反哺条目从 `reports/` 清掉(吸收即死;退役执行=batch-closure 技能)。机械面文档(roadmap 行/术语表/README 工具注)同样归工程/文档设计改动批在合并前更新。反哺点未落地期间相关 GDD 节视为待反哺,读前先查 `reports/` 与待办清单;需求卡片必列「关联文档同步面」按两层标注
12. **实机目检归用户,只登记不阻塞**——真人检测项登记进实现报告目检总清单与体验验证清单即完成批内义务;禁把等目检当停工理由或完成前置
@@ -62,7 +62,7 @@
**MC/verifier 触发细则**:仅在数值验证场景触发(改数值前后取证);normal 档为主、perfect 按需;**无数值改动的会话禁跑 MC**;结构位移类「存档锚」须先向用户请示定性再跑;需求卡片预设步骤的前提消失时(如「带值裁定后重锚」实际未投值)停问勿照字面执行。
**分级周期口径**:全部验证闸收编在 `tools/run_all_gates.sh` 一个入口下(**脚本即清单,且即域划分的唯一出处**),分三档——`--code`/`--docs` 按本批改动域只跑该域闸(闸件清单与域划分只写在脚本头部注释,本文不重列);`--quick` 是全量档的中段自检形态(跳过渲染闸与静态扫描);**不带参数=两域全量**。强制验证点=合回后本地 CI 的全量档(§1 第 2 条);分档只服务开发期手动跑批。真人实机目检归用户不进自动闸。
**分级周期口径**:全部验证闸收编在 `tools/run_all_gates.sh` 一个入口下(**脚本即清单,且即域划分的唯一出处**),分三档——`--code`/`--docs` 按本批改动域只跑该域闸(闸件清单与域划分只写在脚本头部注释,本文不重列);`--quick` 是全量档的中段自检形态(跳过渲染闸与静态扫描);**不带参数=两域全量**。强制验证点=合回后远端 CI(游戏码批走全量档,细则见 §1 第 3 条);分档只服务开发期手动跑批。真人实机目检归用户不进自动闸。
## 5. MC 采集档位细则
+5 -3
View File
@@ -25,9 +25,9 @@
每个缺陷修复必须在探针或冒烟中留下能抓住该缺陷的断言(例:封印动作耗尽 AP → 必须进入第 2 轮;
选用道具 → 库存态必须变 Used)。没有回归断言的修复视为未完成。
## 4. 验证时机(合回后本地 CI 制,2026-10-30 换代)
## 4. 验证时机(合回后远端 CI 制,2026-11-03 换代)
开发期窄测义务不变:每批开发中,本批新增/改动的验收测试自己跑绿即收口(卡内只测自己改的东西,process-conventions §6)。全量验证归合回后的本地 CI:git merge 合回 master 触发 post-merge 钩子跑 `tools/run_all_gates.sh` 不带参数档(两域全量,02 全套件——跨卡触面与关联档选测的盲区由全量兜底),结果落 `game/tests/.gates/ci-status.json`;CI 红态下修复提交经 post-commit 钩子自动追绿。同一份字节禁止第二次人手跑。该脚本是全部验证闸的唯一入口与唯一清单,域划分与选闸算法只写在脚本里,本文禁另列闸件清单。
开发期窄测义务不变:每批开发中,本批新增/改动的验收测试自己跑绿即收口(卡内只测自己改的东西,process-conventions §6)。全量验证归合回后的远端 CI:git merge 合回 master 落地后 post-merge 钩子推送 origin master,远端按改动域分流跑 `tools/run_all_gates.sh`(游戏码批=不带参数档两域全量、02 全套件——跨卡触面与关联档选测的盲区由全量兜底;文档批=文档域秒级闸;分流算法单点=`tools/ci/domain_route.sh`),回执由 `tools/ci_watch.sh remote` 轮询写回 `game/tests/.gates/ci-status.json`;CI 红态下修复合回落地即再推再验追绿(修复走新开 `fix-<任务名>` 修复 worktree,process-conventions §1;本地跑批件 ci_runner.sh 与本地追绿钩子 post-commit 已退役)。同一份字节禁止第二次人手跑。该脚本是全部验证闸的唯一入口与唯一清单,域划分与选闸算法只写在脚本里,本文禁另列闸件清单。
行为探针使用随机化玩家行为(封印/停手/刷新/无效点击)——自动玩家不做的动作就是测试盲区。
## 5. 测试函数怎么写——验收清单条目的落码规范
@@ -35,7 +35,7 @@
需求卡片 §8「改动—验收对照表」每一条都要落成可执行的验证;本文定统一写法,卡里定每批的具体内容(测什么/注入哪里)。写卡期查不出执行载体的条目=不可测,当场呈报,禁拖到实现期。
1. **执行载体五选一,逐条声明**:单元测试(`tests/run_all`)/系统测试断言(`tests/system_test.gd`)/场景探针(`probe/` 下 `*_probe`)/MC 同种子逐项比对/人工核对(仅限无法自动化的纪律类需求点,如命名锁定、数值占位)。行为类条目以自动化载体为主。
2. **粒度与对应关系**:每条清单条目至少一个自动断言,且断言必须从该条目的真实入口进入;多条条目可合用一个测试函数,但每条都要有自己单独可判红的判据(取证口径见 §8.4 唯一口径——禁变异/禁撤销)。断言失败消息末尾带编号尾缀〔卡短名 Vn〕(如〔秘宝批 V3〕)——断言与卡片清单可互相 grep 查找。**工具面局限备案(2026-10-27 迭代 39 验收审计)**:`Kit.check_quiet` 静默收集形态(计数不入判定即打印、失败消息进 problems 汇总)的断言消息不进 `tools/extract_checks.py` 扫描面——验收尾缀 grep 对该通道失效;如需覆盖属提取器改版(工程批)。
2. **粒度与对应关系**:每条清单条目至少一个自动断言,且断言必须从该条目的真实入口进入;多条条目可合用一个测试函数,但每条都要有自己单独可判红的判据(取证口径见 §8.4 唯一口径——禁变异/禁撤销)。断言失败消息末尾带编号尾缀〔卡短名 Vn〕(如〔秘宝批 V3〕)——断言与卡片清单可互相 grep 查找。`Kit.check_quiet` 静默收集形态(计数不入判定即打印、失败消息进 problems 汇总)的断言已入 `tools/extract_checks.py` 扫描面(2026-11-02 提取器改版:三通道同口径提取,静默通道条目 quiet 列记 `channel:check_quiet`),验收尾缀 grep 对该通道有效。
3. **断言词汇按验证对象五选一**:
| 词汇 | 适用场景 |
@@ -99,6 +99,8 @@
**能力清单维护锚(2026-10-29 用户裁改版定稿)**:`game/tests/README.md`「能力清单」是**实现指导+阅读导航+义务声明**——只宣布「要验证什么」,不记「是否已验证/是否跑过」;落地账归现行验收闭合链(改动—验收对照表逐条挂断言+合回前独立验收审计),本清单不承载验证状态。表为四列:能力|系统|真实入口|代表用例(`文件:函数`)。**维护归写卡段,当场入表**:写需求卡片时,本批新增能力当场写入能力行——真实入口取自设计文档已定的入口,代表用例=卡里定死的计划测试(`文件:函数`);受影响存量行(入口/用例名变更)同批更新;能力退役删行。**实现照单落名**:测试函数名以清单为唯一依据,名实不符=卡片没写清=停卡退回。**收尾核对**:批末收尾只核对表上名字与实际落地一致(改名则回表),不刷任何批次字段;实现批禁写该文件的现行红线不变(process-conventions §3 第 11 条),核对义务归收尾提交。三层模型见 §8.9。改动—验收对照表纪律不变:新增或改写的每条断言仍须挂一行(上文「测试侧」);断言改判仍受 §8.4 真实入口口径约束。
**新增 core 件的覆盖登记义务(2026-11-03 架构审查 P1 余项裁)**:拆件或重构产出的新 core 文件不触发 process-conventions §3 第 6 条「新功能必配新测试」(那条只管新增玩法/机制),因此单由本条承接——新 core 件要么被 `game/tests/` 某套件按文件名或 `class_name` 点名,要么在承接它的能力行「代表用例」里申报「经宿主链覆盖(宿主=<件>)」;两者都无=批末收尾核对时补登。本条**不是覆盖率要求**,与 §7「覆盖率不是目标」同轨:登记的是能力义务的归属,不做文件计数——「每个 core 件必须被点名一次」的机器闸已裁否(它逼出为点名而点名的空套件,且与 §7 正面冲突)。落笔面沿用现行分工:申报行由写卡段入能力清单(实现批禁写该文件),核对归批末收尾提交。
### 8.4 真实入口断言(验收闭合的主判据)
- **唯一口径(2026-10-24/2026-10-28 用户两裁)**:每个需求点与每个行为改动的验收=一条从真实入口进入的断言,可 grep 定位、在当轮真实跑批中执行并通过。**禁变异类测试**(把生产码或数据表改成错值看断言抓不抓得到);**禁撤销类取证**(回退本批改动或该 hunk 看断言红不红)——两者都是人为制造红,属伪造证据,一律禁止。
+1 -1
View File
@@ -41,7 +41,7 @@
本项目用语分两层,纪律如下:
1. **玩家可见专属名词**——道具名、界面用语、敌种名、层名。允许起专名,以 [术语表](术语表.md) 登记为准。界面用语"危险格 / 控制 / 坍塌显形"同属本层,见上节。
2. **文档内部机制概念**——一律直白描述,禁止造词(比喻性生造词、只有作者懂的缩略语均在禁列)。确需命名时,首次出现处附一句白话定义并登记进 [术语表](术语表.md)。
2. **文档内部机制概念**——一律直白描述,禁止造词(比喻性生造词、只有作者懂的缩略语均在禁列)。确需命名时,首次出现处展开成完整白话句并登记进 [术语表](术语表.md)。
当前已登记的玩家可见专名(名称值均为 provisional,出处为 [术语表](术语表.md)):
+1 -1
View File
@@ -15,7 +15,7 @@
| `术语表.md` | 全库专用术语的唯一对照表——危险格/安全格/同调位/RAP/GP/真视等定义+退役词对照(2026-10-11 建立,v1.23) |
| `待办清单.md`(仓库根,不属本树) | 全项目待办事项的唯一登记处;各系统文档的「待办」节只留指路存根 |
| `体验验证清单.md`(仓库根,不属本树) | 需要真人试玩观测的验证项登记处(与待办清单分工:待办清单是"要拍板的事",本篇是"要玩过才知道的事");每条注明结论回流路径 |
| `08-Alpha版本标准.md` | Alpha 版本包含哪些东西的清单——里程碑 M3 的完成标准;只列条目不写内容,定义一律指路各权威文档(**已定稿 v1.20**,2026-10-13) |
| `08-Alpha版本标准.md` | Alpha 版本包含哪些东西的清单——里程碑 M3 的完成标准;只列条目不写内容,定义一律指路各权威文档(**已定稿 v1.21**,2026-10-13) |
## systems/ 五个循环
+7 -7
View File
@@ -2,7 +2,7 @@
> **一句话定位**:本文定义这个项目的 **Alpha 版本包含哪些东西**——它是里程碑 M3 的完成标准,也是判断"还差什么"的对照表。
> **本文只列条目,不写内容**:每样东西是什么、规则怎么走,一律归各自的权威文档,本文只给指路链接。想知道某样东西的定义,请点链接,不要在本文里找解释。
> **状态**:**已定稿(v1.20)**——2026-10-13 用户令定稿,历次升版明细见 git 提交史。Alpha 的内容范围自此冻结:增删条目一律须经用户裁决。
> **状态**:**已定稿(v1.25)**——2026-10-13 用户令定稿,历次升版明细见 git 提交史。Alpha 的内容范围自此冻结:增删条目一律须经用户裁决。
> **成文**:2026-10-13。
## 本文怎么用
@@ -103,8 +103,8 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战
| 主菜单 | —— | 在役(迭代 33 卡②三入口化:进入存档/设置/退出游戏——入口拓扑=进入存档→选档界面→进档/新档→营地覆盖层→〔营地交互重做卡④〕营地场景图与生涯笔记本;2026-10-22 用户裁换代〔反哺 #13〕) |
| 开始覆盖层 | —— | 在役 |
| 选档界面(3 存档位) | —— | 在役(迭代 33 卡③——空槽新档/有档进档/删档二次确认+摘要三项;2026-10-22 用户裁增行〔反哺 #8〕) |
| 营地(天赋树 / 锻造工坊 / 秘宝匣 / 图鉴) | [camp](ux/camp.md) | 在役(场景图与七物件点选随营地交互重做列入 Alpha,见下行) |
| 营地交互重做(五卡:存档制数据层/主菜单三入口/选档界面/营地场景图/Esc 浮窗与营地顶栏) | [camp](ux/camp.md)+[需求澄清](../../reports/需求澄清-营地交互重做-2026-10-18.md) | 部分在役(卡①②③ 已随迭代 33 实装合回,2026-10-22;卡④营地场景图 2026-10-21 用户令退回美术设计段,美术生成方案提案 2026-10-22 成文,余三个用户侧前置未销号:像素规格执行(Q6 甲过渡口径已裁)、点选反馈设计稿、参照物;卡⑤ Esc 浮窗随卡④ 代码波同行、未编排。2026-10-21 用户裁:五卡整体列入 Alpha。出口=五卡各自验收标准通过+营地屏用户目检通过) |
| 营地(天赋树 / 锻造工坊 / 秘宝匣 / 图鉴) | [camp](ux/camp.md) | 在役(迭代 47 卡④⑤ 落地——场景图+七物件点选+Esc 浮窗与顶栏,2026-11-01 合回;五功能页呈现=居中定尺寸功能窗口、场景根留底、窗内滚动——窗壳形态 2026-11-02 迭代 49 卡③实装) |
| 营地交互重做(五卡:存档制数据层/主菜单三入口/选档界面/营地场景图/Esc 浮窗与营地顶栏) | [camp](ux/camp.md) | 在役(五卡全部落地——卡①②③ 迭代 33 批合回、卡④⑤ 迭代 47 批合回,卡⑥ 句柄子容器为同批前置基建卡。设计过程件已按吸收即死退役,沿革查 git 提交史。2026-10-21 用户裁:五卡整体列入 Alpha。出口=五卡各自验收标准通过+营地屏用户目检〔登记体验验证清单 ㊺〕) |
| 生涯页 | [生涯](systems/跨局循环/生涯.md) | 在役(期一) |
| 关卡地图屏 | [level-map](ux/level-map.md) | 在役 |
| 战斗屏 | [battle](ux/battle.md) | 在役 |
@@ -135,7 +135,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战
| 机器可读的呈现断言(对比度 / 结构) | ——(清单唯一出处=process-conventions 运行与验证节) | 在役 |
| 分辨率两档(1280×800 / 1920×1080) | [HUD框架](systems/表现与支撑/HUD框架.md) | 在役 |
| 绘制调用数达标 | —— | 在役 |
| 真人试玩轮次 | [体验验证清单](../../体验验证清单.md) | 在役(义务维持;当前轮次未清:㉚/㉛ 未核销,迭代 34 三条目检项待登记) |
| 真人试玩轮次 | [体验验证清单](../../体验验证清单.md) | 在役(义务维持;当前轮次未清=㉚–㊸ 各条待用户核销——迭代 32 起各批实机目检项登记不阻塞,迭代 42 无玩家可见改动未登记) |
---
@@ -147,7 +147,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战
| 棋盘瓦片与格面资源图标 | [美术圣经](../art/art-bible.md) | 在役 |
| 未开格类型微光(五组色相+明度档) | [HUD框架](systems/表现与支撑/HUD框架.md) | 在役(明度档 provisional 值登记见 art-bible 的 git 提交史,复核转正归战斗一屏样张) |
| 棋盘观感(第二 / 三关亮度与对比度) | [待办清单](../../待办清单.md) | 待做(开工前置=先做素材轴/UI 轴对照截图定性,再按定轴修复;旧卡 v1.4 存 reports/ 作素材、非已写卡状态,重启须重新立卡;出口=用户实机目检第二、三关不再判「看着费劲」) |
| 立绘清晰度回退评估(是否改用高清图) | [角色设计](../art/character-design.md) | 待做(评估已结——2026-10-14 用户裁维持像素风、升级精细手绘像素、不回退高清图,裁决录=[美术审计-cursor会话存档](../../reports/美术审计-cursor会话存档-2026-10-14.md) §2.2;Alpha 范围=主角+三个 Boss 按新口径重产,其余敌种当前可读则保留到 Beta;出口=用户目检八敌体量关系通过且主角与三个 Boss 重产完成) |
| 立绘显示清晰度(原稿分辨率+三档显示) | [角色设计](../art/character-design.md) | 在役(九件已按档落位+机检全绿——原稿分辨率入包禁降采样、显示按三档绝对高 96/144/188 缩放、现有形象即终稿;定值单点=art-bible §8.2;实机目检清晰度与同屏体量顺序登记体验验证清单 ㊻) |
| 敌人立绘(全敌种) | [角色设计](../art/character-design.md) | 在役 |
| 主角立绘三态 | [角色设计](../art/character-design.md) | 在役 |
| 状态图标 | [美术圣经](../art/art-bible.md) | 在役 |
@@ -157,7 +157,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战
| 站桩帧动画 | [待办清单](../../待办清单.md) | 待做(列入 Alpha 定版前置清单:定版前完成最小版,路线预选拆件驱动;未完成则顺延 Beta;不占功能迭代) |
| 全局纹理过滤设为邻近采样 | [待办清单](../../待办清单.md) | 在役(迭代 26 · 2026-10-14 入库:default_texture_filter=0+平滑渐变件三处显式 LINEAR 白名单,翻转面全枚举闭合) |
| UI 字体(全局像素字,Fusion Pixel 单套单字重) | [美术圣经](../art/art-bible.md) §7.4 | 在役(2026-10-24 用户裁现状即终稿——拉丁沿用自带字形不另接专件、不上第二字重;信息层级手段=字号档差+墨色深浅) |
| 战斗一屏样张(界面美术的终稿闸) | [美术圣经](../art/art-bible.md) §1.4 | 待做(Alpha 硬前置:站桩帧动画的定版前置与主角+三 Boss 重产都依赖它;出口=用户目检通过的战斗屏样张,并产出尺寸档/色板/明度档清单) |
| 战斗一屏样张(界面美术的终稿闸) | [美术圣经](../art/art-bible.md) §1.4 | 部分在役(规格半已闭合=目标规格清单已落 art-bible 五张规格表〔2026-10-30 合回〕,五项实装定值与样张机检随迭代 43 入库;未结半=出口未达——方向稿用户目检(体验验证清单㊶)先行,样张整体过闸随其后。站桩帧动画的定版前置与主角+三 Boss 重产依赖照旧) |
| UI 氛围层与九宫格切片观感修 | [待办清单](../../待办清单.md) | 部分在役(光柱硬边已修=连续 alpha 渐变;未结半=九宫格切片错位——Alpha 内做最小修复:核对素材尺寸,必要时重出九宫格素材,全套素材重出排 Beta;出口=结算屏与图例屏错位消失,渲染闸+用户目检通过) |
| UI 元素细节修(滑轨填充 / 图标垫块 / 留白 / 开发件外泄) | [待办清单](../../待办清单.md) | 在役(迭代 26 · 2026-10-14 入库:①滑轨填充随迭代 25 注销;余②图标垫块明度差降档/③商店+营地布局修/④诊断钮迁调试浮窗 全落地) |
@@ -190,7 +190,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战
| 遗物式构筑协同 | [05-不做清单](05-不做清单.md) |
| 战后自动回复 | [05-不做清单](05-不做清单.md) |
| 反雪球机制 | [05-不做清单](05-不做清单.md) |
| 键盘 / 手柄输入 | [待办清单](../../待办清单.md)(排期归 Beta) |
| 键盘 / 手柄输入 | [待办清单](../../待办清单.md)(排期归 Beta。例外:营地语境 Esc 浮窗已落地〔迭代 47 卡⑤,用户明示裁决〕;键盘面其余仍排 Beta) |
| 数值统一标定(M4 数值批) | 2026-10-09 里程碑立规:M4 = Beta 阶段、M3 未由用户明令关闭前不排期(用户 2026-10-07 令移出迭代 18;2026-10-16 确认此裁长期有效)——待办清单各条「已编入 Alpha 收官 M4」措辞系旧口径残留 |
| 连刷 / 换图资金跨战斗携带 | [05-不做清单](05-不做清单.md) |
| 战斗节点地图类型差异化(更多地图主题) | 排 Beta 版本([playnote](../../playnote.md),2026-10-13 裁) |
@@ -1,7 +1,7 @@
# 关卡节点图生成
> 一句话:一关的节点图从哪来——生成器按参数长出一张合法图
> 状态:现行为 v1.3
> 状态:现行为 v1.4
## 设计目的
@@ -43,7 +43,7 @@
| 约束 | 内容 |
|---|---|
| 道路系统 | 图=主路+支路;除岔口节点(两条以上去路的节点)外每个节点恰一条去路;岔口去路 2–3 条 |
| 宽度=分叉生长 | 不摆平行层;同深度节点数由岔口自然长出(1→2→3→4……) |
| 宽度=分叉生长 | 不摆平行层;同深度节点数由岔口自然长出,至宽度上限为止(上限读参数档,见调参表) |
| 层高=沿路步数 | 入口到终点的最长路径步数;第一关 ≥6,逐关递增且增幅变大 |
| 出口归属锁定 | 多终点时由大岔口把图分成互不连达的分支区域,各区域只通向自己的终点;每个终点前一层节点的去路集合恰含一个终点——选路=提前承诺打谁 |
| 战斗节点保底 | 奖励/恢复/商店占位后战斗节点量不被挤没(保底数进调参表) |
@@ -111,6 +111,9 @@
| 层深 L1 | ≥6(步) | 第一关不再是零选择短链——够长才有岔口与取舍 | 已锁下限 |
| 层深 L2/L3 | >前一关且增幅变大 | 后期关显著更长,推进感随冒险加深 | provisional |
| 岔口去路数 | 2–3 | 每次取舍在 2–3 条里选:少了没选择,多了不过脑 | 已锁 |
| 岔口取三去路概率 | percent [0, 100] | 允许三去路的岔口中,实际长出第三条去路的比例——控制宽图出现频率 | provisional |
| 同深度节点宽度上限 | int [2, 6] | 同一深度最多并排几个节点;岔口生长到此即止,不再加宽 | provisional |
| 填充交替起始 | percent [0, 100] | 恢复/奖励节点交替填充时,先放恢复节点的概率(50 为对称) | provisional |
| 分支密度 | 待定值 | 一局遇到多少次取舍(目标量级=一局十几次,待设计验证) | provisional |
| 入口个数 | 1 起 | 多入口给「从哪进场」的第一层选择 | provisional |
| 出口个数 | L1 恒 1;L2/L3 1–3 | 多终点让「走哪条=打谁」成立;大岔口自第二关起 | 已锁范围 |
@@ -1,7 +1,7 @@
# 冒险结构
> 一句话:整局冒险的关卡序列、失败与大奖励
> 状态:已定稿(自旧体系迁移);现行为 v1.3
> 状态:已定稿(自旧体系迁移);现行为 v1.4
## 设计目的
@@ -150,7 +150,7 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜
**统一冒险加算区**:商店购买的属性提升与奖励节点三选一的属性件记**同一笔**——加算区四轴 {攻击, 生命上限, 护甲等级, 行动点},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效(与生命的上参同一条通道)。购买生命上限时:pool 模式(v0.13——货架件=奖励件本体)只加上限不回当前生命(与三选一件同语义);legacy 模式当前生命与上限同步 +Δ(生命的连带写入口)。属性轴累加源 = 商店购买与奖励节点三选一属性件两类;行动点轴累加源 = 奖励节点三选一 AP 件与商店 AP 件两类(每场战斗开始的首轮行动点基线 +1,语义细节归[行动经济](../排雷循环/行动经济.md)跨冒险加成轴节;~~全冒险获取次数上限最紧 provisional 2 次~~——v0.14 次数上限退役,池消耗即上限,pool 模式下商店购买与三选一共用令牌库,见下)。
掉落掷定消费 gp_drop 封闭随机流(主种子派生、可回放)。**商店货架抽签消费 shop_draw 封闭随机流**(v0.13 扩签——每次抽 3〔进店+每次买后重抽〕恰一 scope,与三选一抽签分签防取数序互扰)。掉落与价格的现行行值读商店表,数值所有权归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批——本批骨架先行,全部数值 provisional。
掉落掷定消费 gp_drop 封闭随机流(主种子派生、可回放)。**商店货架抽签消费 shop_draw 封闭随机流**(v0.13 扩签——每次抽一批〔进店+每次买后重抽〕恰一 scope,批大小=货架位数读商店表,与三选一抽签分签防取数序互扰)。掉落与价格的现行行值读商店表,数值所有权归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批——本批骨架先行,全部数值 provisional。
**共享池账本(v0.13 P1 共享池单点;v0.14 令牌库换代;迭代 20 案D 四级 104 张——池机制事实源=[奇物](奇物.md)「池结构与抽取」节)**:商店货架与奖励节点三选一是**同一个池**——货架候选 = 池∖{GP 袋, 刷新件}∪{凭证} = {攻击, 生命上限, 护甲, 行动点, 回复, 凭证} 六种(GP 袋计价物不自售切边、刷新件不上货架、秘宝件已随同调批出池;凭证与回复随迭代15② 入架——shop.tres pool_shelf 六行);**库存 = 剩余令牌数**(TP0——「池消耗即上限」,种类次数上限退役,与奖励兑付摘牌同一令牌库承载,全冒险一次性跨关卡不补给):商店买一件,奖励面就少一枚;「无限购买」收敛为**钱尽或池空为止**(池空=硬闸、A 链爬价=软闸),空货架合法态。货架 = **令牌级抽签**(同 kind 去重每 kind 至多一卡,价格公式 tier-blind 维持批②裁定,购买消费在架令牌本体 kind+tier)。禁止两渠道各自私记库存——消费走同一入口写同一令牌库(令牌多重集单点:池与判定归该单点持有,各 kind 的派生计数与断点附随件同在这一点上承载)。**货架独立刷新(v0.15 MC-1 2026-10-04——P-C2+Q2 裁)**:进店免费刷新次数(基础 0,天赋/营地侧增益位预留)用尽后 GP 付费刷新(ceil(20×1.8^已付费刷) provisional——调参表旋钮 shop_refresh_*);重抽=共享池抽签(shop_draw 恰一新 scope),池空=不可刷新合法态;进店/离开双向清零付费刷计数。**三选一同款付费档(v0.16 2026-10-06 用户令——刷新对齐商店)**:三选一免费双源(刷新件与冒险池两笔,机制现行事实源=[秘宝](../跨局循环/秘宝.md)三选一刷新双源节)用尽后 GP 付费刷新——读同 shop_refresh_* 两旋钮(单点调参)、扣同一 GP 冒险账本(同一扣账入口)、重抽同三选一共享池抽签;付费刷计数每停点清零(与进店清零同构);钮常驻选择态、免费与付费两源皆穷=禁用。
@@ -271,7 +271,8 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜
| 关卡完成回血比例 | int [0,100],冒险表单行全局 | adventure_table clear_heal_pct(provisional 20) | 关卡完成部分回血回复生效上限的百分比;封顶上限不回满 |
| ~~同调位过渡键~~(已退役——迭代 11 第①批 T7,过渡键随表退役) | — | 同调位读数源 = attunement_growth.tres 谓词表实时求值(slot_cap 3) | 切换义务已随 2026-10-03 同调实施批清偿 |
| Boss 钥石掉落 | int [0,999],meta 表逐关行 | meta.tres boss_keystone 首杀 3 / 复杀 2(provisional) | 逐杀实时入账;精英怪掉 1 预留;消费方归元进度 |
| GP 经济参数 | 商店表逐行 | 见 shop.tres gp_drops / level_gp_bonus / pool_shelf / price_a / price_b(provisional,以 shop.tres 为准;legacy products / price_level_bonus 随对照模式保留) | 掉落均值与区间(普通/精英/Boss)、关级掉落加值、货架基价、A/b 价格因子;公式语义归本文,数值所有权归难度曲线与Boss曲线调参批 |
| GP 经济参数 | 商店表逐行 | 见 shop.tres gp_drops / level_gp_bonus / pool_shelf / price_a / price_b(provisional,以 shop.tres 为准;legacy products / price_level_bonus 随对照模式保留) | 掉落均值与区间(普通/精英/Boss)、关级掉落加值、货架基价、A/b 价格因子;公式语义归本文,数值所有权归难度曲线与Boss曲线调参批。财富之道「聚」的掉落乘数与「散」的消费折价两参数归[天赋树](../跨局循环/天赋树.md)规则键参数表(长在节点行,商店表不持) |
| 货架位数 | int [1, 6],商店表单行全局 | 见 shop.tres shelf_size(provisional) | 进店与每次购买后重抽时,货架同时陈列的商品件数;池余令牌不足时按余量陈列,空架合法 |
结构冻结(非调参项):序列线性无跳关、终点恒为 Boss(终点可多个、各在路径最深处)、倒下即冒险终、大奖励构成 = 关卡完成部分回血 + 专长三选一(按档配比加权抽取)、一冒险一主种子、收束点先清库后宣布的次序。
+5 -5
View File
@@ -11,13 +11,13 @@
>
> **兑付频率(先看这条,它是三条渠道的共同前提)**:奇物**不是打一场战斗给一份**。关内的普通战斗节点打完了什么也不给;一关之内奇物**只兑付一次**,触发点是**关底 Boss 被击败**——而按 [冒险结构](冒险结构.md) 的定义,打掉关底 Boss 恰好就等于"通过这一关",这两件事是同一个时刻,不是一条链上的两步。
>
> 状态:**已实现**(2026-10-04 双层 BD 实施批落地);现行为 v1.3。本文件是奇物的唯一定义文档。
> 状态:**已实现**(2026-10-04 双层 BD 实施批落地);现行为 v1.5。本文件是奇物的唯一定义文档。
>
> 数值纪律:本文件只写概念、取值域与指路;每件给多少、效果是什么一律不进正文,事实源是 `data/tables/feats.tres` 与 `data/tables/adventure.tres`。
## 专长(重设计·基础框架 v1)
> 本节是专长分类的现行事实源(2026-10-07 用户终审认同写入文档)。件表为设计声明——数值全 provisional 归调参批;命名全为代号,正式命名归用户。**新框架已实装:`feats.tres` 30 行=基础 27+迁入 2+规则豁免 1,行为与数据行 1:1。**
> 本节是专长分类的现行事实源(2026-10-07 用户终审认同写入文档)。件表为设计声明——数值全 provisional 归调参批;命名全为代号,正式命名归用户。**新框架已实装:`feats.tres` 37 行=基础 27+迁入 2+规则豁免 1+换图系 7(换图系七件 2026-11-01 迭代 46 落表),行为与数据行 1:1。**
### 设计原则
@@ -97,7 +97,7 @@
|---|---|---|
| 血税 | 本局:踩雷 −2 最大生命;标中 +1 攻击(**均下一战起生效**——战末汇入冒险加算区) | 双向都痛都爽,一句话讲得清;双向同账、本局累积、冒险收束清零。生命上限/攻击系属战界重建属性,即时改会被重建冲掉,故滞后一战兑付(2026-10-12 追认⑨回写;卡面 desc 同步补「下一战起生效」) |
### 换图系(7 件,设计定稿,待实现)
### 换图系(7 件,已实装——2026-11-01 迭代 46 落表 `feats.tres`,稀有度 14/13/10/0、每件持有上限 1)
换图系把「弃图刷新」从坏图逃生改成主动构筑行为。两件基座分别解决 RAP 的来源与价格;后续专长让成功刷新产生输出、生存或 GP 资源收益。七件不要求一次拿齐,不设强制先拿基座、集件标签或集件奖励。
@@ -117,7 +117,7 @@
- **成功才触发**:后续五件只认成功换图;刷新被拒绝时不产生事实,也不给输出、生存或资源收益。同一轮多次成功刷新按发生顺序逐次登记。
- **轮末兑付**:刷新不新增结算段。崩壁冲击走本轮战斗段末结账,石层缓冲在每次主角受伤时消费,坑道小憩与矿道红利走本轮授予段兑付。
- **全局受伤面**:石层缓冲覆盖敌方攻击、危险格、错误封印资源格与地形造成的主角伤害;临时生命值不在本流派设计范围内。
- **基线不变**:没有这些专长时,RAP 来源、刷新成本、清图奖励与伤害结果保持原规则。数值与稀有度归 `feats.tres`,落表前本节只作设计声明。
- **基线不变**:没有这些专长时,RAP 来源、刷新成本、清图奖励与伤害结果保持原规则。数值与稀有度归 `feats.tres`(已落表——稀有度档 14/13/10/0、每件持有上限 1;数值全 provisional 归调参批)。
### 迁入登记(秘宝域迁出件;实装批落地后并入件表)
@@ -164,7 +164,7 @@
> 令牌牌库(奖励节点与商店共用)的组织与三选一抽取规则(2026-10-07 用户裁案D——归档打底做翼 + 曝光槽)。
- **令牌=出现次数上限**:每个成员在牌库里有 N 张令牌——拿了消耗、**没拿回池**(刷新重抽同样不消耗),所以「最多被拿 N 次」= 池里放 N 张,天然成立,不另设计数器;「只刷出、没拿」不计次数(现行 TP0 语义沿用)。
- **概率与上限解耦**(设计约束,新内容必检):每个成员标注**两个独立属性**——概率位(档+权重/令牌数)与已拿上限(cap;拿了才计、刷出不计)。概率不决定上限、上限不影响概率。
- **概率与上限解耦**(设计约束,新内容必检):每个成员标注**两个独立属性**——概率位(档+权重/令牌数)与已拿上限(cap;拿了才计、刷出不计。cap 必填——成员行缺 cap 声明=数据错误、拒绝加载,取值域 [1,99];2026-11-02 用户裁「不要任何缺省值」总判据)。概率不决定上限、上限不影响概率。
- **已知耦合问题(实装批选型注意)**:现行令牌模型里「N 张令牌」同时承担概率与上限两个职责,无法独立设定(例:档概率需 3 张 vs 单件限拿 2 次——3 张压不住上限、2 张保不住概率)。实现路径候选三案:①抽象权重表+独立已拿计数器(解耦彻底;代价=推翻 TP0 实体牌库模型、「池耗即上限」语义改写)②令牌池+提前退役计数器(保留模型;代价=名义概率与有效概率两层、对账复杂化)③维持耦合(设计自我设限——用户已否)。选型归实装批;影响面=MC 对账模型与断点存档(已拿计数器须进断点附随件)。
- **内容归档(打底+做翼)**:普通档=属性件+小额钱(每拿都有底的面粉);优秀/稀有档=功能凭证与改手感件(期待位);传说档=惊喜位。归档按决策影响力、不按数值大小;面值数值归调参批。
- **曝光槽**:每次三选一呈现 = **2 格按全池抽 + 1 格按「优秀档以上」子池抽**;高档子池空 → 该格回退按全池抽(池空直通同族兜底)。格数与档配比归调参批。
@@ -1,7 +1,7 @@
# 地图战斗资源
> 一句话:格面资源的产出、极性字典与清图奖励封装
> 状态:已定稿(自旧体系迁移);现行为 v1.3
> 状态:已定稿(自旧体系迁移);现行为 v1.4
## 设计目的
@@ -147,7 +147,7 @@
### 清图奖励对象:整图封装,可配置可替换
清图奖励不属于任何一格的格面资源——它是作用域为整张板的独立奖励对象:把一张图的雷全部清完(全部安全格开完)时结算发的那一份。装板摇号时与格子资源同批判尾摇定身份;清图批兑付恰好一次;完美封印(零误标且至少一次封印标中)追加第二份同身份兑付。
清图奖励不属于任何一格的格面资源——它是作用域为整张板的独立奖励对象:把一张图的雷全部清完(全部安全格开完)时结算发的那一份。装板摇号时与格子资源同批判尾摇定身份;清图批兑付恰好一次;完美封印(零误标且至少一次封印标中)追加第二份同身份兑付。清图奖励只在清图批兑付:弃图刷新不触发清图事件,换来的新图不发清图奖励;刷新专长的固定 GP 收益走战斗内缓冲入账,不属清图奖励封装。
它是可配置可替换的封装:数据面上是清图池里的一行(现行默认槽 clear_default),换行即换内容,机制零改动。按图类型差异化已留结构位——`clear_<图类型>` 命名空间预留,不同地图类型可以配不同的清图奖励;词表现行 = {dungeon, underdark, deep_underdark}(2026-09-19 定稿两值、第三关内容批 2026-09-20 增 deep_underdark,玩家侧「地图类型」),差异化内容启用随内容批。
+22 -14
View File
@@ -1,7 +1,7 @@
# 增益状态
> 一句话:增益/减益的状态池、叠层与衰减
> 状态:已定稿(自旧体系迁移);现行为 v1.3
> 状态:已定稿(自旧体系迁移);现行为 v1.6
## 设计目的
@@ -52,7 +52,7 @@
| 寿命 = 一场战斗 | 战斗开始时状态池为空,结束全部清空,不跨到下一场战斗 |
| 跨轮跨图延续 | 同一场战斗里换新雷图、弃图刷新都不清空——状态跟着战斗走,不跟图走 |
| 全程零随机 | 授予、合并、衰减、列举顺序全部确定,可回放 |
| 敌方侧共享 | 对敌效果默认对全体存活敌人生效,层数全体共享一份;"只作用于其中一只"的例外见〈单体寻址扩展位〉节,随首个单体效果的内容批进游戏 |
| 实例按个体归属 | 每条状态实例归属到一个个体:主角方归主角,敌方每只敌人各持自己的实例集,个体之间互不共享、互不可见。"对全体"=对每个存活敌各发一条实例,各自独立合并与衰减;发给谁由授予路径按目标规则定,见〈目标规则与个体归属〉节 |
举证:本节为状态池结构规则,无计算。
@@ -83,7 +83,7 @@
| 合并策略 | 重复授予时发生什么 | 说明 |
|---|---|---|
| 叠加 | 层数加一;剩余结算次数不动——只有首次授予定钟 | 现行内容行多数用叠加(逐行合并策略读 `status_effects.tres`) |
| 累加 | 剩余结算次数加上本次授予的时长——技能施放行带覆盖时长时按覆盖值加;层数不变 | 现行内容行六行用累加(削弱行 weaken、增益技行 empower / fortify、主角增益行 attack_up / ac_up);重复拿一次就多攒一段时长,同一轮拿几份攒几段,停手后按剩余次数逐轮耗完;逐行读 `status_effects.tres` |
| 累加 | 剩余结算次数加上本次授予的时长——技能施放行带覆盖时长时按覆盖值加;层数不变 | 现行内容行七行用累加(削弱行 weaken、增益技行 empower / fortify / defensive_stance、主角增益行 attack_up / ac_up);重复拿一次就多攒一段时长,同一轮拿几份攒几段,停手后按剩余次数逐轮耗完;逐行读 `status_effects.tres` |
| 并存 | 新建一份独立实例,两份各算各的 | 同上 |
并存分支没有满层上限,但状态池规模天然有界:实例数的上界就是受理过的授予数——多受理一份就多一份实例,多少份在授予那一刻就完全确定,不会无限膨胀。
@@ -94,23 +94,30 @@
举证:本节为合并分支规则,无计算——满层判定就是一次"层数等于上限"的比较。
### 单体寻址扩展位:只作用于其中一个敌人
### 目标规则与个体归属:效果发给谁
对敌效果默认全体共享(硬规矩见「一个状态池管全部方向」);要"只削弱其中一只"时,走本节定好的扩展位。本节是接口定稿:目标字段与五条语义都已裁定,实现随首个单体效果的内容批一起进游戏——在那之前,全部对敌效果照旧全体共享,状态池里不会出现单体实例。
状态实例按个体归属(硬规矩见「一个状态池管全部方向」);一笔授予发给谁,由授予路径在授予那一刻按目标规则定。目标规则是封闭词表,现行四词:
| 目标规则 | 语义 | 现行消费者 |
|---|---|---|
| 全体存活敌 | 对每个存活敌各发一条实例,各自独立合并、衰减、随体清亡 | 封印标中削弱、踩雷增强、警觉加层 |
| 自己 | 归施放者个体 | 敌方增益技(蓄力/硬化/护身) |
| 单体 | 点名一只:认生成序号(开战逐只编号、整场不变),不认名字——混编遭遇里同名敌种可多只 | 暂无消费者,随首个单体效果内容批启用 |
| 顺位最前 | 取生成序最前的存活个体 | 主角先手攻击、单目标克制直伤 |
词表扩充随首个用到新词的内容批进行,不预先建面。禁随机摇目标("全程零随机"硬规矩沿用)。
| 规矩 | 内容 |
|---|---|
| 目标记在实例上 | 状态实例多一个可选的目标字段:不填 = 全体共享(现行唯一形态),填了 = 只作用于这一只敌人。目标认敌人的生成序号(开战逐只编号、整场战斗不变),不认名字——混编遭遇里同名敌种可以多只 |
| 单体与否由授予方定 | 这次发全体还是发单体,由发效果的路径在授予那一刻定(敌方技能行、封印、清图奖励各自带各自的目标规则),状态定义表不加列——同一个状态名允许既有全体来源又有单体来源。选哪只由授予方规则点名(如自己、顺位最前),禁随机摇目标("全程零随机"硬规矩沿用) |
| 共享与单体并存,独立结算 | 同名效果的共享实例与单体实例互不合并,各算各的:各自叠层、各自衰减,兑付时逐行相加。合并匹配从"只认状态名"扩为"状态名与目标都相同才合并" |
| 目标死亡即移除 | 单体实例跟着目标走:目标死亡当场移除该实例,不转移给别人、也不变回全体——"挪给别人"本就是已退役的转移接口决定,单体实例同样不豁免 |
| 呈现挂目标立绘 | 共享效果维持"各立绘同值";单体效果只有目标那一只的立绘挂状态图标(血条正下方既有位置),结算明细行的归因照旧,并写明目标是哪一只 |
| 合并匹配认个体 | 同名状态只在同一个体名下按合并策略结算;不同个体同名实例互不相干、互不可见 |
| 个体死亡即清 | 个体死亡,其名下实例全部随体移除,不转移、不并回别处 |
| 呈现各读各的 | 每只立绘的状态图标行只读它自己名下的实例;结算明细行归因照旧,单体授予写明目标是哪一只 |
举证:本节为结构规则与语义裁定,无计算。
### 剩余次数怎么倒数:按结算次数衰减
每个状态实例自带一个倒数计数——剩余结算次数(本文说的"衰减"就是它逐次递减、归零消失)。它不承诺"活几轮",而是数"经历过几次轮末结算":每轮结算先让状态起作用,随后计数减一,减到零状态即被移除。持续 1 的状态就是"一次性":在授予它的那轮结算里生效一次,轮末消失。现行累加行里主角增益两行持续 1、削弱与敌方增益技行持续 2——累加语义下重复拿一次就按本次授予时长多攒一段,同一轮拿几份攒几段;跨轮持续的状态,寿命由表行初始值表达,给几就活几次结算。
每个状态实例自带一个倒数计数——剩余结算次数(本文说的"衰减"就是它逐次递减、归零消失)。它不承诺"活几轮",而是数"经历过几次轮末结算":每轮结算先让状态起作用,随后计数减一,减到零状态即被移除。持续 1 的状态就是"一次性":在授予它的那轮结算里生效一次,轮末消失。现行累加行里主角增益两行持续 1、削弱与敌方增益技行(含护身)持续 2——累加语义下重复拿一次就按本次授予时长多攒一段,同一轮拿几份攒几段;跨轮持续的状态,寿命由表行初始值表达,给几就活几次结算。
```
一轮结算:查询生效清单 → 逐行兑付(层数 × 行值)→ 轮末衰减(全部实例剩余次数 −1)→ 归零实例移除
@@ -145,9 +152,9 @@
状态池还有一条快照纪律:实例的幅度、初始次数、量纲在授予那一刻从表行拷贝。战斗中配置表即使被重载,已授予实例不受任何影响,只影响后续授予。
### 现在有哪些状态:现行九行内容
### 现在有哪些状态:现行十行内容
现行状态表恰有九行:主角侧四行(增伤/盾牌加护两增益 + 失衡/乏力两减益)、敌方侧五行(削弱/暴走/警觉/蓄力/硬化——警觉为 blast 型负向踩雷载体,2026-09-20 伏击退役后进表)。全部用同构实例承载;数值全部 provisional(临时值,过锚验收后才定稿)。
现行状态表恰有十行:主角侧四行(增伤/盾牌加护两增益 + 失衡/乏力两减益)、敌方侧六行(削弱/暴走/警觉/蓄力/硬化/护身——警觉为 blast 型负向踩雷载体,2026-09-20 伏击退役后进表;护身 defensive_stance 为敌方低血防御增益〔地精池情境技「孤注守势」载体,2026-10-27 迭代 39 投放——本行当时漏登,2026-11-02 随状态合并累加制批考证补录〕)。全部用同构实例承载;数值全部 provisional(临时值,过锚验收后才定稿)。
| 字段 | 取值 | 说明 |
|---|---|---|
@@ -157,7 +164,7 @@
| magnitude | 整数 | 幅度:百分比行 ∈ [−100,100] 且非 0;固定值行 ≥ 1;护甲等级行 ∈ [−20,20] 且非 0 |
| unit | percent / flat / ac | 百分比修正 / 固定值 / 护甲等级(掷点折扣判定阈值轴——2026-09-16 护甲等级掷点批新增) |
| duration_settlements | 整数 [1,99] | 授予时初始剩余结算次数(1 = 一次性) |
| stack_policy | stack / refresh / independent | 同名再授予的合并策略 |
| stack_policy | stack / accumulate / independent | 同名再授予的合并策略(叠加 / 累加 / 并存) |
| max_stack | 整数 [1,16] | 叠层上限,仅叠加策略消费 |
| 状态 | 效果一句话 | 发给谁 | 幅度(现行值) | 时限 / 合并 | 来源类别 |
@@ -171,6 +178,7 @@
| sapped 乏力 | 主角输出降低(weaken 型负向,主角输出池) | 主角 | 见 `status_effects.tres` sapped 行 | 时限/上限读表 / 叠加 | 危险格负向 / 标空封印(2026-09-15 格面资源批)/ 敌方妨害技(大地脉动——L3 Boss 石君王独占,2026-09-20 第三关内容批) |
| empower 蓄力 | 敌方输出倍率增益(敌方输出池——蓄力技载体;幅度读表) | 敌方 | 见 `status_effects.tres` empower 行 | duration 读表 = 1 个有效增益拍 / 累加 | 敌方技能施放(2026-09-16 敌人技能池批) |
| fortify 硬化 | 敌方防御提升(**敌方防御池**——硬化技载体;负值入池 = 主角攻击折半,2026-09-18 符号纠正——旧正值实际翻倍) | 敌方 | 见 `status_effects.tres` fortify 行 | duration 读表 = 1 个有效增益拍 / 累加 | 敌方技能施放(2026-09-16 敌人技能池批) |
| defensive_stance 护身 | 敌方输出降低(敌方输出池——敌方低血防御增益;地精池情境技「孤注守势」载体,血量阈值触发施放,duration 由技能行覆盖) | 敌方 | 见 `status_effects.tres` defensive_stance 行 | duration 读表 / 累加 | 敌方技能施放(2026-10-27 迭代 39 触发条件批投放——行值随卡①累加制批改累加) |
empower 与 fortify 是敌方技能池增益技在状态池侧的数据落点(技能行 buff_ref 引用,施放时长由技能行覆盖——技能冷却与增益持续是两个计时器):两行 duration 表值(读表)的口径是"先兑付后衰减含施放当轮"——施放发生在第 N 结算战斗段,存活到第 N+1 结算战斗段才兑付"下一拍",即"持续 1 个有效结算"(proposal 语义的状态池落地)。敌方防御池是第四个乘区池:敌方作为防守方的百分比修正池,消费面 = [战斗结算](战斗结算.md)主角攻击的池乘区——四池对称(敌打主角 = 主角防御池 × 敌方输出池,主角打敌 = 主角输出池 × 敌方防御池),状态池语义零延伸:仍是同构实例、side-wide 加算、不封顶不保底。
@@ -1,7 +1,7 @@
# 战斗结算
> 一句话:轮末结算的编排与逐行兑现
> 状态:已定稿(自旧体系迁移);现行为 v1.4
> 状态:已定稿(自旧体系迁移);现行为 v1.6
## 设计目的
@@ -160,7 +160,7 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 ×
| GP 缓冲(flat) | gp 正 / 负向 | GP 袋 / 破财按 power 记入战斗内 GP 缓冲(+power / −power);缓冲随战斗完成折进战斗结束信号的 GP 掉落统一到账(GP 归[冒险结构](../冒险循环/冒险结构.md)) | 无拒收态——缓冲只在战斗边界与钱包结算,战斗域零钱包状态 |
| 行动点修正 | action 正/负向 | 下轮行动点 ±power(行动经济排队,下一轮开始兑现后清零;下限 0) | 排队净值不跨轮保留;明细记效果行(effect_id=ap_delta) |
警觉(blast 负向——2026-09-20 八型批伏击退役换装)为敌方 side-wide 状态:多个敌人共享同一状态值、互不消耗,只活一轮、轮末清零;战斗段由防守方护甲等级读数消费(我打敌 = 敌方 armor_class + Σ敌方侧 ac 型状态)。其余各型负向受池 clamp 与叠层上限承载。
警觉(blast 负向——2026-09-20 八型批伏击退役换装)按个体归属:每个存活敌各发一条自己的实例(全体存活敌规则,见[增益状态](增益状态.md)〈目标规则与个体归属〉节),只活一轮、轮末随体清零;战斗段由防守方护甲等级读数消费(我打敌 = 该敌 armor_class + 它名下的 ac 型状态合计)。其余各型负向受池 clamp 与叠层上限承载。
标中资格认雷不认封印:兑付资格以危险格实例为键——封印印记无任何移除手段(移除动作已退役,重复封印被"已有封印"拒绝)、同一颗雷跨轮不重复兑付;换图后新雷是新实例,资格自然重置。同一处封印一直落在雷上,每轮都会重新上报标中,去重是本系统的职责。
@@ -266,9 +266,9 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值
挖掘期刷新是玩家在挖掘中途主动换图,经[行动经济](../排雷循环/行动经济.md)扣费:扣费成功后按"旧板退役、生成新板、装板、资源预分配恰一次、变异布置"编排,本轮不打断——没有结算段、没有轮次结束。储备不足被拒是玩家决策的合法结果,不是编排错误。刷新图不发清图奖励,完美封印计数随装板重置。
### 换图系专长:刷新事实与本轮兑付(设计定稿,待实现)
### 换图系专长:刷新事实与本轮兑付(已实装——2026-11-01 迭代 46)
持有换图系后续专长时,成功刷新除执行上述换图编排外,还产生一次 `board_refreshed` 事实。事实只在新板装板成功后登记;刷新被拒绝时不产生事实,任何后续效果都不触发。同一轮多次成功刷新按发生顺序逐次登记,不合并成一次。
持有换图系后续专长时,成功刷新除执行上述换图编排外,还产生一次 `board_refreshed` 事实——它是换图系效果兑付的统一事实挂点。事实只在新板装板成功后登记恰一次;刷新被拒绝时不产生事实,任何后续效果都不触发。同一轮多次成功刷新按发生顺序逐次登记,不合并成一次。
刷新只登记事实,不当场插入结算。各效果在既有五段与对应消费点兑付:
@@ -280,7 +280,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值
| 坑道小憩 | 每次刷新事实累计 1 点恢复量,最多 3 点;本轮授予段合计回复生命,封顶生命上限,随后清零;满血时记未生效行 |
| 矿道红利 | 每次刷新事实固定获得 1 GP,走战斗内 GP 缓冲并在授予段留痕;不按旧图探索进度折算,也不与清图奖励绑定 |
全局受伤事件统一:`damage_taken` 是主角受到伤害的唯一效果事件,覆盖敌方攻击、危险格、错误封印资源格与地形造成的主角伤害。石层缓冲订阅该事件并在现行伤害下限之前消费;旧有订阅同一事件的专长也按这一完整语义生效。临时生命值不在此机制内。
全局受伤事件统一:`damage_taken` 是主角受到伤害的唯一效果事件——敌方攻击、危险格、错误封印资源直伤与地形四条伤害路径统一经同一发射口发出、同一消费族消费,对该事件的全部既有订阅(减免、护甲修正、反击攒点、护盾吸收)对四条路径同等生效。石层缓冲订阅该事件并在现行伤害下限之前消费。临时生命值不在换图系流派设计范围内。
崩壁冲击若击杀最后敌人,仍由本轮判定段按既有顺序判胜,不新增挖掘期即时胜利出口。换图系效果使用扩展行留痕:崩壁冲击走伤害单据,石层缓冲在受伤消费行体现减免,坑道小憩与矿道红利分别走治疗与 GP 入账记录。刷新事实来源不指向单一棋盘格,使用明细流水的专长刷新效果来源豁免,不伪造来源格。
@@ -364,7 +364,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值
- 挖封印格兑付改判(封印不可逆批 2026-09-19):有封印格直接挖开被受理——封印安全格直挖零奖励(作废归因行恰一次)、封印危险格直挖只吃挖雷惩罚;被挖开的封印不入轮末判定(零标中 / 标空兑付);开格事实不可撤。
- 每事实恰一次:每格受理、每封印判定恰好一次;重复投递不改变结果。
- 极性路由正确:开安全格 / 封印标中只兑正向、开危险格 / 标错封印只兑负向;兑付效果与该格资源类型的字典行一一对应。
- 警觉共享:敌方全体共享同一警觉状态值;blast 负向逐层直授无上限(伏击退役换装——2026-09-20 八型批)。
- 警觉按个体:每只敌各持自己的警觉实例、互不共享;blast 负向逐层直授无上限(伏击退役换装——2026-09-20 八型批;个体化——2026-11-02 用户裁)。
- 完美封印:零误标且至少一面标中时第二份兑付恰一次并发高光行;出现误标或零标中则无高光;计数换图重置。
- 开轮摇号:每轮恰摇一次(首轮同样;轮内刷新换图不重摇);摇定后兑现前死亡 → 本拍技能作废(零敌方行动行)、不进冷却不进保底计数;已兑现技能进冷却、保底计数按执行结果更新。
- 战斗段次序:主角先手后逐敌"按摇定技能行兑现、结算伤害、执行上报"各恰一次;主角倒下立即短路,剩余敌人不行动。
@@ -1,7 +1,7 @@
# 敌人系统
> 一句话:敌人数据、技能池出招、意图呈现
> 状态:已定稿(自旧体系迁移);现行为 v1.4
> 状态:已定稿(自旧体系迁移);现行为 v1.5
## 设计目的
@@ -115,7 +115,7 @@
| damage_mult | 仅伤害 | 伤害倍率;域 [1.1, 16] provisional。普通攻击恒 1、不可配 |
| rider_mult | 仅伤害、可省 | **必中附加分量(2026-09-19 新增)**:域 (0, 1],缺省无字段 = 无附加;分量值 = max(伤害下限, floor(攻击基线 × rider_mult))——随施放者攻击基线缩放,后置加法、必中全额、不进乘区、不出暴击(后置加法同族);价位锚 0.75 = AC 折扣档最轻档"不掉档的稳定伤害" |
| cooldown_beats | 全部 | 施放后连续 N 拍不可摇中;普通攻击恒 0、不可配 |
| buff_ref / buff_duration | 仅增益与妨害 | 效果引用(指向状态效果行)与持续回合数;**落点由状态行 target_side 路由**(增益 → 敌方侧 / 妨害 → 主角侧,施放类 side 守卫加载拒绝)——妨害技零新授予通道 |
| buff_ref / buff_duration | 仅增益与妨害 | 效果引用(指向状态效果行)与持续回合数;**落点:增益技归施放者自己(每只敌是独立个体,一只施放只强化自己——2026-11-02 用户裁),妨害技归主角**;施放类 side 守卫加载拒绝——妨害技零新授予通道 |
| trigger(触发条件) | 全部,可省 | {fact, op, value, latch} 四键——fact 与 op 取「触发条件」节封闭词表,value 类型与域随 fact,出域加载期拒绝;缺省无字段=无条件技,旧行为零变化(2026-10-26 情境条件触发器批立列、2026-10-27 迭代 39 实装落地;原池条目的血量百分比字段收编为本字段闩型首用例) |
| P1 字段位 | — | 命中段数、目标数——随对应后置批加列(触发条件位已由 trigger 立列收编——2026-10-26 立列、2026-10-27 实装;原"固定值分量"位已由 rider_mult 实装收编——2026-09-19;多段命中「命中段数」保留以防复活) |
@@ -309,7 +309,7 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错
- 死亡即不动手:摇定后、兑现前被杀——本拍技能作废(零行动明细行),不进冷却、不进保底计数;行动完成后才死——已兑付已进账;对已死亡单位上报受击被拒绝且状态不变。
- 空池不可能:每池恰一行普通攻击(域校验),普攻冷却恒 0 → 任意实例任意拍可摇集合恒非空。
- 伤害拍读值:读值 = 基线 × 倍率;普攻 = 倍率 1 特例;施放拍恒为 0(原伏击读值条随伏击退役作废——2026-09-20 八型批)。
- 警觉授予:踩 N 颗雷叠 N 层、逐层直授无上限;敌方全体共享同一状态值(side-wide)。
- 警觉授予:踩 N 颗雷叠 N 层、逐层直授无上限;按个体归属——每个存活敌各发一条自己的实例(全体存活敌规则,见[增益状态](增益状态.md)〈目标规则与个体归属〉节)。
- 目标顺位:多敌时单体目标恒为生成序最前存活者,杀最前后顺延;杀至空返回空;单敌时顺位与范围效果重合。
- 快照抗改表:实例化后修改敌人表,已生成单位的数值投影与实例池逐字不变;新实例才用新表值。
- 表校验:越域值、池权重 ≤ 0、空池、普攻配倍率/冷却、池增益 > 1、skill_id 悬空、行集构成违例(行集内同敌种第二行 / 同带键多行不相邻)均在加载期返回错误并止动;域内合法极端(攻击基线 0)不拒;主角表恰一行、攻击配 0 拒绝。
@@ -1,7 +1,7 @@
# 地形变异
> 一句话:格子的非雾变异(荆棘丛/藤蔓缠绕/岩浆/烬覆/落石/矿尘)与 Boss 图整图变异(贫矿脉),挖掘中可遭遇的地貌偏离
> 状态:已定稿(首批类型随 2026-09-19 定稿批落地,第三关一对随 2026-09-20 第三关内容批落地;首个整图变异随 2026-10-04 全局作用域变异首发批落地);现行为 v1.1
> 状态:已定稿(首批类型随 2026-09-19 定稿批落地,第三关一对随 2026-09-20 第三关内容批落地;首个整图变异随 2026-10-04 全局作用域变异首发批落地);现行为 v1.2
## 设计目的
@@ -91,8 +91,8 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照
变异在战斗初始化末段布置:初始展开完成、地图战斗资源格设置之后,由战斗结算的编排段执行。候选池非空时从池内均匀选一类型,按布置参数生长连通片写入格子快照:
- 数量 = round(候选池格数 × percent_of_cells / 100) + (关卡序号 − 1) × per_level_bonus(当前 5% + 每关 +2——百分比的基数是候选池格数而非总格数:初始展开通常占全板过半,按总格数取数会使变异在剩余可挖格中的实际密度远超配置值(2026-09-21 用户拍板基数修正);percent 承载"占可挖格比例",关卡递增由 per_level_bonus 绝对格数承载"越深越险";provisional 归难度曲线与Boss)。
- 形状 = 全连通生长(8 邻),单片 ≤ pack_max(当前 4:2×2 / 1×4 / 1×3+1 等形;2026-09-19 用户拍板)。
- 数量 = round(候选池格数 × percent_of_cells / 100) + (关卡序号 − 1) × per_level_bonus(两参数现行值读变异表——百分比的基数是候选池格数而非总格数:初始展开通常占全板过半,按总格数取数会使变异在剩余可挖格中的实际密度远超配置值(2026-09-21 用户拍板基数修正);percent 承载"占可挖格比例",关卡递增由 per_level_bonus 绝对格数承载"越深越险";provisional 归难度曲线与Boss)。
- 形状 = 全连通生长(8 邻),单片格数落在 [pack_min, pack_max] 内(两端读变异表;2026-09-19 用户拍板形状约束)。
- 候选格域 = 安全格 − 初始展开区,且排除危险格。
- 布置取数走专用随机流(variant_place,一板恰一 scope),换图/轮内刷新图各取号一次,确定性可复放。
- 生成器管线不布置变异(产物恒零变异格)——布置域的"未开"语义由设置顺序保障。
@@ -137,11 +137,12 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照
## 调参表
| 参数 | 现行值 | 归属 |
| 参数 | 取值域 | 归属 |
|---|---|---|
| 布置数量基数 percent_of_cells | 5(候选池格数百分比,2026-09-21 基数修正) | 难度曲线与Boss(provisional) |
| 关卡递增 per_level_bonus | +2 格/关 | 难度曲线与Boss(provisional) |
| 连通片上限 pack_max | 4 | 定稿值(2026-09-19 用户拍板形状约束) |
| 布置数量基数 percent_of_cells | percent [0, 50](候选池格数百分比,2026-09-21 基数修正);现行值读 `variation.tres` 表头 | 难度曲线与Boss(provisional) |
| 关卡递增 per_level_bonus | int [0, 9] 格/关;现行值读 `variation.tres` 表头 | 难度曲线与Boss(provisional) |
| 连通片下限 pack_min | int [1, pack_max];现行值读 `variation.tres` 表头 | 形状约束:单片至少几格连通成片,与 pack_max 合为成包尺寸域 |
| 连通片上限 pack_max | int [pack_min, 9];现行值读 `variation.tres` 表头 | 定稿值(2026-09-19 用户拍板形状约束) |
| 直伤量 effect_value | 荆棘丛 1 / 岩浆 2 / 落石 3 | 难度曲线与Boss(provisional,加法核 [1,9]) |
| 资源面偏斜 effect_value | 贫矿脉 30(生存族下调百分比;0=中性 off 锚;总期望微降 3-5% 为 provisional 设计目标——精确方向与幅度归读数批判读只测不判) | 难度曲线与Boss(provisional,域 [0,50]——2026-10-04 首发批投值) |
@@ -152,6 +153,6 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照
- 候选池空合法:门控筛空(池空或候选域碎片化不足)时静默零布置,配置加载零错误、零警告。
- 零特判(负验收):排雷玩法的挖格、封印、连锁展开执行路径中不存在任何按变异类型分支的代码;读取方按 effect/trigger/placement 枚举路由。
- 数据生命周期:格子携带的变异是只读数据——战斗初始化末段布置、随图消亡,布置后零运行时写入,无跨图存续;生成器产物恒零变异格。
- 布置域:变异格全在初始展开区外(伤害型 closed_only 由设置顺序结构保障)且不吃危险格;每图至多一种类型;连通片 ≤ pack_max。
- 布置域:变异格全在初始展开区外(伤害型 closed_only 由设置顺序结构保障)且不吃危险格;每图至多一种类型;连通片格数落在 [pack_min, pack_max] 内。
- 配套义务闭环(**已作废,2026-10-03 终裁**):原「定稿批须含反制兑现条目否则验收不通过」随反制道具配套义务一并作废;counter_items 恒空为合法态。
- 全局作用域型(2026-10-04 首发批):替换制生效——Boss 图恰一行整图变异+零格子级变异标记;普通图 region 路径逐位不变(同种子布置/摇号快照与批前基线逐项比对);off 态零扰动(effect_value=0 资源摇号与无偏斜逐位相同,白名单三行任何状态逐位不动);L1 Boss 零全局变异;Boss 图全局池空回落 region;全局取用零取号(确定性,不消费布置随机流);资源面偏斜正向池合计恒 77。
@@ -1,7 +1,7 @@
# 棋盘生成
> 一句话:棋盘怎么生成、怎么保证可推理可清图
> 状态:已定稿(自旧体系迁移);现行为 v1.1
> 状态:已定稿(自旧体系迁移);现行为 v1.2
## 设计目的
@@ -52,7 +52,7 @@
生成(关卡序号, 节点深度, 种子) → 棋盘 + 生成期指标集
① 参数解析 ─── 读对应参数行,生成开始时单次读取并快照
▼
② 布雷 ─────── 雷数 N = round(雷密度 × (宽×高 − 9))(先定数;9 = 出生 3×3 恒排除)
② 布雷 ─────── 雷数 N = round(雷密度 × (宽×高 − 出生格数))(先定数;出生格数 = 出生区边长²,读表,出生区恒排除)
│ 在"全格 − 出生 3×3"范围均匀布雷
│ 开局免费展开域外扩一圈,圈内的雷移除(只减不增、不重投、无迭代)
▼
@@ -79,7 +79,7 @@
**结论**:雷数先定数、再落位;零雷板与安全格不足的参数组合在加载期就被拒绝。
```
布雷数 N = round(mine_density × (board_width × board_height − 9)) (9 = 出生 3×3 恒排除)
布雷数 N = round(mine_density × (board_width × board_height − 出生格数)) (出生格数 = 出生区边长²,读表;出生区恒排除)
下限校验:N ≥ 1(零雷板加载期拒绝)
计数可行:board_width × board_height − N ≥ min_safe_count(加载期校验)
产物断言:实际安全格数 ≥ min_safe_count;实际雷数 ≤ N(先布后删只减不增)
@@ -211,7 +211,8 @@
| max_gen_attempts | int [1, 32] | 域 [1, 32],现行按行取值见 board_gen.tres | 生成-验证重试上限;受成本闸联合约束 |
| board_type | String,词表 {dungeon, underdark, deep_underdark} | 现行值见 board_gen.tres(词表 v1.1,2026-09-20 第三关内容批增补) | 图类型标签(玩家侧「地图类型」);域校验 = 词表成员检查 |
| shave_ring_radius | int [0, 2] | 现行 1(board_gen.tres 全行) | 先布后删剃雷半径:剃雷域=距出生中心切比雪夫距离 ≤1+r 的格(r=1 → 5×5=25 格;r=0 即只剃出生 3×3 本身=无环剃雷)。**2026-10-05 初始展开收窄批新参数**(调参项非结构冻结) |
| r0_max_cap | int [出生格数 9, 板格数一半](护栏,违例加载期致命) | 现行按板形:10×10=45 / 12×12=43 / 13×13=51 / 14×14=59(board_gen.tres) | 自然 R₀(开局免费展开格数)上限闸=合法性门;超阈整板重掷、耗尽走三分出口。板面 30% 锚(30/43/51/59)经 S1 停机呈报用户裁上调:10×10→45(r=1 自然均值 39>30 结构性倒挂;其余行 30% 锚维持)。**2026-10-05 初始展开收窄批新参数** |
| r0_max_cap | int [出生格数, 板格数一半](护栏,违例加载期致命;出生格数=出生区边长自乘,读出生区行) | 现行按板形:10×10=45 / 12×12=43 / 13×13=51 / 14×14=59(board_gen.tres) | 自然 R₀(开局免费展开格数)上限闸=合法性门;超阈整板重掷、耗尽走三分出口。板面 30% 锚(30/43/51/59)经 S1 停机呈报用户裁上调:10×10→45(r=1 自然均值 39>30 结构性倒挂;其余行 30% 锚维持)。**2026-10-05 初始展开收窄批新参数** |
| 出生区边长 | int [3, 5],奇数(中心对称,side = 2r+1);现行值读 board_gen.tres 表头 | 表头全局单值(非逐行) | 玩家出生区为以出生中心对称的 side×side 方区,区内恒无雷;布雷域基与 r0_max_cap 护栏下限均由它导出(格数 = side²)。**2026-11-02 架构整改批新参数**(原为代码常量,入表后格数零字面量) |
结构冻结(非调参项):键结构与每关深度 0 锚行、四阶段顺序(变异布置段 2026-09-20 已移出管线)、solver_rules、可推理率的合法信息源枚举、及格线域下限 0.85、成本闸常数(结构护栏,登记在案,调整走文档修订)、先布后删语义。
@@ -1,7 +1,7 @@
# 行动经济
> 一句话:每轮行动点怎么花、停手与刷新的代价
> 状态:已定稿(自旧体系迁移);现行为 v1.3
> 状态:已定稿(自旧体系迁移);现行为 v1.4
## 设计目的
@@ -91,7 +91,7 @@
停手与刷新合起来构成这本账的基线节拍:满行动点一轮停手,正好攒够一次刷新。行动点修正队列会扰动该节拍的实际兑现(+1 轮可多挖一格),不变式本身不动;对账归曲线调参批。
### 换图系专长对储备与刷新的改写(设计定稿,待实现)
### 换图系专长对储备与刷新的改写(已实装——2026-11-01 迭代 46 落表 `feats.tres`)
换图系两件基座分别改写 RAP 的来源与刷新价格。它们只给持有专长的玩家增加规则,不改变无专长时的基线账本。
@@ -100,7 +100,7 @@
| 矿脉储能 | 每次付费挖格被受理后,额外获得表值 RAP;安全格与危险格同口径 | 连锁展开只随首格的一次付费动作结算,不逐格追加;封印、移动、刷新不产 RAP |
| 省力周转 | 弃图刷新的 RAP 成本为基线的 50% | 只改价格;AP、轮次、每轮刷新上限与换图流程不变 |
两件基座可以同时持有并叠加:付费挖格照常产 RAP,刷新同时按半价扣费。两条规则作用在不同账户入口,不互相覆盖,也不设互斥。刷新仍须储备达到折后门槛才受理;储备不足或超过每轮次数上限时拒绝,状态不变。RAP 仍在战斗结束清零,刷新本身不返 RAP。
两件基座可以同时持有并叠加:付费挖格照常产 RAP,刷新同时按半价扣费。两条规则作用在不同账户入口,不互相覆盖,也不设互斥。折后价向下取整,受理门槛判断与实际扣费使用同一个折后值,只改价格不改拒绝判据——刷新仍须储备达到折后门槛才受理;储备不足或超过每轮次数上限时拒绝,状态不变。RAP 仍在战斗结束清零,刷新本身不返 RAP。
无矿脉储能时,挖格不新增 RAP;无省力周转时,刷新成本仍读全局基值。后续输出、生存与资源专长如何使用成功刷新这个事实,归[战斗结算](../战斗循环/战斗结算.md)。
@@ -249,8 +249,8 @@
| move_ap_cost | int | 表值(冻结 0) | 移动免费——冻结,非调参项 |
| chain_ap_cost | int | 表值(冻结 0) | 连锁免费——冻结,非调参项 |
| refresh_cap_per_round | int | 表值(provisional,结构位预留) | 每轮刷新上限,开轮重置计数 |
| (跨表)矿脉储能产 RAP | int [1, 64] | 设计定稿,待入 `feats.tres` | 每次受理的付费挖格兑付一次;连锁不逐格追加 |
| (跨表)省力周转成本率 | percent | 50%(结构已裁,待入 `feats.tres`) | 只改持有者的刷新价格;双基座叠加时不覆盖矿脉储能 |
| (跨表)矿脉储能产 RAP | int [1, 64] | 表值(已入 `feats.tres`,provisional 归调参批) | 每次受理的付费挖格兑付一次;连锁不逐格追加 |
| (跨表)省力周转成本率 | percent | 表值 50%(已入 `feats.tres`) | 只改持有者的刷新价格;双基座叠加时不覆盖矿脉储能 |
| (跨表)跨冒险行动点加成 | int [0,10] / int [0,99],冒险表 | adventure_table bonus_ap_flat / bonus_cap_ap(provisional) | 三选一 AP 件兑现值与全冒险次数上限;加成轴语义见「跨冒险行动点加成轴」节 |
字段名注记:2026-09-18 措辞完成批已全链对齐正式名——表字段与本文行名统一为 `refresh_cap_per_round`,刷新入口命名与表字段口径对齐(命名统一登记兑现,切片临时名零残留)。
@@ -57,7 +57,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻
| 区 | 位置与几何 | 管什么 |
|---|---|---|
| B 战斗画面 | 全宽,高读布局表 `stage_h` | 主角站桩立绘、敌人站桩立绘 ×1–3(**全站桩形态,2026-09-20 用户拍板:无框立绘+底座、状态小图标挂血条下,英雄卡/敌人卡退役**)、轮次阶段指示、结算明细带 |
| B 战斗画面 | 全宽,高读布局表 `stage_h`(背景三关变体+连续地面层高另读 `ground_h`) | 三关舞台背景+连续地面层、主角站桩立绘、敌人站桩立绘 ×1–3(**全站桩形态,2026-09-20 用户拍板:无框立绘+底座、状态小图标挂血条下,英雄卡/敌人卡退役**)、轮次阶段指示、结算明细带 |
| C 角色信息 | 左下,宽读 `info_panel_w`,高 = 基准屏高 − B 区高 | 生命 / 攻击 / 储备数据框、状态效果槽、小人立绘 |
| D 扫雷图 | 中下,宽 = 基准屏宽 − C 区宽 − 列间距(原右下面板删除后横向加宽),高同 C 区 | 行动点条与按钮组、棋盘本体、toast 槽 |
@@ -244,7 +244,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻
## 调参表
本系统的参数全部是呈现节奏与可读性常量,不是玩法数值——玩法数值一律归[数据配置](数据配置.md)的表,与本表无关。修订本文常量走文档修订流程。**本表常量无数据表承载,为文档面唯一事实源;入驻 .tres 时本列改指路。** 布局几何(B 区高 / C 区宽 / AP 条高 / 明细带两态高)已入驻 `game/data/tables/battle_layout.tres`,不在本表重复。
本系统的参数全部是呈现节奏与可读性常量,不是玩法数值——玩法数值一律归[数据配置](数据配置.md)的表,与本表无关。修订本文常量走文档修订流程。**本表常量无数据表承载,为文档面唯一事实源;入驻 .tres 时本列改指路。** 布局几何(B 区高 / B 区连续地面层高 / C 区宽 / AP 条高 / 明细带两态高)已入驻 `game/data/tables/battle_layout.tres`,不在本表重复。
| 参数 | 域 | 现行值(文档自持,无表承载) | 说明 |
|---|---|---|---|
@@ -1,7 +1,7 @@
# 数据配置
> 一句话:数值表与单一事实源管线
> 状态:已定稿(自旧体系迁移);现行为 v1.1
> 状态:已定稿(自旧体系迁移);现行为 v1.2
## 设计目的
@@ -70,7 +70,7 @@
| 关卡表 | 逐关节点图与层名 | [冒险结构](../冒险循环/冒险结构.md) |
| 冒险表 | 关卡大奖励与钥石入账(单行全局) | [冒险结构](../冒险循环/冒险结构.md) |
| 元进度表 | 元进度字段(已建表 2026-09-21——现行五行族:属性锻造 / Boss 钥石 / 工坊阈值 / 换算率 / 同调刷新升级行族,顺带扩列) | [元进度](../跨局循环/元进度.md) |
| 战斗屏布局表(`battle_layout.tres`) | 分区几何与明细带两态高(单行;呈现层布局配置,非玩法数值——供呈现层与样张工具同源读取) | [战斗屏规格](../../ux/battle.md)(结构)/[HUD框架](HUD框架.md)(呈现常量) |
| 战斗屏布局表(`battle_layout.tres`) | 分区几何、B 区连续地面层高与明细带两态高(单行;呈现层布局配置,非玩法数值——供呈现层与样张工具同源读取) | [战斗屏规格](../../ux/battle.md)(结构)/[HUD框架](HUD框架.md)(呈现常量) |
举证:本节为数据纪律约定,无计算。违规检测 = 静态扫描加人工复核,随各表回填定稿与里程碑检查执行。
+21 -8
View File
@@ -1,9 +1,9 @@
# 天赋树
> 一句话:营地本身——跨局成长的结构承载:钥石逐节点点亮一棵树,属性淬炼、工作间解锁、规则抉择与同调挂载全部组织在树上
> 状态:**已定稿(现行为 v0.11)**——12 节点结构在役(脊柱=生命/命中一线一节点,Fork 三节点双态);「等级阈值前置」为机制位(前置节点等级 ≥ n 才可购;键悬空 / 阈值 <1 / 类型错加载即拒;未达标节点锁标 + 悬停门槛文案),现役 12 行零配置=零行为影响;全部数值行 provisional,归数值批。
> 状态:**已定稿(现行为 v0.12)**——12 节点结构在役(脊柱=生命/命中一线一节点,Fork 三节点双态);「等级阈值前置」为机制位(前置节点等级 ≥ n 才可购;键悬空 / 阈值 <1 / 类型错加载即拒;未达标节点锁标 + 悬停门槛文案),现役 12 行零配置=零行为影响;全部数值行 provisional,归数值批。
> **📖 节点状态记录指引(读这份文档先看这里)**:本树全部 12 个节点=下方「核心规则 → 节点总表」,逐节点列名称/脉/类型/前置/效果方向;**全部数值行(价格 / 等级上限 / 每级效果取值 / 限次值)不在本文**,事实源 = 配置文件 `data/tables/meta_tree.tres`(provisional 归数值批)。要查"有哪些节点、怎么连"看本文总表,要查"多少钱、加多少"开配置文件。
> **📖 节点状态记录指引(读这份文档先看这里)**:本树全部 12 个节点=下方「核心规则 → 节点总表」,逐节点列名称/脉/类型/前置/效果方向;**全部数值行(价格 / 等级上限 / 每级效果取值 / 规则键效果参数)不在本文**,事实源 = 配置文件 `data/tables/meta_tree.tres`(provisional 归数值批)。要查"有哪些节点、怎么连"看本文总表,要查"多少钱、加多少"开配置文件。
## 设计目的
@@ -29,7 +29,7 @@
| 不负责 | 归谁 |
|---|---|
| 节点数值行(价格 / 等级上限 / effects 取值 / 限次值) | [数据配置](../表现与支撑/数据配置.md)——行值读 `meta_tree.tres`,全 provisional 归数值批;本文只定规则与键结构 |
| 节点数值行(价格 / 等级上限 / effects 取值 / 规则键效果参数) | [数据配置](../表现与支撑/数据配置.md)——行值读 `meta_tree.tres`,全 provisional 归数值批;本文只定规则与键结构 |
| 钥石 | [元进度](元进度.md)——树是永久强化的承载结构,钥石余额是消费来源;旧柜台框架与退役面亦在对方登记 |
| 锻造工坊工作间内的路线升级设计 | [锻造工坊](锻造工坊.md)——武器三路线+护甲三路线的等级、定价、满级特效现行事实源在彼;攻/AC 数值唯一来源在彼(所有权切分) |
| 秘宝目录、同调装配与同调位求值 | [秘宝](../跨局循环/秘宝.md)——树只持同调位节点挂载位与秘宝匣钥匙 |
@@ -112,7 +112,20 @@ Fork 组是封闭词表三组(2026-10-11 裁:克制专精整组砍除,类
「每关限次」的计数生命周期(2026-10-11 歧义扫描裁甲):限次计数随单次冒险持久、按关重置、新冒险清零、断点续玩保留。
A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表六键——**已随迭代 21 T3 扩签落地**:posture 双键收每关首轮窗、sense 锋/守双键限次按关重置、economy 聚/散双键接线),效果按激活态取值,不接数值线。两侧的设计判据是「不同强、非强弱」:MC 配对锚验收两侧关卡完成率差 <~3pp(**迭代 21 V19 已验:perfect+max 档三组配对差全部 0.0pp 在带**)。
A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表六键——**已随迭代 21 T3 扩签落地**:posture 双键收每关首轮窗、sense 锋/守双键限次按关重置、economy 聚/散双键接线),效果按激活态取值,不接数值线。**规则键的效果参数长在节点行的效果键值里**(每键一个参数字典,键集与取值域由 schema 按键声明;六键参数见下方「规则键参数表」),效果引擎只读参数、不持字面量。两侧的设计判据是「不同强、非强弱」:MC 配对锚验收两侧关卡完成率差 <~3pp(**迭代 21 V19 已验:perfect+max 档三组配对差全部 0.0pp 在带**)。
**规则键参数表**(参数名与取值域本文 owner;现行值读 `meta_tree.tres` 对应节点行 effects_a / effects_b):
| 规则键 | 态 | 参数 | 取值域 | 语义 |
|---|---|---|---|---|
| posture_first_strike | 开局姿态 A 先手压制 | ap_bonus | int [1, 4] | 每关首轮行动点加成 |
| posture_bulwark | 开局姿态 B 稳健拓荒 | shield | int [1, 9] | 每关首轮窗内受击时的盾值 |
| sense_sharp | 危险直觉 A 锋 | halve_pct / cap_per_level | percent [1, 99] / int [1, 9] | 踩中危险格伤害按百分比折减 / 每关触发次数上限 |
| sense_guard | 危险直觉 B 守 | ap_refund / cap_per_level | int [1, 4] / int [1, 9] | 标记错误返还的行动点数 / 每关触发次数上限 |
| economy_hoard | 财富之道 A 聚 | mult_pct | percent [101, 300] | 战斗掉落 GP 乘数(仅战斗掉落渠道) |
| economy_spend | 财富之道 B 散 | discount_pct | percent [1, 99] | GP 消费折价系数(全部 GP 消费面;商品购买价适用,刷新类支出不折——定义边界见上表) |
「每关限次」两键的 cap_per_level 共用同一计数生命周期(随单次冒险持久、按关重置、新冒险清零、断点续玩保留)。
层级纪律(红线):局外树只放全局规则件——effects 禁 archetype 键(schema 加载致命);规则改写型特性(流派件)只走局内随机渠道,永不入树。
@@ -153,7 +166,7 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表
| 上游 | [锻造工坊](锻造工坊.md) | 武器/护甲路线升级现行事实源在彼——树持钥匙节点(无前置),工作间柜台=钥匙展开面板;攻/AC 数值唯一来源在彼(所有权切分红线) |
| 下游 | [冒险结构](../冒险循环/冒险结构.md) | 冒险开始参数面——树生命/命中淬炼 flat(叠加进覆盖值通道)与规则键集的注入通道 |
| 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 营地四柜台并排呈现——树淬炼柜台=树脊柱界面形态(案甲);信号 = 树上购买意图 / 树上分叉切换意图 |
| 下游 | 战斗侧效果引擎 | 规则键消费面——每场战斗开始时重建合成订阅(机制硬编码,无表行) |
| 下游 | 战斗侧效果引擎 | 规则键消费面——每场战斗开始时按激活态效果键及其参数重建合成订阅(参数读节点行,引擎零字面量) |
## P0 最小闭环
@@ -174,14 +187,14 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表
| 表 / 常量 | 键结构归属 | 数值行 |
|---|---|---|
| 节点表 `data/tables/meta_tree.tres`(换代后 12 行:价格 / 等级上限 / requires(点亮前置)/ **requires_level(等级阈值前置——R1 机制位,现役零配置)** / effects 取值(Fork 行持 a/b 双效果键)/ 限次值;row 字段随一线一节点退役) | schema 声明,本文 owner | 全 provisional,归数值批投值 |
| 节点表 `data/tables/meta_tree.tres`(换代后 12 行:价格 / 等级上限 / requires(点亮前置)/ **requires_level(等级阈值前置——R1 机制位,现役零配置)** / effects 取值(Fork 行持 a/b 双效果键,每键值=参数字典,参数名与取值域见「规则键参数表」); row 字段随一线一节点退役) | schema 声明,本文 owner | 全 provisional,归数值批投值 |
| 脊柱行门槛 = 4 | 节点表结构声明持有,本文 owner | 规则即门槛(节点第 N 级需全树总等级 ≥ 4×(N−1)) |
| Fork 组词表(三组)/ 规则键词表(换代后六键,扩表随实装批) | 三组 Fork 词表与六键规则词表由节点表结构声明持有(封闭词表) | 词表即规则;规则键效果值由效果引擎合成 |
| Fork 组词表(三组)/ 规则键词表(换代后六键,扩表随实装批) | 三组 Fork 词表与六键规则词表由节点表结构声明持有(封闭词表) | 词表即规则;规则键效果参数读节点行,效果引擎按参数合成 |
| 钥石产出、刷新升级行族 | 现行事实源 = [元进度](元进度.md)调参表 | `data/tables/meta.tres` |
## 验收标准
- 结构封闭:meta_tree.tres 通过 schema 校验零违例——12 节点、脉 / 类型 / 币词表出域即拒、Fork 三组每组恰一节点且持 a/b 双效果键、彩蛋 ≤3、effects 键封闭、零 archetype 键。
- 结构封闭:meta_tree.tres 通过 schema 校验零违例——12 节点、脉 / 类型 / 币词表出域即拒、Fork 三组每组恰一节点且持 a/b 双效果键、彩蛋 ≤3、effects 键封闭、零 archetype 键;六键效果键值均持参数字典且参数名/取值域合规(见「规则键参数表」),缺参数或越域加载期致命。
- 行门槛可判:全树已购总等级 < 4×(N−1) 时脊柱节点第 N 级不可购;总等级达标当刻该级开放购买。
- 前置可判(点亮前置):requires 任一未点亮则节点不可购,逐一点亮后可购;锻造工坊钥匙无前置——初始即可点亮(free 零币)。**等级阈值前置:配置了该键的节点,指定前置节点等级 < n 时不可购、达标当刻开放(现役零配置,判定面已单独验证)。**
- 工作间可判:钥匙节点(锻造工坊 / 秘宝匣)未点亮时对应柜台锁定态、工作间不可进入;点亮后展开;图鉴无门槛常开。
+5 -4
View File
@@ -1,7 +1,7 @@
# 生涯
> **一句话定位**:营地里与三柜台平级的**局外只读界面**——营地管「花」(花钥石买永久强化),生涯管「看」(看自己跨局攒下的一切:累计战绩、历史冒险、图鉴收集)。冒险进行中不给任何数据回看(2026-10-04 用户裁决 P-C7 的延续),生涯是历史数据唯一的家。
> **状态**:期一已实装(2026-10-07 迭代 18 卡④生涯界面实装批·期一——跨局汇总页+主菜单入口+终身计数域存档 v6 落地;期二/期三另行立项,本文不预占排期)。入口拓扑已随迭代 33 卡② 三入口化换代、营地里经笔记本接入归迭代 34 卡④(信息架构节 v1.1,2026-10-22 反哺写入)。现行为 v1.3。
> **状态**:期一已实装(2026-10-07 迭代 18 卡④生涯界面实装批·期一——跨局汇总页+主菜单入口+终身计数域存档 v6 落地;期二/期三另行立项,本文不预占排期)。入口拓扑已随迭代 33 卡② 三入口化换代、营地里经笔记本接入归迭代 34 卡④(信息架构节 v1.1,2026-10-22 反哺写入)。现行为 v1.4。
> **来源**:[待办清单「『生涯』界面——冒险中数据回看的唯一承接处」条](../../../../待办清单.md)(2026-10-04 用户裁决 P-C7——冒险中不给数据回看,历史战报与结算明细的查看去向 = 新「生涯」界面)。
## 一、信息架构
@@ -69,7 +69,7 @@
| 界面 | 管什么(现状指证) | 与生涯的边界 |
|---|---|---|
| 营地([camp UX spec](../../ux/camp.md)) | 跨局成长**操作**面(花钥石买强化 / 装配 / 点树)+ 底栏「最近冒险」条带——营地底栏把摘要逐局拼行(行模板「完成/放弃/失败 · 通关 N 关 · 钥石 +N · 种子 N」)、无截断上限,数据源与生涯历史回看同属一份最近摘要 | 营地不改生涯只读定位;生涯不做任何购买入口,也不放「去买」按钮。营地条带的去留是本提纲必答项——见 §五 P6 |
| 营地([camp UX spec](../../ux/camp.md)) | 跨局成长**操作**面(花钥石买强化 / 装配 / 点树——2026-11-01 迭代 47 卡④ 起为营地场景图+五功能窗口形态);原底栏「最近冒险」条带已随同批撤下(P6 甲提前落地),逐局历史回看唯一归生涯 | 营地不改生涯只读定位;生涯不做任何购买入口,也不放「去买」按钮。营地条带已撤(P6 甲——随迭代 47 卡④ 执行) |
| 状态面板(迭代 17 卡③,并行批开发中) | **局内**只读查看这一局进行中的钥石与本局冒险进度 | 状态面板看当局当前值,生涯看跨局累计与历史;局内无生涯入口(P4 甲) |
| 结算屏([settlement-summary UX spec](../../ux/settlement-summary.md)) | 冒险收束当下的入账明细——冒险收束时由结算屏呈现入账明细与钥石明细(复用终局面账行的呈现形态) | 收束当下的呈现保留不动;生涯承接的是收束之后的任意时刻回看 |
| 帮助手册(Beta 批,未实装——教学内容归 Beta 帮助手册) | 讲「怎么玩」 | 生涯讲「我玩过什么」。图鉴条目文案与手册是否共用内容源,接口登记归 Beta 批一并裁 |
@@ -82,7 +82,7 @@
| 期 | 内容 | 前置 | 建议窗口(候选) |
|---|---|---|---|
| 期一 | 跨局汇总页 + 主菜单生涯入口落位。总局数/通关局数两个终身计数域随该批做存档 schema 迁移——**✅ 已实装(2026-10-07 迭代 18 卡④)**:汇总段六类九项+营地与系统组生涯钮+存档 v6 两终身计数域〔v5 升 v6 幂等迁移〕;闸读数与代拍板追认单原记于该批出口报告,该件已按「吸收即死」删除,读数以本行与该批提交信息为准 | 提纲评审通过。实装批前置义务 = 对齐迭代 16 UI 批后的现行基线:字号六档 / 语义色 / 按钮最小高 40 点等现行界面基线 / 色板单源 / 页面壳的模态栈纪律——与卡③需求卡片同款红线,本文只登记、不展开 | Alpha 后最近一个 UI 窗口 |
| 期二 | 历史冒险回看整段:N 扩容 + 用时埋点 + 旧档摘要迁移 + 逐局列表 + 单局明细(遗留明细界面复活承接)+ 营地条带处置(P6 裁案落地) | 期一。实装批开工前须向用户呈报两件:N 终值读数(20 / 50 / 维持 10 三选一)与「用时」埋点口径(计时起点、暂停是否计入——字段级细节本文不做) | 期一落地后独立批 |
| 期二 | 历史冒险回看整段:N 扩容 + 用时埋点 + 旧档摘要迁移 + 逐局列表 + 单局明细(遗留明细界面复活承接)——营地条带处置已随 P6 甲提前落地(2026-11-01 迭代 47 卡④ 撤下),期二无残留条带义务 | 期一。实装批开工前须向用户呈报两件:N 终值读数(20 / 50 / 维持 10 三选一)与「用时」埋点口径(计时起点、暂停是否计入——字段级细节本文不做) | 期一落地后独立批 |
| 期三 | 图鉴承接(敌人优先,范围与顺序随 P3 甲);「见过」记账面 schema 义务随该批执行 | 期二或独立评估 | Beta 窗口候选(与教学引导同段评估——图鉴的「认得」轴与教学相关;待办清单教学引导节各条 2026-10-04 起已整体标 Beta 阶段) |
本地化文案权:生涯界面本体按钮、页签、空态文案归[设置与本地化](../表现与支撑/设置与本地化.md)线(全仓无多语言实装;文案权先例 = 教学文案定稿权登记于待办清单),实装批承接。
@@ -91,9 +91,10 @@
P0-P5 六点已于 2026-10-06 用户全裁(案甲 × 6,备选案与淘汰依据在需求卡片 §8),结论已写入上文对应节,不重复列。本批新发现的待裁点一项:
### P6 · 营地底栏「最近冒险」条带去留(期二必答项)
### P6 · 营地底栏「最近冒险」条带去留(已裁甲案并落地——2026-11-01 迭代 47 卡④)
**现状与问题**:营地底栏「最近冒险」条带把摘要逐行全部拼进同一个标签(行模板「完成/放弃/失败 · 通关 N 关 · 钥石 +N · 种子 N」,无截断上限),数据源与生涯历史回看同属一份最近摘要。生涯期二把上限扩到 N 后,条带按现行逻辑会把 N 行全拼进底栏——这是本批复核发现的实际耦合点,期二落地时必须给条带一个去处。
**裁决与执行**:用户裁甲案(2026-11-01,随迭代 47 卡④ 四柜台拆解执行)——条带已撤下、逐局历史回看唯一归生涯;期二生涯历史回看批的条带处置义务随之清空。
| 案 | 内容 | 淘汰/保留依据 |
|---|---|---|
@@ -1,7 +1,7 @@
# 锻造工坊
> 一句话:营地的武器与护甲成长——武器锻造区三条路线、护甲锻造区三条路线各练各的,钥石消费,一次冒险各选一件,满级特效留位本期不做
> 状态:**v0.10(2026-10-29 实现内容清理:删「现役代码事实」「实装边界」两节与正文代码指证,规则与数值零变化)**——全部数值 provisional,终值归 Alpha 收官 M4 数值批〔未排期〕
> 状态:**v0.11(2026-11-02 补验收标准节:九条结构面判据落文,规则与数值零变化)**——全部数值 provisional,终值归 Alpha 收官 M4 数值批〔未排期〕
## 设计目的
用户原案(playnote 2026-10-06):把现役"营地花钱买攻击 +1"改造成有等级、有成长、有满级特效的**武器升级路线**;新增长枪(穿刺)与法杖(魔法)实现武器间差异化;护甲同理——初始只有轻甲(升级只提 AC),最高等级后解锁重甲/魔法护甲,基础 AC 各异、各带满级特效。
@@ -209,3 +209,17 @@
### 10 · 数值与验证
全部数值 provisional 归 Alpha 收官 M4 数值批;实装批必须带改前 / 改后同随机种子配对读数验证难度影响。
## 验收标准
本节判据全部绑结构与关系、不绑具体数值:价格、增量、等级上限等行值 provisional 归 M4 数值批,改值不推翻判据;判据失效只发生在结构关系本身被改时。
- **柜台解锁与默认值解耦**:天赋树的锻造工坊钥匙节点(见[天赋树](天赋树.md))点亮后本柜台开放、可购买;未点亮时柜台锁定、不存在任何购买途径;未点亮期间武器/甲默认值照常经参数面注入冒险,不存在「未解锁就读不到默认值」的窗口(2026-10-11 树侧钥匙裁)。
- **路线解锁双通道并联**:长枪、法杖、重甲、魔法护甲四条路线的解锁条件全部在本系统内部、与关卡进度零绑定;每条路线同时开两条互不影响的通道——练满前一档、或支付一次性解锁价直购——任一通道成立即解锁(4b/4b-1 裁)。
- **窗口内容**:营地四柜台并排呈现;本柜台分武器、护甲两区,各列三条路线行,行名=件名+锻造;出场行显示当前选中(武器+甲);满级特效无窗口入口、无文案(本期不做)。
- **单选注入与树零攻防**:攻击加值唯一来源=当前选中武器路线、AC 加值唯一来源=当前选中甲路线;0 级=未练合法态、零加值;天赋树淬炼对攻击与 AC 零贡献;开局注入按「账号层基础值+树淬炼 flat+锻造加值+局内加算区」分层可加,锻造加值只取当前选中(2026-10-11 所有权切分裁)。
- **切换语义**:营地内任意武器×甲组合切换免费、即时生效;换装不丢级不生效——旧选中等级保留、加值待命;一次冒险=一个武器类型+一个甲型;冒险开始后锁死、局内不存在任何换装途径(1a/1b/1c 裁)。
- **定价结构**:每级价格随已购级数几何递增(第 N+1 级价格 > 第 N 级价格,基价与公比读表单点);路线解锁价一次性收取;钥石不足时购买被拒、余额与等级零变化;GP 全程不可用于本柜台(5b 裁)。
- **存档闭合**:六条路线等级+当前武器/甲选中标记写入存档,读档恢复与写入前一致;存档域无特效域(6 裁连带)。
- **祝福件负断言**:局内商店购买攻击/护甲祝福后,本柜台路线等级与选中态零变化(8a 裁连带——货架行名带「攻击」「护甲」字样,属性祝福与锻造升级是两条互不相通的通道)。
- **甲型双轴可感**:切换甲型后基础 AC 与挨普通攻击的克制修正(轻甲 0/重甲 −1/魔法护甲 +1)双轴同时变化(3b 裁;现行敌方攻击全部按普通处理,断言条件当下即成立)。
+5 -5
View File
@@ -2,7 +2,7 @@
> **Status**: Complete(现行)
> **Author**: user + ux-designer
> **Last Updated**: 2026-10-29
> **Last Updated**: 2026-11-02
> **Platform Target**: PC (Steam)——Keyboard/Mouse 主(全部操作纯鼠标可完成)、Gamepad Partial 非 MVP、Touch None(同 technical-preferences)
> **上游修订依赖**: 弃图刷新挖掘期受理已随布局决策 4 落稿上游(2026-09-12:行动经济 Active 受理 + 每轮上限 2 次、排雷玩法 Active·仅刷新路径装板、战斗结算的挖掘期刷新编排 + 恒同盘不变、系统索引的刷新规则同步——见 OQ11)
> **Template**: UX Spec
@@ -115,7 +115,7 @@
### Layout Zones
采用用户拍板的布局图(2026-09-12),按 1280×800 基座落尺寸。**分区几何的唯一事实源 = `game/data/tables/battle_layout.tres`**(经 `ConfigDb.presentation.battle_layout` 读取;字段 `stage_h` / `info_panel_w` / `ap_bar_h` / `log_band_h_dig` / `log_band_h_settle`)。本节只写结构关系与内容职责,不复写数值;任何文档与代码不另立第二份布局值。
采用用户拍板的布局图(2026-09-12),按 1280×800 基座落尺寸。**分区几何的唯一事实源 = `game/data/tables/battle_layout.tres`**(经 `ConfigDb.presentation.battle_layout` 读取;字段 `stage_h` / `ground_h`(B 区连续地面层高)/ `info_panel_w` / `ap_bar_h` / `log_band_h_dig` / `log_band_h_settle`)。本节只写结构关系与内容职责,不复写数值;任何文档与代码不另立第二份布局值。
| 区 | 位置与几何 | 内容 |
|---|---|---|
@@ -141,7 +141,7 @@
```
- N = 棋盘长宽两边的较大者;格间距 2px;垂直预留 24px(上 12 / 下 12);悬崖厚度 8px;结构钳制区间 [26, 46]px。
- 可读下限 30px——与结构钳制分开:钳制管算式不越界,下限管玩家能否看清。
- 格边长可读性以用户验收的现行画面为锚点(2026-11-01 用户裁——现行渲染值即基准,基座档 14×14=28px 达标);全域不设人造的格边长可读阈值。结构钳制 [26, 46] 只管算式结果不越界;格边长接线守卫=生产写入值与上式单点算式的返回值严格相等,最大板型的推定读数仅留痕观察、不作判红依据。
- N 的取值与每关板型的对应关系读[棋盘生成](../systems/排雷循环/棋盘生成.md),现行值的事实源是 `data/tables/board_gen.tres`。
- 数字字号 = max(18, ceil(格边长 × 0.5)),像素字体整数倍缩放(canvas_items stretch 保证清晰)。
@@ -152,7 +152,7 @@
| 区 | 组件 | 类型 | 内容 | 交互 | 载体 |
|---|---|---|---|---|---|
| B | 主角站桩立绘 | 站桩(无框立绘+落影) | HP 条落底盘(2026-10-06 方案二拍板:站桩排式 = **立绘→血条→状态**,全场血条对齐一线;血条嵌石板位、台缘线留作地面线;原「悬浮头顶」退役——高盒下血条-立绘空洞,用户点名否决)、状态效果小图标一排挂血条正下方(形状+色相双通道、层数角标;空态不占位退化为空行)——**HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板,原 C 区状态槽职责〔悬停 tooltip 来源+语义+剩余结算次数〕并入本组件)**;攻击值等规划数据仍归 C 区数据框(2026-09-20 全站桩拍板,英雄卡退役) | 悬停状态小图标看 tooltip | HUD 视图拆分改造 |
| B | 敌人站桩立绘 ×1–3 | 站桩(无框立绘+落影) | 血条+顺位徽标落底盘(同主角排式,2026-10-06 方案二;**大体档〔显示 >150px 级:drider/duergar_king〕允许向上溢出盒顶 N px(N 由实装批 C0 实算,与背景/光柱无关——现行溢出区为临时光柱氛围层,正式舞台背景插画到位后该层退役,判定不变),血条仍落底**)、状态小图标挂血条正下方(敌方 side-wide 增益各立绘同值呈现——蓄力/硬化/削弱/暴走/警觉;伏击层数通道随 2026-09-20 八型批退役——数据源 = 战斗结算流水经增益状态投影,敌人系统×4④;2026-09-16 敌人技能池批改型:行为环点拆除〔proposal §2.4〕,意图占位 = 本拍摇定结果的动画占位——普通攻击零表示 / 特殊技类型级提示,**意图徽标悬浮头顶上方,探顶档压胸**,敌方增益〔蓄力/硬化〕入状态图标行);死亡灰化加碎裂退场直接演在立绘上(2026-09-20 全站桩拍板,敌人卡退役);血条下名字行 = 纯名字 + 护甲类型图标(形状+色相双通道,与状态图标同行共存,状态空时为纯名字;原「底座下」随石板退位改落底排),AC 数值不展示——2026-09-26 终裁(用户口径:HP 信息已足够,攻防数值不直接写上;护甲类型图标保留克制对策可读性——类型可读、数值隐藏) | 只读 | 新建 |
| B | 敌人站桩立绘 ×1–3 | 站桩(无框立绘+落影) | 血条+顺位徽标落底盘(同主角排式,2026-10-06 方案二;**大体档〔显示 >150px 级:drider/duergar_king〕允许向上溢出盒顶 N px(N 由实装批 C0 实算,与背景无关——原临时光柱氛围层已随舞台背景实装批退役〔2026-11-02 迭代 48〕,溢出判定不变),血条仍落底**)、状态小图标挂血条正下方(敌方增益按个体呈现——各立绘只显示它自己名下的状态实例〔蓄力/硬化/削弱/暴走/警觉,2026-11-02 个体化裁〕;伏击层数通道随 2026-09-20 八型批退役——数据源 = 战斗结算流水经增益状态投影,敌人系统×4④;2026-09-16 敌人技能池批改型:行为环点拆除〔proposal §2.4〕,意图占位 = 本拍摇定结果的动画占位——普通攻击零表示 / 特殊技类型级提示,**意图徽标悬浮头顶上方,探顶档压胸**,敌方增益〔蓄力/硬化〕入状态图标行);死亡灰化加碎裂退场直接演在立绘上(2026-09-20 全站桩拍板,敌人卡退役);血条下名字行 = 纯名字 + 护甲类型图标(形状+色相双通道,与状态图标同行共存,状态空时为纯名字;原「底座下」随石板退位改落底排),AC 数值不展示——2026-09-26 终裁(用户口径:HP 信息已足够,攻防数值不直接写上;护甲类型图标保留克制对策可读性——类型可读、数值隐藏) | 只读 | 新建 |
| B | 轮次·阶段指示 | 标签 | "第 N 轮 · 挖掘中/结算中"(终局定格「战斗结束」;Boss 变体附 Boss 名) | 只读 | 新建 |
| B | 结算明细带 | 滚动列表 | 结算期逐行流水([战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 9 类行协议);挖掘期收起为上轮摘要 1 行 | 点击展开明细回看 overlay(2026-10-04 P-C7 退役——带保留单行摘要,回看归「生涯」) | 改造 |
| B | ~~结算明细回看~~(已退役) | —— | 2026-10-04 P-C7 裁:冒险中回看退役归「生涯」——回看覆盖层为未接线遗留件(待办清单登记) | —— | 未接线 |
@@ -366,7 +366,7 @@
- [ ] 两种格态(已开格 / 未开格)灰度截图下一眼可辨(排雷玩法×6②)
- [ ] 悬停光标区分移动/挖/封印三语义;可挖域(8 向相邻)常驻指示;非相邻格悬停显禁止反馈(排雷玩法×6③)
- [ ] 已引爆危险格呈"可通行可读"(排雷玩法×6④)
- [ ] 全部数字对所在格底对比 ≥4.5:1;明度分层规则无违例(art-bible §2/§4.1,v3.0——状态区分不走明度,格底功能分档合法)
- [ ] 全部数字对所在格底对比 ≥4.5:1;明度分层规则无违例(art-bible §2/§4.1——格底功能分档合法,格态语义由形与色相承载)
**交互与反馈**
+4 -4
View File
@@ -1,6 +1,6 @@
# 营地场景 UX spec(camp)
> 状态:v2.2(现行)
> 状态:v2.6(现行)
> 事实源:本 spec(呈现)+ [元进度](../systems/跨局循环/元进度.md)(机制)
> 美术画法:[art-bible](../../art/art-bible.md) §6.2/§7.5;素材命名与路径:[asset-path-map](../../art/asset-path-map.md)
> 相邻:[level-map.md](level-map.md)(主菜单语境)
@@ -28,7 +28,7 @@
**中景带自画面底部往上约 2/3 处起**;近景物件允许压住围墙(围墙不可点,z 序在近景物件之下),**唯一例外=中间门洞必须留空、不被任何物件遮挡**。围墙形态、门扇比例与帐篷尺寸的现行口径归 [art-bible](../../art/art-bible.md) §6.2,本 spec 不再复述。
坐标草案与分层验收判据见 [camp-scene-prompts](../../art/camp-scene-prompts.md) §2.3/§4(10 张口径现行事实源);2026-10-22 美术方案讨论留痕见 [提案](../../../reports/提案-营地场景图美术生成方案-2026-10-22.md)。
坐标草案与分层验收判据见 [camp-scene-prompts](../../art/camp-scene-prompts.md) §2.3/§4(10 张口径现行事实源);2026-10-22 美术方案讨论沿革查 git 提交史。
## 点选反馈(根态)
@@ -38,11 +38,11 @@
## 顶栏
钥石余额常驻画面顶部一行小 HUD 栏(高 48px、全宽窄条、**浮层覆盖在场景图上层,不挤压画面**)。刷新入口=营地刷新单口(卡⑤同口挂接)。
钥石余额常驻画面顶部一行小 HUD 栏(高 48px、全宽窄条、**浮层覆盖在场景图上层,不挤压画面**)。刷新入口已实装=营地刷新单口(2026-11-01 迭代 47 卡④⑤:进档与营地内写口尾触发,现开界面与顶栏余额同步取现值)。
## 叠层与开合
各界面开合走模态栈单口,层序按模态栈契约登记。**承载形态(独立全屏页 vs 单一内页切换)与叠层规则归卡④ §9 代拍板域,本 spec 不预设值**;派生规则:独立全屏页=场景根隐藏/单一内页切换=场景根留底(「缩放虚化」为第三形态,禁批内自选)。ESC 浮窗(返回主菜单/设置/退出游戏)归卡⑤。
各界面开合走模态栈单口,层序按模态栈契约登记。**承载形态已定稿**:五个功能界面(锻造工坊/秘宝匣/天赋树/奖励格图鉴/生涯记录)各以**功能窗口**打开——窗口为统一居中定尺寸窗壳(起点 720×640,窗明显小于屏、营地场景大面积可见;终值随样张目检校准,属普通设计决策)——**该窗壳形态已实装**(2026-11-02 迭代 49 卡③落码:窗壳几何单点定值、五窗共用同一石板皮窗板;起点值 720×640 为实装现值,样张目检校准意见回填终值〔登记体验验证清单 ㊽〕),窗之下垫半透明压暗遮罩(交互聚焦用,复用既有模态遮罩件,现值锚黑色 0.6;观感随样张目检校准,属普通设计决策),内容超高时窗内滚动;生涯页与四子界面同壳同形态。**五窗互斥单开**(模态栈深恒 1,不开窗叠窗);各窗自带关闭钮。ESC 优先序:有功能窗口开着 → 先关最上层窗;无窗 → 才进 ESC 浮窗(返回主菜单/设置/退出游戏)。
## 口径
+1 -1
View File
@@ -234,6 +234,6 @@
| [HUD框架](../systems/表现与支撑/HUD框架.md) | 模态 overlay 层级纪律、订阅纪律(推进信号两线之一) | Navigation Position + Data Requirements 架构注记 |
| HUD框架 | 可访问性基线全量(对比/色弱/字号/闪烁/减动效/纯鼠标/中文字体) | Accessibility |
| [battle.md](battle.md) OQ14 二轮拍板 | GP = 关卡画面常驻总量 | 顶栏 GP 常驻徽章 |
| [art-bible](../../art/art-bible.md) | 方块地牢观感(§3.2 圆角方形世界侧)、色板冻结(§4.1)、半拟物(§7.1)、明度分层(§2,v3.0——状态不走明度、空间光照可走) | 图区组件 + Accessibility 对比条 |
| [art-bible](../../art/art-bible.md) | 方块地牢观感(§3.2 圆角方形世界侧)、色板冻结(§4.1)、半拟物(§7.1)、明度分层(§2) | 图区组件 + Accessibility 对比条 |
---
+4 -1
View File
@@ -1,7 +1,7 @@
# 术语表
> 全库专用术语的唯一对照表(2026-10-11 用户令建立)。规矩:新术语先登记本表、再在文档使用;退役词见文末对照表,文档正文一律使用现行词。文档中遇到看不懂的词,查本表。用词纪律(禁用词、替换值、豁免范围)见「用语规范」节。
> 状态:**现行 v1.25**——2026-10-11 建立;历次升版明细见 git 提交史。
> 状态:**现行 v1.26**——2026-10-11 建立;历次升版明细见 git 提交史。
## 格与棋盘
@@ -94,6 +94,8 @@
| 术语 | 定义 |
|---|---|
| 效果端口件 | 战斗业务类(伤害管线/行动经济)唯一的效果发射出口:收事件与载荷、交效果引擎结算、取回命中批——业务类零引擎直连(机制归属见架构文档「战斗编排域拆件定稿」节轴戊;实现类 EffectPort) |
| 掷格件 | 装配期格面资源摇号的承载件:池行装配、区间行 roll、权重合成(偏运硬币/board_skew 两路投影);受理账面留守地图战斗资源件(机制归属同上;实现类 RewardRoller) |
| `seal_missed` | 封印落空事件(旧名已换代):封印动作落在安全格上时发出,订阅面据此做限次与豁免判定(迭代 31 卡② 落地) |
| `forgive_seal_miss` | 本场首次封印落空豁免——专长「完美保险」的效果类型,`domain=battle` 首例;有效误标=误标总数 − 豁免数,豁免不改写误标账(迭代 31 卡② 落地) |
@@ -109,6 +111,7 @@
| 图类型 | 棋盘生成产物 `board_type` 的中文名——三关换皮的单位(同款地砖换色板) |
| 方向稿 | 冻结前的方向性候选稿,供气质目检;过目检后才进机检冻结 |
| 站桩 | 战斗画面区(B 区)里角色直立立绘的显示形态(配血条与状态行) |
| 显示档 | 站桩立绘的显示尺寸规则——源用原稿分辨率入包(禁降采样),显示按三档绝对高(小型 96/中型 144/大型 188)缩放、宽随源比例;定值单点见[美术圣经](../art/art-bible.md) §8.2 站桩立绘显示档条 |
| 徽章 | 库存条与结算明细用的小图标(与格面类型微光预读相区分) |
## 开发流程
+1 -1
View File
@@ -50,7 +50,7 @@ Godot_v4.7.2-stable_win64_console.exe --headless --path . --script res://sim/adv
**试玩画像口径(2026-09-19 用户拍板固化——全项目试玩/扫描/面板模拟一律只用以下两档,随机策略口径退役)**:`policy="normal"` = **普通画像·基础定式**(单数字满足规则——满足即标/满足即开,无处可推盲挖边界格、不刷新;教学后正常玩家的下限近似);`policy="perfect"` = **完美画像**(single+subset 全推理零盲挖/卡死刷新——技能上界仪)。实现单一出口 = `sim/auto_player.gd`(novice_action / perfect_action)经 `sim/level_autoplay.gd`,调试浮窗批量模拟与各扫描工具自动同口径;战斗层冒烟夹具与调试转储的 `choose_dig` 直调是机制测试夹具、不承载画像语义。分级依据与新旧读数(乱点 0%/5% → 基础定式 65%/90%)见 auto_player.gd 普通策略档节与台账 77。
单关诊断工具(level_debug.gd)随单关直入口口径退役(2026-09-23)——败退归因走 balance_verifier 冒险段(层/节点/敌人人读归因)。
战斗级工具(v1 遗产):`dump_battle.gd`(结算流水)/ `monte_carlo.gd`(战斗期望)/ `experiment_density.gd`(密度调参)。
战斗级工具(v1 遗产):`dump_battle.gd`(结算流水)/ `monte_carlo.gd`(战斗期望)。
## 范围(v1 范围 + v2 追加,用户 2026-09-10/11 确认)
Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://7mgi36hqrvej"
path="res://.godot/imported/seal_mark.png-4e00c69f08466c44d297a28c90752754.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/seal_mark.png"
dest_files=["res://.godot/imported/seal_mark.png-4e00c69f08466c44d297a28c90752754.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bqvh7631mcuaj"
path="res://.godot/imported/terrain_floor_deep_underdark_1.png-c1b190b8e4b3895184bdd0ee6bd74f82.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_deep_underdark_1.png"
dest_files=["res://.godot/imported/terrain_floor_deep_underdark_1.png-c1b190b8e4b3895184bdd0ee6bd74f82.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://x6sl5ht6n2uc"
path="res://.godot/imported/terrain_floor_deep_underdark_2.png-c0469b1cf1af026328686618be34f5d3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_deep_underdark_2.png"
dest_files=["res://.godot/imported/terrain_floor_deep_underdark_2.png-c0469b1cf1af026328686618be34f5d3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blj41w52x8poi"
path="res://.godot/imported/terrain_floor_deep_underdark_3.png-f159b9c2d516f78ef7d19b05a4631d11.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_deep_underdark_3.png"
dest_files=["res://.godot/imported/terrain_floor_deep_underdark_3.png-f159b9c2d516f78ef7d19b05a4631d11.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b3bwubcxsl5jq"
path="res://.godot/imported/terrain_floor_deep_underdark_4.png-f5f15b985679a255ff00e1b8688e15b2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_deep_underdark_4.png"
dest_files=["res://.godot/imported/terrain_floor_deep_underdark_4.png-f5f15b985679a255ff00e1b8688e15b2.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cv07q7w556bwy"
path="res://.godot/imported/terrain_floor_deep_underdark_5.png-143a53136daea878fff67d8ac9e05c42.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_deep_underdark_5.png"
dest_files=["res://.godot/imported/terrain_floor_deep_underdark_5.png-143a53136daea878fff67d8ac9e05c42.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b65onwkof3wsy"
path="res://.godot/imported/terrain_floor_dungeon_1.png-40bb7fc26d6ced997a8f1cc9005b6f18.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_dungeon_1.png"
dest_files=["res://.godot/imported/terrain_floor_dungeon_1.png-40bb7fc26d6ced997a8f1cc9005b6f18.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ddqxia2sv5ktq"
path="res://.godot/imported/terrain_floor_dungeon_2.png-c4869c7b250ede2771251e1c17af6563.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_dungeon_2.png"
dest_files=["res://.godot/imported/terrain_floor_dungeon_2.png-c4869c7b250ede2771251e1c17af6563.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bieystjeu21q4"
path="res://.godot/imported/terrain_floor_dungeon_3.png-148125c305ac1d93b24d178431bf294e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_dungeon_3.png"
dest_files=["res://.godot/imported/terrain_floor_dungeon_3.png-148125c305ac1d93b24d178431bf294e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://q5eko1txuoq5"
path="res://.godot/imported/terrain_floor_dungeon_4.png-3fe81a46ece4b02dc031045919a12259.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_dungeon_4.png"
dest_files=["res://.godot/imported/terrain_floor_dungeon_4.png-3fe81a46ece4b02dc031045919a12259.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvyjsdrcsysi1"
path="res://.godot/imported/terrain_floor_dungeon_5.png-de6614fc89049d19ea41225a836f9d75.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_dungeon_5.png"
dest_files=["res://.godot/imported/terrain_floor_dungeon_5.png-de6614fc89049d19ea41225a836f9d75.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://tql72osnj7b4"
path="res://.godot/imported/terrain_floor_underdark_1.png-f600aa8d0e421e81abdeacc2ca1e684d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_underdark_1.png"
dest_files=["res://.godot/imported/terrain_floor_underdark_1.png-f600aa8d0e421e81abdeacc2ca1e684d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b5wep4y81o1jw"
path="res://.godot/imported/terrain_floor_underdark_2.png-af44e8e4b98a05a2d39075dbcd9d4e01.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_underdark_2.png"
dest_files=["res://.godot/imported/terrain_floor_underdark_2.png-af44e8e4b98a05a2d39075dbcd9d4e01.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dui4ogsp407gh"
path="res://.godot/imported/terrain_floor_underdark_3.png-2b02c10af1a0cdae05a3e6c4b62383db.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_underdark_3.png"
dest_files=["res://.godot/imported/terrain_floor_underdark_3.png-2b02c10af1a0cdae05a3e6c4b62383db.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmhm5txfhgwx3"
path="res://.godot/imported/terrain_floor_underdark_4.png-f1fdca02c60c236ff6c7656d2c63a42e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_underdark_4.png"
dest_files=["res://.godot/imported/terrain_floor_underdark_4.png-f1fdca02c60c236ff6c7656d2c63a42e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://l2rq0unla3uv"
path="res://.godot/imported/terrain_floor_underdark_5.png-b581b01cb084ee52178ca96663e73933.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_floor_underdark_5.png"
dest_files=["res://.godot/imported/terrain_floor_underdark_5.png-b581b01cb084ee52178ca96663e73933.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://rgaccyhfmihw"
path="res://.godot/imported/terrain_wall_center_crack_deep_underdark.png-2d56722bbd6050f6b795a625b3edaa6c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_center_crack_deep_underdark.png"
dest_files=["res://.godot/imported/terrain_wall_center_crack_deep_underdark.png-2d56722bbd6050f6b795a625b3edaa6c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cgr1rjgu7yw3v"
path="res://.godot/imported/terrain_wall_center_crack_dungeon.png-df45d525c0fd838550460540defe30f2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_center_crack_dungeon.png"
dest_files=["res://.godot/imported/terrain_wall_center_crack_dungeon.png-df45d525c0fd838550460540defe30f2.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bv36y7mva45uy"
path="res://.godot/imported/terrain_wall_center_crack_underdark.png-8ca77a6201e1431a0db830c2275ad51e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_center_crack_underdark.png"
dest_files=["res://.godot/imported/terrain_wall_center_crack_underdark.png-8ca77a6201e1431a0db830c2275ad51e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dvhyhx04wiouj"
path="res://.godot/imported/terrain_wall_center_deep_underdark.png-21dba86720ce186d7016925f8a498d80.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_center_deep_underdark.png"
dest_files=["res://.godot/imported/terrain_wall_center_deep_underdark.png-21dba86720ce186d7016925f8a498d80.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://qxf2g7lov6th"
path="res://.godot/imported/terrain_wall_center_dungeon.png-658b0d351ec8a12f85a4143d159fb3fd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_center_dungeon.png"
dest_files=["res://.godot/imported/terrain_wall_center_dungeon.png-658b0d351ec8a12f85a4143d159fb3fd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://l7y5j2ksy8ax"
path="res://.godot/imported/terrain_wall_center_speckle_deep_underdark.png-18c3524fcd66d9ed2ed95e2e87467104.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_center_speckle_deep_underdark.png"
dest_files=["res://.godot/imported/terrain_wall_center_speckle_deep_underdark.png-18c3524fcd66d9ed2ed95e2e87467104.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cf8sm7ryxvgph"
path="res://.godot/imported/terrain_wall_center_speckle_dungeon.png-2ccd555fef371b488c3dc218ae241295.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_center_speckle_dungeon.png"
dest_files=["res://.godot/imported/terrain_wall_center_speckle_dungeon.png-2ccd555fef371b488c3dc218ae241295.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://db0pevpne83kk"
path="res://.godot/imported/terrain_wall_center_speckle_underdark.png-a6e4207e2f82bef11f1ec867f81aeef8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_center_speckle_underdark.png"
dest_files=["res://.godot/imported/terrain_wall_center_speckle_underdark.png-a6e4207e2f82bef11f1ec867f81aeef8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cvo0jytgh8bgh"
path="res://.godot/imported/terrain_wall_center_underdark.png-4586560d6659927249e74c4aef1c55db.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_center_underdark.png"
dest_files=["res://.godot/imported/terrain_wall_center_underdark.png-4586560d6659927249e74c4aef1c55db.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ebb36udrrlco"
path="res://.godot/imported/terrain_wall_end_n_deep_underdark.png-953a459c1d7d70cb54ff21d6e65e947e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_end_n_deep_underdark.png"
dest_files=["res://.godot/imported/terrain_wall_end_n_deep_underdark.png-953a459c1d7d70cb54ff21d6e65e947e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bjkoixrqxyfvi"
path="res://.godot/imported/terrain_wall_end_n_dungeon.png-0292ee08e0a9524fae5fce50c83e27a0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_end_n_dungeon.png"
dest_files=["res://.godot/imported/terrain_wall_end_n_dungeon.png-0292ee08e0a9524fae5fce50c83e27a0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dwisuhgfosirs"
path="res://.godot/imported/terrain_wall_end_n_underdark.png-623c49a4e05a066226c2dfb6e066d735.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_end_n_underdark.png"
dest_files=["res://.godot/imported/terrain_wall_end_n_underdark.png-623c49a4e05a066226c2dfb6e066d735.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c3jin8ytakl8a"
path="res://.godot/imported/terrain_wall_end_s_deep_underdark.png-6c06ef145e41ecfc9bbdfc330ea28e29.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/art/board/terrain_wall_end_s_deep_underdark.png"
dest_files=["res://.godot/imported/terrain_wall_end_s_deep_underdark.png-6c06ef145e41ecfc9bbdfc330ea28e29.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Loaded 100 of 543 files, more files were not shown because too many files have changed in this diff. Show more