程基岩(engineering-lead) 08dc5020c3 W4 批次:三项设计裁定落地(Boss 战 Plan B / 离线契约 v2 / 长明灯加法化)
Boss 战修复(Plan B,用户拍板):
- HP 公式 15xPxhall_factor -> HP = P x boss_army_seconds_n(S=23.0→28.0 递增,
  每场军列约 23-28 秒清空,战斗时长成为可直接书写的设计旋钮,结构性消除
  高殿 P 抵消导致不可胜的旧 bug);hall_factor 降级为纯叙事/视觉参数
- 新增 souls_par 列(0→90000):开场冲锋 intro_dmg = HP x 10% x clamp(souls/souls_par,0,1),
  上限 20%->10%;删 hp_factor/intro_dmg_souls_factor/intro_dmg_cap_ratio 三列
- 点击伤害 P x κ x combo_mult,κ = (0.010 + 0.052 x click_ratio) x (1 + 0.30 x m06_owned),
  click_ratio = 已购点击升级 / 12(κ 0.010→0.0806,满配点击占比约 20.5%±3pp)
- 防双重计入:L5-12 点击升级 +1% output/s 留全局区(抬 P 同时抬军列 DPS 与点击
  伤害,可接受),不得再计入 κ 分子(recompute 注释固化)

离线契约 v2(P-8,改契约不改表):
- OfflineModel.settle 第三参 offline_mult -> offline_add(加法);各档效率
  min(rate+add, 1.0) 硬顶 100%,离线永不超在线
- 长明灯 x1.15 乘性 -> +5%/级 加法(满级 +30%,各档封顶 100%)
- 0-2h 100% 保持;8h = 6.2 等效小时(77.5% 效率)
- Gate #9 拆 9a/9b/9c:9a FAIL->PASS(0-2h 全额 + 8h∈[5.5,6.5]),
  9b 长明灯满级 8h∈[7.5,8.0] 且 ≤100%,9c 任意配置效率 ≤100%

数据与工具:
- gen_balance_sheets.py 补登 W3 遗留 7 行 tune(防重跑静默丢失),self_check 更新
- boss_battles/upgrades schema 同步(offline_mult->offline_add enum,漏改会违反导入)

测试(runner 7->8 用例,Node 交叉验证 145 断言全过):
- 可胜性哨兵重写为「十殿全可胜」:每殿 S_n<30、军列+点击≥HP、余时∈[2,8]、
  满配余时差≥4、点击占比∈[15,25]、H10≈20.5%±3pp
- κ 四档断言(0.010/0.036/0.062/0.0806,分母 12)
- 新增 test_offline_contract.gd:契约 v2 数值面 + 9a/9b/9c 全 PASS + β 缓议
2026-10-20 17:01:25 +08:00

WRATH OF THE DEAD / 怨返(项目代号 F)

含冤而死,那就招一支阴兵,杀回人间。 Wrongfully dead? Raise a ghost army and fight your way back to the living world.

单人挂机(idle)· Godot 4.7.2 + GDScript · Zad Archery 式横版 · 水墨绘卷视觉 架构基线:docs/architecture/2026-10-19-F-architecture.md(v1.0,2026-10-19) 工程宪法摘要:CLAUDE.md(必读)

1. 环境要求

项 要求 备注
引擎 Godot 4.7.2(.NET 不需要,纯 GDScript) 钉 4.7.x 补丁线;跨 minor 不追
导出模板 4.7.2 stable 模板(W5 CI 打包前安装) Editor → Manage Export Templates
Steam GodotSteam v4.23.1(W5 接入,W1 不依赖) addon 二进制暂未入库
GPU 核显可跑(性能底线 30fps) 用户 GPU 实测定预算(探针 P7)

2. 快速开始

# 1) 编辑器打开本目录(project.godot)→ 等待首次资源导入
# 2) 数据门验证(headless)
godot --headless --path . --import
godot --headless --path . -s res://src/tools/import_main.gd            # import_all(期望 RESULT: PASS)
godot --headless --path . -s res://src/tools/import_main.gd -- --validate-only
# 3) 跑探针:编辑器打开 tests/probe_p1_screen_texture/probe_p1.tscn → F6
#    (main scene 自 W2 起由 game/ 编排层提供,F5 直接运行)
git status    # import_all 后 data/build 应无 diff(提交物已校准)

