这个项目能做什么
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 文件服务器均可,手动上传是持续轮询的替代方案。
评论
0 评分人数达到10人后显示
登录后参与讨论。