DaedalGames/stealing-the-diamond-reconstruction
GitHub: DaedalGames/stealing-the-diamond-reconstruction
该项目是对Flash游戏「Stealing the Diamond」的授权保存与逆向工程重建,在保留原始资产的同时通过Ruffle运行时提供现代浏览器可玩版本。
Stars: 0 | Forks: 0
# 偷取钻石 — 授权保存版本
本仓库保存并记录了最初的单人游戏,并将其构建为可离线运行的 GitHub Pages 版本。原始的 SWF、恢复的 AVM1/ActionScript 2 代码、P-code、提取的资源、兼容性补丁、运行时证据以及面向 LLM 的技术 Wiki 均在此进行版本控制。广告和已弃用的门户集成不包含在内。
## 游戏
**[打开 GitHub Pages 构建](https://daedalgames.github.io/stealing-the-diamond-reconstruction/)**
首次访问会流式传输并校验一个 14.54 MB 内容哈希的游戏容器。随后的访问使用带有版本控制的 service worker 缓存。原始的菜单、动画、选项、快速反应输入(QTE)、40 个独特的失败状态、重试流程、奖章和三个结局均通过 Ruffle 0.4.0 执行。
## 验证重建
| 属性 | 结果 |
| --- | --- |
| 原始影片 | CWS / SWF 8, 650×410, 30 FPS |
| 原始 SHA-256 | `5352d5302dec2049cf29920a7929c32a921e492c8fbec12d357be18de2bd9b8f` |
| 兼容性构建 SHA-256 | `e56ead6214b28c4f3f10550dd46c7a392bf1ec1abc7bf2e99cf0bdaee57bd530` |
| 主时间轴 | 4,718 帧,102 个命名标签,76 个停止门 |
| 恢复的逻辑 | 809 个 ActionScript 文件及 809 个 AVM1 P-code 文件 |
| 交互内容 | 40 个独特的失败状态,3 个结局标志,1 个键盘 QTE 监听器 |
| 浏览器冒烟测试 | 菜单 → PLAY → 介绍 → 首个选择 → 失败 → 重试 |
| Pages 负载 | 16 个文件,约 43.6 MB;无分解的资源树 |
## 文档
- [正式的逆向工程报告](docs/2026-07-19_reverse-engineering-stealing-the-diamond-report.md)
- [LLM Wiki](research/wiki/README.md)
- [生成的 102 标签时间轴索引](research/wiki/generated/timeline-index.md)
- [确定性兼容性补丁账本](research/evidence/swf-compat-patch.json)
- [完整的恢复文件清单](research/evidence/artifact-inventory.json)
- [高价值校验和](research/evidence/checksums.sha256)
- [工具链与首次差异日志](research/logs/toolchain.md)
## 本地复现
已提交的构建路径只需 Node.js 22 或更高版本以及 Python 3 即可运行。
```
npm run build
npm run verify
python -m http.server 8765 --bind 127.0.0.1
```
然后打开 `http://127.0.0.1:8765/site/`。构建脚本拒绝修补任何 SHA-256 与上述原始哈希值不同的源文件。
## 仓库映射
```
archive/original/ Exact host HTML, historical runtime, and pristine SWF
recovered/actionscript/ JPEXS-decompiled ActionScript 2
recovered/pcode/ AVM1 P-code ground truth
recovered/assets/ Extracted images, fonts, audio, text, and media
recovered/compat/ Deterministically generated playable SWF
research/evidence/ Machine-readable inventories, hashes, and screenshots
research/wiki/ LLM-oriented knowledge base
scripts/ Parsers, analyzers, patcher, builder, and verifier
src/web/ Small Pages shell source
site/ Generated Pages artifact only
vendor/ruffle-0.4.0/ Pinned self-hosted Ruffle release
```
恢复的 `.as` 文件是对确切的嵌入式字节码的反编译;它们不是恢复的 Adobe Flash 创作文件 `.fla`。当反编译器的呈现出现差异时,原始的 SWF 和导出的 P-code 仍然是权威来源。
## 交付设计
该游戏并未作为成千上万个松散的资源发布。其原始的 zlib 压缩 CWS 容器保持完整,而 Ruffle 则保持拆分为按功能选择的 JavaScript 和 WebAssembly chunk。Web 外壳通过进度条进行流式传输,在执行前校验文件大小和 SHA-256,并使用以下策略注册缓存:
- 导航和可变外壳入口点使用网络优先;
- 内容哈希的游戏/运行时文件使用缓存优先;
- 激活时执行带版本控制的缓存驱逐;
- 恢复的源代码和分解的资源保留在 Git 中,永远不会出现在 Pages 产物中。
有关完整契约,请参阅 [Pages 交付与缓存设计](research/wiki/07-pages-delivery.md)。
## 范围与所有权
本次重建是在所有者对代码、品牌、地图、美术、音频和资源的明确授权下进行的。这是一个保存和游戏引擎分析项目。门户广告、分析工具、Disqus、赞助/社交按钮以及已弃用的 Newgrounds API 初始化路径不是可玩构建的一部分。
标签:ActionScript, AI工具, Flash, MITM代理, Ruffle, SWF, 云资产清单, 数字保存, 数据可视化, 游戏, 逆向工具, 逆向工程