- 删除 design/dev/architecture/adr-0001~0007 共 7 份文件(内容留 git 历史可查) - architecture.md:删「ADR 审计」「ADR 立项清单」两节;清除全文 ADR-000X 注记、QQ 表/S 表 ADR 引用;未决表关闭已落定项(QQ-01/02/03),立项清单在途事项转登记 QQ-11~14;补 A1 生成姿态事实、autoload 四件清单、board_generator 性能姿态;文档状态立「事实源地位」条 - CLAUDE.md:恢复 RNG 单点硬性红线(去 ADR-0007 引用);新增「架构事实唯一源」红线;规范导航架构行标注唯一事实源 - doc-conventions:§5 增「架构事实唯一源」行;§11 活文档清单补架构文档 - registry:architecture.yaml 删 18 处 adr 字段、autoload_set 补 SaveManager/MetaProgression、board_rending 更新为 Node2D 已落地事实;entities.yaml 12 处引用清除 - game/ 代码注释约 60 处清 ADR-000X 引用(事实与日期保留);豁免标记 ADR-0007-exempt → rng-seed-exempt(main.gd/static_scan.sh/architecture.md/06/iter27 五处同步) - GDD/qa 实现报告/research 卡片/roadmap/tests README 引用全清;死链校验 1206 链接 0 死链、gdd_lint 0 不通过 - 代码中 adr/adr5 等为 adventure_runner 既有局部变量名(非 ADR 引用),未动
72 lines
3.4 KiB
Markdown
72 lines
3.4 KiB
Markdown
# Technical Preferences
|
||
|
||
## Engine & Language
|
||
|
||
- **Engine**: Godot 4.7.2-stable(2026-09-07 锁定;4.7 分支最新维护版)
|
||
- **Language**: GDScript(唯一项目语言——与 `design/gdd/d2-data-config.md` 实现级规约一致:二补数回绕语义、`--headless --script` 冒烟、autoload/.tres 体系)
|
||
- **Renderer**: 2D 项目;Forward+ / gl_compatibility 的选择已定(gl_compatibility,2026-09-12)
|
||
- **Headless 约束**: Core 层玩法逻辑必须 `godot --headless --script` 可完整运行(D2 Rule 7 工程债)
|
||
|
||
## Naming Conventions (GDScript)
|
||
|
||
- Classes: PascalCase(`PlayerController`)
|
||
- Variables/functions: snake_case(`move_speed`)
|
||
- Signals: snake_case 过去式(`health_changed`)
|
||
- Files: snake_case 对应类名(`player_controller.gd`)
|
||
- Scenes: PascalCase 对应根节点(`PlayerController.tscn`)
|
||
- Constants: UPPER_SNAKE_CASE(`MAX_HEALTH`)
|
||
- Autoload 单例: PascalCase——**`ConfigDB`、`RngService` 已由 D2 GDD 定名,勿改**
|
||
|
||
## Input & Platform
|
||
|
||
- **Target Platforms**: PC (Steam)
|
||
- **Input Methods**: Keyboard/Mouse(主——挖/旗/移动为鼠标驱动),Gamepad(Partial)
|
||
- **Primary Input**: Keyboard/Mouse
|
||
- **Gamepad Support**: Partial(Steam 上架建议支持,非 MVP 门禁)
|
||
- **Touch Support**: None
|
||
- **Platform Notes**: 回合制可全点击驱动,无 hover-only 交互;UI 需兼容纯鼠标完成全部操作
|
||
|
||
## Performance Budgets(2D 回合制默认值,实现期可调)
|
||
|
||
- Target FPS: 60
|
||
- Frame Budget: 16.6 ms
|
||
- Draw Calls: < 200(棋盘格子 + 数字标签同屏;超出再谈合批)
|
||
- Memory: < 500 MB
|
||
- Headless 冒烟全套: < 30 s
|
||
|
||
## Testing
|
||
|
||
- **现行载体**: `godot --headless --script` 冒烟框架——脚本 extends SceneTree 以获得 `quit(code)`;该模式下 autoload 须由脚本显式实例化(D2 GDD 决策,AC 套件执行前提)
|
||
- **gdUnit4**: 是否引入并迁移冒烟用例 → Technical Setup 阶段决策(d2-data-config.md OQ1,未决)
|
||
- **测试通道**: `load_tables(root, collect_only=true)` + `--data-root=` 夹具注入(仅 debug 构建);致命类用例按独立进程"调用 → 期望退出码"枚举
|
||
|
||
## Forbidden Patterns
|
||
|
||
[TO BE CONFIGURED]
|
||
|
||
## Allowed Libraries
|
||
|
||
[TO BE CONFIGURED——仅在实际集成时登记,不预填]
|
||
(gdUnit4 若在 Technical Setup 引入,届时登记于此。)
|
||
|
||
## Engine Specialists
|
||
|
||
- **Primary**: godot-specialist
|
||
- **Language/Code Specialist**: godot-gdscript-specialist(全部 .gd 文件)
|
||
- **Shader Specialist**: godot-shader-specialist(.gdshader、VisualShader)
|
||
- **UI Specialist**: godot-specialist(无专职 UI specialist)
|
||
- **Additional Specialists**: godot-gdextension-specialist(仅 GDExtension/原生插件)
|
||
- **Routing Notes**: 架构审查/跨切面审查走 primary;.gd 代码质量、信号架构、静态类型、GDScript 惯用法走 GDScript 审查;材质/着色器走 shader specialist。
|
||
- **本工具链映射**: 上述 specialist 以 general-purpose 子 agent + `godot-master` 技能承载(无独立 agent 类型注册)。
|
||
|
||
### File Extension Routing
|
||
|
||
| 文件类型 | Specialist |
|
||
|---|---|
|
||
| 游戏代码(.gd) | godot-gdscript-specialist |
|
||
| 着色器(.gdshader / VisualShader) | godot-shader-specialist |
|
||
| UI(Control / CanvasLayer) | godot-specialist |
|
||
| 场景/资源(.tscn / .tres) | godot-specialist |
|
||
| 原生扩展(.gdextension / C++) | godot-gdextension-specialist |
|
||
| 架构审查 | godot-specialist |
|