这个项目能做什么

Elden Ring Compass 是《艾尔登法环》的网页伴侣工具,可读取你的存档文件并将其转化为进度仪表盘。你可以上传一次存档,或让页面持续轮询该文件,网站便会报告物品、已击败的 Boss、已解锁的赐福点、地图标记及其他完成度数据。解析完全在浏览器中进行:存档不会离开你的设备,网站也无法写入存档,因此无法用于修改角色。 README 中描述的功能: - 浏览器内解析存档,无需将存档内容上传至服务器。 - 持续轮询存档,让你在游戏过程中无需重新上传即可实时更新视图。 - 本地持久化地图位置、行选择和列筛选条件。 - 基于瓦片的交互式地图(Leaflet / react-leaflet),包含物品、Boss 和赐福点标记。 - 虚拟化数据表格,用于浏览大型物品和进度列表。 架构与工具: 该项目是一个 Bun + Turborepo 单体仓库。Web 应用基于 TanStack Start 和 TanStack Router 构建,使用 React 19,采用 Effect 和 @effect/atom-react 管理应用状态,并使用内存数据层替代 TanStack Query 或 IndexedDB。UI 组件来自 shadcn(Base UI 变体),搭配 Tailwind CSS v4。表格使用 TanStack Table 和 TanStack Virtual。Vite 和 Nitro 负责打包和生产服务器,而 oxlint/oxfmt 和 TypeScript 7(由 @effect/tsgo 修补以支持 Effect 诊断)负责代码检查、格式化和类型检查。测试使用 Vitest 和 Playwright。 包: - apps/web — 网站本身。 - packages/data — 唯一的运行时数据源:由提取器烘焙的游戏数据和物品图标。 - packages/save-parser (save-parser-ts) — 纯 TypeScript 编写的《艾尔登法环》存档解析器,可在浏览器或 Worker 中运行;README 指出早期的 Rust/WASM 存档编辑器技术栈已被移除。 - packages/extractor (er-extractor) — 构建时 CLI 工具,读取已安装的游戏副本,并将名称、属性、标记、图标、赐福点和事件脚本烘焙到数据包中,使用 bun:ffi 进行 Oodle 解压缩、dvdbnd 解包以及 FMG/PARAM/MSB/EMEVD 解析。 - packages/vendored-data — 仅构建时使用的逆向工程常量,无法从安装中推导,例如事件标志表、AES/RSA 密钥和参数模式,改编自上游项目 ER-Save-Lib、UXM-Selective-Unpack、soulsmods/Paramdex 和 soulstruct。 - packages/config/* — 共享的 TypeScript 和 oxlint 配置。 开发: Web 应用仅需 Bun;同时提供 Nix flake 以实现可复现的工具链。从头重建游戏数据还需要安装《艾尔登法环》和 Rust 工具链,但预构建的数据包已提交,因此运行或开发网站都不需要这些。典型命令包括 bun install、bun run dev、bun run lint、bun run typecheck、bun run test 和 bun run build。README 还指出,用于提供存档文件的默认代码片段使用 Node.js,但任何简单的 HTTP 文件服务器均可,手动上传是持续轮询的替代方案。