真探 3 存档解析与回滚工具。当前是纯前端 MVP,所有读取、备份、解析、写回都在本机浏览器内完成,不上传存档。
- 选择存档文件夹并加载其中所有顶层文件。
- 解析
SAVE格式存档:校验 header 长度、SHA256、JSON payload。 - 内置 macOS / Windows 常见存档路径提示。
- 选择另一个文件夹创建完整备份。
- 按案件、邮件、线索展示已发生状态,默认隐藏详情。
- 可分别开启案件名字、线索名字、邮件标题、邮件关联和邮件人物显示,不默认展开正文和答案。
- 案件列表可直接跳转到对应案件的线索筛选视图,方便查看案件和线索的关联。
- 邮件列表默认展示邮件类型;可选展示标题、关联邮件 ID、相关人物,并可一键选择当前邮件的直接关联项。
- 在案件、邮件、线索页签中支持当前页签“显示全部 / 全部隐藏”。
- 支持中文 / English 页面文案切换;首次进入会按浏览器语言自动选择,手动切换后会记住选择。
- 邮件重置:基于
Global.sav中当前字段和_Reset...基线字段,选择性移除已接收/已发送邮件状态。 - 线索重置:保守删除 JSON 中精确等于线索 ID 的数组值或对象 key,并跳过
_Reset...字段。
npm install
npm run dev然后用 Chrome 或 Edge 打开终端里显示的本地地址。选择目录需要浏览器支持 File System Access API。
生产构建:
npm run build- macOS:
~/Library/Application Support/BlackRobe/CaseCracker3/Save - Windows:
%USERPROFILE%\AppData\LocalLow\BlackRobe\CaseCracker3\Save
浏览器不能静默访问这些路径,页面只提供复制提示,必须由用户手动选择存档目录。
如果 Chrome/Edge 提示“此文件夹包含系统文件,无法将其打开”,这是浏览器对 ~/Library 等受保护目录的限制。可以先在 Finder 中把 Save 文件夹复制到桌面或下载目录,选择这个副本操作;写回完成后关闭游戏,再把修改后的存档文件复制回原 Save 目录。要直接操作原目录,需要后续改成本地客户端或本地 helper 服务。
已有分析内容放在 docs/analysis/:
casecracker3_clue_relations.json: 前端内置的线索/案件/关系索引。casecracker3_clue_relations.md: 线索关系整理文档。casecracker3_clue_relations.py: 生成线索关系索引的脚本。casecracker3_case_data.json: 从游戏资源提取的案件标题/描述索引;页面只用标题,避免默认剧透。casecracker3_mail_data.json: 从游戏资源提取的邮件标题/正文索引;页面只在开启选项时展示标题。casecracker3_mail_rollback.py: 早期邮件回退分析和本地 Python UI。
写回前会先创建备份。当前线索重置不会改字符串正文,也不会猜测复杂剧情进度字段;如果存档把某些状态编码在未知结构里,页面只展示,不强行修改。
A CaseCracker 3 save parser and rewind tool. This is currently a frontend-only MVP. Reading, backup, parsing, and writing all happen inside the local browser, and save files are not uploaded.
- Choose a save folder and load all top-level files inside it.
- Parse
SAVEfiles by checking header length, SHA256, and JSON payload. - Show common macOS / Windows save path hints.
- Choose another folder to create a full backup.
- Show discovered case, mail, and clue state while hiding details by default.
- Separately enable case names, clue names, mail titles, mail links, and mail people without showing bodies or answers by default.
- Jump from a case to its filtered clue view to inspect case and clue relationships.
- Show mail type by default; optionally show titles, linked mail IDs, people, and select direct linked mail in one action.
- Support per-tab Show All / Hide All controls on the Cases, Mail, and Clues tabs.
- Support Chinese / English UI switching. The first visit follows the browser language, and manual selection is saved.
- Mail rewind: compare current fields in
Global.savwith_Reset...baseline fields, then selectively remove received/sent mail state. - Clue rewind: conservatively remove array values or object keys that exactly match clue IDs, while skipping
_Reset...fields.
npm install
npm run devOpen the local URL printed in the terminal with Chrome or Edge. Folder selection requires browser support for the File System Access API.
Production build:
npm run build- macOS:
~/Library/Application Support/BlackRobe/CaseCracker3/Save - Windows:
%USERPROFILE%\AppData\LocalLow\BlackRobe\CaseCracker3\Save
The browser cannot silently access these paths. The page only provides copyable hints, and the save folder must be selected manually.
If Chrome/Edge says the folder contains system files and cannot be opened, that is a browser restriction for protected directories such as ~/Library. Copy the Save folder to Desktop or Downloads first, select that copy in the page, then close the game and copy the modified save files back to the original Save folder. Directly editing the original protected folder would require a local client or local helper service later.
Existing analysis files live in docs/analysis/:
casecracker3_clue_relations.json: Built-in clue, case, and relationship index for the frontend.casecracker3_clue_relations.md: Clue relationship notes.casecracker3_clue_relations.py: Script that generates the clue relationship index.casecracker3_case_data.json: Case title and description index extracted from game assets. The page only uses titles by default to avoid spoilers.casecracker3_mail_data.json: Mail title and body index extracted from game assets. The page only shows titles when the option is enabled.casecracker3_mail_rollback.py: Earlier mail rewind analysis and local Python UI.
A backup is created before writing. The current clue rewind does not edit text bodies or guess complex story progress fields. If the save stores state in unknown structures, the page shows it but does not force a mutation.