feat: 노드 맵 UI 강화 — 아이콘 노드 + 다크 배경 (nodeicons.json 외부화) #58

Merged
maple merged 7 commits from feature/node-map-ui into main 2026-06-15 23:05:27 +09:00
Owner

요약

맵 노드 선택 화면(MapHud)을 단색 박스+텍스트공식 메이플 아이콘 노드 + 다크 배경으로 강화했습니다. 절차 랜덤 배치·간선·진행 로직은 그대로. 아이콘/배경 RUID는 data/nodeicons.json 한 파일로 외부화해 교체가 쉽습니다.

변경 내용

  • data/nodeicons.json(신설): 노드 타입 6종 아이콘 + 배경 RUID 단일 소스. 교체 = 이 파일 수정 후 node tools/deck/gen-slaydeck.mjs 재실행.
  • tools/deck/gen-slaydeck.mjs:
    • 로드·fail-fast 검증(6타입+배경 32hex) + luaNodeIconsTable() 직렬화(self.NodeIcons, OnBeginPlay/StartRun 주입, prop 선언).
    • MapHud: 루트를 불투명 다크 배경(게임 월드 가림) + BgImage 자식(배경 스프라이트).
    • 노드: 단색 박스 → 아이콘 스프라이트(라벨 제거, 크기 확대 64/88px). RenderMapNode가 타입별 ImageRUID 주입 + 상태 틴트(현재=금색 / 도달=원색 / 방문=회색 / 잠김=어둡고 흐림).

확정 아이콘 (공식 maplestory, 썸네일 검수)

전투=주황버섯 · 엘리트=돌골렘 · 보스=주니어 발록 · 상점=돈주머니 · 휴식=모닥불 · 보물=금별 보물상자.

검증 (메이커 플레이테스트)

  • 런 시작 → 맵 화면: 다크 배경 위에 타입별 아이콘 노드 + 경로 점선, 상태 틴트(밝은 도달 가능 노드 / 흐린 잠김 노드) 정상. 게임 월드 누출 없음.
  • 미러 회귀 테스트 sim-balance/rogue-map 46/46 PASS. 노드맵 빌드 에러 0.

알려진 한계 / 후속

  • 배경 스프라이트: 공식 메이플 BackgroundComponent 리소스(리스항구 등)는 UI 스프라이트로 렌더되지 않음(엔진 제약). 현재 깔끔한 다크 배경으로 대체. nodeicons.jsonbackgroundSPRITE 타입 RUID(예: map/back 스프라이트)를 넣으면 풀스크린 표시됨(스프라이트 렌더 검증 완료). 원하면 후속으로 적합한 scenic 스프라이트 탐색 가능.
  • 무관한 기존 빌드 에러(DrawCards LEA-1121 등 — codex 머지에서 유입)는 이 PR 범위 밖.

🤖 Generated with Claude Code

## 요약 맵 노드 선택 화면(MapHud)을 **단색 박스+텍스트** → **공식 메이플 아이콘 노드 + 다크 배경**으로 강화했습니다. 절차 랜덤 배치·간선·진행 로직은 그대로. 아이콘/배경 RUID는 **`data/nodeicons.json` 한 파일로 외부화**해 교체가 쉽습니다. ## 변경 내용 - **`data/nodeicons.json`(신설)**: 노드 타입 6종 아이콘 + 배경 RUID 단일 소스. 교체 = 이 파일 수정 후 `node tools/deck/gen-slaydeck.mjs` 재실행. - **`tools/deck/gen-slaydeck.mjs`**: - 로드·fail-fast 검증(6타입+배경 32hex) + `luaNodeIconsTable()` 직렬화(`self.NodeIcons`, OnBeginPlay/StartRun 주입, prop 선언). - MapHud: 루트를 **불투명 다크 배경**(게임 월드 가림) + `BgImage` 자식(배경 스프라이트). - 노드: 단색 박스 → **아이콘 스프라이트**(라벨 제거, 크기 확대 64/88px). `RenderMapNode`가 타입별 `ImageRUID` 주입 + 상태 틴트(현재=금색 / 도달=원색 / 방문=회색 / 잠김=어둡고 흐림). ## 확정 아이콘 (공식 maplestory, 썸네일 검수) 전투=주황버섯 · 엘리트=돌골렘 · 보스=주니어 발록 · 상점=돈주머니 · 휴식=모닥불 · 보물=금별 보물상자. ## 검증 (메이커 플레이테스트) - 런 시작 → 맵 화면: 다크 배경 위에 **타입별 아이콘 노드** + 경로 점선, 상태 틴트(밝은 도달 가능 노드 / 흐린 잠김 노드) 정상. 게임 월드 누출 없음. - 미러 회귀 테스트 `sim-balance`/`rogue-map` 46/46 PASS. 노드맵 빌드 에러 0. ## 알려진 한계 / 후속 - **배경 스프라이트**: 공식 메이플 **BackgroundComponent 리소스(리스항구 등)는 UI 스프라이트로 렌더되지 않음**(엔진 제약). 현재 깔끔한 다크 배경으로 대체. `nodeicons.json`의 `background`에 **SPRITE 타입 RUID**(예: map/back 스프라이트)를 넣으면 풀스크린 표시됨(스프라이트 렌더 검증 완료). 원하면 후속으로 적합한 scenic 스프라이트 탐색 가능. - 무관한 기존 빌드 에러(`DrawCards` LEA-1121 등 — codex 머지에서 유입)는 이 PR 범위 밖. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
gahusb added 5 commits 2026-06-15 14:36:45 +09:00
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
타입별 공식 아이콘(주황버섯/골렘/발록/돈주머니/모닥불/상자) + 리스항구 배경. 절차 배치·간선·바인딩 불변.
메이플 BackgroundComponent 리소스는 UI 스프라이트로 안 떠서 배경 이미지 미표시 → 루트를 불투명 다크로 깔아 월드 누출 방지, BgImage 자식에 background RUID(유효 스프라이트면 표시). 노드 아이콘·상태 틴트는 정상 검증.
gahusb added 2 commits 2026-06-15 15:59:55 +09:00
범례: 6타입 아이콘+이름(전투/엘리트/보스/상점/휴식/보물) 패널(우하단). 잠김 노드 틴트를 밝게 해 타입 식별 가능.
배경을 작동하는 map/back SPRITE RUID로 교체(메이플 BackgroundComponent 대신). BgImage 색을 0.5로 낮춰 노드 가독성 확보. 교체는 data/nodeicons.json background만 수정.
maple merged commit 5377112826 into main 2026-06-15 23:05:27 +09:00
maple deleted branch feature/node-map-ui 2026-06-15 23:05:30 +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#58