한 판의 규칙 요약
파란 사각형 캐릭터는 화면 왼쪽(가로 위치 50~76픽셀)에 고정되어 있고, 움직이는 쪽은 오히려 장애물입니다. 빨간 기둥이 오른쪽에서 왼쪽으로 밀려오고, 캐릭터가 할 수 있는 일은 점프 하나뿐입니다. 기둥과 닿는 순간 게임이 끝나고, 살아남은 시간만큼 점수가 쌓입니다. 목숨은 하나이고 아이템이나 단계 구분은 없으며, 시간이 지날수록 장애물이 빨라지는 것이 유일한 난이도 상승 장치입니다. 아래 수치는 모두 이 페이지 스크립트의 상수(중력 0.9, 점프 초속 13, 캐릭터 26픽셀, 캔버스 480×220)를 그대로 가져와 계산한 값입니다.
조작 방법
- 점프: 스페이스바, 위쪽 방향키, 캔버스 클릭 또는 터치. 바닥에 닿아 있을 때만 점프가 걸리며 공중에서의 입력은 무시됩니다(2단 점프 없음).
- 점프 키를 계속 누르고 있어도 한 번만 점프합니다. 자동 반복 입력은 무시하도록 되어 있어, 게임 오버 직후에 누르고 있던 키 때문에 바로 재시작되는 일이 없습니다.
- 게임 오버 후에는 스페이스바·방향키·클릭 중 아무거나로 다시 시작할 수 있습니다. 화면이 넘어간 직후 0.4초 동안은 재시작 입력을 받지 않습니다.
- P 키를 누르면 일시정지, 다시 P 키나 점프 입력을 하면 재개됩니다. 다른 탭으로 옮기면 자동으로 일시정지됩니다.
- 모바일에서는 캔버스 어디를 터치해도 점프하며, 화면이 스크롤되지 않도록 터치 동작이 막혀 있습니다.
점프 한 번의 물리: 높이 87.5픽셀, 체공 약 467밀리초
점프하면 세로 속도가 -13(위쪽)으로 시작하고, 매 프레임 중력 0.9가 더해진 뒤 그 속도만큼 위치가 바뀝니다. 이 규칙을 그대로 돌려 보면 캐릭터는 14번째 프레임에 최고점인 지면 위 87.5픽셀에 이르고, 총 28프레임(60프레임/초 기준 약 467밀리초) 뒤 착지합니다. 게임에서 만들어지는 장애물의 높이는 24~50픽셀이므로, 최고점에서는 가장 높은 장애물보다도 37.5픽셀 위를 지납니다. 다만 최고점 근처에만 여유가 있고 점프 직후와 착지 직전에는 몸이 낮아서, 장애물 위에 "떠 있는" 시간은 높이에 따라 크게 달라집니다.
| 장애물 높이 | 캐릭터 바닥이 그 높이보다 위에 있는 프레임 | 약 시간(밀리초) |
|---|---|---|
| 24픽셀 | 23 / 28 | 383 |
| 30픽셀 | 23 / 28 | 383 |
| 40픽셀 | 21 / 28 | 350 |
| 50픽셀 | 19 / 28 | 317 |
장애물이 높을수록 "넘는 중"이라고 인정되는 시간이 짧아집니다. 가장 높은 50픽셀 장애물은 점프 중 19프레임 동안만 아래로 지나갈 수 있습니다.
점수와 속도: 처음 4.2, 상한 10
장애물이 다가오는 속도는 4.2에서 시작해 점수에 비례해 올라가며(속도 = 4.2 + 점수 × 0.0025), 10에서 멈춥니다. 점수는 매 프레임 속도 × 0.12씩 쌓이므로 처음에는 초당 약 30점, 상한 속도에서는 초당 약 72점이 늘어납니다. 아래 표는 이 두 식을 60프레임/초로 돌려 계산한 값입니다.
| 도달 점수 | 걸린 시간(초) | 그때의 속도 | 초당 이동(픽셀) |
|---|---|---|---|
| 100 | 3.2 | 4.45 | 267 |
| 250 | 7.7 | 4.83 | 290 |
| 500 | 14.5 | 5.45 | 327 |
| 1000 | 25.9 | 6.70 | 402 |
| 2000 | 43.6 | 9.20 | 552 |
| 2320 | 48.2 | 10.00 | 600 |
| 5000 | 85.4 | 10.00 | 600 |
표의 굵은 줄부터는 속도가 더 오르지 않습니다. 약 2,320점을 넘기면 그 뒤로는 난이도가 사실상 고정되고, 이후의 점수는 같은 난이도를 얼마나 오래 버텼는지를 나타냅니다. 위 시간은 60Hz 화면 기준이지만, 이 게임은 고정 시간 간격(1/60초)으로 계산하므로 고주사율 모니터에서도 같은 속도로 진행됩니다.
점프 타이밍이 통하는 구간
"언제 눌러야 하나"는 감으로만 알기 쉬운 부분이지만, 같은 상수로 계산해 볼 수 있습니다. 아래 표는 점프를 입력한 순간 장애물 왼쪽 끝이 캐릭터 오른쪽 끝(가로 76픽셀)에서 얼마나 떨어져 있어야 장애물을 안전하게 넘는지를, 가장 작은 장애물(높이 24 × 폭 16)과 가장 큰 장애물(높이 50 × 폭 30)에 대해 구한 허용 폭입니다. 폭이 넓을수록 여유가 있다는 뜻입니다.
| 속도 | 작은 장애물 허용 폭 | 큰 장애물 허용 폭 |
|---|---|---|
| 4.2 | 59픽셀 (232ms) | 28픽셀 (110ms) |
| 6 | 102픽셀 (283ms) | 64픽셀 (178ms) |
| 8 | 150픽셀 (313ms) | 104픽셀 (217ms) |
| 10 | 198픽셀 (330ms) | 144픽셀 (240ms) |
처음 속도에서 큰 장애물을 넘길 수 있는 입력 시간대는 약 110밀리초뿐입니다. 반대로 속도가 올라가면 "허용 거리"는 넓어지지만 눈으로 판단할 시간이 줄어, 체감 난이도는 오히려 판단 속도의 문제로 바뀝니다. 입력이 너무 이르면 장애물 앞에 착지한 뒤 그대로 부딪히고, 너무 늦으면 오르는 도중에 장애물 옆면에 부딪힙니다.
장애물은 어떻게 나오나
- 높이는 24~50픽셀, 폭은 16~30픽셀 사이에서 무작위로 정해집니다. 난수는 브라우저의 Math.random이며 보안·추첨용 난수가 아닙니다.
- 가장 최근 장애물이 화면 오른쪽 끝에서 140픽셀 이상 들어오면 새 장애물이 나올 수 있고, 그 기준값을 매 프레임 140~260 사이에서 새로 뽑기 때문에 간격은 140픽셀 직후 쪽에 몰립니다. 장애물 사이의 간격은 최소 약 140픽셀에 새 장애물의 폭이 더해진 값입니다.
- 최고 속도(10)에서는 점프 한 번이 약 280픽셀을 이동하는 시간이라, 간격이 가까운 장애물 두 개를 한 번에 넘을 수도 있고 착지하자마자 다음 장애물이 올 수도 있습니다. 첫 속도(4.2)에서는 점프 한 번이 약 118픽셀입니다.
- 모든 배치가 반드시 통과 가능한지는 따로 보장하지 않습니다. 확률적으로 아주 빡빡한 배치가 나올 수 있다는 점은 감안해야 합니다.
계산 예시로 보는 전략
예시 1. 1,000점을 목표로 한다면 표에서 보듯 약 26초를 버텨야 하고, 그 지점의 속도는 약 6.7입니다. 속도가 4.2에서 시작해 중반에도 6~7 수준이라, 앞의 20초는 비교적 여유가 있는 연습 구간입니다.
예시 2. 속도 4.2에서 높이 50, 폭 30 장애물을 만났다면 장애물 왼쪽 끝이 캐릭터 오른쪽 끝에서 대략 17~45픽셀 앞일 때 눌러야 합니다. 시각적으로는 장애물과 캐릭터 사이가 캐릭터 한 칸(26픽셀) 안팎으로 좁혀졌을 때입니다. 작은 장애물은 허용 폭이 훨씬 넓어서 조금 이르거나 늦어도 넘어갑니다.
- 점프를 일찍 누르는 것보다 장애물이 캐릭터 가까이 올 때까지 기다리는 쪽이 안전한 경우가 많습니다. 체공 시간이 약 467밀리초로 고정되어 있어, 일찍 뛰면 착지 후 곧바로 같은 장애물에 닿습니다.
- 높은 장애물일수록 타이밍이 빡빡하므로, 폭이 좁고 낮은 장애물에서 점프 타이밍 감을 먼저 익히세요.
- 착지한 직후 곧바로 점프 입력이 가능합니다. 간격이 좁은 연속 장애물에서는 착지 순간에 맞춰 바로 다음 점프를 준비해야 합니다.
최고 점수 저장과 삭제
최고 점수는 게임이 끝나는 순간에만 이 브라우저의 localStorage(키 이름 obstacle-jump-best)에 저장됩니다. 달리는 도중에 탭을 닫으면 그 판의 점수는 기록되지 않습니다. 기기나 브라우저가 다르면 기록도 공유되지 않으며, 지우려면 브라우저의 사이트 데이터 삭제를 하거나 개발자 도구에서 해당 키를 지우면 됩니다. 서버로 점수를 보내거나 순위를 매기는 기능은 없습니다.
알아두면 좋은 한계
- 충돌 판정은 캐릭터와 장애물 모두 사각형입니다. 눈으로 보이는 모서리가 닿는 순간 곧바로 끝나므로 "스친" 것 같아도 실패입니다.
- 점프 높이는 고정이며, 키를 짧게 누르거나 길게 눌러도 달라지지 않습니다.
- 입력 장치의 지연(블루투스 키보드, 터치 지연 등)은 위 허용 구간에서 곧바로 손해로 이어집니다. 큰 장애물의 허용 폭은 최초 속도에서도 0.1초 남짓이라는 점을 기억하세요.
- 사운드는 점프와 게임 오버 때만 짧은 효과음이 납니다.
자주 묻는 질문
점수는 어떻게 계산되나요?
매 프레임 장애물 속도 × 0.12가 더해집니다. 처음에는 초당 약 30점이고 속도가 올라 상한(10)에 닿으면 초당 약 72점입니다. 점프 횟수나 장애물 개수는 점수에 반영되지 않고, 오직 살아남은 시간(과 그때의 속도)이 점수입니다.
연속으로 두 번 점프할 수 있나요?
아니요, 바닥에 있을 때만 점프할 수 있는 1단 점프 방식입니다. 공중에서는 점프 입력이 무시되며, 착지한 프레임 이후부터 다시 점프할 수 있습니다.
모니터 주사율이 높으면 게임이 더 빠른가요?
아니요. 물리 계산이 1/60초 단위로 고정되어 있어 60Hz, 144Hz 모두 같은 속도로 진행되고, 화면 갱신 횟수만 달라집니다. 성능이 낮은 기기에서 프레임이 크게 떨어지면 게임이 느리게 진행될 수 있습니다.
다른 탭에 갔다 왔더니 게임이 멈춰 있어요.
탭을 벗어나면 자동으로 일시정지되도록 되어 있습니다. 돌아와서 스페이스바나 화면 클릭, 또는 P 키를 누르면 이어서 진행됩니다.
최고 점수가 사라졌어요.
브라우저의 사이트 데이터를 지웠거나 시크릿 모드, 다른 브라우저·기기를 쓴 경우입니다. 기록은 서버가 아니라 이 브라우저에만 저장됩니다.
비슷한 게임
타이밍보다 방향 판단이 필요한 게임은 도로 건너기 게임, 반응 속도 자체를 재고 싶다면 반응 속도 테스트, 한 방향으로 길어지는 스네이크 게임, 공을 튕기는 벽돌깨기 게임도 있습니다.