리듬게임 채보의 구간별 노트 밀도와 손 이동량으로 체감 난이도 예측하기

리듬게임 채보의 구간별 노트 밀도와 손 이동량으로 체감 난이도 예측하기

리듬게임 채보의 노트 수만으로는 체감 난이도를 설명하기 어렵습니다. 구간별 노트 밀도, 손 이동량, 동시 입력과 회복 구간을 수치화해 난이도를 예측하고 밸런싱하는 방법을 정리합니다.

한눈에 보는 결론

리듬게임 채보의 체감 난이도는 전체 노트 수보다 짧은 구간에 입력이 얼마나 몰리는지와 플레이어의 손이 얼마나 자주 이동해야 하는지에 크게 좌우됩니다.
채보를 1~4초 단위로 나누고 구간별 유효 노트 밀도와 정규화된 손 이동량을 계산한 뒤 동시 입력, 연속 패턴, 회복 구간을 함께 반영하면 체감 난이도를 비교적 일관되게 예측할 수 있습니다.

핵심은 평균값이 아니라 구간별 최고 난도와 난도 상승·하강 곡선을 보는 것입니다.
특히 95퍼센타일 밀도와 손 이동량을 사용하면 한두 개의 이상치에 끌려가지 않으면서도 실제 플레이에서 부담이 되는 구간을 찾을 수 있습니다.

왜 전체 노트 수만으로 체감 난이도를 판단하기 어려운가?

같은 곡에 노트가 1,000개 들어 있어도 배치에 따라 체감 난이도는 달라집니다. 노트가 넓은 간격으로 고르게 배치된 채보는 노트 수가 많아도 여유롭게 느껴질 수 있습니다.
반대로 2초 안에 여러 레인으로 입력이 몰리거나 손을 빠르게 좌우로 이동해야 하면 전체 노트 수가 적어도 어려운 구간이 됩니다.

지표의미한계
전체 노트 수곡 전체 입력량어려운 구간의 위치를 알려주지 못함
평균 NPS초당 평균 노트 수순간적인 폭주 구간을 희석함
구간별 노트 밀도특정 시간대의 입력 집중도패턴 종류를 함께 봐야 함
손 이동량레인 사이를 이동하는 부담손 배치와 플레이 스타일에 따라 달라짐
동시 입력 수한 번에 처리해야 하는 입력량손가락 수와 게임 규칙의 영향을 받음

따라서 채보 분석에서는 차트 전체 통계구간별 특징량을 분리하는 것이 좋습니다.

구간별 노트 밀도는 어떻게 계산하는가?

1. 채보를 시간 구간으로 나눈다

채보를 고정 길이 윈도우로 분할합니다. 일반적인 시작값은 2초이며 빠른 게임에서는 1초, 긴 패턴을 분석할 때는 4초를 사용할 수 있습니다.
윈도우 사이에 50% 정도 겹침을 두면 난도 변화가 갑자기 끊기는 현상을 줄일 수 있습니다.

각 노트에는 최소한 다음 데이터가 필요합니다.

{
  "timeMs": 1240,
  "lane": 3,
  "type": "tap",
  "hand": "right",
  "durationMs": 0
}

timeMs는 입력 시점이고 lane은 레인 번호입니다. 롱 노트는 시작과 종료 입력을 별도로 계산할 수 있으며 hand 정보가 없다면 레인 위치를 기준으로 손을 추정합니다.

2. 단순 NPS와 유효 노트 밀도를 구분한다

기본 노트 밀도는 다음과 같이 계산합니다.

Ds=NsTs×60D_s = \frac{N_s}{T_s} \times 60

여기서 N_s는 구간 s의 입력 이벤트 수이고 T_s는 구간 길이(초)입니다. 이 값은 NPS, 즉 분당 환산한 초당 노트 수입니다.

다만 탭 노트 하나와 4개 동시 입력을 동일하게 세면 실제 부담을 제대로 반영하기 어렵습니다. 따라서 동시 입력과 롱 노트의 시작·종료 입력에 가중치를 적용한 유효 노트 밀도를 사용할 수 있습니다.

Deff,s=Ntap+wchordNchord+wholdNholdEventTsD_{eff,s} = \frac{N_{tap} + w_{chord}N_{chord} + w_{hold}N_{holdEvent}}{T_s}

N_chord는 동시 입력 묶음의 수가 아니라 추가로 눌러야 하는 입력 수로 정의하는 편이 분석하기 쉽습니다.
w_chordw_hold는 고정된 정답이 아니므로 실제 플레이테스트 결과에 맞춰 조정해야 합니다.
예를 들어 4키 게임에서 동시 입력이 일반 탭보다 약간 더 어렵다면 w_chord를 1보다 크게 설정하는 식입니다.

손 이동량은 어떻게 측정하는가?

레인 거리를 입력 간 이동 거리로 바꾼다

인접한 레인 사이의 거리를 1로 정규화하고 플레이어의 대표 손 위치를 p_i라고 정의합니다. 다음 입력까지 이동해야 하는 거리는 다음과 같이 계산할 수 있습니다.

