diff --git a/Docs/Plans/Text_RPG_Plan.md b/Docs/Plans/Text_RPG_Plan.md index edb6ba5..6b9b7bb 100644 --- a/Docs/Plans/Text_RPG_Plan.md +++ b/Docs/Plans/Text_RPG_Plan.md @@ -33,7 +33,8 @@ Text RPG 시스템은 Discord 음성 채널을 던전처럼 활용하는 전투 6. 보상 지급 - 골드 - 아이템 드랍 -- 추후 확장 시 재료, 특수 재화, 경험치 등 추가 가능 +- 경험치 +- 추후 확장 시 재료, 특수 재화 등 추가 가능 7. 전투 종료 후 선택 UI 표시 - 다음 전투 - 휴식 @@ -74,7 +75,8 @@ DB 기준으로 아래 역할의 데이터가 필요합니다. - `userId` - `guildId` -- `level` 또는 성장 단계 +- `level` +- `exp` - `str` - `dex` - `int` @@ -92,11 +94,42 @@ DB 기준으로 아래 역할의 데이터가 필요합니다. 설계 메모: +- `level`과 `exp`는 플레이어 성장의 기본 축으로 사용합니다. +- 다음 레벨까지 필요한 경험치는 저장값 대신 런타임 계산을 권장합니다. - `gold`는 기존 미니게임에서 사용하는 골드 값과 중복 저장하지 않고 같은 값을 사용해야 합니다. - `diamond`는 유료 재화이므로 별도 필드로 분리합니다. - `str`, `dex`, `int`는 빌드 방향을 정하는 핵심 능력치입니다. - 치명타율, 회피율, 속도 같은 파생 수치는 DB에 저장하기보다 런타임 계산을 우선으로 합니다. +### 1-1. 레벨 및 경험치 설계 + +레벨과 경험치는 별도 성장 축으로 명확히 설계하는 것이 좋습니다. + +권장 규칙: + +- 전투 승리 시 `exp` 획득 +- 누적 `exp`가 기준치를 넘으면 레벨업 +- 레벨업 시 `statPoints` 지급 +- 필요 시 최대 HP, 기본 물리 공격력 같은 기본 성장치도 함께 상승 + +경험치 설계 방향 예시: + +- 던전 난이도가 높을수록 경험치 보상 증가 +- 몬스터 등급에 따라 경험치 보상 차등 적용 +- 반복 파밍 방지를 위해 너무 낮은 난이도에서는 경험치 효율 감소 가능 + +초기 버전 권장안: + +- `level`은 1부터 시작 +- `exp`는 누적값 저장 +- 레벨업 필요 경험치는 `balance.json` 또는 공식으로 계산 + +예시 공식: + +- `requiredExp(level) = floor(20 * level^1.35)` + +이 값은 초안일 뿐이며 실제 밸런스는 전투 속도와 성장 체감에 맞춰 조정해야 합니다. + ### 2. 능력치 설계 기본 능력치는 아래 3개를 사용합니다. @@ -124,6 +157,12 @@ DB 기준으로 아래 역할의 데이터가 필요합니다. 이 값들은 기본 능력치와 장비, 버프를 조합해 계산하는 구조를 권장합니다. +정리 기준: + +- `str`, `dex`, `int`는 DB에 저장되는 기본 능력치 +- `물리 공격력`, `마법 공격력`은 전투 계산에 직접 사용되는 핵심 파생 수치 +- 그 외 명중, 회피, 치명타, 속도도 기본 능력치와 장비 상태로부터 계산 + ### 3. 스킬 저장 구조 플레이어 스킬은 아래 두 상태를 구분해야 합니다. @@ -144,8 +183,9 @@ DB 기준으로 아래 역할의 데이터가 필요합니다. 설계 규칙: - 플레이어는 여러 스킬을 배울 수 있지만, 동시에 장착 가능한 스킬 수는 제한합니다. -- 초기 버전은 장착 슬롯 3개 또는 4개 정도가 적절합니다. +- 초기 버전은 장착 스킬 슬롯을 4개로 고정합니다. - 스킬 성능은 스킬 고유 값과 플레이어 능력치 계수를 함께 사용해 계산합니다. +- 전투 중에는 장착한 4개 스킬 중 매 턴마다 무작위로 1개를 선택해 사용합니다. ### 4. 재화 구조 @@ -397,10 +437,17 @@ DB 기준으로 아래 역할의 데이터가 필요합니다. 초기 버전 권장안: - 반자동 전투 -- 장착 스킬을 우선순위 또는 순환 로직으로 사용 +- 장착한 4개 스킬 중 매 턴 무작위로 1개를 선택해 사용 - `dex` 또는 속도 수치에 따라 선공 결정 - 각 스킬은 고유 수치와 능력치 계수로 피해량 계산 +스킬 사용 규칙: + +- 플레이어는 최대 4개의 스킬을 장착 +- 전투 턴이 시작될 때 장착 스킬 4개 중 1개를 랜덤 선택 +- 사용 불가능한 스킬이 있다면 쿨타임/자원 조건을 만족하는 스킬만 후보에 포함 +- 모든 스킬이 사용 불가 상태라면 기본 공격 또는 대기 행동으로 대체 + 초기 피해 공식 예시: - 물리 스킬 피해량 = `basePower + (str * strScaling) + (dex * dexScaling)` @@ -439,6 +486,7 @@ DB 기준으로 아래 역할의 데이터가 필요합니다. - `category` - `stats` - `skills` +- `rewardExp` - `rewardGoldRange` - `dropTableId` - `aiPattern` @@ -460,6 +508,7 @@ DB 기준으로 아래 역할의 데이터가 필요합니다. "speed": 4 }, "skills": ["slime_body_slam"], + "rewardExp": 8, "rewardGoldRange": { "min": 10, "max": 18 @@ -477,6 +526,7 @@ DB 기준으로 아래 역할의 데이터가 필요합니다. 전투 종료 후 아래 보상을 계산합니다. - 골드 보상 +- 경험치 보상 - 아이템 드랍 - 추후 확장 시 재료 드랍 - 낮은 확률의 희귀 보상 @@ -631,6 +681,6 @@ resource/data/rpg/ - 던전 그룹 2~3종 - 전투당 적 1마리 - 전투 종료 후 선택지 3종 -- 골드와 아이템 보상 우선 적용 +- 골드, 경험치, 아이템 보상 우선 적용 초기 범위를 좁게 잡으면 시스템 구조를 빠르게 안정화할 수 있고, 이후 콘텐츠 확장도 훨씬 수월해집니다.