# 魔法工匠：开发使用手册 (Developer & Designer Handbook)

> **适用人群**：策划、美术、程序、QA  
> **引擎版本**：Godot 4.6 (Mono)  
> **最后更新**：2026-06-05

---

## 目录

| 文档 | 适合 | 内容 |
|:---|:---|:---|
| [01 快速上手](01_quickstart.md) | 全员 | 克隆→启动→首次运行 |
| [02 内容创作指南](02_content_authoring.md) | 策划 / 程序 | 法术 / 敌人 / 波次 / Boss / 共鸣 |
| [03 资源替换指南](03_asset_replacement.md) | 美术 / 程序 | 特效 / 精灵 / 音效 / UI 图片 |
| [04 本地化工作流](04_localization.md) | 本地化 / 策划 | `.po` 维护、新增语言、字符串规范 |
| [05 发布标准清单](05_release_guide.md) | 全员 / PM | Steam / Switch 认证、发布流程 |
| [06 法术编辑器](06_spell_editor.md) | 策划 / 开发 | 法术编辑器 meta 字段速查 |
| [07 游戏设计器](07_game_designer.md) | 策划 / 美术 / 开发 | **⭐ 一站式可视化工具**：法术/敌人/波次/Core/平衡全部表单配置，零代码 |

---

## 项目目录快览

```
daihaoRogue/
├── scenes/
│   └── main/combat_s2.tscn     ← 主场景（唯一可玩入口）
├── scripts/
│   ├── autoloads/               ← 全局单例（30+ Autoload）
│   └── domain/
│       ├── spell_system/        ← 法术虚拟机
│       └── combat/              ← 游戏循环状态机
├── translations/                ← zh_CN / zh_TW / en / ja .po
├── audio/sfx/                   ← 音效放这里（目前占位蜂鸣）
├── assets/sprites/              ← 精灵图放这里（目前几何占位）
├── docs/
│   ├── design/                  ← 游戏设计文档
│   ├── mechanics/               ← 机制深度文档
│   ├── technical/               ← 架构 / 实现方案
│   └── handbook/                ← 本手册（你在这里）
└── docs_dev/                    ← 开发计划 / 认证清单 / 归档草案
```

---

## 关键 Autoload 速查

| Autoload | 职责 | 常用入口 |
|:---|:---|:---|
| `WandPreset` | 法术/Core 内置预设 | `make_spark_bolt()`, `make_wand_basic()` |
| `SpellEvaluator` | 法术虚拟机（编译+执行） | `compile_wand(core, nodes)`, `execute_compiled(compiled, caster_id, pos)` |
| `SpellRegistry` | 法术查询表 | `get_spell("action_fire_bolt")` |
| `WaveManager` | 波次生成/配置 | `WAVE_CONFIG[0..19]` |
| `EnemyManager` | 敌人 SoA 管理 | `spawn_enemy(pos, hp, type)` |
| `BulletManager` | 子弹 SoA 管理 | `spawn_bullet(...)` |
| `VFXManager` | 特效池 | `play("hit_spark", pos)` |
| `AudioManager` | 音效池 | `play("hit", pos)` |
| `SettingsManager` | 难度 / 音量 / 语言 | `difficulty_name()`, `enemy_hp_mult()` |
| `EndlessRecords` | 本地排行榜 | `add_record(wave, elapsed, kills)` |
| `ProfileManager` | A/B 槽局内存档 | `save_run()`, `load_run()` |
| `Locale` | 语言切换 | `set_locale("en")` |
| `StatusManager` | 状态效果（DoT 等） | `apply(entity_id, StatusID.BURN, 2)` |
| `ZoneManager` | 地面效果区域 | `spawn_zone(cx, cy, r, status_id, dur, tick, owner)` |
| `MinionManager` | 召唤物 | `spawn_minion(def_dict, owner_id, pos)` |