Ms=1W×Tsi=2npipi1M_s = \frac{1}{W \times T_s} \sum_{i=2}^{n} |p_i - p_{i-1}|

W는 전체 레인 폭이고 T_s는 구간 길이입니다. 이렇게 하면 레인 수가 다른 채보 사이에서도 이동량을 비교하기 쉬워집니다.

대표 손 위치는 다음 방식 중 하나로 결정할 수 있습니다.

  • 손 정보가 있는 경우: 해당 노트의 hand별 마지막 입력 레인 사용
  • 단일 입력 게임: 노트 레인을 그대로 사용
  • 동시 입력: 코드상 손 배치 규칙에 따라 왼손·오른손의 중심 레인 계산
  • 손 정보가 불확실한 경우: 좌우 분할 경계에서 가까운 손을 선택하는 휴리스틱 사용

단순한 이동 거리만으로는 충분하지 않습니다. 같은 거리라도 짧은 시간에 이동하면 더 어렵기 때문입니다.
따라서 구간의 평균 이동 속도와 최대 이동 속도도 함께 기록하는 것이 좋습니다.

Vs=pipi1(titi1)V_s = \frac{\sum |p_i - p_{i-1}|}{\sum (t_i - t_{i-1})}

리듬게임 채보의 구간별 노트 밀도와 손 이동량을 비교하는 히트맵

노트 밀도와 손 이동량을 하나의 난이도 지표로 합치는 방법

서로 다른 단위의 지표를 그대로 더하면 안 됩니다. 먼저 동일한 난이도군의 채보 데이터에서 평균과 표준편차를 구해 표준화합니다.

Z(x)=xμxσxZ(x) = \frac{x - \mu_x}{\sigma_x}

그다음 구간 점수를 계산합니다.

Ss=wDZ(Deff,s)+wMZ(Ms)+wVZ(Vs)+wCCswRRsS_s = w_DZ(D_{eff,s}) + w_MZ(M_s) + w_VZ(V_s) + w_C C_s - w_R R_s

각 항목은 다음 의미를 가집니다.

항목설명
D_eff가중치를 적용한 유효 노트 밀도
M레인 폭으로 정규화한 손 이동량
V입력 사이의 평균 이동 속도
C동시 입력, 계단, 잭 등 패턴 복잡도
R직전 구간의 회복 여유도
w_D, w_M, w_V, w_C, w_R플레이테스트로 조정하는 가중치

C_s는 패턴을 완전히 자동 평가하기보다 규칙 기반으로 시작하는 것이 현실적입니다.
예를 들어 같은 레인을 짧은 간격으로 반복하는 잭 패턴, 레인을 순차적으로 이동하는 계단 패턴, 손을 교차해야 하는 패턴에 별도 플래그를 부여할 수 있습니다.

R_s는 직전 몇 초 동안의 낮은 밀도, 긴 입력 간격, 단순한 레인 배치 등을 이용해 계산할 수 있습니다.
회복 구간이 있으면 동일한 최고점이라도 곡선 전체의 피로도가 낮아질 수 있습니다.

실제 채보 밸런싱 절차는 어떻게 진행하는가?

1단계: 분석 단위를 고정한다

먼저 윈도우 길이와 겹침 비율을 정합니다.

  • 기본 윈도우: 2초
  • 윈도우 이동 간격: 1초
  • 최소 분석 구간: 곡의 BPM과 입력 단위에 따라 1초 이상
  • 최고 난도 통계: 구간 점수의 95퍼센타일

곡마다 다른 기준을 사용하면 결과를 비교하기 어렵기 때문에 동일 난이도군 안에서는 같은 파라미터를 유지해야 합니다.

2단계: 구간별 특징량을 추출한다

각 구간에서 다음 값을 계산합니다.

  1. 기본 NPS와 유효 노트 밀도
  2. 손별 이동량과 이동 속도
  3. 동시 입력 수와 패턴 복잡도
  4. 최단 입력 간격과 연속 입력 길이
  5. 직전·직후 구간의 회복 여유도

이때 평균만 저장하지 말고 최대값, 백분위 90%, 백분위 95%를 함께 저장합니다.
평균은 곡의 평이한 구간을 잘 설명하지만 실제로 플레이어가 실패하는 순간은 보통 최고 난도 구간에서 발생합니다.

3단계: 난도 곡선을 보고 수정한다

구간 점수를 시간 순서로 배치하면 채보의 난도 곡선이 됩니다.
이상적인 곡선은 곡의 음악적 구조와 연결되면서도 갑작스러운 피크가 반복되지 않는 형태입니다.

다음 상황은 수정 후보입니다.

  • 짧은 구간에서 D_effM이 동시에 급등함
  • 높은 밀도 뒤에 회복 구간이 없음
  • 전체 평균은 낮지만 특정 구간의 95퍼센타일이 과도하게 높음
  • 손 이동량은 낮은데 동시 입력과 짧은 간격이 반복됨
  • 노트 수는 적지만 방향 전환이 지나치게 잦음

