과녁 조준은 난이도를 크기로 나눴는데, 한 판 안의 편차가 그보다 큽니다
핵심 요약 — 과녁 조준의 난이도는 과녁 크기로만 나뉩니다. 쉬움과 어려움의 평균 난이도 지수 차이는 1.29입니다. 그런데 한 판 안에서 가장 쉬운 과녁과 가장 어려운 과녁의 지수 차이가 쉬움에서도 평균 1.89였습니다. 난이도를 한 칸 올리는 것보다 같은 판 안에서 다음 과녁이 어디에 뜨는지가 더 크게 흔듭니다. 그리고 처음 만든 판은 6.8%가 앞 과녁과 겹쳐 있어서, 손을 움직이지 않고 제자리를 두 번 누르는 구간이었습니다.
과녁 조준을 새로 붙이면서 판을 만드는 규칙을 정해야 했습니다. 과녁을 몇 개 띄울지, 얼마나 크게 할지, 어디에 둘지입니다. 이 게임은 얼마나 빨리 눌렀나를 재는 게임이니, 판이 얼마나 어려운 판인지를 우리가 알고 있어야 잰 값이 뜻을 갖습니다.
다행히 이 분야에는 오래된 공식이 있습니다.
손이 목표를 겨누는 데 걸리는 시간
1954년에 나온 식인데 지금도 씁니다.
T = a + b · log₂(2D / S)
D는 손이 움직일 거리, S는 과녁 크기입니다. 괄호 안의 값을 난이도 지수라고 부릅니다. 요지는 이렇습니다 — 거리가 두 배가 되거나 과녁이 절반이 되면 지수가 정확히 1 늘고, 걸리는 시간도 그만큼 늘어난다는 것입니다.
거리와 크기가 따로 노는 게 아니라 비율 하나로 묶인다는 점이 핵심입니다. 멀리 있는 큰 과녁과 가까이 있는 작은 과녁이 같은 난이도일 수 있습니다.
우리는 과녁의 자리와 크기를 서버에서 씨앗으로 정합니다. 그래서 판마다 지수를 계산할 수 있습니다. 아래 숫자는 난이도마다 씨앗 5,000개, 구간 95,000개씩을 계산한 것입니다.
난이도는 크기로만 나뉩니다
| 난이도 | 과녁 반지름 | 평균 지수 | 평균 이동 거리 |
|---|---|---|---|
| 쉬움 | 55~80 | 2.83 | 509 |
| 보통 | 32~55 | 3.40 | 502 |
| 어려움 | 18~34 | 4.12 | 504 |
거리 칸을 보면 셋이 거의 같습니다. 판 크기가 같으니 당연합니다 — 같은 정사각형 안에 아무렇게나 두 점을 찍으면 평균 거리는 난이도와 상관없이 같습니다.
그러니 난이도 사다리는 전부 과녁 크기가 만든 것입니다. 반지름 중간값이 67.5 → 43.5 → 26으로 줄고, 그 비율의 로그가 그대로 지수 차이(0.57, 0.72)가 됩니다.
여기까지는 설계한 대로입니다. 문제는 다음입니다.
한 판 안의 편차가 더 큽니다
| 난이도 | 지수 표준편차 | 거리 쪽 흔들림 | 크기 쪽 흔들림 | 한 판 안 최대−최소 |
|---|---|---|---|---|
| 쉬움 | 0.55 | 0.53 | 0.16 | 1.89 |
| 보통 | 0.70 | 0.67 | 0.22 | 2.46 |
| 어려움 | 0.82 | 0.78 | 0.26 | 2.92 |
가운데 두 칸을 함께 봐야 합니다. 지수를 흔드는 것이 거리 쪽인지 크기 쪽인지 갈라 놓은 값인데, 거리 쪽이 세 배 넘게 큽니다. 난이도는 크기로 나눠 놨는데, 정작 한 판을 푸는 동안 겪는 어려움의 변화는 거의 다 과녁이 어디에 떴는지에서 옵니다.
마지막 칸이 결론입니다. 쉬움에서도 한 판 안의 가장 쉬운 과녁과 가장 어려운 과녁이 1.89만큼 벌어져 있습니다. 쉬움과 어려움의 차이인 1.29보다 큽니다.
난이도를 한 칸 올리는 것보다, 같은 판 안에서 다음 과녁이 코앞에 뜨느냐 반대편 구석에 뜨느냐가 더 크게 좌우한다는 뜻입니다. 스무 번을 누르는 동안 그 편차가 섞이므로 평균은 안정적으로 나오지만, 누르는 사람 입장에서 판이 들쭉날쭉하게 느껴지는 것은 착각이 아닙니다.
그리고 처음 판은 겹쳐 있었습니다
지수를 계산해 보고 나서야 알았습니다.
| 난이도 | 평균 지수 | 최소 지수 | 지수가 1 미만인 구간 | 앞 과녁과 겹친 구간 |
|---|---|---|---|---|
| 쉬움 | 2.52 | −4.63 | 6.9% | 6.8% |
| 보통 | 3.24 | −4.47 | 2.8% | 2.7% |
| 어려움 | 4.05 | −4.41 | 1.0% | 0.9% |
지수가 음수라는 것은 과녁 크기보다 이동 거리가 짧다는 뜻입니다. 다음 과녁이 방금 누른 자리 위에 겹쳐 뜬 것입니다. −4.63이면 거의 같은 자리입니다.
그런 구간에서는 손을 움직일 필요가 없습니다. 그냥 제자리를 한 번 더 누르면 됩니다. 조준을 재는 게임에서 조준이 빠진 구간입니다. 겹침은 쉬움에서 가장 잦았는데, 과녁이 클수록 겹치기 쉬워서입니다.
고친 방법은 단순합니다. 다음 과녁을 뽑을 때 두 반지름 합의 1.6배보다 가까우면 다시 뽑습니다.
| 난이도 | 평균 지수 | 최소 지수 | 겹친 구간 |
|---|---|---|---|
| 쉬움 | 2.52 → 2.83 | −4.63 → 1.48 | 6.8% → 0.00% |
| 보통 | 3.24 → 3.40 | −4.47 → 1.41 | 2.7% → 0.00% |
| 어려움 | 4.05 → 4.12 | −4.41 → 1.36 | 0.9% → 0.00% |
평균 지수가 조금 오른 것은 가까운 구간이 사라졌기 때문입니다. 쉬움이 가장 많이 오른 것(+0.31)도 겹침이 가장 잦았던 난이도라서 앞뒤가 맞습니다.
왜 이렇게까지 재는가
과녁 조준의 기록은 과녁 사이 평균 시간(ms) 하나입니다. 순위표에는 그 숫자만 올라갑니다.
그런데 그 숫자 뒤에 지수가 붙어 있으면 할 수 있는 일이 하나 더 생깁니다. 기록이 쌓이면 지수와 실제 명중 시간을 맞대어 볼 수 있습니다. 위의 식이 맞다면 둘은 직선 관계여야 합니다 — 지수가 1 늘 때마다 시간이 일정하게 늘어야 합니다.
교과서에 적힌 식을 우리 사이트의 숫자로 확인해 보는 셈입니다. 그 확인을 하려면 판의 지수를 우리가 알고 있어야 하고, 지수를 알려면 판을 서버가 정해야 합니다. 브라우저가 자리를 정했다면 사람마다 다른 판을 풀게 되어 이 비교 자체가 성립하지 않습니다.
겹친 과녁을 그냥 뒀다면 이 비교도 망가졌을 것입니다. 지수가 −4.6인 점 하나가 직선을 통째로 끌어당기기 때문입니다.
반응 속도와는 다른 게임입니다
같이 놓고 보면 차이가 분명합니다. 반응 속도는 신호 하나에 한 번 누르는 게임이라 손이 움직일 거리가 없습니다. 위 식에서 지수가 0이고, 남는 것은 a 하나 — 순수한 반응 시간입니다.
과녁 조준은 거기에 b · 지수가 얹힙니다. 그래서 두 게임의 기록은 다른 것을 잽니다. 반응 속도가 빠른 사람이 과녁 조준도 빠르리라는 보장이 없고, 그 차이가 나는 이유가 이 식에 다 들어 있습니다.
재현 방법. 이 글의 숫자는 난이도마다 씨앗 1~5,000번의 판을 만들어 ids()로 계산한 값입니다. 한 판이 과녁 20개이므로 구간은 19개, 난이도마다 95,000구간입니다. 고치기 전 숫자는 최소 거리 규칙을 뺀 판 생성기를 같은 씨앗으로 돌려 얻었습니다.