Commit Graph

112 Commits

Author SHA1 Message Date
59c699c04b docs(node-monster-groups): 구현 계획 (5개 태스크)
slots 그룹화 → CombatMonster Group+no-clobber → 슬롯 플러밍 → RegisterMonster(group)+BuildMonsters 필터 → 재생성·플레이테스트.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 21:32:46 +09:00
0d517617a3 docs(node-monster-groups): 노드 타입별 몬스터 그룹 설계
한 맵에 일반/엘리트/보스 그룹 배치 → 노드 타입으로 필터해 해당 그룹만 등장.
CombatMonster에 Group 태그(메이커 인스펙터 저작) + BuildMonsters 필터 + 그룹별 슬롯 좌표.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 21:29:04 +09:00
26c084d951 Merge pull request '캐릭터 선택 시작 메뉴 추가' (#28) from feature/character-select-menu into main
Reviewed-on: #28
2026-06-10 21:03:44 +09:00
6349be63aa Merge pull request 'chore(model): Model_monster-43 을 Models/Monsters/ 로 재배치' (#29) from chore/relocate-monster-model into main
Reviewed-on: #29
2026-06-10 21:01:47 +09:00
7167ece6a7 Merge pull request 'fix(ui): 덱 팝업을 몬스터 HP UI 위에 렌더' (#27) from fix/deck-popup-sorting into main
Reviewed-on: #27
2026-06-10 21:00:38 +09:00
76e60d3350 Add character select start menu 2026-06-10 20:57:43 +09:00
e241382d09 chore(model): Model_monster-43 을 Models/Monsters/ 로 재배치
메이커에서 수행한 모델 재배치 반영.
- RootDesk/MyDesk/Model_monster-43.model → RootDesk/MyDesk/Models/Monsters/Model_monster-43.model (이동, 내용 동일)
- freeze-turn-monsters.mjs 의 모델 경로 참조를 새 위치로 갱신 (이동 후에도 생성기가 모델을 찾도록)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 20:55:19 +09:00
f4b349532d fix(ui): render deck popups above monster hp 2026-06-10 20:20:42 +09:00
683ea88271 Merge pull request 'Map monster combat' from feature/map-monster-combat
# Conflicts:
#	RootDesk/MyDesk/SlayDeckController.codeblock
2026-06-10 19:58:56 +09:00
516348c0ec Merge pull request 'Add all deck popup' from feature/deck-pile-inspector 2026-06-10 19:57:37 +09:00
f211a79c82 Merge remote-tracking branch 'origin/main' into feature/map-monster-combat
# Conflicts:
#	RootDesk/MyDesk/SlayDeckController.codeblock
2026-06-10 08:34:23 +09:00
f33a5507db fix(combat): 플레이테스트 반영 — 상태전이 실행공간 에러 제거 + 슬롯 좌표 정렬
- ReviveMonsterEntity/KillMonster의 StateComponent:ChangeState 제거
  (client 실행공간에서 LEA-3022 InvalidExecSpace 발생) → SetVisible 기반 표시/숨김으로 대체
- monster-slots.json 좌표를 맵 우측 몬스터 무리 위로 조정
- 메이커 플레이테스트로 전체 전투 루프(등록·타겟·공격·적턴·처치·승리·보상) 무에러 확인

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 02:15:40 +09:00
647516d0cd feat(combat): 맵 몬스터 카드 전투 산출물 재생성 (UI 슬롯·컨트롤러)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 01:31:03 +09:00
f704d0f14e refactor(combat): 죽은 단일적 코드 제거 + HP_BAR_W 상수 추출
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 01:29:27 +09:00
f0569d9a53 feat(combat-ui): 몬스터 슬롯 UI(HP바·의도·타겟버튼) + monster-slots.json
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 01:21:45 +09:00
a5c7d96770 feat(combat): 승리조건(전체 처치)·몬스터 슬롯 렌더·HP바·타겟 클릭
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 01:17:32 +09:00
423407325d feat(combat): EnemyTurn 생존 몬스터 각자 행동 2026-06-10 01:15:12 +09:00
ec45438b3c feat(combat): PlayCard 타겟 몬스터 공격 + 사망 처리/연출
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 01:13:33 +09:00
020be477e6 feat(combat): 컨트롤러 멀티 몬스터 상태 + 등록/BuildMonsters/부활
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 01:09:27 +09:00
9eef5eb66e fix(monster): gen-combat-monster 방어적 가드(componentNames/@components) + 코드블록 trailing newline
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 01:06:11 +09:00
185e0f3a94 feat(monster): CombatMonster 마커(EnemyId·자기등록) + 11맵 몬스터 패치 2026-06-10 01:00:23 +09:00
de23829439 fix(sim): 빈 인카운터 즉시 승리·타겟 타이브레이크 결정성·주석·draw/empty 테스트 2026-06-10 00:57:53 +09:00
4ef3d1811d feat(sim): 전투 규칙을 멀티 몬스터로 (타겟 선택·각자 의도·전체 처치 승리) 2026-06-10 00:52:17 +09:00
b14b614d94 feat(combat-data): 맵 몬스터 적 타입(주황/파란버섯) + simEncounter 추가 2026-06-10 00:48:46 +09:00
0cbcf4c70d docs(map-monster-combat): 구현 계획 (9개 태스크)
데이터→sim(TDD)→CombatMonster 마커→컨트롤러 멀티 전투(상태/PlayCard/EnemyTurn/승리/렌더)→슬롯 UI→재생성·플레이테스트.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 00:45:40 +09:00
1583f7ec26 Add all deck popup 2026-06-10 00:38:34 +09:00
da5dd03183 docs(map-monster-combat): 맵 몬스터 카드 전투 설계
추상 단일 적 → 맵 실제 몬스터 멀티 전투(클릭 타겟·각자 HP/의도·전체 처치 시 승리).
컨트롤러 단일 소유 + script.CombatMonster(EnemyId) 매핑 + 월드 HP바 슬롯.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 00:35:49 +09:00
c0cbea42a2 Merge pull request 'Add deck pile inspector UI' (#24) from feature/deck-pile-inspector into main
Reviewed-on: #24
2026-06-10 00:24:38 +09:00
de6e12c765 Add deck pile inspector UI 2026-06-10 00:17:00 +09:00
f38a3c98b1 Merge pull request 'feat(map01): 주황버섯 추격 몬스터 배치 + 카메라 시점 미세조정' (#23) from feature/map01-monster into main
Reviewed-on: #23
2026-06-10 00:16:21 +09:00
62e76f7db2 feat(map01): 주황버섯 추격 몬스터 배치 + 카메라 시점 미세조정
- map01: StaticMonsterTemplate → 주황버섯(ChaseMonster 모델) 교체
  (애니메이션 move/stand/jump/hit/die·히트박스·위치 x 5.2 갱신, 이동은 턴전투용 정지)
- 타일맵 TemplateRUID 변경
- 카메라 cameraOffsetY -1 → -0.83 (data/camera.json + MapCamera.codeblock)
- 메이커 저장 재직렬화 포함: common.gamelogic 수치 표기(0→0.0), map02~11 컴포넌트 순서, ui/DefaultGroup.ui

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 00:14:43 +09:00
ff91680f18 Merge pull request '.mjs 주체별 폴더 분류 + 카메라/플레이어 제어 분리' (#22) from feature/map-camera into main
Reviewed-on: #22
2026-06-10 00:01:12 +09:00
b18c44f0a5 Merge remote-tracking branch 'origin/main' into feature/map-camera
# Conflicts:
#	README.md
2026-06-09 23:59:44 +09:00
124e49b938 refactor(tools): .mjs를 주체별 폴더로 분류 + 카메라/플레이어 제어 분리
- tools/{player,monster,camera,map,deck,balance}/ 로 8개 스크립트 분류 (git mv 이력 보존)
- gen-camera의 플레이어 입력 차단·시선 고정을 tools/player/gen-player-lock.mjs(PlayerLock 코드블록)로 분리
- MapCamera 코드블록은 카메라 속성 전용으로 정리, 11개 맵 루트에 script.PlayerLock 부착
- README 및 스크립트 주석의 도구 경로 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:52:02 +09:00
c9f82708c8 Merge pull request '맵별 고정 카메라 + 시점 조정 + 플레이어 셋업(입력차단·오른쪽) + map01 배치' (#21) from feature/map-camera into main
Reviewed-on: #21
2026-06-09 23:39:18 +09:00
f1d101f6a4 feat(map-camera): 게임 시작 시 플레이어 입력 차단·오른쪽 바라보기 + map01 몬스터 3마리 배치
MapCamera 스크립트(맵 진입 OnBeginPlay)가 카메라에 더해 플레이어도 셋업:
- PlayerControllerComponent.LookDirectionX=1 (오른쪽 — 기본은 -1 왼쪽)
- FixedLookAt=true (방향 고정)
- Enable=false (키보드 입력 차단: 이동/점프/공격)
- map01: 몬스터 3마리 배치(사용자 의도 변경 포함)
- 메이커 Play 검증: LookDirectionX=1·Enable=false 확인, 오른쪽키 입력→플레이어 미이동(입력 차단), 아바타 정상, 카메라 zoom90·offset(1.5,-1) 유지

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:35:58 +09:00
5dfbef4f0f Merge pull request '맵별 고정 카메라 (MapCamera) — 11맵 카메라 framing 고정' (#20) from feature/map-camera into main
Reviewed-on: #20
2026-06-09 23:28:57 +09:00
fbf5cfe19f fix(map-camera): ScreenOffset→CameraOffset로 시점 조정 + zoom 90
ConfineCameraArea=true에서는 ScreenOffset이 무시됨(MSW 문서·실측 확인) → 시점 이동은 CameraOffset(월드 좌표)으로.

- data/camera.json: zoomRatio 90, cameraOffsetX 1.5, cameraOffsetY -1 추가 (x+ 오른쪽 / y- 아래)
- gen-camera: codeblock에 cam.CameraOffset = Vector2(...) 굽기 추가
- 메이커 Play 검증: 파이프라인(camera.json→gen-camera→reload)으로 zoom90·offset(1.5,-1) 적용, 시점이 우하단으로 이동 확인
- 참고: 시점 조정은 CameraOffset 사용(ScreenOffset은 confine=true에서 무효, 범위 0~1)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:22:52 +09:00
9eeb12adf9 docs(map-camera): 고정 카메라 설계·구현 계획
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:24:09 +09:00
68c9333b59 feat(map-camera): 맵별 고정 카메라 — MapCamera 스크립트로 11맵 카메라 framing 고정
맵 로드 시 플레이어 CameraComponent를 data/camera.json 값(현재 map01: zoom100·screenOffset0.5/0.655·confine)으로 설정.

- data/camera.json: 카메라 framing 단일 설정
- tools/gen-camera.mjs: MapCamera.codeblock 생성 + 11맵 루트에 script.MapCamera 부착(idempotent)
- 새 CameraComponent 미생성(엔진 소유) — 기존 플레이어 카메라 속성만 런타임 설정
- OnBeginPlay(client, ExecSpace 6) + LocalPlayer 카메라 재시도 타이머
- 메이커 Play 검증: zoom 60 테스트로 적용 입증, 100으로 복원. idempotent·결정적
- 참고: 맵 루트 client 스크립트는 ExecSpace 6 필요(1은 미발동)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:24:09 +09:00
8405395d84 Merge pull request 'docs: README를 전체 구현(B~E6a+메인메뉴+freeze)에 맞게 갱신' (#19) from docs/readme-full-status into main
Reviewed-on: #19
2026-06-09 13:52:38 +09:00
f310d2978e docs: README를 전체 구현(B~E6a+메인메뉴+freeze)에 맞게 갱신
디렉토리 구조(data/·tools 도구), 게임 프레임워크 현황(메인메뉴·카드전투·런영속·보상·분기맵·상점/휴식·유물·멀티act·밸런스시뮬·freeze), 스크립트 호출, 다음 단계(저장·카드제거·밸런싱·IP확장) 반영.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 13:51:20 +09:00
971539a72f Merge pull request 'feature/slay-deck-controller' (#14) from feature/slay-deck-controller into main
Reviewed-on: #14
2026-06-09 13:39:16 +09:00
861442e2c1 Merge main into feature/slay-deck-controller — B~E6a 카드시스템 통합 + 메인 메뉴 이식
main의 35커밋(B 전투통합~E6a 멀티act)을 브랜치에 통합. 충돌 해결:
- tools/gen-slaydeck.mjs: main(B~E6a) 생성기 채택 + 브랜치 메인 메뉴(MainMenu UI·ShowMainMenu/BindMenuButtons/StartNewGame/SetEntityEnabled·OnBeginPlay→메뉴) 이식
- ui/DefaultGroup.ui·SlayDeckController.codeblock: 통합 생성기로 재생성
- map10·모델: main 채택 후 freeze 도구(freeze-turn-monsters/player) 재적용
정적 검증: 문법·JSON 유효·생성기 결정적·메뉴/B~E6a 양쪽 유지·freeze 적용.
⚠️ Maker 연결 해제로 메뉴→게임 런타임 검증은 미수행(사용자 메이커 확인 필요).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 13:29:28 +09:00
cb4d72ead2 Merge pull request '다음 막 진행·적 스케일 (TODO E6a) — 멀티 act 런' (#18) from feature/floors into main
Reviewed-on: #18
2026-06-09 13:18:00 +09:00
376511dfa9 docs(E6a): 다음 막/멀티 act 설계·구현 계획
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 04:13:56 +09:00
f42628c2e9 feat(E6a): 다음 막 진행·적 스케일 — 멀티 act 런
보스 클리어 시 즉시 종료 대신 다음 막으로, 최종 막 보스에서 런 클리어.

- Floor를 막 카운터(1..ACT_COUNT=3)로 재정의, RunLength=ACT_COUNT
- StartCombat: 적을 막 배율(mult=1+(Floor-1)*0.6)로 스케일(maxHp·의도값, 새 테이블)
- CheckCombatEnd 보스 승리: Floor<RunLength면 다음 막(같은 맵 재사용·CurrentNodeId 리셋·ShowMap), 최종 막이면 '런 클리어!'
- HP/골드/덱/유물 막 간 유지(기존 영속), combatStart 유물 전투마다 재적용
- RenderRun HUD 라벨 '층'→'막'
- 메이커 Play 검증: 보스 120→192→264 스케일, 막 1→2→3, 3막 클리어, 영속 유지
- 제외: E6b 저장/불러오기(미진행)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 04:13:55 +09:00
ace489ed0f Merge pull request '유물 시스템 (TODO E5) — 훅 패시브 + 3획득경로' (#17) from feature/relics into main
Reviewed-on: #17
2026-06-09 04:04:31 +09:00
4c866f3cd9 docs(E5): 유물 설계·구현 계획
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 03:53:38 +09:00
5ebc781f81 feat(E5): 유물 시스템 — 훅 패시브 + 3획득경로
훅 기반 유물(패시브) + 시작/엘리트/상점 획득.

- data/relics.json: 유물 4종(강철심장 combatStart 방어+6, 에너지코어 turnStart 에너지+1, 흡혈 cardPlayed HP+1, 황금우상 combatReward 골드+10) + startingRelic + relicPool
- ApplyRelics(hook): RunRelics 순회·effect 적용. 4지점 연결(StartCombat/StartPlayerTurn/PlayCard Attack/CheckCombatEnd)
- 획득: AddRelic 공용 — StartRun 시작 유물(C), 엘리트 승리 무작위(A), 상점 BuyRelic 골드-60(B)
- UI: CombatHud 유물 바(RenderRelics)·ShopHud 유물 슬롯
- 생성기: relics.json 로드/검증/luaRelicsTable, RELIC_PRICE=60
- 메이커 Play 검증: 방어+6·에너지4·공격HP+1·승리골드+25·엘리트/상점 유물 획득
- 범위 밖: 부정 유물·조건부 효과·유물 제거·보스 유물

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 03:53:37 +09:00