DOCS/GPT_docs/05_스탯_레벨업_수치_모델.md
happybell80 14ca47ed6e 로빙(RO-BEING) 프로젝트 상세 문서 20개 추가
- 비전 및 철학: 존재형 AI 에이전트 개념
- 윤리 원칙과 안전 기준
- 사용자 시나리오 및 유즈케이스
- 게임화 요소 (레벨업, 스탯, 스킬)
- 기술 아키텍처 (기억 시스템, 감정 모델, DB 설계)
- 멀티 에이전트 협업 구조
- DID 기반 신원 체계
- 장기 로드맵 (1년, 3년 비전)
2025-08-18 12:25:55 +09:00

330 lines
9.4 KiB
Markdown

# 스탯·레벨업 수치 모델
## 경험치 시스템 설계
### 기본 경험치 공식
```python
def calculate_exp_gain(action_type, complexity, outcome):
"""
경험치 획득 계산
Parameters:
- action_type: 행동 유형 (routine, problem_solving, creative, strategic)
- complexity: 복잡도 (1-10)
- outcome: 결과 (success, partial, failure)
"""
base_exp = {
'routine': 10,
'problem_solving': 50,
'creative': 100,
'strategic': 200
}
outcome_multiplier = {
'success': 1.0,
'partial': 0.6,
'failure': 0.3 # 실패해도 학습
}
# 복잡도 보너스: 지수 함수 적용
complexity_bonus = 1 + (complexity - 1) * 0.2
# 최종 경험치
exp = base_exp[action_type] * outcome_multiplier[outcome] * complexity_bonus
# 연속 성공 보너스
if consecutive_success > 5:
exp *= 1.5
return int(exp)
```
### 레벨업 필요 경험치 곡선
```python
def exp_required_for_level(level):
"""
레벨업에 필요한 누적 경험치
로그 성장 곡선 적용 (초반 빠름, 후반 느림)
"""
if level <= 1:
return 0
# 기본 공식: 100 * level^1.5 + 500 * (level - 1)
base = 100 * (level ** 1.5)
linear = 500 * (level - 1)
# 10레벨마다 급증 구간
milestone_bonus = (level // 10) * 5000
return int(base + linear + milestone_bonus)
# 레벨별 필요 경험치 표
level_exp_table = {
1: 0,
5: 1500,
10: 8000,
15: 20000,
20: 40000,
25: 70000,
30: 115000,
40: 250000,
50: 500000
}
```
## 스탯 시스템
### 6대 핵심 스탯
| 스탯 | 설명 | 초기값 | 최대값 | 성장 방식 |
|------|------|--------|--------|-----------|
| 지능(INT) | 문제 해결, 분석 능력 | 10 | 100 | 복잡한 문제 해결 시 상승 |
| 지혜(WIS) | 판단력, 통찰력 | 10 | 100 | 올바른 조언 제공 시 상승 |
| 공감(EMP) | 감정 이해, 소통 능력 | 10 | 100 | 감정적 지원 성공 시 상승 |
| 창의(CRE) | 혁신적 해결책 제시 | 10 | 100 | 독창적 아이디어 채택 시 상승 |
| 신속(AGI) | 처리 속도, 반응 시간 | 10 | 100 | 시간 제약 작업 완료 시 상승 |
| 신뢰(TRU) | 사용자와의 신뢰도 | 10 | 100 | 지속적 성공, 약속 이행 시 상승 |
### 스탯 성장 공식
```python
class StatGrowth:
def __init__(self):
self.stats = {
'INT': 10, 'WIS': 10, 'EMP': 10,
'CRE': 10, 'AGI': 10, 'TRU': 10
}
self.growth_rate = 0.1 # 기본 성장률
def gain_stat_exp(self, stat_type, base_points):
"""스탯 경험치 획득"""
current = self.stats[stat_type]
# 높은 스탯일수록 성장 어려움 (Diminishing Returns)
difficulty_modifier = 1 / (1 + current / 50)
# 실제 증가량
increase = base_points * self.growth_rate * difficulty_modifier
# 소수점 누적 시스템 (0.1씩 쌓여서 1이 되면 스탯 상승)
return increase
def apply_synergy_bonus(self):
"""스탯 간 시너지 효과"""
# INT + WIS 시너지: 전략적 사고
if self.stats['INT'] >= 30 and self.stats['WIS'] >= 30:
return {'strategic_thinking': 1.2}
# EMP + CRE 시너지: 인간적 창의성
if self.stats['EMP'] >= 40 and self.stats['CRE'] >= 40:
return {'human_creativity': 1.3}
# AGI + TRU 시너지: 신속한 신뢰 구축
if self.stats['AGI'] >= 35 and self.stats['TRU'] >= 35:
return {'rapid_trust': 1.25}
return {}
```
## 레벨별 능력치 해금
### 레벨 마일스톤과 보상
| 레벨 | 해금 능력 | 스탯 보너스 | 특수 효과 |
|------|-----------|------------|-----------|
| 1 | 기본 대화 | - | 튜토리얼 모드 |
| 5 | 일정 관리 | 모든 스탯 +2 | 자동 리마인더 |
| 10 | 이메일 자동화 | INT +5 | 스팸 필터링 99% |
| 15 | 감정 인식 | EMP +8 | 스트레스 감지 |
| 20 | 전략 수립 | WIS +10 | 의사결정 트리 |
| 25 | 창의적 제안 | CRE +10 | 아이디어 생성기 |
| 30 | 멀티태스킹 | AGI +15 | 병렬 처리 3개 |
| 40 | 예측 분석 | INT +20 | 미래 시나리오 |
| 50 | 완전 자율 | 모든 스탯 +25 | 독립 에이전트 |
### 스킬 포인트 시스템
```python
def calculate_skill_points(level):
"""레벨업 시 획득 스킬 포인트"""
base_points = 3
# 5레벨마다 추가 포인트
bonus_points = level // 5
# 특별 레벨 보너스
special_levels = {10: 5, 20: 10, 30: 15, 50: 30}
if level in special_levels:
bonus_points += special_levels[level]
return base_points + bonus_points
# 스킬 트리 예시
skill_tree = {
'analysis': {
'basic': {'cost': 1, 'req_level': 1, 'req_stat': {'INT': 10}},
'advanced': {'cost': 5, 'req_level': 10, 'req_stat': {'INT': 30}},
'expert': {'cost': 10, 'req_level': 20, 'req_stat': {'INT': 50}}
},
'communication': {
'basic': {'cost': 1, 'req_level': 1, 'req_stat': {'EMP': 10}},
'persuasion': {'cost': 7, 'req_level': 15, 'req_stat': {'EMP': 40, 'WIS': 30}},
'negotiation': {'cost': 15, 'req_level': 25, 'req_stat': {'EMP': 60, 'WIS': 50}}
}
}
```
## 경험치 분배 실제 사례
### 일일 활동 경험치 예시
```python
daily_activities = [
{
'action': '아침 브리핑 제공',
'type': 'routine',
'complexity': 3,
'outcome': 'success',
'exp_gained': 36,
'stat_bonus': {'INT': 0.1, 'AGI': 0.2}
},
{
'action': '투자 미팅 실시간 지원',
'type': 'problem_solving',
'complexity': 8,
'outcome': 'success',
'exp_gained': 140,
'stat_bonus': {'WIS': 0.5, 'AGI': 0.3}
},
{
'action': '시스템 장애 대응',
'type': 'problem_solving',
'complexity': 9,
'outcome': 'partial',
'exp_gained': 102,
'stat_bonus': {'AGI': 0.8, 'TRU': -0.2}
},
{
'action': '차별화 전략 제안',
'type': 'creative',
'complexity': 7,
'outcome': 'success',
'exp_gained': 240,
'stat_bonus': {'CRE': 1.0, 'WIS': 0.4}
}
]
# 일일 총 경험치: 518
# 예상 레벨업 시간: 레벨 10까지 약 15일
```
### 레벨업 시뮬레이션
```python
def simulate_growth(days=30, daily_avg_exp=500):
"""30일 성장 시뮬레이션"""
current_level = 1
current_exp = 0
stat_growth = StatGrowth()
for day in range(1, days + 1):
# 일일 경험치 획득 (변동성 포함)
daily_exp = daily_avg_exp * random.uniform(0.7, 1.3)
current_exp += daily_exp
# 레벨업 체크
while current_exp >= exp_required_for_level(current_level + 1):
current_level += 1
print(f"Day {day}: Level UP! → Level {current_level}")
# 스킬 포인트 획득
skill_points = calculate_skill_points(current_level)
# 자동 스탯 상승
for stat in stat_growth.stats:
stat_growth.stats[stat] += random.uniform(0.5, 1.5)
return {
'final_level': current_level,
'total_exp': current_exp,
'final_stats': stat_growth.stats
}
# 시뮬레이션 결과 예시
# 30일 후: Level 12
# 90일 후: Level 23
# 180일 후: Level 35
# 365일 후: Level 47
```
## 밸런싱 고려사항
### 성장 곡선 조정 파라미터
```python
balancing_config = {
'exp_multiplier': {
'global': 1.0, # 전체 경험치 배율
'weekend': 1.5, # 주말 보너스
'first_week': 2.0, # 신규 사용자 부스트
},
'stat_caps': {
'daily_max': 5, # 일일 스탯 상승 한계
'soft_cap': 70, # 이후 성장률 50% 감소
'hard_cap': 100 # 절대 상한선
},
'level_scaling': {
'content_difficulty': 'dynamic', # 레벨에 맞춰 난이도 조정
'reward_scaling': 'logarithmic' # 보상 증가율 로그 스케일
}
}
```
### 경험치 디플레이션 방지
```python
def prevent_exp_inflation(level, base_exp):
"""높은 레벨에서 경험치 인플레이션 방지"""
if level <= 20:
return base_exp
elif level <= 40:
return base_exp * 0.8
else:
return base_exp * 0.6
```
## 사용자 피드백 기반 조정
### 적응형 난이도 시스템
```python
class AdaptiveDifficulty:
def __init__(self):
self.user_performance = []
self.optimal_success_rate = 0.7
def adjust_complexity(self, recent_outcomes):
"""최근 성과 기반 난이도 자동 조정"""
success_rate = sum(1 for o in recent_outcomes if o == 'success') / len(recent_outcomes)
if success_rate > 0.85:
return 'increase_complexity'
elif success_rate < 0.55:
return 'decrease_complexity'
else:
return 'maintain'
def personalized_exp_curve(self, user_type):
"""사용자 유형별 맞춤 경험치 곡선"""
curves = {
'casual': lambda x: x * 1.2, # 캐주얼 유저: 빠른 성장
'regular': lambda x: x * 1.0, # 일반 유저: 표준
'hardcore': lambda x: x * 0.8 # 하드코어 유저: 도전적
}
return curves[user_type]
```