단일 화면 아레나에서 몰려오는 적을 막아내는 웨이브 기반 로그라이크. 순수 HTML5 Canvas + JavaScript (프레임워크 없음).
- Last reviewed: 2026-07-17
- Maturity: 프로토타입. 초기 커밋 메시지에 “One Room Roguelike prototype”으로 표기된 상태이며, 단일 룸 + 웨이브 루프 위에 보상·상점·융합·메타 해금이 동작한다. 상용 완성도·밸런스 검증을 주장하지 않는다.
- 알려진 후반(late-game) 한계 (
DESIGN_GOALS.md+game.js근거):- 레벨업 보상 선택 한도
REWARD_PICK_LIMIT = 12. 한도 소진 후 wave 20 미만이면 레벨업이 골드 보너스로 대체되고, wave 20+에서는 후기 강화 풀로 넘어간다. - 설계 문서가 지적하는 문제의식: 한도 소진 이후 성장 경로가 얇고, 보상/융합/상점 루프가 초반·후반이 비슷해 “시스템이 새로 열린다”는 느낌이 약할 수 있다. 목표(wave 30–70에서도 질적 빌드 변화 지속)는 문서에 있으나 달성 완료를 단정하지 않는다.
- 맵 확장·런 밖 메타 진행 구조 변경은 설계 전제 밖.
- 레벨업 보상 선택 한도
- 이동: WASD
- 공격/조준: 방향키 (누른 방향으로 발사)
- 레벨업 보상 — 적을 잡아 XP를 모으면 보상 카드 3장 중 하나를 선택 (tier: stone → prism 등).
- 상점 — 골드로 하위/최종 아이템 구매. 같은 타입을 모으면 세트 효과 발동.
- 캐릭터 해금 — 희귀 재화 Shards로 메인 화면에서 캐릭터 구매 (기본형 / 화력형 / 쌍발형).
- 보스 — 5웨이브마다 중간 보스, 10웨이브마다 진짜 보스.
- 융합탄 — 탄을 조합해 상위 탄 제작 (게임 내 "융합표" 버튼에서 조합표 확인).
정적 파일이라 빌드가 필요 없다. 아래는 저장소에 포함된 실행 경로를 설명하는 미실행 안내이다.
# 로컬 서버로 열기 (저장소 루트에서)
python -m http.server 8000
# → 브라우저에서 http://localhost:8000
# 또는 index.html 을 브라우저로 직접 열기| 구분 | 내용 |
|---|---|
| 네트워크 | fetch/XHR/WebSocket 및 외부 CDN 없음 (오프라인 정적 페이지로 동작 가능) |
| 로컬 저장 | localStorage 키 oneRoomRoguelikeMeta — shards, 선택/해금 캐릭터 |
| 라이선스 | 루트에 license 파일 없음 → 현재 라이선스 미지정 (이 README가 라이선스를 부여하지 않음) |
index.html— HUD·오버레이·캔버스 마크업game.js— 게임 로직 전체 (상태머신·웨이브·전투·보상·상점·융합)styles.css— UI 스타일DESIGN_GOALS.md— 밸런스/후반 목표·알려진 문제의식 (에이전트·사람 공용)