플레이 데이터로 난이도를 조절하는 법: 동적 난이도 기획 사례
플레이어의 실패와 숙련 신호를 데이터로 해석해, 게임의 긴장감을 유지하면서도 이탈을 줄이는 동적 난이도 조절 기획을 살펴봅니다. 측정 지표, 의사결정 규칙, 안전장치까지 프로토타입에 바로 적용할 수 있게 정리했습니다.

동적 난이도는 플레이어를 ‘쉽게’ 이기게 하는 기능이 아니다
동적 난이도 조절(Dynamic Difficulty Adjustment, DDA)은 플레이 중 수집한 신호를 바탕으로 게임의 도전 수준을 조정하는 기획 방식이다. 목표는 모든 플레이어에게 같은 승률을 주는 것이 아니라 각자가 다음 한 번을 시도할 이유를 유지하도록 돕는 데 있다.
예를 들어 보스전에서 연속으로 패배한 플레이어에게는 회복 아이템의 드롭 확률을 조금 높이거나 공격 사이의 빈틈을 약간 늘릴 수 있다. 반대로 적응이 빠른 플레이어에게는 선택형 추가 목표나 더 적극적인 적 행동을 제안해 긴장감을 유지할 수 있다.

사례 설정: 로그라이트 액션 게임의 초반 보스전
가상의 로그라이트 액션 게임을 생각해 보자. 첫 번째 보스는 회피와 공격 타이밍을 배우게 하는 관문이라고 설정한다. 다음 두 항목은 실제 테스트 결과가 아니라 설계를 설명하기 위한 가정이다.
- 처음 만난 플레이어는 보스 패턴을 파악하기 전에 반복 사망해 다음 런을 시작하지 않았다.
- 액션 게임 경험이 많은 플레이어는 보스를 너무 쉽게 통과해 초반 구간의 긴장감을 느끼지 못했다.
이때 평균 난이도 하나를 맞추는 방식은 두 집단 모두에게 충분하지 않다. 대신 전투 단위의 데이터를 수집하고 플레이어의 현재 상태를 추정해 제한된 범위 안에서 전투를 조절한다.
flowchart TD
A[전투 이벤트 수집] --> B[실패·숙련 신호 계산]
B --> C{난이도 상태 판정}
C -->|압박 상태| D[지원 강도 소폭 증가]
C -->|적정 상태| E[현재 설정 유지]
C -->|여유 상태| F[선택형 도전 또는 적응형 행동]
D --> G[다음 구간 또는 재도전]
E --> G
F --> G
G --> A
핵심은 보스의 체력을 갑자기 절반으로 줄이는 식의 극적인 개입이 아니다. 플레이어가 시스템의 개입을 알아차리기 전에 학습 기회와 회복 여지를 미세하게 조정해야 한다.
어떤 데이터를 수집할까
수집 항목은 많을수록 좋은 것이 아니다. 난이도 판단에 직접 쓰이고 설계자가 해석할 수 있는 이벤트부터 시작하는 편이 낫다.
실패 신호
- 같은 보스 또는 구간에서의 연속 사망 횟수
- 전투 시작 후 사망까지 걸린 시간
- 회복 아이템을 모두 소진한 시점
- 피격 횟수와 회피 성공률
- 재도전 대신 게임을 종료한 비율
단일 사망은 실패 신호로 보기 어렵다. 새로운 패턴을 실험하다 죽었을 수도 있기 때문이다. 반면 짧은 시간 안에 비슷한 원인으로 반복 사망하고 재시도 간 행동 변화도 없다면 압박 상태일 가능성이 높다.
숙련 신호
- 첫 시도에서 보스 체력을 얼마나 깎았는지
- 위험한 공격을 회피한 비율
- 회복 아이템을 남긴 채 승리했는지
- 패턴 전환 구간까지 걸린 시간
- 선택형 고난도 목표를 스스로 활성화했는지
숙련 신호 역시 단순 클리어 시간만으로 판단하면 안 된다. 강력한 우연 보상을 얻은 플레이어가 빠르게 이겼을 수 있으므로 장비 수준과 전투 행동을 함께 봐야 한다.
점수 하나보다 상태 모델을 쓴다
초기 프로토타입에서는 여러 신호를 0에서 1 사이의 점수로 정규화해 압박도를 계산할 수 있다. 예를 들어 다음처럼 구성한다.
여기서 d는 연속 사망, h는 낮은 체력 유지 시간, m은 회복 수단 고갈, q는 낮은 회피 성공률을 정규화한 값이다. 가중치는 정답이 아니라 가설이다. 플레이테스트 결과에 따라 조정해야 한다.
다만 실제 기획에서는 연속적인 점수보다 세 개 정도의 명확한 상태가 다루기 쉽다.
| 상태 | 해석 | 권장 대응 |
|---|---|---|
| 압박 | 반복 실패 또는 회복 불가능한 전투 흐름 | 지원 요소를 한 단계 강화 |
| 적정 | 실패와 성공이 모두 학습으로 이어짐 | 현재 난이도 유지 |
| 여유 | 낮은 피해로 빠르게 돌파 | 선택형 도전 또는 제한적 강화 |
상태 전환에는 히스테리시스를 둔다. 즉, 한 번 압박 상태가 되었다고 다음 10초 뒤 바로 여유 상태로 바꾸지 않는다. 전환 기준을 다르게 두면 난이도가 오르내리는 느낌을 줄일 수 있다.
const nextDifficultyState = (
current: "pressure" | "balanced" | "comfortable",
pressure: number,
): "pressure" | "balanced" | "comfortable" => {
if (current === "pressure" && pressure < 0.35) return "balanced";
if (current === "comfortable" && pressure > 0.65) return "balanced";
if (pressure >= 0.75) return "pressure";
if (pressure <= 0.20) return "comfortable";
return current;
};
조절 대상은 플레이어가 납득할 수 있어야 한다
같은 결과를 내더라도 무엇을 조절하느냐에 따라 경험은 크게 달라진다. 특히 정밀 액션 게임에서는 플레이어 입력의 결과를 뒤집는 조절을 피하는 것이 중요하다.
비교적 안전한 조절
- 다음 방의 회복 자원 또는 방어 자원 제공량
- 적의 공격 간격과 추적 강도
- 전투 공간의 위험 요소 빈도
- 튜토리얼 힌트와 연습 기회 노출
- 선택하지 않아도 되는 보조 목표의 보상
신중해야 하는 조절
- 명중 판정 자체의 확대 또는 축소
- 이미 시작된 전투에서 보스 체력을 크게 변경하는 처리
- 플레이어에게 보이지 않는 피해량 보정
- 경쟁, 랭킹, 기록 모드에서의 개별 난이도 보정
특히 기록 경쟁이 있는 모드는 모두에게 같은 규칙을 제공해야 한다. 적응형 조절은 일반 모드에 한정하거나 별도 난이도 보정 여부를 명확히 분리하는 편이 공정성 논란을 줄인다.

