Rift of the NecroDancer

Rift of the NecroDancer

Not enough ratings
지연 시간 보정 설정에 숨겨진 비밀
By JiminP
아무리 보정 테스트를 해도 보정값이 나랑 맞지 않는다고 생각했다면,
내가 리겜을 쫌 한다고 생각하는데 이 게임 판정이 뭔가 이상하다고 생각했다면,
이 가이드를 한 번 읽어보자.
   
Award
Favorite
Favorited
Unfavorite
개요
Note: Click here for the English version of this guide.

그냥 지연 시간 보정 설정을 하고 싶은거면 아래 "용어 정의"부터 읽으면 됩니다.

내 맆댄 실력이 그렇게 나쁜 것 같지 않은 것 같으면서도, 나는 가끔씩 이 게임 판정이 이상하다고 느낄 때가 있었다. 특히, 코다를 걸고 플레이할 때 몹이 적게 등장하는 쉬어가는 파트가 더 어렵게 느껴졌다.

게다가, 얼마 전에 레딧에 오디오 보정과 관련된 글을 쓴 적이 있었는데, 이런 댓글들이 달렸었다.
  • "비디오 오디오 보정을 한 뒤에 다시 보정했을 때 결과값이 너무 크게 널뛰어서 뭔가 이상하다고 생각함."
  • "보정 테스트를 하니까 비디오 +20, 오디오 +60으로 맞추래. 그렇게 플레이하니까 별로 맞는 것 같지도 않고."
  • "ㅇㅇ 자동보정으로 플레이하니까 뭔가 안 맞은 것 같음. 나는 분명 제대로 플레이하는데 "좋아요"나 "OK"가 뜬금없이 뜨고 말이야. 그냥 자동보정 끄고 플레이해야 퍼펙트가 잘 뜸."
  • "확실히 체감하는게, 보정 테스트를 하면 권장값이 +30에서 -20이 됨. 그냥 다 포기하고 직접 맞추니까 괜찮아짐."
도대체 왜 많은 사람들이 보정 테스트가 이상하다고 생각하는지, 그리고 덤으로 나에게 맞는 보정값을 찾기 위해, 몇 가지 실험을 진행했다. 그 결과, 나는 지연 시간 보정이 어떻게 동작하는지 그 동작 방식을 파악할 수 있었다. 그 중 몇 가지는 내가 예상하지 못했던 것이였으며, 많은 사람들에게 문제를 끼칠 수 있는 것이였다.

이 가이드에 제대로 된 지연 시간 보정값을 설정하는 방법, 그리고 그 과정에서 도사리고 있는 많은 함정들을 정리해 놓았다.

참고: 이 가이드는 2025년 2월 27일 버전의 게임을 기준으로 제작되었다. 미래에는 이 가이드에 적힌 내용이 안 맞게 될 수도 있을 것 같다.
용어 정의
  • AL: 오디오 지연 시간 보정 설정값
  • VL: 비디오 지연 시간 보정 설정값
  • CT: 보정 테스트 결과창에서 알려주는 보정값
    • "박자보다 약간 느리신 것 같습니다. 20ms만큼 조정하고 다시 테스트할까요?": CT = 20ms
    • "박자보다 약간 빠르신 것 같습니다. -20ms만큼 조정하고 다시 테스트할까요?": CT = -20ms
    • "준비가 다 된 것 같습니다! 언제든 재보정하실 수 있습니다.": CT = 0ms
  • 무음 플레이 = 컴퓨터를 음소거하고 플레이
  • 안 보고 플레이 = 화면을 보지 않고, 음악에 집중해서 암기 플레이

위 스크린샷을 예시로 들면 다음과 같다.
  • AL = 68ms
  • VL = 17ms
  • CT = -32ms
권장 설정
지연 시간 보정값을 설정하기 전에, 일부 게임 설정을 다음과 같이 세팅하는 것을 권장한다.
다만, 이렇게 세팅하는 게 필수는 아니며, 원한다면 자신이 원하는 설정값을 써도 된다.

오디오 설정
몬스터 SFX, 히트 SFX, 경고 SFX 볼륨을 0%로 설정한다.

주의사항: 키음이 있는 리듬게임을 플레이 한 경험이 있다면, 저 볼륨들을 0%로 설정하는 게 최선이 아닐 수도 있다. 만약 0%보다 큰 값을 쓰는 게 좋다면, AL을 맞추기 위해 오디오 보정을 사용하는 것은 강력하게 비추천한다.

