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
edbc717426
Merge pull request '상점/휴식 노드 (TODO E4) — 골드 소비·HP 회복' ( #16 ) from feature/shop-rest into main
...
Reviewed-on: #16
2026-06-09 03:37:49 +09:00
03b59eeafc
docs(E4): 상점/휴식 설계·구현 계획
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 03:35:05 +09:00
0400291939
feat(E4): 상점/휴식 노드 — 골드 소비·HP 회복
...
맵에 상점/휴식 노드 추가, 진입 시 전투 대신 상호작용 UI로 분기.
- data/map.json: 4행 맵에 rest(휴식)·shop(상점) 노드 추가(enemy 없음)
- 생성기: enemy 선택적 검증/직렬화, MapHud 노드 y 행수 비례 중앙정렬, TYPE_KO에 상점/휴식
- PickNode 타입 분기: shop→ShowShop, rest→ShowRest, 그 외→StartCombat
- 상점: ShowShop(카드3 무작위)·RenderShop·BuyCard(골드-30·RunDeck+1·재구매/부족 가드)
- 휴식: ShowRest(HP+30 상한 클램프)
- LeaveNode(상점/휴식 공용 나가기→ShowMap)
- UI: ShopHud(카드3·가격·골드·나가기)·RestHud(회복 정보·나가기), 상수 CARD_PRICE=30·REST_HEAL=30
- 메이커 Play 검증: 상점 구매(부족/재구매 무시 포함)·휴식 회복·맵 분기 정상
- 알려진 튜닝: 골드/승리 15 < 카드값 30 → 경제 밸런싱 필요(sim-balance 활용)
- 범위 밖: 카드 제거(덱 보기 UI)·유물(E5)·저장(E6)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 03:35:05 +09:00
42ce7286f5
Merge pull request '분기 맵 노드 진행 (TODO E3) — 경로 선택·적 차등·보스 클리어' ( #15 ) from feature/map-nodes into main
...
Reviewed-on: #15
2026-06-09 03:20:13 +09:00
444d02367e
docs(E3): 분기 맵 노드 설계·구현 계획
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 03:18:49 +09:00
15975d7f51
feat(E3): 분기 맵 노드 진행 — 경로 선택·적 차등·보스 클리어
...
단일 경로 자동 진행을 분기 맵 네비게이션으로 확장.
- 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 >
2026-06-09 03:18:49 +09:00
e5960e150b
Merge pull request '런 루프 코어 (TODO E1+E2) — 연속 전투·카드 보상·덱 성장' ( #13 ) from feature/run-loop-core into main
...
Reviewed-on: #13
2026-06-09 02:43:13 +09:00
266b7ddb0c
docs(E1+E2): 런 루프 코어 설계·계획 + E 분해
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 02:27:38 +09:00
e9b6d9c6c0
feat(E1+E2): 런 루프 코어 — 연속 전투·카드 보상·덱 성장
...
단일 전투를 N전투 런으로 확장(로그라이크 메타 첫 조각).
- 런 상태: RunDeck(보유 카드)·Gold·Floor·RunLength·RewardChoices·RunActive (SlayDeckController 확장)
- StartRun(영속 초기화·버튼 1회 바인딩) vs StartCombat(전투별 초기화·RunDeck에서 드로·Floor++) 분리
- 플레이어 HP 전투 간 유지, BindButtons를 StartRun 1회 호출로 이동(핸들러 중첩 버그 예방)
- 승리: 골드 +15 → Floor<RunLength면 OfferReward(카드 3택1), 아니면 '런 클리어!'
- PickReward: 선택 카드 RunDeck 추가(건너뛰기=추가 안 함)→다음 전투. 입력잠금 가드
- UI: CombatHud 층/골드 표시, RewardHud(보상 카드 3+건너뛰기) 생성
- 런 파라미터(RUN_LENGTH=3·GOLD_PER_WIN=15)는 생성기 상수(향후 외부화)
- 메이커 Play 검증: 전투→보상→덱+1→다음전투→3전투 런 클리어, 패배·입력잠금 정상
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 02:27:38 +09:00
3be5e85c94
Merge pull request 'AI 전투 밸런스 시뮬레이터 (TODO F)' ( #12 ) from feature/balance-simulator into main
...
Reviewed-on: #12
2026-06-09 01:52:07 +09:00
911f45407c
docs(F): 밸런스 시뮬레이터 설계·구현 계획 문서
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 01:39:21 +09:00
f42e03a006
feat(F): AI 전투 밸런스 시뮬레이터 tools/sim-balance.mjs
...
data/*.json을 입력으로 전투를 몬테카를로 N회 시뮬 → 승률·턴·OP 카드 리포트.
- 전투 엔진 JS 재현(gen-slaydeck Lua 미러): 에너지3·드로우5·방어우선차감·결정적 의도·승패·턴상한
- 플레이어 휴리스틱 정책: 치사 우선 → 적 공격의도 시 방어 → 공격 우선, 에너지 효율순
- 시드 PRNG(mulberry32)로 재현성, OP 탐지(kind별 효율 중앙값 1.5배↑ 플래그)
- CLI: node tools/sim-balance.mjs [N] [--seed S]
- node:test 단위 테스트 10종(applyDamage·정책·엔진·집계)
- 검증: 현 데이터 승률 100%(슬라임 약함 신호), 적 HP 45→300 시 평균턴 5.6→39.6(데이터 반영)
- 전투 규칙은 Lua와 중복이라 동기화 주석 명시
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-09 01:39:21 +09:00