구현 예시: 보스 재도전 사이에만 개입하기
전투 도중 매 프레임 난이도를 바꾸면 플레이어는 적의 행동을 학습하기 어렵다. 이 사례에서는 사망 후 재도전이 시작될 때만 설정을 갱신한다. 한 번의 전투에서는 규칙을 고정해 예측 가능성을 지킨다.
type EncounterTuning = {
healthOrbDropBonus: number;
bossAttackCooldownMultiplier: number;
optionalChallengeEnabled: boolean;
};
function tuneEncounter(state: "pressure" | "balanced" | "comfortable"): EncounterTuning {
switch (state) {
case "pressure":
return {
healthOrbDropBonus: 0.15,
bossAttackCooldownMultiplier: 1.08,
optionalChallengeEnabled: false,
};
case "comfortable":
return {
healthOrbDropBonus: 0,
bossAttackCooldownMultiplier: 0.96,
optionalChallengeEnabled: true,
};
default:
return {
healthOrbDropBonus: 0.05,
bossAttackCooldownMultiplier: 1,
optionalChallengeEnabled: false,
};
}
}
여기서도 변화 폭은 작게 시작한다. 공격 간격을 8% 늘리는 정도가 의미 있는지 확인한 뒤 필요한 경우에만 조절 범위를 넓힌다. 체감이 없는 수치는 복잡도만 늘리고 체감이 지나치게 큰 수치는 신뢰를 해친다.
검증할 때는 평균만 보지 않는다
DDA의 성과를 평균 클리어 시간 하나로 판단하면 위험하다. 평균이 좋아져도 초보자는 여전히 떠나고 숙련자는 지루해질 수 있다. 최소한 아래 지표를 난이도 상태별로 나누어 살펴보자.
- 첫 보스 도달 후 재도전율
- 1회부터 5회 시도별 승리율
- 보스전 직후의 세션 종료율
- 실패 뒤 행동 변화가 있었는지 보여 주는 회피율과 피격률
- 난이도 조절이 적용된 집단과 적용되지 않은 집단의 만족도 설문
실험은 한 번에 하나의 개입만 바꾸는 편이 원인을 파악하기 쉽다. 예를 들어 회복 드롭 증가와 공격 간격 증가를 동시에 적용하면 어느 요소가 재도전율에 영향을 줬는지 알기 어렵다.
기획 체크리스트
출시 전에는 다음 질문에 답할 수 있어야 한다.
- 이 데이터는 실력 부족이 아니라 일시적 운이나 실험 행동을 오해하지 않는가?
- 난이도 변경은 언제 적용되며 한 전투 안에서 규칙은 일관적인가?
- 플레이어가 도움을 받아도 자신의 성취를 빼앗겼다고 느끼지 않는가?
- 고난도 플레이어에게는 강제 강화 대신 선택권을 제공하는가?
- 경쟁성과 공정성이 필요한 모드를 분리했는가?
- 수집하는 데이터와 이용 목적을 플레이어에게 명확히 안내하는가?
동적 난이도 조절은 자동 밸런싱 장치가 아니라 플레이어가 배우고 회복하고 다시 도전하는 리듬을 설계하는 도구다. 작은 범위의 개입과 명확한 측정 기준으로 시작하면 난이도를 낮추지 않고도 더 많은 플레이어가 게임의 핵심 재미에 도달하도록 만들 수 있다.



