feat(combat): 노드 타입별 몬스터 그룹 (일반/엘리트/보스) #31

Merged
gahusb merged 9 commits from feature/node-type-monster-groups into main 2026-06-10 22:35:24 +09:00
Owner

개요

한 맵에 일반/엘리트/보스 몬스터 그룹을 배치하고, 전투 노드 타입에 따라 해당 그룹만 등장시킨다. (MSW Layer 미사용 — 태그+필터 방식)

변경

  • script.CombatMonsterGroup(combat/elite/boss) 프로퍼티 추가 + 등록 시 전달. Group/EnemyId는 메이커 인스펙터에서 저작.
  • gen-combat-monster.mjs: 컴포넌트가 없을 때만 부착하고 사용자 설정 값 보존(no-clobber, == null 가드).
  • data/monster-slots.json: 그룹별 HP바 슬롯 좌표 구조로 변경.
  • gen-slaydeck.mjs: RegisterMonster(entity, enemyId, group), BuildMonstersnode.type으로 필터(전체 숨김 → 일치 그룹만 표시), ActiveSlotPos = SlotPos[group]로 그룹별 슬롯 배치. 슬롯 좌표 단언을
    MAX_MONSTERS 기준 fail-fast로.

저작 방법

map01에 그룹별 몬스터를 배치하고 각 CombatMonster의 Group·EnemyId를 인스펙터에서 지정 → node tools/monster/gen-combat-monster.mjsnode tools/deck/gen-slaydeck.mjs → reload.

검증

  • 생성기 결정적, JSON·중복 id 검사 통과, sim 14/14(규칙 불변)
  • 메이커 플레이테스트: A(combat)/E(elite)/BOSS(boss) 각 노드에서 해당 그룹 몬스터만 구성·표시, ActiveSlotPos 그룹별 선택 확인(combat/elite x=430, boss x=520), 비활성 그룹 숨김

한계 (후속)

  • 선택 단위는 노드 타입(노드별 개별 인카운터 아님)
  • 실제 엘리트/보스 몬스터 콘텐츠·슬롯 좌표는 메이커 저작/튜닝 필요

설계: docs/superpowers/specs/2026-06-10-node-type-monster-groups-design.md
계획: docs/superpowers/plans/2026-06-10-node-type-monster-groups.md

🤖 Generated with Claude Code

## 개요 한 맵에 일반/엘리트/보스 몬스터 그룹을 배치하고, 전투 노드 타입에 따라 해당 그룹만 등장시킨다. (MSW Layer 미사용 — 태그+필터 방식) ## 변경 - `script.CombatMonster`에 `Group`(combat/elite/boss) 프로퍼티 추가 + 등록 시 전달. Group/EnemyId는 **메이커 인스펙터에서 저작**. - `gen-combat-monster.mjs`: 컴포넌트가 없을 때만 부착하고 **사용자 설정 값 보존(no-clobber, `== null` 가드)**. - `data/monster-slots.json`: 그룹별 HP바 슬롯 좌표 구조로 변경. - `gen-slaydeck.mjs`: `RegisterMonster(entity, enemyId, group)`, `BuildMonsters`가 `node.type`으로 필터(전체 숨김 → 일치 그룹만 표시), `ActiveSlotPos = SlotPos[group]`로 그룹별 슬롯 배치. 슬롯 좌표 단언을 MAX_MONSTERS 기준 fail-fast로. ## 저작 방법 map01에 그룹별 몬스터를 배치하고 각 `CombatMonster`의 Group·EnemyId를 인스펙터에서 지정 → `node tools/monster/gen-combat-monster.mjs` → `node tools/deck/gen-slaydeck.mjs` → reload. ## 검증 - 생성기 결정적, JSON·중복 id 검사 통과, sim 14/14(규칙 불변) - **메이커 플레이테스트**: A(combat)/E(elite)/BOSS(boss) 각 노드에서 해당 그룹 몬스터만 구성·표시, ActiveSlotPos 그룹별 선택 확인(combat/elite x=430, boss x=520), 비활성 그룹 숨김 ## 한계 (후속) - 선택 단위는 노드 타입(노드별 개별 인카운터 아님) - 실제 엘리트/보스 몬스터 콘텐츠·슬롯 좌표는 메이커 저작/튜닝 필요 설계: `docs/superpowers/specs/2026-06-10-node-type-monster-groups-design.md` 계획: `docs/superpowers/plans/2026-06-10-node-type-monster-groups.md` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
gahusb added 9 commits 2026-06-10 22:35:07 +09:00
한 맵에 일반/엘리트/보스 그룹 배치 → 노드 타입으로 필터해 해당 그룹만 등장.
CombatMonster에 Group 태그(메이커 인스펙터 저작) + BuildMonsters 필터 + 그룹별 슬롯 좌표.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
slots 그룹화 → CombatMonster Group+no-clobber → 슬롯 플러밍 → RegisterMonster(group)+BuildMonsters 필터 → 재생성·플레이테스트.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
gahusb merged commit cd7ae102ca into main 2026-06-10 22:35:24 +09:00
gahusb deleted branch feature/node-type-monster-groups 2026-06-10 22:35:29 +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#31