AI 팀으로 마크 서버 만들기#3숫자 ×10, 12시간 경험치 곡선, 클래스 6종 시뮬레이션! 📊
한눈에 보기
'데미지도 체력도 시원시원하게' 한마디를 실제 숫자로 바꾸는 과정이에요. 모든 설정을 10배로 올리되 운영자가 바꾼 값은 건드리지 않는 1회 이관, 엑셀로 고치는 경험치 표, 그리고 '기본무기가 너무 세다'는 의견을 시뮬레이션으로 따져 보니 원인이 공식이 아니라 무기 공속이었던 이야기.
- Paper 1.21.11 · 서버 설정 파일 · 2026-09-28~30 실제 적용·시뮬레이션
- ×10 이관은 '옛 기본값 그대로인 항목만' 한 번만 바꾸고 number-scale: 10 을 기록 — 운영자가 손댄 값은 보존
- 경험치 곡선 목표: 1→30레벨 약 12시간, 초반은 빠르게 · 구간마다 평탄 구간
- 클래스 DPS 차이 ±40%의 주원인은 공식이 아니라 무기 공격 속도 차이(도끼 0.8회/초 vs 검 1.6회/초)
목차9개 항목
안녕하세요! Mojangcam입니다 😎
지난 #2에서는 플러그인 구조와 1000029 데미지 사건을 다뤘어요. 이번 편은 게임의 숫자 이야기예요.
RPG 서버를 만들다 보면 이런 말이 나와요.
"데미지도 시원시원하게 들어가고, 체력도 시원시원하게 늘었으면 좋겠어요."
좋은 방향인데, 이걸 실제 숫자로 바꾸는 건 꽤 까다로워요. 이번 편에서는
- 🔢 체력·데미지를 한꺼번에 10배로 키운 방법
- 📈 "30레벨까지 12시간" 경험치 곡선 만들기
- ⚖️ "기본무기가 너무 세다"는 의견을 시뮬레이션으로 따져 본 결과
를 정리할게요. 숫자를 정하는 건 기획팀 AI, 코드에 넣는 건 각 개발팀, 고르는 건 사람이에요.
📌 1단계 - 숫자 ×10: "보이는 숫자"를 키우기 🔢
무엇을 10배로 하나
| 10배로 키움 (평면값) | 그대로 둠 (비율·기타) |
|---|---|
| 체력, 공격력, 마법 공격력 | % 옵션, 배율 |
| 무기 기본 피해, 평면 추가 피해 | 방어력 (비율 공식이라) |
| 물약 고정 회복량, 몹 체력·피해 | 마나, 경험치, 금화 |
방어력을 10배로 하면 안 되는 이유가 재밌어요. 방어 공식이 방어 / (방어 + 100)이라, 방어 25(20% 감소)를 250으로 만들면 71% 감소가 돼 버려요. 비율 공식에 들어가는 값은 건드리면 밸런스가 깨져요.
이미 돌아가는 서버에서 어떻게 바꾸나
제일 어려운 건 이미 설정 파일이 있는 서버였어요. 운영자가 게임 안에서 몹 체력을 직접 바꿔 놨을 수도 있거든요. 그래서 모든 모듈이 같은 규칙으로 딱 한 번 이관하게 했어요.
# 각 모듈이 서버를 켤 때 한 번 하는 일 (실제는 Java, 흐름만 파이썬으로)
if config.get("number-scale", 1) != 10:
backup(config_file) # 1) 바꾸기 전 백업
for key, old_default in OLD_DEFAULTS.items():
if config[key] == old_default: # 2) 옛 기본값 "그대로"인 것만
config[key] = old_default * 10 # 10배로
else:
log(f"{key} 는 운영자가 바꾼 값이라 그대로 둠")
config["number-scale"] = 10 # 3) 표시 → 다음부터는 다시 안 함
save(config)하나씩 뜯어볼게요 💡
- number-scale 기록 : 서버를 두 번 켜도 100배가 되지 않게 해요.
- 옛 기본값만 변경 : 운영자가 손댄 값은 의도가 있다고 보고 남겨 둬요. 대신 로그에 목록을 남겨서 사람이 직접 보게 해요.
- 백업 먼저 : 이관이 잘못돼도 되돌릴 수 있어요.
실제로 서버를 한 번 재시작하니 core·전투·아이템·레벨·몹 모듈이 전부 로그에 "×10 이관"을 남겼고, 오류는 0개였어요.
같이 정한 보정도 있어요.
| 항목 | 값 |
|---|---|
| 치명타 배율 | ×1.5 → ×2.0 |
| 일반 몹 체력 | 등급 배수 1.0 → 0.9 (평타 4대에 잡히게) |
| 몹이 나보다 레벨이 높을 때 피해 | 차이 ≤2: 100% · 3: 80% · 4: 50% · 5 이상: 고정 1 |
| 막타 경험치 상한 | 내 레벨 +4 몹의 경험치까지 (고레벨 몹 막타 먹기 방지) |
📌 2단계 - 경험치 곡선: 1→30레벨 12시간 📈
목표는 1→30레벨 약 12시간, 그리고 초반은 빠르게였어요. 초반이 느리면 사람들이 떠나거든요.
처음엔 매끈한 곡선으로 만들었는데, 기획팀 AI에게 "구간마다 느낌이 다른 곡선"을 다시 요청했어요. 결과는 이런 모양이에요.
| 구간 | 모양 | 의도 |
|---|---|---|
| Lv 1~9 | 사람이 직접 정한 값, 아주 빠름 | 첫 30분 안에 레벨업 여러 번 |
| Lv 10~14 | 평탄 구간 | 새 사냥터 적응 |
| Lv 15~29 | 레벨당 ×1.2 수준으로 상승 | 성장 체감 |
| Lv 30 이후 | 5레벨마다 평탄 + 배율이 점점 줄어듦 (×1.08 → ×1.075 → …) | 끝없이 가팔라지지 않게 |
- 결과: 1→30 누적 12.0시간, 총 경험치 281,150
- 파일은
exp_table.csv하나라 엑셀로 열어서 고치고/리로드 level이면 바로 반영돼요
여기에 레벨 차이 경험치 패널티를 붙였어요. 나보다 한참 낮은 몹을 잡으면 경험치가 줄어요.
| 몹이 나보다 낮은 정도 | 0~3 | 4 | 5 | 6 | 7 | 8 | 9 | 10+ |
|---|---|---|---|---|---|---|---|---|
| 받는 경험치 | 100% | 90% | 60% | 45% | 30% | 20% | 15% | 10% |
📌 3단계 - "기본무기가 너무 세다" → 시뮬레이션 ⚖️
테스트하던 사람들 사이에서 "클래스 기본무기가 너무 강하다" 는 의견이 나왔어요. 원하는 방향은 이랬어요.
무기 피해는 초반에 세고, 후반엔 공격력·관통·클래스 스탯이 훨씬 더 중요해졌으면.
팀장이 공식 초안을 만들고, 기획팀 AI에게 클래스 6종 × 레벨 7단계 × 스탯 배분 2가지 × 공식 3가지 = 252가지를 계산하게 했어요.
제안한 공식 (초안)
# 공격력: 레벨·장비·스탯이 쌓이는 쪽
ATK = (base_attack + growth_attack(level) + gear_flat_attack) \
* (1 + main_stat * 0.005 + sub_stat * 0.002)
# 기준 피해: 무기 피해는 스탯 영향을 받지 않음
B = weapon_damage + ATK
# 방어: 레벨이 오르면 같은 방어력의 효율이 조금씩 떨어짐
effective_def = max(0, defense - flat_pen) * (1 - pct_pen) # 관통은 고정 먼저, 그다음 %
K = 100 + attacker_level * 5
damage = B * K / (K + effective_def)시뮬레이션 결과
| 항목 | 지금 공식 | 공식만 바꿈 | 공식 + 공속 맞춤(추천) |
|---|---|---|---|
| 무기가 차지하는 비중 Lv1 → Lv30 | 100% → 14~21% | 45 |
58% → 7% |
| 클래스 간 DPS 차이 | −41% ~ +43% | −43% ~ +44% | −7% ~ +11% |
| 평타로 일반 몹 잡는 타수 | Lv15에 5대 | Lv15에 5대 | 전 레벨 4대 |
재밌는 건 가운데 열이에요. 공식만 바꾸면 DPS 차이가 그대로예요. 원인을 파고들어 보니 공식이 아니라 무기의 공격 속도였어요.
- 도끼: 초당 0.8회
- 검·단검: 초당 1.6회
- 마법탄: 초당 1.67회
한 대 피해를 아무리 맞춰도, 도끼는 절반밖에 못 때리니 DPS가 벌어질 수밖에 없죠. 그래서 추천안은 공속부터 맞추기(도끼·활 1.0회, 검·단검·마법탄 1.25회)였어요.
사람이 "기본무기가 세다"고 느낀 건 사실 초반엔 피해가 100% 무기에서 나오고, 스탯은 10포인트당 1%밖에 안 올라서 무기 말고는 체감되는 게 없었기 때문이었어요. 느낌은 맞았는데, 원인은 다른 데 있었던 거죠.
⚠️ 이 공식 v2는 아직 제안 단계예요. 첫 통합 테스트는 지금 공식으로 하고, 결정이 나면 적용할 예정이에요.
📌 AI 기획팀을 쓰면서 느낀 점 💬
- "느낌"을 숫자로 번역하는 데 강해요. "시원시원하게"를 "Lv1 한 대 101 → Lv30 1,937, 평타 4대" 같은 표로 바꿔 줘요.
- 가정을 꼭 적게 해야 해요. 공속, 장비 강화 단계, 사냥 속도 같은 걸 스스로 정하고 계산하기 때문에, 보고서에 "가정" 표가 없으면 결과를 믿기 어려워요.
- 결정은 사람 몫이에요. AI는 추천안을 여러 개 만들고 영향받는 모듈까지 정리해 주지만, 무엇을 고를지는 게임을 만드는 사람이 정해야 해요.
📌 마무리
- 숫자 ×10은 평면값만, 이관은 한 번만, 운영자가 바꾼 값은 보존
- 경험치는 엑셀로 고치는 표 하나, 1→30레벨 12시간
- 밸런스 불만의 원인은 공식이 아니라 공격 속도였어요 — 시뮬레이션이 아니었으면 공식만 계속 고치고 있었을 거예요
다음 편은 그림 이야기예요. ChatGPT에게 GUI·아이콘·무기 그림을 맡기고 Claude가 검수하는 파이프라인에서, 검수가 잡아낸 사고들(이름이 뒤바뀐 활, 안 보이는 배경, 지지직거리는 활)을 다룰게요. 기대해주세요 🙌
이 글은 제가 방향을 정하고 Claude와 함께 정리했어요. 이 서버는 개인 프로젝트이며, 마인크래프트 공식 콘텐츠가 아니고 Mojang·Microsoft와 관계없습니다.
연재 · 5편 중 3번째
AI 팀으로 마크 서버 만들기
- #1AI 팀장 1명 + 팀원 15명으로 MMORPG 플러그인 만드는 구조! 🤖
- #2플러그인 하나에 모듈 13개! 코어 구조와 '1000029 데미지' 사건 🧩
- #3숫자 ×10, 12시간 경험치 곡선, 클래스 6종 시뮬레이션! 📊지금 읽는 글
- #4ChatGPT가 그리고 Claude가 검수하는 리소스팩 파이프라인! 🎨
- #5디스코드 봇으로 개발팀 운영하기! 결정 포럼·명령어 목록·리소스팩 채널 🤝