수정 방법은 노트를 단순히 삭제하는 것만이 아닙니다.
입력 간격을 넓히거나 일부 노트를 인접 레인으로 옮기거나 동시 입력을 분리하거나 회복 구간을 추가하는 방식으로 같은 음악적 의도를 유지할 수 있습니다.

자동 분석용 의사 코드 예시

interface Note {
  timeMs: number;
  lane: number;
  type: "tap" | "holdStart" | "holdEnd";
  hand?: "left" | "right";
}

function analyzeWindow(
  notes: Note[],
  startMs: number,
  endMs: number,
  laneWidth: number,
) {
  const windowNotes = notes.filter(
    (note) => note.timeMs >= startMs && note.timeMs < endMs,
  );
  const durationSec = (endMs - startMs) / 1000;
  const sorted = [...windowNotes].sort((a, b) => a.timeMs - b.timeMs);

  let movement = 0;
  for (let i = 1; i < sorted.length; i++) {
    movement += Math.abs(sorted[i].lane - sorted[i - 1].lane);
  }

  const nps = windowNotes.length / durationSec;
  const normalizedMovement = movement / (laneWidth * durationSec);

  return {
    nps,
    normalizedMovement,
    noteCount: windowNotes.length,
    peakIntervalMs: getShortestInterval(sorted),
  };
}

실제 프로젝트에서는 동시 입력을 하나의 이벤트로 묶고 손별 이동량을 따로 계산해야 합니다.
또한 롱 노트가 유지되는 동안의 손 점유를 반영하지 않으면 밀도와 이동량이 실제보다 낮게 측정될 수 있습니다.

체감 난이도 예측 모델을 검증하는 방법

수치 모델은 플레이테스트 결과와 비교해야 합니다. 테스터에게 단순히 전체 난이도를 묻기보다 다음 정보를 함께 수집하면 가중치를 조정하기 쉽습니다.

  • 구간별 체감 난도
  • 처음으로 실수가 발생한 시점
  • 손이 꼬이거나 이동이 늦어진 구간
  • 피로가 누적되기 시작한 시점
  • 같은 구간을 반복했을 때의 성공률

모델 점수와 실제 실패율의 상관관계를 확인하고 점수가 높은데 실패율이 낮은 구간은 패턴 복잡도 가중치가 과도한지 검토합니다.
반대로 점수가 낮은데 실패율이 높은 구간은 손 배치 규칙, 시야 가림, 판정 시간, 사운드 피드백처럼 수치에 포함되지 않은 요인을 의심해야 합니다.

분석 결과는 다음처럼 해석할 수 있습니다.

분석 결과우선 점검할 요소
밀도와 이동량이 모두 높음입력 간격, 레인 배치, 동시 입력
밀도만 높음연속 입력, 잭, 판정 여유
이동량만 높음교차 배치, 방향 전환, 손 분담
수치는 낮지만 실패율이 높음시각 피드백, 사운드, 판정 규칙
평균은 낮고 95퍼센타일만 높음특정 폭주 구간과 회복 구간

자주 묻는 질문 (FAQ)

구간 길이는 몇 초가 적당한가?

2초를 기본값으로 시작하고 1초와 4초 분석 결과를 함께 비교하는 것이 좋습니다.
1초는 순간 폭주를 찾는 데 유리하고 4초는 피로와 패턴 지속 시간을 파악하는 데 유리합니다.

노트 밀도와 손 이동량 중 무엇을 더 중요하게 봐야 하는가?

게임 규칙과 채보 스타일에 따라 다릅니다. 고정 레인에서 빠른 반복 입력이 중심이면 밀도 비중이 높고 넓은 레인 이동이나 교차 배치가 핵심이면 이동량과 이동 속도 비중이 높습니다. 초기 가중치는 플레이테스트로 반드시 보정해야 합니다.

자동 난이도 점수만으로 채보를 완성해도 되는가?

어렵습니다. 자동 점수는 비교와 이상 구간 탐지에 유용하지만 시각적 가독성, 음악과의 싱크, 손가락 피로, 판정 체감까지 완전히 설명하지 못합니다.
자동 분석으로 수정 후보를 찾고 최종 판단은 실제 플레이테스트로 내려야 합니다.

정리

리듬게임 채보의 체감 난이도를 예측하려면 전체 노트 수보다 구간별 유효 노트 밀도와 손 이동량을 먼저 봐야 합니다. 1~4초 윈도우로 채보를 나누고 D_eff, M, V, 패턴 복잡도, 회복 여유도를 표준화하면 채보 간 비교와 문제 구간 탐지가 쉬워집니다.

가장 중요한 지표는 하나의 평균 점수가 아니라 시간에 따른 난도 곡선입니다. 음악적 클라이맥스에는 의도적인 피크를 배치하되 피크의 길이와 회복 구간을 함께 설계하면 난도는 높이면서도 불합리하게 느껴지는 채보를 줄일 수 있습니다.

#리듬게임#채보 디자인#게임 밸런싱#체감 난이도#노트 밀도#손 이동량#레벨 디자인

계속 읽어보기

이런 글은 어떠세요?

< Back to Logs