스킬 쿨다운·마나 소모량·DPS 상관관계 매트릭스 AI 자동 완성 툴 만들기
스킬 쿨다운, 마나 소모량, 피해량을 하나의 매트릭스로 분석하고 Python 기반 AI 자동 완성 툴로 밸런스 후보를 생성·검증하는 방법을 정리합니다.

핵심 요약
스킬 밸런스는 쿨다운, 마나 소모량, 피해량을 따로 조정하면 쉽게 왜곡되므로 동일한 전투 시간과 자원 조건에서 함께 계산해야 합니다. AI 자동 완성 툴은 목표 DPS와 마나 효율을 입력받아 수치 후보를 생성하고 결정론적 시뮬레이터로 검증하는 구조가 가장 안전합니다.
스킬 쿨다운과 마나 소모량을 함께 봐야 하는 이유
스킬의 체감 성능은 피해량 하나로 결정되지 않습니다. 플레이어가 해당 스킬을 얼마나 자주 사용할 수 있는지와 자원을 얼마나 오래 유지할 수 있는지가 실제 전투 효율을 좌우합니다.
예를 들어 피해량이 1,000인 스킬이 있다고 가정해 보겠습니다.
| 스킬 | 피해량 | 쿨다운 | 마나 소모량 | 단순 지속 DPS | 마나 효율 |
|---|---|---|---|---|---|
| A | 1,000 | 10초 | 40 | 100 | 25 피해/마나 |
| B | 800 | 5초 | 60 | 160 | 13.3 피해/마나 |
| C | 1,400 | 14초 | 80 | 100 | 17.5 피해/마나 |
단순 지속 DPS만 보면 B가 가장 강하지만 마나 회복량이 낮은 전투에서는 금방 사용할 수 없게 됩니다. 반대로 C는 한 번의 공격력이 높아도 쿨다운이 길어 순간 폭딜 이후의 공백이 커질 수 있습니다.
핵심은 세 가지 지표를 같은 기준으로 비교하는 것입니다.
여기서 CombatWindow는 30초나 60초처럼 고정한 전투 측정 시간입니다. 전투 창을 고정해야 쿨다운이 긴 스킬과 짧은 스킬을 공정하게 비교할 수 있습니다.
AI 자동 완성 툴은 어떤 방식으로 작동하는가?
이 툴에서 AI가 담당할 일은 모든 계산을 대신하는 것이 아닙니다. AI는 기획자가 입력한 의도와 제약 조건을 해석해 수치 후보를 만들고 결정론적 계산기가 후보를 평가하도록 구성합니다.
flowchart LR
A[기획 의도와 스킬 데이터] --> B[AI 후보 생성]
B --> C[전투 시뮬레이터]
C --> D{제약 조건 통과?}
D -->|예| E[점수 계산과 순위화]
D -->|아니오| F[후보 제외]
E --> G[기획자 검토용 결과]
권장 처리 순서는 다음과 같습니다.
- 스킬 데이터와 목표 지표를 구조화한다.
- AI가 쿨다운, 마나, 피해량 후보를 생성한다.
- 시뮬레이터가 전투 창별 DPS와 자원 소모량을 계산한다.
- 최소·최대 범위를 벗어난 후보를 제거한다.
- 목표와 가장 가까운 후보를 기획자에게 제시한다.
이 구조를 사용하면 생성형 AI가 그럴듯하지만 계산상 틀린 수치를 출력하는 문제를 줄일 수 있습니다.
입력 데이터는 어떻게 정의할까?
자동 완성 툴의 품질은 프롬프트보다 입력 데이터 구조에 크게 좌우됩니다. 최소한 다음 필드를 갖추는 것이 좋습니다.
| 필드 | 의미 | 예시 |
|---|---|---|
damage | 1회 시전 피해량 | 800 |
cooldown | 재사용 대기시간 | 5.0초 |
mana_cost | 1회 시전 마나 | 60 |
cast_time | 시전 시간 | 0.8초 |
mana_regen | 초당 마나 회복량 | 12 |
combat_window | 평가 전투 시간 | 30초 |
role | 스킬의 역할 | 광역 딜링 |
target_dps | 목표 지속 DPS | 140 |
추가로 글로벌 쿨다운, 자원 최대치, 적의 생존 시간, 이동으로 인한 시전 손실, 버프와 디버프를 선택적으로 반영할 수 있습니다. 초기 버전에서는 변수를 너무 많이 넣지 말고 단일 스킬과 단순 로테이션부터 시작하는 편이 좋습니다.
스킬 밸런싱 매트릭스는 어떻게 계산할까?
가장 단순한 매트릭스는 쿨다운과 마나 소모량의 변화에 따른 DPS를 2차원 표로 보여주는 방식입니다. 기준값을 쿨다운 5초, 마나 60, 피해량 800으로 두면 다음과 같이 계산할 수 있습니다.
| 쿨다운 변화 | 마나 -20% | 기준 마나 | 마나 +20% |
|---|---|---|---|
| -20% 쿨다운 | DPS 상승, 자원 부담 완화 | DPS 상승, 마나 부담 증가 | DPS 상승폭 제한 |
| 기준 쿨다운 | 마나 효율 상승 | 기준값 | 마나 고갈 위험 |
| +20% 쿨다운 | DPS 하락, 한 발 효율 상승 | DPS 하락 | DPS와 자원 효율 모두 낮음 |
표의 문구를 실제 수치로 바꾸려면 전투 창에서 사용할 수 있는 횟수를 계산해야 합니다.
EffectiveCycle은 게임의 쿨다운 정책에 따라 달라집니다. 쿨다운이 시전과 동시에 시작되면 max(cooldown, cast_time)을 사용할 수 있고 시전이 끝난 뒤 쿨다운이 시작되면 cast_time + cooldown을 사용해야 합니다.
30초 전투에서 피해량 800, 쿨다운 5초인 스킬은 단순 모델에서 6회 사용할 수 있습니다. 총 피해량은 4,800이고 지속 DPS는 160입니다. 마나 소모량이 60이면 총 360마나가 필요하므로 초당 마나 회복량이 12일 때 회복량만으로는 모든 시전을 유지할 수 없습니다.