접근성 설정
빠른/느린 히트정확도 바 옵션을 켠다. 다만...
  • 리듬 게임에서 이렇게 보정값을 조절한 적이 많이 없다면, 보정 테스트를 할 때 빠른/느린 히트끄는 것을 추천한다.
    • 빠른/느린 히트 표시를 보고 무의식적으로 누르는 타이밍을 조절하는 행위를 방지하기 위해서이다. 보정 테스트를 할 때 이러면 부정확한 보정값을 얻을 수 있다.
    • 위와 같은 실수를 저지르지 않을 자신이 있다면, 정반대로 빠른/느린 히트켜는 것을 추천한다.
    • 보정 테스트를 할 때 끄더라도, 일반 플레이 중에는 항상 켜는 것을 권장한다.
  • 정확도 바는 보정 테스트를 할 때 보여지지 않는다.

그리고, 정적인 몬스터정적인 캐릭터 같은 다른 접근성 설정을 활성화하는 것도 좋다. 다만, (렉이 걸리는 게 아니라면) 이 설정들이 타이밍 판정에 직접적인 영향을 주지는 않는다.
지연 시간 보정값 조절 방법
주의사항: 계산할 때, 음수값을 조심하자. 예로, 30ms에서 -20ms를 뺀다면 그 결과는 50ms (= 30 - (-20))이지, 10ms가 아니다.

초기값 찾기
  1. 오디오 보정을 진행한다.
    • 이 과정을 여러 번 진행하며 각각의 AL값을 기록한 다음, 기록한 값들의 평균치를 새 AL로 설정하는 것이 좋다.
  2. 비디오 보정을 진행한다.
    • 이 과정을 여러 번 진행하며 각각의 VL값을 기록한 다음, 기록한 값들의 평균치를 새 VL로 설정하는 것이 좋다.
  3. 수동 보정 메뉴로 들어간 다음, AL - VL을 계산한 값을 새로운 AL로 설정한다.
주의사항: 오디오 보정을 통해 AL을 수정할 때 마다, 항상 세 번째 과정대로 AL을 다시 설정해야 한다. 이 가이드 뒤쪽에 그 이유가 나온다.

조절
ALVL값을 설정한 다음, 보정 테스트를 통해 보정값들을 테스트해야 한다.

주의사항: 보정 테스트 이후 절대로 "조정 및 재시도" 버튼을 누르지 말자.
  1. 무음 플레이로 테스트하고, "준비가 다 된 것 같습니다!" 메세지가 뜨는지 본다.
    • 그렇지 않다면, 아래 적은 대로 ALVL 둘 다 수동 보정해야 한다.
    • AL - (CT/2)를 계산하고, 이 값을 새 AL로 설정한다.
    • VL + (CT/2)를 계산하고, 이 값을 새 VL로 설정한다.
  2. 안 보고 플레이로 테스트하고, "준비가 다 된 것 같습니다!" 메세지가 뜨는지 본다.
    • 그렇지 않다면, 아래 적은 대로 AL을 수동 보정해야 한다.
    • AL + CT를 계산하고, 이 값을 새 AL로 설정한다.
    • VL은 건드리지 않는다.
  3. 평범하게 플레이하고, "준비가 다 된 것 같습니다!" 메세지가 뜨는지 본다.
    • 그렇지 않다면, "조절"이나 "초기값 찾기"의 첫 번째 단계부터 다시 해 본다.

게임플레이 테스트
게임을 플레이한 뒤, 빠른(E) 히트가 너무 많이 뜬다면 AL을 5ms 증가시키고, VL을 5ms 감소시켜본다. 느린(L) 히트가 너무 많이 뜰 때에는 반대로 조절한다.
  • 이 방법은 플레이어의 듣는 판정이 보는 판정보다 더 안정적이라고 가정한다.
  • 다른 방법으로는, 위 "조절" 과정의 단계들을 진행하되, 보정 테스트 대신 실제 게임플레이를 하며 진행해도 된다. 이 경우, 빠른(E) 히트가 너무 많이 뜬다면 CT가 (절댓값이) 작은 음수값(-5ms정도)인 것으로, 느린(L) 히트가 너무 많이 뜬다면 CT가 작은 양수값(+5ms정도)인 것으로 간주하면 된다.
그렇지만, 플레이어들은 보통 어려운 패턴이 나올 때 정확한 타이밍보다 일찍 노트를 치는 경향이 있다. 따라서, 만약 보정 테스트나 쉬운 패턴에서 판정이 안정적으로 나오고 있고, 다른 리듬 게임을 해 본 경험이 풍부하지 않다면, 보정값을 조절해서 판정을 맞추는 대신 보정값은 고정시키고 판정에 적응하는 연습을 하는 것을 권장한다.



끝!

