리듬 설계 / 전문 해설
리듬게임의 구성요소, 음악과 입력이 판정으로 이어지는 구조
음악의 2초 지점에 오른쪽 목표가 있고 2.03초에 눌렀다면, 게임은 어느 대상을 처리하고 무엇을 결과로 보여 줄까. 실제 게임 화면에서 목표와 결과를 나눈 뒤 단일 탭 예제를 따라 음악·채보·입력·판정·피드백의 연결을 살펴본다.
기사 요약
- 목표 선택과 시간 오차 계산을 차례로 추적한다.
- 출발 시각이 음악 0초보다 이르면 준비 구간을 설계한다.
- 입력 요청과 목표 상태를 기록해 한 번의 결과를 반영한다.

DJMAX RESPECT V · 공식 PC판 화면
중앙 레인 아래의 판정선, MAX 100%와 콤보 위치를 살펴보자. 목표를 읽는 영역과 결과 표시가 나뉘는 실제 화면이다. 아래 시간 계산은 별도의 학습모형으로 설명한다.
한 번의 탭에서 다섯 요소를 찾는다
DJMAX 화면의 레인과 아래 판정선, CAT BEAT 권투의 좌우 표식은 입력할 위치와 순간을 읽는 단서다. 판정 글자와 콤보는 입력 뒤의 결과를 보여 준다. 같은 화면에서도 목표와 결과는 서로 다른 정보를 맡는다.
이제 편집부의 단일 탭 예제를 따라가 보자. 음악 파일의 2.000초에 오른쪽 목표 A가 있고 실제 입력은 2.030초다. 방향이 맞는 미처리 목표를 고른 뒤 두 시각을 비교하면 30ms 늦었다는 값이 나온다. 설명용 성공 창을 전후 80ms로 두면 A를 성공으로 확정하고 결과를 표시한다.
2.030초 입력이 목표 A의 결과가 되기까지
편집부 작성 도표 · 오른쪽 단일 탭의 가상 추적. 목표 A=2.000초, 입력=2.030초, 오차=+30ms.
가로축: 음악 파일 위치(초). 행: 목표·입력·처리 결과. 원=목표, 삼각형=입력.
작은 화면에서는 도표를 좌우로 밀어 볼 수 있다. 도표 크게 보기 ↗
도표의 값과 읽는 순서
- 방향 일치 → 미처리 후보 A 선택 → +30ms 계산 → 예제 창 안에서 성공 → A 처리 완료
음악의 박과 플레이 목표를 나눈다
음원에는 악기와 선율, 강세와 쉼이 들어 있다. 채보는 그 가운데 어떤 소리를 어떤 행동으로 옮길지 정한다. 한 박마다 소리가 있어도 플레이어에게는 일부 박만 누르게 할 수 있다. 같은 곡에 여러 난이도를 만드는 출발점이다.
osu!의 공개 파일 형식도 TimingPoints의 템포·마디 정보와 HitObjects의 목표 시각을 나눠 설명한다. 이 구분을 참고해 예제에는 note_id, 음악 파일 기준 목표 초, 방향, 처리 상태를 둔다. 판정에 사용할 숫자는 화면 좌표와 분리해 기록한다.
관련 원자료: osu! · Timing points / Hit objects ↗
한 행동에 연결되는 다섯 자료
| 구성 | 예제에서 읽는 값 | 다음 단계 |
|---|---|---|
| 음악 | 파일 위치 2.000초의 기준 | 선택한 소리 |
| 채보 | A·오른쪽·2.000초 | 목표 후보 |
| 입력 | 오른쪽·2.030초 | 같은 시간 기준의 요청 |
| 판정 | 선택 A·오차+30ms | A 처리 완료 |
| 피드백 | 성공 표시·타격 반응 | 다음 목표 준비 |

