프로젝트 소개

Dungeon은 Node.js 애플리케이션으로 제공되는 로컬 싱글플레이어 텍스트 어드벤처 RPG입니다. Node.js 22.13 이상이 필요하며 패키지 설치는 필요 없습니다. .env.example을 .env로 복사하고 제공자 키를 입력한 뒤 npm start를 실행하면 http://127.0.0.1:4317 에서 게임이 제공됩니다. 인터페이스와 캠페인 텍스트는 각각 영어 또는 러시아어로 설정할 수 있습니다. 플레이어는 내장 또는 사용자 지정 어드벤처 템플릿에서 새 캠페인을 시작하며, 설정, 시나리오, 캐릭터 및 선택 사항인 DM 전용 비밀 콘텐츠가 분리되어 있습니다. 사용자 지정 템플릿은 data/adventure-templates.json에 저장되며 숨겨진 지시 사항을 노출하지 않고 편집하거나 복사할 수 있고, 내장 템플릿은 재설정할 수 있습니다. 테스트 뷰어는 스포일러 확인을 거친 후에만 작성된 DM 비밀과 설정된 숨겨진 세계 사실을 캠페인 변경 없이 확인할 수 있습니다. 모델 구성은 설정 페이지에서 가능합니다. Gemini, OpenRouter, OpenAI, Anthropic, DeepSeek, xAI 제공자 연결, 사용자 지정 모델 ID, 유료 추론 없이 공식 제공자 API에서 가져온 모델 목록을 지원하며 목록은 1시간 동안 캐시됩니다. 요청 기본값은 Gemini gemini-3.8-flash입니다. 선택 사항인 Artificial Analysis API 키를 사용하면 가격 참조를 활성화할 수 있고 6시간 동안 캐시되며 OpenRouter 대체 값을 사용합니다. 모든 모델 호출은 로컬 지출 원장을 공유하며, 앱은 계정 전체 제공자 청구서 역할이 아니라 로컬 지출만 추정합니다. 게임플레이는 단일 플레이어 캐릭터를 사용합니다. DM은 설정과 확립된 역사 안에서 세부 사항을 만들어 냅니다. 의미 있는 판정은 기본 난이도, 라벨이 붙은 수정치, 클램프 전 총합, 성공 확률, 실제 d100 결과를 제시합니다. 계산된 확률이 0% 또는 100%인 행동은 보장되며 주사위를 사용하지 않습니다. 플레이어는 게임 외 질문을 하거나, 판정에 이의를 제기하거나 정정·실행 취소를 요청하고, 출처가 있는 캐릭터 및 세계 지식을 조사하고, 일지를 검색할 수 있습니다. 저장 및 다시 불러오기는 자동입니다. 캠페인 데이터는 data/campaigns.sqlite에, 지출은 data/spend-ledger.json에, 비공개 제공자 결과는 data/provider-results에 저장됩니다. 저장소에는 모의 제공자를 사용하는 npm test 및 npm run check 검증이 포함되어 있으며, DUNGEON_PLAYWRIGHT_PATH가 설정된 경우 선택적으로 Playwright 브라우저 테스트를 사용할 수 있습니다. 문서는 파일럿 규칙과 플레이테스트 결과를 설명합니다. 문서에는 남은 어려운 문제가 의미론적 판단이라고 명시되어 있으며 완벽한 DM 동작이나 제공자 게임플레이 품질을 보장하지 않습니다.