...이라면 좋겠지만, 뭔가 이상한 점들이 있을 것이다. 이런 생각이 들 수도 있다. "대체 왜 저렇게 복잡하게 보정값을 조절해야 하는 거지? 나는 이렇게 맞춰도 뭔가 안 맞는 것 같은데? 뭐가 문제인건데?"

만약 찜찜한 점이 남아 있다면, 계속 읽어보시라.
보정값 이해하기
지연 시간 보정값들이 하는 일은 다음과 같다.
  • 오디오 지연 시간 (AL): 상대적 오디오 지연 시간(비디오 지연 시간 대비 오디오가 더 지연되는 시간)을 보정한다.
  • 비디오 지연 시간 (VL): 입력 지연 시간을 보정한다.

VL이 이름과는 조금 다르게 작동하는데, 안 보고 플레이무음 플레이를 하면 저게 맞다는 것을 알 수 있다.

설정
안 보고 플레이
무음 플레이
오디오 시간 지연
느린(L) 히트 더 발생
영향 없음
비디오 시간 지연
느린(L) 히트 더 발생
느린(L) 히트 더 발생

만약 VL이 이름대로 비디오 지연 시간만 보정했다면, 안 보고 플레이했을 때의 결과에 영향을 주지 말아야 한다. 하지만 준다. 즉, VL은 비디오 지연 시간이 아니라 입력 지연 시간을 보정하는 값이라는 결론이 나온다.

사실, 이름과의 불일치를 무시하면 이렇게 지연 시간을 보정하는 건 게임 개발자에게는 자연스러운 방법이기 때문에, 꽤 많은 리듬 게임은 비슷한 방식으로 지연 시간을 보정하고 있다. 예를 들어, 츄니즘이 정확히 같은 방식으로 동작한다. (Offset A가 AL, Offset B가 VL과 정확히 같은 방식임.)
보정 설정의 문제점
이름이 좀 이상한 것 빼고 평범한 설정 방식이라면, 대체 왜 많은 사람들이 보정 테스트에 문제를 겪고 있을까?

오디오 보정: VL값을 고려하지 않음
예를 들어, 이상적인 플레이어가 다음과 같은 보정값을 얻었다고 해 보자.
  • 오디오 보정을 하고 AL = 20ms를 얻음.
  • 비디오 보정을 하고 VL = 15ms를 얻음.

오디오 보정을 했을 때, 이미 오디오 지연 시간이 20ms라는 것이 확정되었다. 하지만, 오디오 지연 시간을 보정하는 값은 AL+VL이기 때문에, 비디오 보정을 했을 때 게임이 실제로 사용하는 오디오 지연 보정 시간35ms로 잘못 설정된다.

게다가, 오디오 보정은 VL을 무시하기 때문에, 오디오 보정을 다시 해도 AL값은 바뀌지 않는다! 즉, 오디오 보정과 보정 테스트를 할 때 AL값에 괴리가 생기게 된다.

위 예시의 경우, 제대로 지연 시간 보정을 설정하려면 AL = 5ms, VL = 15ms가 되어야 한다. 위에 적은 보정값 조절 방법의 "초기값 찾기"의 3번 과정이 이 때문에 존재한다. VL값을 얻은 이후에는, 오디오 보정으로 얻은 AL값에서 VL이 보정해 주는 오디오 지연 시간을 제거해야 하는 것이다.

오디오 보정: 사운드가 잘못되었음
얼마 전(2월 17일)에 발견한 것인데, 오디오 보정에 쓰이는 틱 간 간격은 대략 20ms(정확히는 오디오 버퍼 크기) 정도의 오차를 보인다. 이 때문에 AL을 측정할 때 대강 10ms나 그 이하의 작은 오차가 생길 수 있다.

비디오 보정
비디오 보정 과정은 정상적으로 이루어진다. 하지만 비디오 보정을 하는 과정이 실제 게임 플레이 UI를 이용하지 않기 때문에, 비디오 보정을 통해 VL을 측정하면 실제 게임을 무음 플레이로 하면서 측정하는 것보다 부정확할 수 있다.

보정 테스트: "조정 및 재시도"는 안 좋은 기능임
초보자에게는 좋은 기능일 수 있다. 그런데 이 버튼이 하는 일은 구체적으로 ALVL 양 쪽에 각각 CT/2을 더하는 것이다. 이렇게 하면 오디오 지연 시간은 CT만큼, 비디오 지연 시간은 CT/2만큼 변하게 된다. 별로 적절해 보이지 않는다.
일반적으로, 추가적인 정보 없이 한 개의 보정 수치를 가지고 두 종류의 지연 시간을 동시에 조절하는 것은 좋은 방법이 아니라고 생각한다.