Python 3.12로 DPS 계산기를 구현하는 방법
다음 코드는 단일 스킬의 지속 DPS와 마나 부담을 계산하는 최소 구현입니다. 실제 게임에서는 글로벌 쿨다운, 자원 회복 틱, 시전 취소, 버프 상태를 별도의 이벤트로 확장해야 합니다.
from dataclasses import dataclass
from math import floor
@dataclass
class Skill:
name: str
damage: float
cooldown: float
mana_cost: float
cast_time: float = 0.0
def evaluate_skill(skill: Skill, combat_window: float, mana_regen: float) -> dict:
effective_cycle = max(skill.cooldown, skill.cast_time)
casts = floor(combat_window / effective_cycle)
total_damage = casts * skill.damage
total_mana = casts * skill.mana_cost
mana_regenerated = combat_window * mana_regen
return {
'name': skill.name,
'casts': casts,
'dps': total_damage / combat_window,
'mana_per_second': total_mana / combat_window,
'mana_balance': mana_regenerated - total_mana,
'mana_efficiency': total_damage / total_mana if total_mana else 0.0,
}
mana_balance가 음수라면 해당 전투 창에서 자원이 부족하다는 뜻입니다. 이 값이 음수인 후보는 지속 딜 스킬로 사용할 수 없으므로 AI 추천 결과에서 감점하거나 제외해야 합니다.
AI 후보 생성 규칙은 어떻게 설계할까?
AI에게 단순히 “DPS를 높여줘”라고 요청하면 쿨다운을 극단적으로 낮추거나 피해량을 과도하게 올릴 가능성이 있습니다. 따라서 입력 프롬프트에는 역할, 목표 범위, 허용 가능한 변경 폭, 금지 조건을 함께 전달해야 합니다.
예를 들어 다음과 같은 후보 생성 규칙을 사용할 수 있습니다.
| 파라미터 | 기준값 | 허용 범위 | 변경 단위 |
|---|---|---|---|
| 피해량 | 800 | 720~880 | 20 |
| 쿨다운 | 5초 | 4~6초 | 0.5초 |
| 마나 소모량 | 60 | 45~75 | 5 |
AI 출력은 자연어가 아니라 구조화된 객체로 제한하는 것이 좋습니다.
skill_name: Arc Burst
damage: 840
cooldown: 5.5
mana_cost: 55
reason: 광역 지속 DPS를 유지하면서 마나 고갈 속도를 완화
실제 구현에서는 JSON Schema 또는 Pydantic 모델로 타입과 범위를 검증할 수 있습니다. AI가 범위 밖의 값을 반환하면 계산 전에 거부하고 다시 생성하거나 가장 가까운 허용값으로 보정합니다.
후보의 점수는 어떻게 계산할까?
목표 DPS와 목표 마나 소모량에 가까운 후보를 고르려면 오차를 하나의 점수로 합칩니다.
DPSError는 목표 DPS와 실제 DPS의 차이입니다. ManaError는 목표 마나 소모량과 실제 소모량의 차이이며 RolePenalty는 스킬 역할과 맞지 않는 결과에 부여하는 감점입니다. 예를 들어 군중 제어 스킬에 지나치게 높은 지속 DPS가 붙으면 역할 감점을 적용할 수 있습니다.
실무에서는 다음 제약 조건을 먼저 적용한 뒤 점수를 계산하는 편이 안정적입니다.
- 쿨다운은 0보다 커야 한다.
- 마나 소모량은 캐릭터의 최대 마나를 초과하지 않아야 한다.
- 목표 DPS는 설계 범위를 벗어나지 않아야 한다.
- 30초 전투에서 최소 1회 이상 사용할 수 있어야 한다.
- 마나 잔량이 음수가 되는 후보는 지속형 스킬에서 제외한다.
- 같은 역할의 기준 스킬보다 피해량과 편의성이 동시에 높아지지 않아야 한다.
쿨다운만 낮추면 DPS가 폭증하는 이유는 무엇인가?
쿨다운은 사용 빈도를 직접 결정하는 변수이기 때문입니다. 피해량이 유지된 상태에서 쿨다운을 6초에서 4초로 줄이면 이론상 시전 빈도가 1.5배가 됩니다. 하지만 실제 증가폭은 다음 조건에 따라 달라집니다.
- 글로벌 쿨다운이 스킬 사용을 제한하는가?
- 마나 회복량이 증가한 시전 횟수를 감당하는가?
- 적이 충분히 오래 생존하는가?
- 시전 시간과 이동 손실이 있는가?
- 다른 스킬의 버프 시간과 충돌하는가?
따라서 AI가 쿨다운 감소를 제안할 때는 반드시 DPS 증가율, 마나 소모 증가율, 마나 고갈 시점을 함께 출력해야 합니다.
1. 기준 전투 창을 설정한다
먼저 일반 몬스터전, 정예 몬스터전, 보스전처럼 목적에 맞는 전투 창을 정합니다. 10초 전투는 순간 폭딜을 평가하는 데 적합하고 60초 전투는 지속 자원 경제를 확인하는 데 적합합니다.
2. 수치 후보를 생성한다
기준값에 변화 폭을 적용해 후보를 만듭니다. 초기에는 모든 조합을 순회하는 격자 탐색이 이해하기 쉽습니다. 변수가 많아지면 베이지안 최적화나 유전 알고리즘을 사용할 수 있지만 결과 설명 가능성이 낮아질 수 있습니다.
3. 시뮬레이션과 제약 검사를 실행한다
각 후보를 동일한 전투 창에서 실행하고 DPS, 초당 마나 소모량, 마나 잔량, 시전 횟수를 기록합니다. 그다음 설계 범위와 역할별 제약 조건을 검사합니다.
4. 결과를 기획자 언어로 변환한다
AI는 단순히 1위 후보만 보여주기보다 후보의 장단점을 함께 설명해야 합니다.
| 후보 | DPS | 마나/초 | 30초 마나 잔량 | 해석 |
|---|---|---|---|---|
| A | 142 | 9.2 | 24 | 안정적인 지속형 |
| B | 158 | 14.0 | -120 | 보스전 폭딜용, 장기전 부적합 |
| C | 135 | 7.5 | 75 | DPS는 낮지만 자원 효율 우수 |
이렇게 표시하면 기획자는 “가장 높은 수치”가 아니라 콘텐츠 목적에 맞는 후보를 선택할 수 있습니다.
게임 경제와 레벨 디자인에 연결하는 방법
마나 소모량은 전투 시스템뿐 아니라 회복 아이템, 거점 배치, 휴식 빈도와도 연결됩니다. 같은 스킬 수치라도 레벨에 마나 회복 물약이 자주 배치되면 높은 마나 소모량을 허용할 수 있고 회복 기회가 적은 던전에서는 낮은 소모량이 필요합니다.
따라서 툴에 다음 콘텐츠 변수를 추가하면 레벨 디자인과의 충돌을 줄일 수 있습니다.
- 전투 사이 평균 이동 시간
- 전투당 예상 처치 시간
- 회복 아이템 획득량
- 안전 지역까지의 평균 거리
- 적 웨이브 수
- 보스 페이즈별 전투 시간
최종적으로는 스킬 자체의 점수와 콘텐츠별 경제 점수를 분리하는 것이 좋습니다. 스킬이 강한지와 해당 레벨에서 자원을 감당할 수 있는지는 서로 다른 문제이기 때문입니다.
자주 묻는 질문 (FAQ)
쿨다운과 마나 중 무엇을 먼저 조정해야 하나요?
스킬의 핵심 역할을 먼저 정한 뒤 목표 DPS를 결정하고 쿨다운과 마나를 함께 조정해야 합니다. 지속 딜 스킬은 마나 예산을 먼저 고정하고 폭딜 스킬은 전투 창 내 사용 횟수를 먼저 확인하는 방식이 유용합니다.
AI가 계산한 밸런스 수치를 그대로 적용해도 되나요?
안 됩니다. AI는 후보 생성과 설명에 사용하고 최종 수치는 시뮬레이터, 플레이테스트, 로그 분석으로 검증해야 합니다. 특히 이동, 명중률, 타깃 수, 버프 중첩은 단순 DPS 공식에 반영하기 어렵습니다.
단일 스킬 평가만으로 충분한가요?
초기 수치 검증에는 충분하지만 최종 밸런싱에는 부족합니다. 이후에는 스킬 로테이션, 글로벌 쿨다운, 자원 회복, 다른 스킬의 버프와의 상호작용을 포함한 전투 시뮬레이션으로 확장해야 합니다.
정리
스킬 쿨다운, 마나 소모량, DPS는 독립된 숫자가 아니라 사용 빈도와 자원 경제를 함께 만드는 상호작용 변수입니다. AI 자동 완성 툴은 생성형 AI가 후보를 만들고 결정론적 계산기가 수치를 검증하는 하이브리드 구조로 설계해야 합니다.
가장 현실적인 첫 버전은 Python 3.12 기반 계산기와 구조화된 스킬 데이터입니다. 30초와 60초 전투 창에서 후보를 평가하고 DPS, 마나 효율, 마나 잔량을 함께 표시하면 기획자는 수치 변경의 결과를 빠르게 비교할 수 있습니다.