3. 仓库地图(架构 §2.1)

project.godot / export_presets.cfg / icon.svg / CLAUDE.md
data/sheets/*.csv     内容唯一源(策划维护;一行=一资产/一参数)
data/schema/*.json    每张表一份 JSON Schema(CI 数据门)
data/build/*.json     SheetImporter 产物(提交;sim 与游戏共用)
src/core/             纯逻辑:numbers / economy / save / sim(W3 起)
src/game/             编排层:GameState / DataRegistry / 各 Director
src/platform/         SteamService(W5)
src/presentation/     表现层:stage / hud / panels / modals / post
src/tools/            @tool:sheet_importer.gd + import_main.gd(CI 入口)
assets/               sprites / luts / shaders / themes / fonts
tests/                probe_*(W1)/ unit(W3 起)/ sim_reports(W4 起)
pipeline/             3ds Max 侧契约(README.md;Max 脚本用户主场)
.github/workflows/    CI 数据门(W3+ 激活单测/sim/导出)

4. 数据管线("年更=加行"的地基,架构 §3)

data/sheets/*.csv ──SheetImporter(src/tools/,@tool/CI headless)──► data/build/*.json
                          │ schema 校验(违规=中止+行号/列名/原因)
                          ▼(W3)
                    *.tres Resource ──► DataRegistry ──► 游戏 + sim(同一份,零漂移)
  • 三条铁律:① 单向流动(游戏永不写 data/);② sim 与游戏读同一份 build;③ 数值改动只改 CSV 不动代码;
  • CSV 规范:稳定字符串 ID(不重编号);_cn/_en 后缀;数值列禁千分位;引用列填目标 ID;
  • build JSON 由导入器的确定性序列化器生成(字节稳定)——改 CSV 后必须重跑 import 并提交 build,否则 CI 漂移门红;
  • W1 已知:display_en 为工程侧临时译名(待文策渊按 GDD §8.4 glossary 确认);unlock_hall/unlock_gate 引用的 halls/upgrades 表 W2 落盘后激活跨表引用校验。

5. CI(架构 §7.2)

.github/workflows/ci.yml:push/PR → checkout → setup Godot 4.7.2 → headless import → import_all → schema validate → build 漂移门(git diff)。 单元测试(W3,GUT)、sim 14 门(W4)、Windows 导出(W5)为注释占位,标注了激活条件。 待本机验证:4.7.2 的 --headless --import CLI 行为(备选 -e --quit-after 200)——首跑后按实际更新本 README。

6. W1 探针(用户侧实测,30min/项)

探针 手册(工作区 docs/engineering/) 回填
P1 后处理纹理语义 2026-10-19-f-w1-probe-p1-manual.md docs/engineering/probes/P1-result.md
P3 noise 平铺 2026-10-19-f-w1-probe-p3-manual.md docs/engineering/probes/P3-result.md

P6(字体许可)/P7(GPU)为用户侧任务,结论同样回填 probes/。

7. 纪律速览(详见 CLAUDE.md / 架构 §9)

  • look-dev 冻结(W2 生死门):冻结前不加新资产类型;Max 侧不回炉;调色只在 Godot 侧;
  • 水墨四色面积纪律:墨 ~65 / 骨白 ~25 / 朱砂 ≤8% / 靛 ≤7%;
  • 终局 ≤1e14;三乘区加法优先禁乘性深度叠加;
  • network 作用域不适用(单人无网络代码);AI 不进包体(ADR-4)。

8. W1 状态与待办

  • 项目骨架 + git 首提交(本 README 同步日期)
  • 数据管线段 1(generators.csv 12 行 + schema v0 + SheetImporter v0.1 + build 提交)
  • 探针 P1/P3 代码 + 实测手册 + 结论模板
  • 用户:跑 P1/P3 实测并回填结论;P6/P7 用户侧任务
  • 用户:look-dev 游魂初版(Max 侧)→ 导入验证 sprite_row 路径
  • W2 计划:管线贯通 demo(CSV→12 槽 UI)、sim 骨架、军列带纸面原型
S
Description
No description provided
Readme
421 KiB
0 Stars 2 Watchers 0 Forks
Languages
GDScript 83.6%
Python 14.6%
Batchfile 1.5%
GDShader 0.3%