보정 테스트: CT값에 하한/상한치가 있음
유저에게 표시되는 CT값은 ±40ms를 벗어나지 않는다. 예를 들어, 보정 테스트를 통해 실제로 측정된 CT값이 50ms라고 해 보자. 이 경우 화면에는 40msCT값이 표시된다.
사실 이게 꼭 잘못된 것만은 아니다. 어차피 보정값이 크게 어긋나 있다면, 추가적인 보정 테스트를 통해 서서히 보정값을 조절해 나가야 하기 때문이다. 하지만, 아래에 설명할 사항과 합쳐진다면, ALVLCT값을 통해 직접 조절하고 싶을 때 성가신 문제가 생긴다.

보정 테스트: "준비가 다 된 것 같습니다!"는 거짓말임
실험을 해 보니, 저 메세지는 측정된 CT값이 -15ms ≤ CT ≤ 15ms일 때 뜨는 것 같다. 보정 테스트 시 20개의 판정값의 평균(아니면 중앙값)으로 CT가 산출되고, 코다 플레이 시 15ms만큼 판정선이 어긋나 있으면 확실히 체감된다는 것을 고려하면 저 범위는 너무 크다.

보정 테스트: CT값에 계수가 붙나?
아직도 왜 이런 증상이 나타나는지 정확히는 모르겠지만, 실험을 해 보니 무음 플레이 시 VL을 1ms만큼 조절하면 CT는 2ms만큼 바뀌는 것 같다. 즉, 보정 테스트로 얻은 CT값들로 VL을 조절하려고 하면, CT가 0으로 수렴하지 않을 수 있다.

증거 없음
한편, 지금까지 나는 다음 의혹에 대한 증거를 발견하지 못했다.
  • 나는 게임 중 판정값이 널뛴다고 생각하고, 솔직히 지금도 여전히 같은 생각을 하고 있지만, 내 실력 탓을 배제할 만할 정도의 증거는 발견하지 못했다. 이 게임 판정이 짠 편이기도 하고....
  • 위에서 언급한 점들 이외에, 오디오 보정, 비디오 보정, 보정 테스트는 꽤 잘 작동하는 것 같고, 테스트 할 때 마다 결과값이 "정상적인 범주"를 넘어나 널뛰는 것 같지는 않다. (단, VL은 프레임 FPS에 따라, 일정 수준으로 값이 널뛰는 것은 막을 수 없다.)
실험 데이터
참고로, 내가 보정 테스트를 진행한 결과를 그래프로 그려보면 다음과 같다.

AL = 0일 때, VL을 변화시키며 얻은 CT

VL = -1일 때, AL을 변화시키며 얻은 CT값 (VL이 -1인 건 다른 테스트 도중이였어서....)
진짜 제대로 보정값을 조절하는 방법
ALVL의 초기값은 앞서 적은 방식대로 찾으면 된다. 그 초기값들을 각각 AL0VL0이라고 하자.

한 문장으로 요약하면, 위의 두 그래프를 그려보면 된다.
  1. AL = AL0을 고정시키고, VL0 근처의 여러 값(VL0 - 15msVL0 + 15ms부터 시작)으로 VL을 변화시켜 나가며, 보정 테스트를 여러 번 무음 플레이로 진행한다. 이렇게 (VL, CT) 데이터를 획득한다.
  2. 잘못된 CT값은 버리고, 남은 데이터로 추세선을 그려 x절편을 찾는다. VL0을 이 값으로 갱신한다.
  3. VL = VL0을 고정시키고, AL0 근처의 여러 값(AL0 - 30msAL0 + 30ms부터 시작)으로 AL을 변화시켜 나가며, 보정 테스트를 여러 번 안 보고 플레이로 진행한다. 이렇게 (AL, CT) 데이터를 획득한다.
  4. 잘못된 CT값은 버리고, 남은 데이터로 추세선을 그려 x절편을 찾는다. AL0을 이 값으로 갱신한다.
  5. 평범하게 보정 테스트를 해서, AL = AL0VL = VL0이 만족스러운지 검증한다.

추세선을 어떻게 그리는지 모른다면... 유감이다.
결론
이 게임의 지연 시간 보정 설정에는 다음과 같은 문제점들이 있다.
  • 오디오 보정비디오 보정 기능은 VL이 오디오 지연 시간도 보정하는 것을 제대로 고려하지 않고 있다.
  • 오디오 보정의 틱이 부정확하다.
  • 보정 테스트에 뜨는 보정값으로 보정 설정값을 직접 변경하면 문제가 생길 수 있다.
  • 보정 테스트에서 "조정 및 재시도" 버튼은 믿을 만하지 않다.
문제점들이 수정되기 전까지, 지연 시간 보정 설정값들을 변경할 때에는 이 가이드에 적힌 요소들을 제대로 숙지하고 있어야 한다.