L0stInFades/dbh-engine-analysis
GitHub: L0stInFades/dbh-engine-analysis
面向游戏引擎开发者的《Detroit: Become Human》引擎架构中文工程复盘,从离线分析数据推导其互动电影引擎的系统组织方式与设计经验。
Stars: 0 | Forks: 0
# DBH Engine Analysis
这是一份面向游戏引擎开发者的中文整理稿。它把我对《Detroit: Become Human》PC 版资源包、依赖图、渲染管线、导演时间线、对白/动画/UI 等系统的离线分析,整理成更容易读的版本。
我想回答的不是“DBH 某个文件格式怎么解”,而是一个更适合做引擎的人关心的问题:
这里的结论不是官方文档,也不是源码级逆向。更准确地说,它是一份工程复盘:从可验证的资源索引、依赖表、时间线扫描、shader/pipeline 统计、对白和 UI 联表里,推导出 DBH 的系统组织方式,并把它翻译成自研引擎可以吸收的设计建议。
## 最短结论
DBH 不是“普通游戏引擎 + 播片系统”。它更像一套围绕互动电影生产定制的 cooked asset-graph cinematic engine。
这句话听起来很硬,换成通俗说法就是:
- 资源不是简单打包进一个大文件,而是进入全局资源表和依赖图。
- 剧情段落不是散落在脚本回调里,而是进入 `SEQUENCE` 这类导演时间线。
- 镜头、动画、对白、声音、UI 提示、输入窗口、变量、分支、材质状态和后处理,都能被放到同一个时间窗里检查。
- 渲染不是运行时临时拼 shader,而是提前 cook 出 shader library、pipeline-state record、descriptor/resource ABI 和 pass family 证据。
- 工具链可以反查一个段落为什么复杂、为什么像电影、为什么会贵、为什么会难维护。
所以 DBH 真正值得学的不是某个具体 shader,也不是某个二进制格式,而是它把“作者意图”变成可追踪、可统计、可审计的数据。
## 一眼看证据
| 方向 | 关键证据 |
|---|---:|
| 资源索引 | 373,748 个 idx 条目,41 类资源,约 57.31 GB unpadded 数据 |
| 依赖图 | 1,002,543 条 DEP edge,117,586 个 owner 有依赖 |
| Sequence | 5,479 个 `SEQUENCE`,1,117,054 个 timeline chunk |
| 导演事件 | 616,474 个 director event,其中 590,149 个带时间 |
| 镜头 | 27,959 个 timed shot,109,424 个 light group |
| 对白 | 80,976 个 `FLOW_DIALOG` atom,6,748 个多语言对白 base |
| 渲染 | 81,649 个 SPIR-V module,99,453 条 pipeline-state record |
| 材质控制 | 5,283 个 timed `MVSHADER`,8,909 次参数引用 |
| UI/Flowchart | 128 个 UI resource,32 个 flowchart UI resource,2,692 个英文 flowchart node key |
| 互动时间窗 | 17,903 个 timed core logic seed,2 秒内 91.83% 有 cinematic response |
| 对白时间窗 | 7,560 个 timed dialogue seed,2 秒内 98.84% 有 delivery context |
| UI 时间窗 | 1,414 个 timed UI seed,2 秒内 99.22% 有 cinematic context |
| Top 40 sequence 资源组成 | 11,622 个 nonexclusive unique resource refs,平均每个 sequence 290.55 个 |
这些都是公开版保留的聚合证据。仓库不会上传原始游戏资产、二进制样本、对白全文、本地化全文或大型扫描表。
## 怎么读
如果你只想快速理解整体架构,先读:
- [docs/01-overview.md](docs/01-overview.md)
如果你想看“证据从哪里来”,读:
- [docs/02-evidence-map.md](docs/02-evidence-map.md)
- [docs/07-evidence-catalog.md](docs/07-evidence-catalog.md)
- [docs/08-public-data-guide.md](docs/08-public-data-guide.md)
如果你关心渲染,读:
- [docs/03-rendering.md](docs/03-rendering.md)
如果你关心剧情、分支、镜头、对白、UI,读:
- [docs/04-cinematic-director.md](docs/04-cinematic-director.md)
如果你想把这些东西转成自己的引擎设计,读:
- [docs/05-build-your-engine.md](docs/05-build-your-engine.md)
如果你想知道哪些说法不能过度解读,读:
- [docs/06-boundaries.md](docs/06-boundaries.md)
## 仓库内容
- `docs/`:通俗版正文和证据说明。
- `data/key_metrics.json`:关键聚合指标。
- `data/resource_type_summary.csv`:公开安全的资源类型概览。
- `data/system_evidence_matrix.csv`:系统、证据、指标和工程含义的对照表。
- `data/evidence_sources.json`:本整理稿使用的主要原始研究产物索引。
- `data/interaction_window_summary.csv`:互动逻辑事件周围 2 秒的同窗证据。
- `data/dialogue_delivery_window_summary.csv`:对白事件周围 2 秒的镜头/相机/表演/声音证据。
- `data/ui_prompt_window_summary.csv`:UI prompt 周围 2 秒的输入、分支和电影化上下文证据。
- `data/director_event_category_summary.csv`:导演事件类别和 timed event 对照。
- `data/shot_lens_light_summary.csv`:shot、镜头参数和灯光组的聚合证据。
- `data/camera_bank_summary.csv`:camera bank 的 modifier、target、noise profile 聚合证据。
- `data/material_controller_family_summary.csv`:`MVSHADER` controller family 的参数出现次数。
- `data/render_family_profiles.csv`:渲染 pass family candidate 的 pipeline、shader pair 和变体压力概览。
- `data/sequence_resource_composition_summary.csv`:top 40 cinematic sequence 的资源组成聚合证据。
- `assets/dbh_vs_ue_unity_architecture.svg`:DBH 与常见 UE/Unity 项目组织方式的架构对照图。
- `assets/evidence_chain.svg`:从资源包到工程结论的证据链图。
## 不包含什么
这个仓库刻意不包含以下内容:
- 游戏原始文件。
- 提取出的贴图、音频、动画、脚本 bytecode。
- 二进制样本。
- 大型 CSV 原始扫描表。
- 对白、本地化全文或可还原游戏内容的大段导出。
- Quantic Dream、Sony 或其他权利方的专有代码/资产。
公开版只保留聚合指标、解释性文字、证据索引和自研引擎设计建议。
## License
本文档和本仓库自写内容使用 JSON License,见 [LICENSE](LICENSE)。
注意:JSON License 带有 “The Software shall be used for Good, not Evil.” 条款,在某些严格开源生态中可能存在兼容性争议。本仓库按最初整理需求采用它。
## Disclaimer
Detroit: Become Human is a trademark and copyrighted work of its respective owners. This repository is an independent educational analysis and is not affiliated with or endorsed by Quantic Dream, Sony, or the game's publishers.
标签:云资产清单, 互动电影, 引擎架构, 技术分析, 游戏开发, 游戏引擎, 逆向工程