Commit Graph

114 Commits

Author SHA1 Message Date
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
e6994f92f7 Merge pull request 'feat(D): 카드/적 데이터 외부화 (data/*.json)' (#11) from feature/data-externalization into main
Reviewed-on: #11
2026-06-09 01:29:03 +09:00
929347c599 docs(D): 데이터 외부화 설계·구현 계획 문서
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 01:25:25 +09:00
8789330a4e feat(D): 카드/적 데이터 외부화 (data/*.json)
Cards·시작덱·적 정의를 data/cards.json·data/enemies.json으로 분리, gen-slaydeck가 로드·검증·주입.

- data/cards.json: 카드 정의(name/cost/kind/damage|block/desc) + starterDeck
- data/enemies.json: 적 정의(name/maxHp/intents) + activeEnemy
- 생성기: JSON 로드 + fail-fast 검증(미존재 카드/적 id) + Lua 직렬화 헬퍼
- StartCombat·EnemyMaxHp·카드 미리보기·CombatHud 초기텍스트를 데이터에서 생성
- codeblock 출력은 기존과 동일(순수 리팩터), ui 미리보기는 카드 종류 순환 표시
- 검증: 데이터 1장 수치 변경→재생성 반영 확인, 결정성, fail-fast(exit1), 메이커 Play 정상
- 수치는 임시 placeholder, 추후 메이플 IP대로 카드/적 확장 예정

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 01:25:25 +09:00
9550302137 Merge pull request 'docs(A): README·framework 문서를 실제 구현에 맞게 정정' (#10) from feature/docs-alignment into main
Reviewed-on: #10
2026-06-09 01:12:17 +09:00
e8ed467cda docs(A): README·framework 문서를 실제 구현에 맞게 정정
미존재 3컴포넌트(SlayCardCatalog/SlayRunState/SlayCombatManager)를 구현된 것처럼 서술하던 부분을 정정.

- '게임 프레임워크 현황'을 실제 구현(SlayDeckController 기반 카드 전투 + B 결과)으로 재작성
- 3대 컴포넌트는 '향후 설계(미구현 — 목표 아키텍처)' 섹션으로 분리 보존
- 디렉토리 트리·codeblock 목록·생성기(tools/) 반영, SlayDeckController 추가
- 스크립트 호출 예시를 실제 메서드(PlayCard/EndPlayerTurn/StartCombat)로 교체
- '다음 구현 단계'에서 전투 UI·전투 루프 완료 표시, D/F/E 반영
- 수치는 임시 placeholder임을 명시
- framework 문서도 동일 기조로 재작성 + Planned 섹션에 3컴포넌트 보존

검증: 문서에 적힌 컴포넌트명을 코드와 grep 교차확인 (SlayDeckController 실재, 3컴포넌트 코드 0건).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 01:10:35 +09:00
9206018fbe Merge pull request 'carddeck(B): CombatHud 적 패널 정렬·정수 표기 수정' (#9) from feature/combat-hud-polish into main
Reviewed-on: #9
2026-06-09 01:03:44 +09:00
788167b1ae carddeck(B): CombatHud 적 패널 정렬·정수 표기 수정
런타임 검증에서 발견된 시각 결함 2건 수정.

- 적 텍스트(이름/HP/방어/의도)를 EnemyBg 패널(y=300) 위로 정렬 (기존 center 배치로 패널과 분리됨)
- HP/방어/에너지 등 codeblock number Property를 string.format("%d")로 정수 표기 (Lua tostring의 .0 제거)

생성기 단일 소스에서 재생성. 메이커 Play로 정렬·정수 갱신 확인.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 01:02:56 +09:00
e5a75a83b5 Merge pull request '카드 전투 통합 (TODO B) + 미커밋 노이즈 정리 (C)' (#8) from feature/deck-controller-fixes into main
Reviewed-on: #8
2026-06-09 00:51:04 +09:00
724cd5a04d docs(B): 카드 전투 통합 설계·구현 계획 문서 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 00:04:33 +09:00
bd02865f4f carddeck(B): 카드 전투 통합 — 적/플레이어 전투 상태·의도·승패
PlayCard가 토스트 대신 실제 효과를 적용하도록 통합.

- 카드 데이터에 damage/block 수치 필드 추가 (desc 파싱 폐기)
- 전투 상태: 플레이어 HP/Block, 적 HP/Block/의도(결정적 사이클)
- PlayCard: Attack→적 HP 감소(방어 우선 차감), Skill→플레이어 Block 증가
- EndPlayerTurn→적 턴(의도 실행)→다음 플레이어 턴, 승패 판정
- CombatHud UI: 적 패널(이름/HP/방어/의도)·플레이어 패널(HP/방어)·결과 텍스트
- 수치(플레이어80/적45/의도10·6·방8)는 임시 placeholder (D에서 캐릭터/몬스터별 외부화)

생성기 단일 소스(tools/gen-slaydeck.mjs)에서 생성. 결정적 출력 확인.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 00:04:26 +09:00
8f08e67e4c 미사용 고아 리소스 invincible belief.sprite 제거
카드 5장 통일로 이미지 카드가 손패에서 빠져 이 스프라이트는 미참조 고아가 됨.
descriptor Id가 무효라 플레이마다 LEA-3021 에러를 유발하므로 제거.
(맵 Background.WebUrl의 휴면 참조는 Type=Template이라 미사용 — 무해, 유지)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 01:24:25 +09:00
4bf7e29315 Maker 세션 재저장분(맵 02/05/06/07/10/11) 복구 포함
stash해 둔 로컬 맵 재저장분 복구. 몬스터 2종·old 스프라이트 미사용·타일셋 교체·유효 GUID 무결성 검증 완료.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 01:13:46 +09:00
b1921ee843 gen-slaydeck: 유효한 GUID 생성으로 수정 (DeckHud·카드 자식 entity id)
기존 guid() prefix+4hex는 8-4-4-4-12 형식이 아니어서 Maker가 적용 거부(LEA-3054).
네임스페이스 바이트 기반 hex GUID로 변경하고, 기존 자식 id도 재생성 시 정규화.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 01:11:44 +09:00
f508952960 재생성: 카드 클릭 사용·균일 카드·핸들러 클로저 반영
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 01:08:40 +09:00
5bc5b3dc5c 덱 컨트롤러 생성기: 핸들러 클로저화·카드데이터 단일화·카드클릭 사용·pcall 제거
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 01:07:46 +09:00
6c392764d5 덱 컨트롤러 코드리뷰 수정 설계 문서 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 01:01:42 +09:00
14449373e0 Merge pull request 'Add main menu flow' (#7) from feature/main-menu into feature/slay-deck-controller
Reviewed-on: #7
2026-06-08 00:38:29 +09:00
b0f0188106 Merge pull request 'Add slay deck controller UI' (#6) from feature/slay-deck-controller into main
Reviewed-on: #6
2026-06-08 00:37:54 +09:00
maple
27818e92c7 Fix turn combat facing and player movement 2026-06-08 00:01:46 +09:00
maple
1299d718e2 Disable monster patrol movement 2026-06-07 23:56:20 +09:00
maple
913b4f1721 Avoid client state transition for monsters 2026-06-07 23:42:05 +09:00
maple
a9926feea3 Freeze monsters for turn combat 2026-06-07 23:39:58 +09:00
maple
8eab9a75ac Fix generated UI GUIDs 2026-06-07 23:33:44 +09:00
maple
8c397cbc09 Add main menu flow 2026-06-07 23:27:44 +09:00
maple
cfc41ac3d9 Add slay deck controller UI 2026-06-07 22:35:00 +09:00
3ab7f10182 Merge pull request '맵 10개 추가: 맵별 배경·타일·몬스터 다양화 + StS2 전투 배치' (#5) from feature/maps-batch into main
Reviewed-on: #5
2026-06-06 14:31:25 +09:00
dd5acafab4 맵10개 개선: 수확한 다양한 몬스터 2종(StS2 우측 배치) + 맵별 타일셋
공식 필드맵 import로 몬스터 변형 9종·타일셋 12종 수확. map01 기존 4종 미사용.
각 맵: 서로 다른 몬스터 2마리(x=3.5/5.5 우측), 맵별 다른 타일셋, 기존 배경 유지.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 14:09:45 +09:00
bce13fc788 맵 생성기: 수확한 다양한 몬스터 2종(StS2 우측 배치) + 맵별 타일셋 교체
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 14:07:10 +09:00
b5d6f913e3 맵 개선(다양한 몬스터+타일셋+StS2 배치) 설계 문서 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 13:39:39 +09:00
989031239b 맵 10개 생성 구현 계획 문서 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 12:42:19 +09:00
9b3276e5a4 맵 10개(map02~map11) 생성: 공식 스셌러리 배경 10종 + 몬스터 2마리, sector 등록
map01 템플릿 복제, 엔티티 GUID 재발급. 배경은 공식 MapleStory 맵에서
수확한 Background 타입 RUID 10종(맵마다 다르게). 몬스터는 기존 4종에서
랜덤 2마리 + 랜덤 위치.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 12:42:19 +09:00
de2fcdbe7c 맵 생성기 추가 (map01 템플릿 복제·배경/몬스터 주입)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 12:19:11 +09:00
874d6792dc 맵 10개 생성 (랜덤 배경+몬스터) 설계 문서 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 12:10:56 +09:00
9bc1163103 Merge pull request '전투 화면 하단 카드 손패 UI + 5번 카드 이미지 적용' (#4) from feature/sts2-combat-layout into main
Reviewed-on: #4
2026-06-06 12:00:08 +09:00
6a049def85 카드 슬롯 이미지 적용 구현 계획 문서 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 11:54:44 +09:00
d1e8723954 5번 카드에 리부트 프로토콜 이미지 카드 적용 (로컬 워크스페이스 스프라이트)
invincible belief.png를 Maker 로컬 워크스페이스 스프라이트로 임포트해
Card5 SpriteGUIRenderer의 ImageRUID로 지정. 클라우드 계정 리소스는
로컬 워크스페이스 플레이에서 로드되지 않아 로컬 임포트 RUID 사용.

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