feat(monster): 적 종별 모델(프리팹) + 스테이지 로스터 배치 #107
Reference in New Issue
Block a user
Delete Branch "feature/monster-models"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
요약
적 18종 각각의 전용
.model(프리팹)을 생성기로 저작하고, 맵이data/encounters.json로스터대로 해당 모델 인스턴스를 배치하도록 개편합니다. 외형이 적 정체성(EnemyId)과 항상 일치하고, 능력치·외형·배치가 관심사별로 분리됩니다.배경 (해결한 문제)
gen-map-encounters.mjs가 외형 RUID 9종을 EnemyId와 무관하게 랜덤 배정 → "슬라임(스탯)인데 버섯(외형)" 불일치.변경 내용
data/enemies.json: 적 외형(appearance{sheet,box,off}) 필드 신설 — map01 메이커 큐레이션 9종을 흡수(단일 소스화).luaEnemiesTable화이트리스트 밖이라 codeblock 불변(diffcheck IDENTICAL).data/encounters.json신설: 맵별 combat/elite/boss 로스터.tools/monster/lib/monster-model.mjs신설: 모델·인스턴스 공용 빌더(fs 접근 없는 순수 함수) + 단위테스트 6건.tools/monster/gen-monster-models.mjs신설: 적 종별.modelemit(model://monster-<id>네임스페이스·EntryKey 충돌 가드·외형/EnemyId 베이크·태생 AI-free). 현재 9종 생성(나머지 9종은 Task 2 후).tools/map/gen-map-encounters.mjs개편: 로스터 기반 종별 모델 인스턴스 배치. 준비도 가드 —appearance미보유 적이 포함된 맵은 재생성 스킵(기존 보존)이라 map01만 재생성, map02~05는 Task 2 후 자동 완성.tools/monster/gen-combat-monster.mjs축소:CombatMonster.codeblock생성만(맵 부착은 encounters 생성기로 흡수).검증
diffcheck산출물 바이트-동일 ·cbgapGAP 0 ·cbprops0 ·cardkinds정합외형=이름=EnemyId=modelId100% 일치남은 작업(메이커 세션)
메이커가 엔티티의 원본 모델을 origin.entry_id로 해석하는데, entry_id를 enemyId("junior_bugi")로 넣어 model://monster-junior_bugi(실제 EntryKey)와 불일치 → [LEA-3028] MissingModel로 전 몬스터 미표시. entry_id를 modelEntryId(=modelId="monster-<id>")로 수정. 메이커 인게임 검증: 전투에서 전 종 정상 렌더(stump=1110101도 나무토막 확인). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011xhLoQbJvQYL65kBtDNDTy