프로젝트 소개

Elden Ring Compass는 Elden Ring의 웹 동반자로, 세이브 파일을 읽어 진행 상황 대시보드로 변환합니다. 세이브를 한 번 업로드하거나 연속 폴링을 위해 페이지를 해당 파일에 연결하면, 사이트는 인벤토리, 처치한 보스, 잠금 해제된 은총, 맵 마커 및 기타 완료 데이터를 보고합니다. 파싱은 전적으로 브라우저에서 이루어집니다. 세이브는 기기를 떠나지 않으며, 사이트는 세이브에 쓸 수 있는 기능이 없으므로 캐릭터를 수정하는 데 사용할 수 없습니다. README에 설명된 기능: - 서버 측 세이브 콘텐츠 업로드 없이 브라우저 내에서 세이브 파싱. - 세이브를 다시 업로드하지 않고 플레이 중에 보기가 업데이트되도록 연속 세이브 폴링. - 맵 위치, 행 선택 및 열 필터의 로컬 보존. - 아이템, 보스 및 은총 마커가 있는 타일형 대화형 맵(Leaflet/react-leaflet). - 대규모 아이템 및 진행 목록 탐색을 위한 가상화된 데이터 테이블. 아키텍처 및 도구: 이 프로젝트는 Bun + Turborepo 모노레포입니다. 웹 앱은 React 19와 함께 TanStack Start 및 TanStack Router를 기반으로 하며, 앱 상태에 Effect 및 @effect/atom-react를 사용하고 TanStack Query 또는 IndexedDB 대신 인메모리 데이터 계층을 사용합니다. UI 구성 요소는 Tailwind CSS v4와 함께 shadcn(Base UI 변형)에서 제공됩니다. 테이블은 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 Elden Ring 세이브 파서; 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 구성. 개발: 웹 앱은 Bun만 필요하며, 재현 가능한 도구 체인을 위해 Nix 플레이크도 제공됩니다. 처음부터 게임 데이터를 재구축하려면 Elden Ring 설치본과 Rust 도구 체인이 추가로 필요하지만, 사전 구축된 데이터 패키지가 커밋되어 있어 사이트를 실행하거나 개발하는 데는 둘 다 필요하지 않습니다. 일반적인 명령은 bun install, bun run dev, bun run lint, bun run typecheck, bun run test 및 bun run build입니다. README는 세이브 파일을 제공하는 기본 스니펫이 Node.js를 사용한다고 언급하지만, 간단한 HTTP 파일 서버라면 충분하며, 수동 업로드가 연속 폴링의 대안입니다.