분기 맵 노드 진행 (TODO E3) — 경로 선택·적 차등·보스 클리어 #15

Merged
gahusb merged 2 commits from feature/map-nodes into main 2026-06-09 03:20:14 +09:00
Owner

요약

단일 경로 자동 진행을, 플레이어가 분기 맵(작성된 DAG)에서 다음 노드를 선택하는 방식으로 확장한다.
노드 타입(전투/엘리트/보스)대로 전투(적은 데이터로 차등), 보스 노드 클리어 시 "런 클리어". (E 분해의 E3)

변경 사항

  • data/map.json: 분기 DAG — start + nodes(type/enemy/row/col/next). A,B → C,D,E → BOSS.
  • data/enemies.json: slime_elite(HP 70)·slime_boss(HP 120) 추가.
  • SlayDeckController: Enemies(전체 적 테이블)·MapNodes·MapStart·CurrentNodeId·CurrentEnemyId 속성.
  • 흐름: StartRun→맵 빌드·ShowMap, PickNode(도달성 검증)→StartCombat(적을 self.Enemies[CurrentEnemyId]에서 로드). 승리→보상→ShowMap 복귀, 보스 노드 승리→"런 클리어!".
  • ShowMap/IsReachable(boolean)/RenderMap(도달 가능 노드만 활성·강조)/PickNode.
  • MapHud UI: 노드 버튼(행=y, 열=x), 타입+적 이름 라벨, 모달 배경.
  • 생성기: method() returnType 파라미터, 다중 적/맵 Lua 직렬화 헬퍼.

검증 (메이커 Play, MCP)

  • StartRun → 맵(1행 A·B만 선택 가능, 나머지 어두움)
  • A 선택 → 슬라임(45) 전투 → 승리 → 보상 → 맵(C·D 도달, E 불가)
  • C 선택 → 정예 슬라임(70) → 맵(BOSS 도달) → BOSS → 슬라임 킹(120) → "런 클리어!"(골드 45)
  • 도달 불가 노드 클릭 → 무시. 생성기 결정적·JSON 유효.

범위 밖 (후속)

  • 상점/휴식 노드 동작(E4)·유물(E5)·저장(E6). 절차적 맵·노드 연결선 그리기.

🤖 Generated with Claude Code

## 요약 단일 경로 자동 진행을, 플레이어가 분기 맵(작성된 DAG)에서 다음 노드를 선택하는 방식으로 확장한다. 노드 타입(전투/엘리트/보스)대로 전투(적은 데이터로 차등), 보스 노드 클리어 시 "런 클리어". (E 분해의 E3) ## 변경 사항 - `data/map.json`: 분기 DAG — `start` + `nodes`(type/enemy/row/col/next). A,B → C,D,E → BOSS. - `data/enemies.json`: `slime_elite`(HP 70)·`slime_boss`(HP 120) 추가. - `SlayDeckController`: `Enemies`(전체 적 테이블)·`MapNodes`·`MapStart`·`CurrentNodeId`·`CurrentEnemyId` 속성. - 흐름: `StartRun`→맵 빌드·`ShowMap`, `PickNode`(도달성 검증)→`StartCombat`(적을 `self.Enemies[CurrentEnemyId]`에서 로드). 승리→보상→`ShowMap` 복귀, 보스 노드 승리→"런 클리어!". - `ShowMap`/`IsReachable`(boolean)/`RenderMap`(도달 가능 노드만 활성·강조)/`PickNode`. - MapHud UI: 노드 버튼(행=y, 열=x), 타입+적 이름 라벨, 모달 배경. - 생성기: `method()` returnType 파라미터, 다중 적/맵 Lua 직렬화 헬퍼. ## 검증 (메이커 Play, MCP) - StartRun → 맵(1행 A·B만 선택 가능, 나머지 어두움) - A 선택 → 슬라임(45) 전투 → 승리 → 보상 → 맵(C·D 도달, E 불가) - C 선택 → 정예 슬라임(70) → 맵(BOSS 도달) → BOSS → 슬라임 킹(120) → "런 클리어!"(골드 45) - 도달 불가 노드 클릭 → 무시. 생성기 결정적·JSON 유효. ## 범위 밖 (후속) - 상점/휴식 노드 동작(E4)·유물(E5)·저장(E6). 절차적 맵·노드 연결선 그리기. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
gahusb added 2 commits 2026-06-09 03:20:07 +09:00
단일 경로 자동 진행을 분기 맵 네비게이션으로 확장.

- data/map.json: 분기 DAG(start + nodes: type/enemy/row/col/next). A,B→C,D,E→BOSS
- data/enemies.json: slime_elite(HP70)·slime_boss(HP120) 추가
- SlayDeckController: Enemies(전체 적)·MapNodes·MapStart·CurrentNodeId·CurrentEnemyId 속성
- StartRun→맵 빌드·ShowMap, PickNode(도달성 검증)→StartCombat(적은 self.Enemies에서)
- ShowMap/IsReachable(boolean)/RenderMap(도달 가능 노드만 활성·강조)/PickNode
- 승리→보상→ShowMap 복귀, 보스 노드 승리 시 '런 클리어!'
- MapHud UI: 노드 버튼(행=y/col=x), 타입+적 라벨, 모달 배경
- 생성기: method() returnType 파라미터, 다중 적/맵 Lua 직렬화 헬퍼
- 메이커 Play 검증: 맵→A→보상→C(엘리트)→보스→런 클리어, 도달불가 노드 무시
- 범위 밖(후속): 상점/휴식(E4)·유물(E5)·저장(E6)·절차적 맵·연결선

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gahusb merged commit 42ce7286f5 into main 2026-06-09 03:20:14 +09:00
gahusb deleted branch feature/map-nodes 2026-06-09 03:20:14 +09:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gahusb/maplecontest#15