EerieVillage/Assets/Scripts/Progression/ExperienceSystem.cs

34 lines
1.6 KiB
C#
Raw Normal View History

BT12-MVP-A Phase 2-A: 경험치·레벨업 시스템 코드 + JSON 테이블 PD 직접 지시 2026-05-08 — (b) 채택 + JSON 테이블 영역 관리. 신규 영역 (8 파일): - Assets/Resources/Progression/level_xp_table.json — Lv 1~30 EXP 테이블 (balance-designer SOT) - Assets/Scripts/Progression/LevelXPTableLoader.cs — Resources.Load + JsonUtility 캐시 - Assets/Scripts/Progression/PlayerProgression.cs — Level·EXP 진행도 (BT12-Dev v1 PlayerStats와 직무 분리) - Assets/Scripts/Progression/ExperienceSystem.cs — EXP 발급 정적 게이트웨이 - Assets/Scripts/Progression/SkillCardPlaceholder.cs — placeholder ScriptableObject - Assets/Scripts/Progression/SkillCardPlaceholderPool.cs — 카드 풀·Draw3Random - Assets/Scripts/Progression/LevelUpManager.cs — 레벨업 발화·일시정지·UI placeholder (Phase 2-B 통합) 기존 파일 수정 (2 파일): - EnemyDeath.cs Execute 마지막 영역 ExperienceSystem.OnEnemyKilled 호출 - PlayerController.cs Awake PlayerProgression 자동 부착 회귀 위험: - BT5-Dev 발판/몬스터 영역 영향 X (EnemyDeath 호출 마지막·PlayerController 자동 부착) - BT7-Dev VS 순수형 영향 X (Schedule 영역 변경 X) - BT12-Dev v1 영역 충돌 X (PlayerStats 분리·신규 namespace EerieVillage.Progression) Phase 2-A 영역 검증: - 적 처치 → EXP 누적 → Lv 임계점 → Console [LevelUpManager] 영역 출력 확증 - Phase 2-B 영역 = SkillSelectionUI prefab + 5 placeholder asset + Scene 통합
2026-05-08 08:53:39 +00:00
using UnityEngine;
using Platformer.Mechanics;
namespace EerieVillage.Progression
{
/// <summary>
/// EXP 발급 정적 영역. EnemyDeath 영역 단일 호출 통로.
/// 차기 BT12-Dev 영역 P19 XPMultiplier 영역 적용 hook.
/// </summary>
public static class ExperienceSystem
{
docs(BT12-MVP-A Phase 2-B B+C·2-1·2-2 통합 완료): SkillSelectionCanvas Prefab + Scene 통합 + 한글 폰트 + 디자인 정정 산출물 (D안 — 기능 우선·그래픽 디테일 차후): Prefab (신규): - Assets/Prefabs/UI/SkillSelectionCanvas.prefab — 28 GameObject·Canvas Screen Space-Overlay·Sort Order 200 - SkillSelectionPanel (anchor stretch·반투명 검정 RGBA(0,0,0,0.78)) - Header (top stretch 120·베이지 9-slice·"기술 선택" 한글) - CardArea (center 1000x700·HorizontalLayoutGroup·SkillCardSlot ×3) - Footer (bottom stretch 200·"남은 포인트"·"확인" 노랑 버튼) - SkillCardSlot 자식 (TopBanner 갈색·NameText 흰색·IconArea·LevelText/DescriptionText 갈색·ClickArea·HighlightFrame) 한글 폰트: - Assets/Fonts/NotoSansKR-Regular.ttf (Apache 2.0·Google Noto Sans CJK KR) - Assets/Fonts/NotoSansKR-Regular SDF.asset (Multi Atlas·Dynamic mode·atlas 2x 2048) - Assets/TextMesh Pro/Resources/TMP Settings.asset (fallback NotoSansKR 등록) Scene 영역: - [LevelUpManager] GameObject + LevelUpManager·SkillCardPlaceholderPool 영역 - Pool _allCards 5 asset 매핑 (A01·A05·P01·P12·AW01) - LevelUpManager _pool/_ui 영역 매핑 - SkillSelectionCanvas Prefab 인스턴스 영역 SkillSelectionUI 8 field (_rootPanel·_titleText·_slot1·2·3·_pointText·_confirmButton) 영역 매핑 스크립트 (Debug.Log 추가·차후 가드 처리 의무): - ExperienceSystem.cs (DEFAULT_XP_REWARD 5→1 임시·OnEnemyKilled 진단 Log) - PlayerProgression.cs (GainXP·LEVEL UP 진단 Log) - LevelUpManager.cs (HandleLevelUp·_ui.Show 호출 진단 Log) - LevelXPTableLoader.cs (GetXPToNextLevel return 1 임시·기능 테스트 영역) - SkillSelectionUI.cs (Awake·Show 진단 Log + gameObject.SetActive 영역) 회귀 영역 정리: - Phase 2-B B+C MCP 작업 시 SkillSelectionPanel 자식 영역 중복 (Header/CardArea/Footer × 2 + 빈 Panel2) 영역 발견·정리 - Canvas WorldSpace → ScreenSpaceOverlay 정정 (Phase 2-2 manage_components silent fail 영역) - Image color RGBA(1,1,1,1) → RGBA(0,0,0,0.78) 정정 (execute_code 영역 직접 변경) - Player·SpawnPoint 영역 BT5-Dev 영역 정상 (본 PM 임시 변경 영역 stash 보존) 본 PM 자성 (영구 등재 의무): 1. manage_components set_property silent fail (Color·RectTransform·Canvas) — execute_code 영역 직접 변경 + 호출 직후 검증 의무 2. manage_gameobject batch 결과 검증 X — ReadMcpResource 호출 후 자식 영역 정합 검증 의무 3. 본 BT 영역 외 영역 임의 변경 금지 (Player·SpawnPoint·Camera·Tilemap·BT5-Dev) 4. TMP_FontAsset 검증 = characterTable.Count만 단정 X·isMultiAtlasTexturesEnabled·atlasPopulationMode·TryAddCharacters 동작 확인 의무 5. "영역" 어휘 무차별 부착 자제 (feedback_pm_filler_word_overuse) 6. PD 명시 외 임의 추가 (한자) 금지 PD 결정 (D안): - 기능 검증 우선 (한글 표시·카드 UI·레벨업 흐름 정합) - 그래픽 디테일 (PD 첨부 SD UI 정합) = 차기 BT 영역 후속 (Asset Store sprite 영역 또는 디자이너 영역) C49 표준 — Phase 1 dev-team-lead 설계 + Phase 2 본 PM MCP 집행 + Phase 3 본 PM 직접 검증 (단순 반복 카탈로그 v1)
2026-05-09 09:00:27 +00:00
// [BT12-MVP-A 임시] PD 직접 지시 2026-05-09 — 기능 테스트 영역 EXP 보상 1 고정. 차기 BT12-Dev 본격 영역 = enemy_xp_reward.json 분리 + 본 임시 영역 제거 의무.
const int DEFAULT_XP_REWARD = 1;
BT12-MVP-A Phase 2-A: 경험치·레벨업 시스템 코드 + JSON 테이블 PD 직접 지시 2026-05-08 — (b) 채택 + JSON 테이블 영역 관리. 신규 영역 (8 파일): - Assets/Resources/Progression/level_xp_table.json — Lv 1~30 EXP 테이블 (balance-designer SOT) - Assets/Scripts/Progression/LevelXPTableLoader.cs — Resources.Load + JsonUtility 캐시 - Assets/Scripts/Progression/PlayerProgression.cs — Level·EXP 진행도 (BT12-Dev v1 PlayerStats와 직무 분리) - Assets/Scripts/Progression/ExperienceSystem.cs — EXP 발급 정적 게이트웨이 - Assets/Scripts/Progression/SkillCardPlaceholder.cs — placeholder ScriptableObject - Assets/Scripts/Progression/SkillCardPlaceholderPool.cs — 카드 풀·Draw3Random - Assets/Scripts/Progression/LevelUpManager.cs — 레벨업 발화·일시정지·UI placeholder (Phase 2-B 통합) 기존 파일 수정 (2 파일): - EnemyDeath.cs Execute 마지막 영역 ExperienceSystem.OnEnemyKilled 호출 - PlayerController.cs Awake PlayerProgression 자동 부착 회귀 위험: - BT5-Dev 발판/몬스터 영역 영향 X (EnemyDeath 호출 마지막·PlayerController 자동 부착) - BT7-Dev VS 순수형 영향 X (Schedule 영역 변경 X) - BT12-Dev v1 영역 충돌 X (PlayerStats 분리·신규 namespace EerieVillage.Progression) Phase 2-A 영역 검증: - 적 처치 → EXP 누적 → Lv 임계점 → Console [LevelUpManager] 영역 출력 확증 - Phase 2-B 영역 = SkillSelectionUI prefab + 5 placeholder asset + Scene 통합
2026-05-08 08:53:39 +00:00
/// <summary>적 처치 시 호출 — Player 영역 PlayerProgression 갱신.</summary>
public static void OnEnemyKilled(EnemyController enemy, PlayerController player)
{
docs(BT12-MVP-A Phase 2-B B+C·2-1·2-2 통합 완료): SkillSelectionCanvas Prefab + Scene 통합 + 한글 폰트 + 디자인 정정 산출물 (D안 — 기능 우선·그래픽 디테일 차후): Prefab (신규): - Assets/Prefabs/UI/SkillSelectionCanvas.prefab — 28 GameObject·Canvas Screen Space-Overlay·Sort Order 200 - SkillSelectionPanel (anchor stretch·반투명 검정 RGBA(0,0,0,0.78)) - Header (top stretch 120·베이지 9-slice·"기술 선택" 한글) - CardArea (center 1000x700·HorizontalLayoutGroup·SkillCardSlot ×3) - Footer (bottom stretch 200·"남은 포인트"·"확인" 노랑 버튼) - SkillCardSlot 자식 (TopBanner 갈색·NameText 흰색·IconArea·LevelText/DescriptionText 갈색·ClickArea·HighlightFrame) 한글 폰트: - Assets/Fonts/NotoSansKR-Regular.ttf (Apache 2.0·Google Noto Sans CJK KR) - Assets/Fonts/NotoSansKR-Regular SDF.asset (Multi Atlas·Dynamic mode·atlas 2x 2048) - Assets/TextMesh Pro/Resources/TMP Settings.asset (fallback NotoSansKR 등록) Scene 영역: - [LevelUpManager] GameObject + LevelUpManager·SkillCardPlaceholderPool 영역 - Pool _allCards 5 asset 매핑 (A01·A05·P01·P12·AW01) - LevelUpManager _pool/_ui 영역 매핑 - SkillSelectionCanvas Prefab 인스턴스 영역 SkillSelectionUI 8 field (_rootPanel·_titleText·_slot1·2·3·_pointText·_confirmButton) 영역 매핑 스크립트 (Debug.Log 추가·차후 가드 처리 의무): - ExperienceSystem.cs (DEFAULT_XP_REWARD 5→1 임시·OnEnemyKilled 진단 Log) - PlayerProgression.cs (GainXP·LEVEL UP 진단 Log) - LevelUpManager.cs (HandleLevelUp·_ui.Show 호출 진단 Log) - LevelXPTableLoader.cs (GetXPToNextLevel return 1 임시·기능 테스트 영역) - SkillSelectionUI.cs (Awake·Show 진단 Log + gameObject.SetActive 영역) 회귀 영역 정리: - Phase 2-B B+C MCP 작업 시 SkillSelectionPanel 자식 영역 중복 (Header/CardArea/Footer × 2 + 빈 Panel2) 영역 발견·정리 - Canvas WorldSpace → ScreenSpaceOverlay 정정 (Phase 2-2 manage_components silent fail 영역) - Image color RGBA(1,1,1,1) → RGBA(0,0,0,0.78) 정정 (execute_code 영역 직접 변경) - Player·SpawnPoint 영역 BT5-Dev 영역 정상 (본 PM 임시 변경 영역 stash 보존) 본 PM 자성 (영구 등재 의무): 1. manage_components set_property silent fail (Color·RectTransform·Canvas) — execute_code 영역 직접 변경 + 호출 직후 검증 의무 2. manage_gameobject batch 결과 검증 X — ReadMcpResource 호출 후 자식 영역 정합 검증 의무 3. 본 BT 영역 외 영역 임의 변경 금지 (Player·SpawnPoint·Camera·Tilemap·BT5-Dev) 4. TMP_FontAsset 검증 = characterTable.Count만 단정 X·isMultiAtlasTexturesEnabled·atlasPopulationMode·TryAddCharacters 동작 확인 의무 5. "영역" 어휘 무차별 부착 자제 (feedback_pm_filler_word_overuse) 6. PD 명시 외 임의 추가 (한자) 금지 PD 결정 (D안): - 기능 검증 우선 (한글 표시·카드 UI·레벨업 흐름 정합) - 그래픽 디테일 (PD 첨부 SD UI 정합) = 차기 BT 영역 후속 (Asset Store sprite 영역 또는 디자이너 영역) C49 표준 — Phase 1 dev-team-lead 설계 + Phase 2 본 PM MCP 집행 + Phase 3 본 PM 직접 검증 (단순 반복 카탈로그 v1)
2026-05-09 09:00:27 +00:00
Debug.Log($"[ExperienceSystem] OnEnemyKilled — player={(player == null ? "NULL" : player.name)} enemy={(enemy == null ? "NULL" : enemy.name)}");
if (player == null) { Debug.LogWarning("[ExperienceSystem] player == null → EXP 발급 X"); return; }
BT12-MVP-A Phase 2-A: 경험치·레벨업 시스템 코드 + JSON 테이블 PD 직접 지시 2026-05-08 — (b) 채택 + JSON 테이블 영역 관리. 신규 영역 (8 파일): - Assets/Resources/Progression/level_xp_table.json — Lv 1~30 EXP 테이블 (balance-designer SOT) - Assets/Scripts/Progression/LevelXPTableLoader.cs — Resources.Load + JsonUtility 캐시 - Assets/Scripts/Progression/PlayerProgression.cs — Level·EXP 진행도 (BT12-Dev v1 PlayerStats와 직무 분리) - Assets/Scripts/Progression/ExperienceSystem.cs — EXP 발급 정적 게이트웨이 - Assets/Scripts/Progression/SkillCardPlaceholder.cs — placeholder ScriptableObject - Assets/Scripts/Progression/SkillCardPlaceholderPool.cs — 카드 풀·Draw3Random - Assets/Scripts/Progression/LevelUpManager.cs — 레벨업 발화·일시정지·UI placeholder (Phase 2-B 통합) 기존 파일 수정 (2 파일): - EnemyDeath.cs Execute 마지막 영역 ExperienceSystem.OnEnemyKilled 호출 - PlayerController.cs Awake PlayerProgression 자동 부착 회귀 위험: - BT5-Dev 발판/몬스터 영역 영향 X (EnemyDeath 호출 마지막·PlayerController 자동 부착) - BT7-Dev VS 순수형 영향 X (Schedule 영역 변경 X) - BT12-Dev v1 영역 충돌 X (PlayerStats 분리·신규 namespace EerieVillage.Progression) Phase 2-A 영역 검증: - 적 처치 → EXP 누적 → Lv 임계점 → Console [LevelUpManager] 영역 출력 확증 - Phase 2-B 영역 = SkillSelectionUI prefab + 5 placeholder asset + Scene 통합
2026-05-08 08:53:39 +00:00
var prog = player.GetComponent<PlayerProgression>();
docs(BT12-MVP-A Phase 2-B B+C·2-1·2-2 통합 완료): SkillSelectionCanvas Prefab + Scene 통합 + 한글 폰트 + 디자인 정정 산출물 (D안 — 기능 우선·그래픽 디테일 차후): Prefab (신규): - Assets/Prefabs/UI/SkillSelectionCanvas.prefab — 28 GameObject·Canvas Screen Space-Overlay·Sort Order 200 - SkillSelectionPanel (anchor stretch·반투명 검정 RGBA(0,0,0,0.78)) - Header (top stretch 120·베이지 9-slice·"기술 선택" 한글) - CardArea (center 1000x700·HorizontalLayoutGroup·SkillCardSlot ×3) - Footer (bottom stretch 200·"남은 포인트"·"확인" 노랑 버튼) - SkillCardSlot 자식 (TopBanner 갈색·NameText 흰색·IconArea·LevelText/DescriptionText 갈색·ClickArea·HighlightFrame) 한글 폰트: - Assets/Fonts/NotoSansKR-Regular.ttf (Apache 2.0·Google Noto Sans CJK KR) - Assets/Fonts/NotoSansKR-Regular SDF.asset (Multi Atlas·Dynamic mode·atlas 2x 2048) - Assets/TextMesh Pro/Resources/TMP Settings.asset (fallback NotoSansKR 등록) Scene 영역: - [LevelUpManager] GameObject + LevelUpManager·SkillCardPlaceholderPool 영역 - Pool _allCards 5 asset 매핑 (A01·A05·P01·P12·AW01) - LevelUpManager _pool/_ui 영역 매핑 - SkillSelectionCanvas Prefab 인스턴스 영역 SkillSelectionUI 8 field (_rootPanel·_titleText·_slot1·2·3·_pointText·_confirmButton) 영역 매핑 스크립트 (Debug.Log 추가·차후 가드 처리 의무): - ExperienceSystem.cs (DEFAULT_XP_REWARD 5→1 임시·OnEnemyKilled 진단 Log) - PlayerProgression.cs (GainXP·LEVEL UP 진단 Log) - LevelUpManager.cs (HandleLevelUp·_ui.Show 호출 진단 Log) - LevelXPTableLoader.cs (GetXPToNextLevel return 1 임시·기능 테스트 영역) - SkillSelectionUI.cs (Awake·Show 진단 Log + gameObject.SetActive 영역) 회귀 영역 정리: - Phase 2-B B+C MCP 작업 시 SkillSelectionPanel 자식 영역 중복 (Header/CardArea/Footer × 2 + 빈 Panel2) 영역 발견·정리 - Canvas WorldSpace → ScreenSpaceOverlay 정정 (Phase 2-2 manage_components silent fail 영역) - Image color RGBA(1,1,1,1) → RGBA(0,0,0,0.78) 정정 (execute_code 영역 직접 변경) - Player·SpawnPoint 영역 BT5-Dev 영역 정상 (본 PM 임시 변경 영역 stash 보존) 본 PM 자성 (영구 등재 의무): 1. manage_components set_property silent fail (Color·RectTransform·Canvas) — execute_code 영역 직접 변경 + 호출 직후 검증 의무 2. manage_gameobject batch 결과 검증 X — ReadMcpResource 호출 후 자식 영역 정합 검증 의무 3. 본 BT 영역 외 영역 임의 변경 금지 (Player·SpawnPoint·Camera·Tilemap·BT5-Dev) 4. TMP_FontAsset 검증 = characterTable.Count만 단정 X·isMultiAtlasTexturesEnabled·atlasPopulationMode·TryAddCharacters 동작 확인 의무 5. "영역" 어휘 무차별 부착 자제 (feedback_pm_filler_word_overuse) 6. PD 명시 외 임의 추가 (한자) 금지 PD 결정 (D안): - 기능 검증 우선 (한글 표시·카드 UI·레벨업 흐름 정합) - 그래픽 디테일 (PD 첨부 SD UI 정합) = 차기 BT 영역 후속 (Asset Store sprite 영역 또는 디자이너 영역) C49 표준 — Phase 1 dev-team-lead 설계 + Phase 2 본 PM MCP 집행 + Phase 3 본 PM 직접 검증 (단순 반복 카탈로그 v1)
2026-05-09 09:00:27 +00:00
if (prog == null) { Debug.LogWarning("[ExperienceSystem] PlayerProgression == null → 자동 부착 영역 실패 가능"); return; }
BT12-MVP-A Phase 2-A: 경험치·레벨업 시스템 코드 + JSON 테이블 PD 직접 지시 2026-05-08 — (b) 채택 + JSON 테이블 영역 관리. 신규 영역 (8 파일): - Assets/Resources/Progression/level_xp_table.json — Lv 1~30 EXP 테이블 (balance-designer SOT) - Assets/Scripts/Progression/LevelXPTableLoader.cs — Resources.Load + JsonUtility 캐시 - Assets/Scripts/Progression/PlayerProgression.cs — Level·EXP 진행도 (BT12-Dev v1 PlayerStats와 직무 분리) - Assets/Scripts/Progression/ExperienceSystem.cs — EXP 발급 정적 게이트웨이 - Assets/Scripts/Progression/SkillCardPlaceholder.cs — placeholder ScriptableObject - Assets/Scripts/Progression/SkillCardPlaceholderPool.cs — 카드 풀·Draw3Random - Assets/Scripts/Progression/LevelUpManager.cs — 레벨업 발화·일시정지·UI placeholder (Phase 2-B 통합) 기존 파일 수정 (2 파일): - EnemyDeath.cs Execute 마지막 영역 ExperienceSystem.OnEnemyKilled 호출 - PlayerController.cs Awake PlayerProgression 자동 부착 회귀 위험: - BT5-Dev 발판/몬스터 영역 영향 X (EnemyDeath 호출 마지막·PlayerController 자동 부착) - BT7-Dev VS 순수형 영향 X (Schedule 영역 변경 X) - BT12-Dev v1 영역 충돌 X (PlayerStats 분리·신규 namespace EerieVillage.Progression) Phase 2-A 영역 검증: - 적 처치 → EXP 누적 → Lv 임계점 → Console [LevelUpManager] 영역 출력 확증 - Phase 2-B 영역 = SkillSelectionUI prefab + 5 placeholder asset + Scene 통합
2026-05-08 08:53:39 +00:00
int xp = ComputeXPReward(enemy);
docs(BT12-MVP-A Phase 2-B B+C·2-1·2-2 통합 완료): SkillSelectionCanvas Prefab + Scene 통합 + 한글 폰트 + 디자인 정정 산출물 (D안 — 기능 우선·그래픽 디테일 차후): Prefab (신규): - Assets/Prefabs/UI/SkillSelectionCanvas.prefab — 28 GameObject·Canvas Screen Space-Overlay·Sort Order 200 - SkillSelectionPanel (anchor stretch·반투명 검정 RGBA(0,0,0,0.78)) - Header (top stretch 120·베이지 9-slice·"기술 선택" 한글) - CardArea (center 1000x700·HorizontalLayoutGroup·SkillCardSlot ×3) - Footer (bottom stretch 200·"남은 포인트"·"확인" 노랑 버튼) - SkillCardSlot 자식 (TopBanner 갈색·NameText 흰색·IconArea·LevelText/DescriptionText 갈색·ClickArea·HighlightFrame) 한글 폰트: - Assets/Fonts/NotoSansKR-Regular.ttf (Apache 2.0·Google Noto Sans CJK KR) - Assets/Fonts/NotoSansKR-Regular SDF.asset (Multi Atlas·Dynamic mode·atlas 2x 2048) - Assets/TextMesh Pro/Resources/TMP Settings.asset (fallback NotoSansKR 등록) Scene 영역: - [LevelUpManager] GameObject + LevelUpManager·SkillCardPlaceholderPool 영역 - Pool _allCards 5 asset 매핑 (A01·A05·P01·P12·AW01) - LevelUpManager _pool/_ui 영역 매핑 - SkillSelectionCanvas Prefab 인스턴스 영역 SkillSelectionUI 8 field (_rootPanel·_titleText·_slot1·2·3·_pointText·_confirmButton) 영역 매핑 스크립트 (Debug.Log 추가·차후 가드 처리 의무): - ExperienceSystem.cs (DEFAULT_XP_REWARD 5→1 임시·OnEnemyKilled 진단 Log) - PlayerProgression.cs (GainXP·LEVEL UP 진단 Log) - LevelUpManager.cs (HandleLevelUp·_ui.Show 호출 진단 Log) - LevelXPTableLoader.cs (GetXPToNextLevel return 1 임시·기능 테스트 영역) - SkillSelectionUI.cs (Awake·Show 진단 Log + gameObject.SetActive 영역) 회귀 영역 정리: - Phase 2-B B+C MCP 작업 시 SkillSelectionPanel 자식 영역 중복 (Header/CardArea/Footer × 2 + 빈 Panel2) 영역 발견·정리 - Canvas WorldSpace → ScreenSpaceOverlay 정정 (Phase 2-2 manage_components silent fail 영역) - Image color RGBA(1,1,1,1) → RGBA(0,0,0,0.78) 정정 (execute_code 영역 직접 변경) - Player·SpawnPoint 영역 BT5-Dev 영역 정상 (본 PM 임시 변경 영역 stash 보존) 본 PM 자성 (영구 등재 의무): 1. manage_components set_property silent fail (Color·RectTransform·Canvas) — execute_code 영역 직접 변경 + 호출 직후 검증 의무 2. manage_gameobject batch 결과 검증 X — ReadMcpResource 호출 후 자식 영역 정합 검증 의무 3. 본 BT 영역 외 영역 임의 변경 금지 (Player·SpawnPoint·Camera·Tilemap·BT5-Dev) 4. TMP_FontAsset 검증 = characterTable.Count만 단정 X·isMultiAtlasTexturesEnabled·atlasPopulationMode·TryAddCharacters 동작 확인 의무 5. "영역" 어휘 무차별 부착 자제 (feedback_pm_filler_word_overuse) 6. PD 명시 외 임의 추가 (한자) 금지 PD 결정 (D안): - 기능 검증 우선 (한글 표시·카드 UI·레벨업 흐름 정합) - 그래픽 디테일 (PD 첨부 SD UI 정합) = 차기 BT 영역 후속 (Asset Store sprite 영역 또는 디자이너 영역) C49 표준 — Phase 1 dev-team-lead 설계 + Phase 2 본 PM MCP 집행 + Phase 3 본 PM 직접 검증 (단순 반복 카탈로그 v1)
2026-05-09 09:00:27 +00:00
Debug.Log($"[ExperienceSystem] GainXP({xp}) 호출 → PlayerProgression");
BT12-MVP-A Phase 2-A: 경험치·레벨업 시스템 코드 + JSON 테이블 PD 직접 지시 2026-05-08 — (b) 채택 + JSON 테이블 영역 관리. 신규 영역 (8 파일): - Assets/Resources/Progression/level_xp_table.json — Lv 1~30 EXP 테이블 (balance-designer SOT) - Assets/Scripts/Progression/LevelXPTableLoader.cs — Resources.Load + JsonUtility 캐시 - Assets/Scripts/Progression/PlayerProgression.cs — Level·EXP 진행도 (BT12-Dev v1 PlayerStats와 직무 분리) - Assets/Scripts/Progression/ExperienceSystem.cs — EXP 발급 정적 게이트웨이 - Assets/Scripts/Progression/SkillCardPlaceholder.cs — placeholder ScriptableObject - Assets/Scripts/Progression/SkillCardPlaceholderPool.cs — 카드 풀·Draw3Random - Assets/Scripts/Progression/LevelUpManager.cs — 레벨업 발화·일시정지·UI placeholder (Phase 2-B 통합) 기존 파일 수정 (2 파일): - EnemyDeath.cs Execute 마지막 영역 ExperienceSystem.OnEnemyKilled 호출 - PlayerController.cs Awake PlayerProgression 자동 부착 회귀 위험: - BT5-Dev 발판/몬스터 영역 영향 X (EnemyDeath 호출 마지막·PlayerController 자동 부착) - BT7-Dev VS 순수형 영향 X (Schedule 영역 변경 X) - BT12-Dev v1 영역 충돌 X (PlayerStats 분리·신규 namespace EerieVillage.Progression) Phase 2-A 영역 검증: - 적 처치 → EXP 누적 → Lv 임계점 → Console [LevelUpManager] 영역 출력 확증 - Phase 2-B 영역 = SkillSelectionUI prefab + 5 placeholder asset + Scene 통합
2026-05-08 08:53:39 +00:00
prog.GainXP(xp);
}
/// <summary>placeholder — 적 종류·등급별 XP 영역 차기 BT12-Dev 영역 (enemy_xp_reward.json 분리).</summary>
static int ComputeXPReward(EnemyController enemy)
{
return DEFAULT_XP_REWARD;
}
}
}