docs: 添加锻造系统总体需求与总体技术架构

整合原 01-22 高真实度锻造系统设计与 01-23 淬火退火相变与应力疲劳总览两份重叠文档,拆分为需求侧(玩家/体验视角)与设计侧(技术实现视角)。需求文档不含任何代码与算法名,设计文档定义混合体素-顶点架构、跨子系统共用决策、性能预算。

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-08-11 08:57:55 +08:00
parent 56cb314799
commit 4633e866ec
2 changed files with 622 additions and 0 deletions
@@ -0,0 +1,218 @@
# 锻造系统总体需求
**项目**: BladeSmith
**文档类型**: 需求文档(总体)
**版本**: 2.0
**最后更新**: 2026-08-11
**状态**: 整合自原 `2026-01-22-高真实度锻造系统设计.md` 与 `2026-01-23-淬火退火相变与应力疲劳系统总览.md`
> 本文档从玩家与游戏体验视角描述锻造系统要"做成什么样",不涉及算法、代码、shader 等技术实现细节。技术实现见 [design/00-锻造系统总体技术架构.md](../design/00-锻造系统总体技术架构.md)。
---
## 1. 项目定位
BladeSmith 是一款基于 Unreal Engine 5.6 的真实打铁模拟游戏。玩家在游戏中体验锻造刀具的完整流程,刀具的成型过程通过物理计算还原真实锻造效果——**每一把刀具的造型、纹路、性能都是独特的**。
锻造系统是玩法的核心,负责把"玩家敲锤子"这个动作转化为:
- 看得见的金属形变与表面变化
- 影响后续表现的内部材料状态(硬度、应力、相态、疲劳等)
- 最终决定刀具强度、韧性、耐久度的物理属性
## 2. 核心体验目标
| 目标 | 含义 | 验收信号 |
|---|---|---|
| **游戏娱乐级真实感** | 物理模型简化但保留核心机制,玩家直觉上"像真打铁" | 玩家测试中能凭常识判断结果 |
| **每一刀都独特** | 锻造路径决定刀具数据,同样的初始材料能产出截然不同的成品 | 同批次的两次锻造产出差异显著 |
| **可读的反馈** | 玩家在任何时刻都能"看懂"金属当前状态,做下一步决策 | 不依赖外部文档即可理解表层状态 |
| **稳定 60 FPS** | 锤击操作期间帧率不掉,操作延迟不可察觉 | 详见 §5 性能与质量目标 |
| **渐进式可实现** | 系统可分阶段交付,每阶段独立可玩 | 详见 §6 实施阶段 |
## 3. 玩家可见的核心物理过程
整个锻造系统要让玩家**直观感知**以下 7 类冶金学物理现象。这些现象构成 7 个专题需求文档的主题。
### 3.1 锤击形变与刀刃形成
玩家用锤子敲击锻材时:
- 受击处材料被压紧、向四周流动
- 材料优先沿"最小阻力方向"流动,而非均匀扩散
- 在边缘附近锻打时,材料沿边缘延展,逐渐形成平整锐利的刀刃
- 连续锻打能逐步把铁块变形成目标形状
详见 [01-锤击形变与刀刃形成需求.md](01-锤击形变与刀刃形成需求.md)。
### 3.2 表面磨损与外观
锻材的表面状态会随锻造过程演变:
- 新铁块表面是生锈/氧化层(橙红色、粗糙)
- 锤击区域铁锈脱落,露出光亮金属本体
- 表面特征(铁锈图案、纹路)**必须随形变一起移动**,不能"漂移"或"贴在屏幕上"
- 支持铁锈、氧化层、酸蚀痕迹、划痕等多种表面状态
详见 [02-表面磨损与外观需求.md](02-表面磨损与外观需求.md)。
### 3.3 网格质量(隐形但关键)
玩家不应感知到网格退化,因此:
- 连续锻打 50+ 次后,刀刃仍然平整,无明显锯齿
- 表面着色无条纹、无闪烁、无"空洞"
- 锻打不会让金属"莫名其妙"地出现奇怪形状
详见 [03-网格质量与性能需求.md](03-网格质量与性能需求.md)。
### 3.4 加工硬化与晶粒演化
反复锻打会让金属变硬:
- 同一块金属连续锻打会越来越难变形(需要更用力或更多锤)
- 加热到一定温度后金属软化,可继续加工(回火机制)
- 微观上,晶粒尺寸、形状、取向影响材料特性与视觉花纹
- 大马士革钢的层状花纹是可见的视觉表达
详见 [04-加工硬化与晶粒演化需求.md](04-加工硬化与晶粒演化需求.md)。
### 3.5 淬火退火相变
热处理是决定刀具最终性能的关键步骤:
- 把高温金属快速冷却(水/油)会显著提升硬度,但同时增加脆性
- **温度区间**决定淬火效果:黄金区间(900-1100°C)最佳,过低无效,过高有开裂风险
- **冷却速率**决定结果:水淬硬而脆、油淬适中、空冷近似退火
- 缓慢冷却(退火)反而让金属变软但韧性提高
- 视觉上要有清晰的三阶段反馈(详见专题)
详见 [05-淬火退火相变需求.md](05-淬火退火相变需求.md)。
### 3.6 应力累积与开裂
不均匀的形变和热处理会在金属内部累积应力:
- 高应力区域更难锻打(需要更用力)
- 应力梯度会让刀身在锻打中自然弯曲或扭曲
- 应力超过材料强度时会产生裂纹
- 裂纹会沿应力梯度扩展,最终导致刀具断裂
- 玩家可通过"应力扫描"辅助功能主动查看应力分布
详见 [06-应力累积与开裂需求.md](06-应力累积与开裂需求.md)。
### 3.7 疲劳累积与刀具耐久度
长期使用让刀具性能衰减:
- 反复锻打累积疲劳,过锻或高应力区加速疲劳
- 疲劳到达阈值后产生疲劳裂纹
- 刀具的耐久度由平均疲劳、裂纹数量、最大应力共同决定
- 使用刀具(切割、砍击)进一步累积损伤
- 回火可部分恢复疲劳,但裂纹无法愈合
- 耐久度归零或主裂纹出现时,刀具失效(断裂)
详见 [07-疲劳与刀具耐久度需求.md](07-疲劳与刀具耐久度需求.md)。
## 4. 玩家可执行的核心操作
这些操作来自游戏顶层玩法设计,锻造系统必须对其做出物理响应。
| 操作 | 锻造系统需要响应的行为 |
|---|---|
| **加热** | 提升温度,增加塑性,软化已硬化的金属,触发回火/相变重置 |
| **捶打** | 形变、表面去锈、累积应变/硬化/应力/疲劳、维护网格质量 |
| **切割**(电锯) | 快速改变锻材形状(独立子系统) |
| **打磨** | 改变表面粗糙度、微调形状、修复表面损伤 |
| **淬火** | 快速冷却触发马氏体相变,提升硬度/脆性,留下氧化层 |
| **强度测试** | 提供场地与道具,验证刀具性能(独立玩法场景) |
## 5. 性能与质量目标
### 5.1 帧率与延迟
| 指标 | 目标 |
|---|---|
| 锤击操作期间帧率 | 稳定 60 FPS |
| 单次锤击响应时间 | < 10 ms(玩家不可察觉) |
| 锤击形变计算预算 | 2-3 ms |
| 网格质量优化预算 | 1-2 ms |
| GPU 物理计算预算 | 0.5-1 ms(异步) |
| 顶点属性/材质更新预算 | 0.5-1 ms |
| **总锤击开销上限** | **≤ 7 ms** |
### 5.2 规模
| 维度 | 目标 |
|---|---|
| 单铁块网格顶点数 | 20-50 万(基础),刀刃区域可局部加密到 100 万/cm² |
| 体素分辨率 | 50×50×50(典型),可配置 30³-80³ |
| 单铁块内存 | ~30 MB |
| 连续锻打次数 | 连续 50-100 次锤击后网格质量仍良好 |
### 5.3 质量验收原则
- **网格质量**: 连续锻打 50 次后无明显细长三角形(长宽比 > 10:1),无明显锯齿
- **表面稳定性**: 形变后表面纹理(铁锈图案)不漂移
- **可调性**: 所有可调参数可在编辑器实时调节
- **可调试性**: 提供体素场可视化、应力热图、属性统计等调试工具
## 6. 设计原则
| 原则 | 含义 |
|---|---|
| **游戏娱乐级精度** | 简化物理模型,保留核心机制与真实感,不做科研级精度 |
| **YAGNI** | 避免过度设计,专注核心功能,不为假想需求预留 |
| **渐进式实现** | 分阶段交付,每阶段可独立运行与验收 |
| **架构扩展性** | 为未来功能(多材料、焊接、VR 等)预留接口,但不提前实现 |
| **过程高辨识,结果真物理** | 热处理等关键时刻给玩家强反馈,平时展示真实物理表现 |
| **辅助功能可选** | 应力扫描、疲劳扫描等"作弊视图"按需启用,不污染真实视觉 |
## 7. 验收路径(实施阶段)
按以下阶段交付,每阶段独立验收。详细任务排期见各专题需求文档。
| 阶段 | 范围 | 主要验收 |
|---|---|---|
| **阶段 1** | 锤击形变(各向异性) + 表面磨损 + 基础网格平滑 | 锻造边缘材料沿边缘流动;表面铁锈脱落;形变无漂移 |
| **阶段 2** | 完整网格质量系统(边翻转/平滑/重网格) | 连续锻打 50 次网格仍均匀,无细长三角形 |
| **阶段 3** | 物理模拟扩展(加工硬化/淬火/退火) | 连续锻打变硬;加热软化;淬火硬度显著提升 |
| **阶段 4** | 晶粒与视觉(晶粒演化/大马士革/应力可视化/开裂) | 高应变区可视化;支持大马士革花纹;应力过大出现裂纹 |
| **阶段 5** | 疲劳与耐久度 | 反复锻打累积疲劳;耐久度下降;刀具最终可失效 |
| **阶段 6** | 优化与打磨 | Unreal Insights 验证 60 FPS;所有参数蓝图可调;文档齐全 |
## 8. 风险(玩家可感知的失败模式)
这些是锻造系统做错时玩家会直接感受到的问题,设计阶段需重点规避:
| 风险 | 玩家感受 | 严重度 |
|---|---|---|
| 物理模型过于简化 | "假"、"不像打铁" | 中 |
| 系统过度复杂,周期失控 | 长期无新版可玩 | 高 |
| 顶点属性在网格重建时丢失 | 锻打中途表面颜色/状态错乱 | 高 |
| 大马士革花纹实现困难 | 阶段 4 可选功能,可降级或推迟 | 中 |
| 网格重建开销过大 | 锤击延迟突增、掉帧 | 高 |
| 参数难调 | 不同硬件表现差异大 | 中 |
## 9. 未来扩展方向(超出当前需求范围)
以下方向**不在**当前需求内,但系统设计不应阻止未来加入:
- 多材料支持(铜、青铜、钛合金)
- 焊接系统(多块金属连接与材料混合)
- 锻造工具多样性(平锤、圆锤、凿子等不同锤头形状)
- 多人协作锻造(网络同步动态网格)
- VR 支持(空间交互与力反馈)
## 10. 参考资料
### 10.1 物理基础
- 《金属塑性成形原理》(清华大学出版社)
- 《材料科学基础》(上海交通大学出版社)
- 《金属热处理原理与工艺》(机械工业出版社)
- *Metals Handbook: Forging and Forming / Heat Treating* (ASM International)
### 10.2 游戏案例
- *My Summer Car* — 机械装配真实度
- *BeamNG.drive* — 动态网格形变
- *Dwarf Fortress* — 材料属性系统
### 10.3 索引
- 技术实现总览: [design/00-锻造系统总体技术架构.md](../design/00-锻造系统总体技术架构.md)
- 专题需求: [01~07](./)
- 原始设计文档(归档): [_archive/plans/](../_archive/plans/)