CAT BEAT : 비트를 깨워 · 개발 중 실제 화면
좌우 발바닥 표식, 접근 대상과 퍼펙트 글자를 각각 찾아볼 수 있다. 실제 개발 화면의 정보 배치를 비교하는 자료이며 판정 허용 시간은 본문의 가상값과 구분한다.
목표보다 먼저 보이는 시간을 계산한다
목표가 음악 파일 1.0초이고 화면 이동에 2.0초를 주면 출발 시각은 −1.0초다. 음악 시작을 0으로 정한 시간축에 준비 구간이 필요하다. 준비 장면을 실제로 먼저 진행하거나, 곡 앞에 여유를 두고 채보 원점을 다시 정하는 선택을 문서에 적는다.
현재 음악 위치가 t, 목표가 T, 예고 시간이 L이면 남은 시간은 T−t이고 진행 비율은 (t−(T−L))/L이다. 표시 범위에는 0~1로 제한한 값을 쓴다. 목표 시각은 채보에 두고 화면은 같은 음악 위치에서 다시 계산한다. 프레임 수는 표시 빈도를 바꾸며 예제의 목표 초는 유지된다.
출발 −1초를 포함하는 준비 구간
편집부 작성 도표 · 목표 1초·예고 2초의 가상 화면 이동. 음악 0초보다 앞에서 표시가 시작된다.
가로축: 음악 위치 −1~2초. 세로축: 판정선까지 남은 거리(%).
작은 화면에서는 도표를 좌우로 밀어 볼 수 있다. 도표 크게 보기 ↗
도표의 값과 읽는 순서
- 출발−1초:100%
- 음악 0초:50%
- 목표 1초:0%
어느 노트를 비교할지 먼저 정한다
같은 방향의 미처리 목표 A=2.000초, B=2.200초에서 입력 2.030초는 A에 +30ms, B에 −170ms다. 이 예제의 ±80ms 후보는 A 하나다. 두 창이 겹치는 배치에서는 최근접 또는 선행 목표 같은 선택 정책을 추가한다.
입력 기록과 목표를 같은 음악 시간 기준으로 옮긴 뒤 오차 e=입력−목표를 계산한다. 방향 확인, 후보 생성, 대상 선택, 시간 판정, 상태 확정의 순서를 적으면 어느 단계에서 결과가 바뀌었는지 추적할 수 있다.
같은 동작의 결과를 한 번 반영한다
성공한 A에는 처리 완료 상태를 남긴다. 같은 입력이 다시 전달돼도 이미 처리한 목표를 후보에 넣지 않는 계약이다. 키보드와 포인터 입력은 같은 행동 요청 형태로 정리하고, 입력 식별자와 처리 경로를 기록한다.
Pointer Events는 포인터 동작에 호환 마우스 이벤트가 연결될 수 있는 상황을 설명한다. 여러 이벤트 구독을 함께 사용하는 구현에서는 한 동작이 두 요청으로 들어오는지 확인한다. 유지 노트와 동시 입력은 시작·유지·해제 또는 묶음 정책을 별도로 가진 확장 과제다.
관련 원자료: W3C · Pointer Events 호환 마우스 이벤트 ↗
단일 탭 예제의 처리 기록
| 사건 | 입력/목표 | 확정 결과 |
|---|---|---|
| 입력 접수 | 오른쪽·2.030초·요청ID | 한 행동 요청 |
| 대상 선택 | A2.000초/B2.200초 | 창 안의 미처리 A |
| 오차 비교 | (2.030−2.000)×1000 | +30ms |
| 상태 반영 | A:대기→성공 | 성공 수 1회 증가 |
| 중복 전달 | 같은 요청ID 또는 처리한 A | 추가 결과 반영 없이 종료 |
증상과 조사할 자료를 연결한다
한 입력에 점수가 두 번 오르면 입력 요청과 목표 상태를, 시간이 지날수록 밀리면 재생 원점·속도·반복 길이·재개 기준을 조사한다. 화면과 소리가 어긋나는 현상은 표시 위치, 출력 경로와 입력 기록을 나누어 확인한다.
결과 효과는 방금 입력한 정보를 전달하면서 다음 목표의 실루엣과 방향을 남겨야 한다. 빌드·기기·출력 장치와 사건 시각을 기록하고, 계산 검사 뒤 실제로 듣고 누르는 검증을 이어 간다.
출처·확인 범위
2026.10.17 osu! 파일 형식의 Timing points·Hit objects와 Pointer Events의 호환 이벤트 절을 확인했다. 게임 사진은 표시 요소의 관찰 자료다. 목표 2초·입력 2.03초·±80ms·상태 처리와 이동식은 편집부의 단일 탭 학습모형이다. 상용 게임별 내부 판정과 실제 기기 지연은 각각의 구현·실행 자료로 확인한다.