c534e954582c2b0dd0b3d5aa1355b64171ecb30c
本机首次具备引擎自验证能力后的首跑修复。四条命令 + 主场景 180 帧全绿: - --import exit=0(漂移门 git diff data/build 空) - --validate-only exit=0 RESULT: PASS - test_runner exit=0 PASS(584 检查,8/8 用例) - sim_main exit=0(报告落 tests/sim_reports/report-2026-10-20.json) - 主场景 --quit-after 180 exit=0 零 ERROR/WARNING(F5 可玩) 预定位错误(team-lead 清单): - R1 economy_state.gd:596 enthone_ready -> enthrone_ready(单点故障连锁) - R2 hud_root.gd:142,160 HorizontalAlignment.LEFT -> HORIZONTAL_ALIGNMENT_LEFT - R3 boss_arena.gd 补 var _pending_hall_index := -1 - R4 hall_band_world.gd:95 删 "_ = ext"(非法语句;--check-only 定位) - R5 sheet_importer._type_ok 补 object->Dictionary / array->Array(9 条假违规) - R6 game_state.gd econ==null 防护(防 autoload 崩每帧刷错打满管道挂死) 引擎新暴露错误: - R7 prestige_model floor() Variant 推断(4.7.2 按错误)连锁编译失败 - R8 gates.gd var pass 保留字;R9 %g/%.*f 格式符 ×6 处 - R10 greedy.gd Dictionary.get() 推断;R11 probe_p1 条件表达式推断 - R12 测试用例 data 参数统一标 BalanceData(无类型参数成员调用返 Variant) - R13 boss_battle 用例 Dictionary 下标运算显式 float 化 - R14 band_world_root.compute_ranges 返回 Array[Vector2](类型化数组不隐式转换) 测试侧数值修正(根因已核实,实现符合设计): - gen3 可购断言 merit 1000->2000(800 文书 + 1200 首购) - 开场伤害断言改"循环至 ACTIVE 即停"(INTRO 结束 tick 不计军列伤) - 容量断言预算 30->34s(战斗真实给 intro 3s + active 30s) 工程加固: - EconomyState 红线守卫首次越线才报(sim 长跑日志 6.5MB->1KB) - stage_world.gd stretch=false(SubViewport 手动尺寸驱动生效) 知识缺口登记:docs/engineering/2026-10-20-f-engine-first-run-notes.md sim 首轮数据:主口径 11/14 过(#2/#3/#12/#13/#14 FAIL 待文策渊裁定)
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(必读)
Quick start(首跑)
- 装 Godot 4.7.x 便携版(解压即用,建议放
D:\Godot\Godot.exe)→ 双击仓库根目录first_run.bat:自动探测引擎并跑四条 headless 检查(import / schema / 单测 8 用例 / sim 门),合并日志落logs\first_run.log; - 末尾汇总表全 PASS 后:命令行
godot --path .,或编辑器打开项目按 F5,直接玩灰盒(调试键 F5 / F6 / F1-F4 / F9); - 完整首跑指南(安装细节 + 预期输出对照 + 失败处置):
docs/engineering/2026-10-20-f-first-run-guide.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 骨架、军列带纸面原型
Languages
GDScript
83.6%
Python
14.6%
Batchfile
1.5%
GDShader
0.3%