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, 云资产清单, 数字保存, 数据可视化, 游戏, 逆向工具, 逆向工程