이 게임이 하는 일
세로로 긴 3차선 도로에서 내 파란 차는 항상 같은 높이에 머물고, 빨간 차들이 위에서 아래로 내려옵니다. 내가 할 수 있는 일은 옆 차선으로 한 칸 옮기는 것뿐입니다. 규칙이 단순한 만큼 승부는 "언제 옮기느냐"와 "어느 차선에 서 있느냐"에서 갈립니다. 아래 내용은 이 페이지 게임 코드에 실제로 들어 있는 수치만 가지고 정리했습니다.
화면과 조작 규칙
- 캔버스는 300×440 픽셀이고 차선은 3개, 차선 하나의 폭은 100픽셀입니다. 차량 크기는 40×66 픽셀입니다.
- 내 차는 세로 위치 350픽셀에 고정되어 있고 시작 차선은 가운데입니다.
- 왼쪽/오른쪽 화살표 키, 화면 아래 ◀ ▶ 버튼, 캔버스 터치(왼쪽 절반 = 왼쪽, 오른쪽 절반 = 오른쪽)로 한 번에 한 차선씩 이동합니다. 이동은 애니메이션 없이 즉시 일어납니다.
- 가장자리 차선에서 바깥쪽으로 누르면 아무 일도 일어나지 않습니다.
- P 키 또는 일시정지 버튼으로 멈췄다가 다시 이어갈 수 있습니다.
- 게임이 끝난 뒤에는 조작 입력이나 다시 시작 버튼으로 새 판을 시작합니다. 충돌 직후 0.5초 동안은 급하게 누른 키가 바로 새 판을 시작하지 않도록 입력을 무시합니다.
- 게임은 화면 주사율(60Hz, 120Hz 등)과 관계없이 초당 60단계로 진행되므로 기기에 따라 속도가 달라지지 않습니다.
점수와 속도가 올라가는 방식
점수는 두 가지로 쌓입니다. 살아 있는 동안 한 단계(1/60초)마다 0.2점이 더해져 초당 약 12점이 오르고, 빨간 차가 화면 아래로 완전히 빠져나갈 때마다 5점이 추가됩니다. 화면에는 소수점을 버린 정수가 표시됩니다. 차량이 내려오는 속도는 점수에 비례해 올라가고, 새 차가 나오는 간격은 점수에 따라 줄어듭니다. 두 값 모두 상한(또는 하한)이 있어 무한히 어려워지지는 않습니다.
- 차량 속도(단계당 픽셀) = 3.5 + 점수 × 0.006, 최대 9.5. 점수 약 1000점에서 상한에 닿습니다.
- 새 차가 나오기까지의 대기 단계 = 60 − 점수 × 0.05, 최소 28. 점수 약 640점에서 하한에 닿습니다.
- 새 차의 차선은 3개 중 무작위로 고르고 앞서 나온 차선은 기억하지 않기 때문에, 같은 차선이 연속해서 나오기도 합니다.
점수 구간별 속도·간격 표
아래 표는 위 공식을 그대로 계산한 값입니다. "충돌 위험 시간"은 빨간 차가 내 차선의 충돌 구간(132픽셀)을 지나는 데 걸리는 시간이고, "다음 차까지 여유"는 앞차의 뒤끝이 지나간 뒤 다음 차의 앞끝이 같은 지점에 오기까지의 시간입니다.
| 점수 | 속도(px/단계) | 초당 이동(px) | 생성 간격(단계) | 차 사이 거리(px) | 충돌 위험 시간(초) | 다음 차까지 여유(초) |
|---|---|---|---|---|---|---|
| 0 | 3.50 | 210 | 60.0 | 210 | 0.63 | 0.69 |
| 100 | 4.10 | 246 | 55.0 | 225 | 0.54 | 0.65 |
| 200 | 4.70 | 282 | 50.0 | 235 | 0.47 | 0.60 |
| 400 | 5.90 | 354 | 40.0 | 236 | 0.37 | 0.48 |
| 640 | 7.34 | 440 | 28.0 | 206 | 0.30 | 0.32 |
| 1000 | 9.50 | 570 | 28.0 | 266 | 0.23 | 0.35 |
표에서 눈에 띄는 점은 "다음 차까지 여유"가 초반 0.7초 수준에서 줄어들다가 후반에는 0.3초 안팎에서 멈춘다는 것입니다. 생성 간격은 줄어도 속도가 같이 올라가서 차 사이 거리가 200~270픽셀 근처에서 크게 벗어나지 않기 때문에, 난이도는 차가 촘촘해지는 것보다 판단할 시간이 짧아지는 쪽으로 올라갑니다. 맨 위에서 맨 아래까지 한 대가 가로지르는 시간도 처음 약 2.41초에서 최고 속도에서는 약 0.89초로 줄어듭니다.
충돌 판정은 이렇게 계산됩니다
충돌은 "같은 차선"이면서 "세로로 겹칠 때"만 일어납니다. 내 차의 위쪽 끝이 350, 아래쪽 끝이 416이므로, 같은 차선의 빨간 차 위쪽 끝이 284를 넘고 416 아래로 내려가기 전까지 132픽셀 구간이 위험합니다. 다른 차선에서는 아무리 가까이 지나가도 닿지 않으며, 옆 차선 차가 내 차 바로 옆을 스치는 것은 안전합니다. 이동이 즉시 일어나므로 이미 위험 구간에 들어와 있는 차선으로 옮기면 그 순간 충돌합니다.
차가 보이고 나서 위험 구간까지 남는 시간
새 차는 캔버스 위쪽 바깥(세로 위치 −66)에서 만들어지고, 같은 차선의 내 차와 겹치기 시작하는 284픽셀 선을 넘기까지 350픽셀을 내려옵니다. 이 거리를 속도로 나눈 값이 "눈으로 보고 결정할 수 있는 시간"입니다. 오른쪽 열은 앞차의 위험 구간이 끝난 뒤 다음 차의 위험 구간이 시작되기까지 비어 있는 시간이고, 마지막 열은 동시에 화면에 떠 있는 차의 평균 대수입니다.
| 점수 | 스폰 후 위험 구간까지(초) | 같은 시간(단계) | 두 차 위험 구간 사이 빈 시간(초) | 화면 속 차 수(평균) |
|---|---|---|---|---|
| 0 | 1.67 | 100 | 0.37 | 2.4 |
| 100 | 1.42 | 85 | 0.38 | 2.2 |
| 200 | 1.24 | 74 | 0.37 | 2.2 |
| 400 | 0.99 | 59 | 0.29 | 2.1 |
| 640 | 0.79 | 48 | 0.17 | 2.5 |
| 1000 | 0.61 | 37 | 0.24 | 1.9 |
처음에는 새 차가 나타나고 약 1.67초(= 100단계)의 여유가 있지만 점수 1000 이후에는 0.6초 남짓으로 줄어듭니다. 반면 "빈 시간"이 항상 0보다 크다는 점은 중요합니다. 점수 0부터 수천 점까지 게임 규칙을 그대로 돌려 연속한 두 차의 세로 간격을 재 보면 최소가 약 208픽셀로, 위험 구간 길이(132픽셀)보다 계속 큽니다. 그래서 서로 다른 두 차가 동시에 내 차와 겹치는 일은 없습니다. 그래서 이 게임은 위험이 한 번에 한 대씩만 오고, 운이 나빠서 피할 길이 완전히 막히는 상황은 없습니다. 어려워지는 이유는 "다음 차를 보고 나서 움직일 시간"이 줄기 때문입니다.
오래 버틸 때의 점수 곡선
한 번도 부딪히지 않는다고 가정하고 게임 한 단계의 계산(이동, 통과 보너스, 시간 점수, 속도·간격 갱신)을 그대로 돌려 본 결과입니다. 최고 속도에 닿은 뒤에는 난이도가 더 오르지 않아 점수가 거의 일정한 비율로 쌓입니다.
| 생존 시간(초) | 이때의 점수(정수) |
|---|---|
| 10 | 164 |
| 30 | 544 |
| 60 | 1220 |
| 120 | 2584 |
| 180 | 3949 |
예를 들어 최고 점수가 1000점대 초반인 사람은 대략 1분 안팎까지 살아남는 셈이고, 2000점은 약 90~100초 근처에 해당합니다. 속도가 상한에 닿은 뒤에는 시간이 지나도 차량 속도가 그대로이기 때문에, 점수 차이는 집중력이 얼마나 오래 유지되느냐로 갈립니다. 이 값은 무충돌 이상 상황의 계산이며, 실제 기록은 판마다 난수에 따라 다릅니다.
검산 예시
예시 1. 최고 속도에 닿는 점수. 속도 식 3.5 + 점수 × 0.006 이 9.5가 되려면 점수 × 0.006 = 6.0, 즉 점수 1000점이 필요합니다. 점수 1000에서의 이동은 초당 9.5 × 60 = 570픽셀로, 캔버스 높이 440픽셀을 1초도 안 되어 지납니다.
예시 2. 생성 간격 하한. 60 − 점수 × 0.05 = 28 이면 점수는 (60 − 28) ÷ 0.05 = 640점입니다. 이때 속도는 3.5 + 640 × 0.006 = 7.34이므로 차 사이 거리는 28 × 7.34 ≈ 206픽셀, 차 길이 66픽셀을 빼면 약 140픽셀의 빈 공간이 생깁니다.
예시 3. 시간만으로 쌓이는 점수. 한 대도 피하지 않고 가만히 살아 있기만 하면 초당 12점이므로 10초에 120점입니다. 실제로는 그 사이 지나친 차량마다 5점이 더해지므로, 같은 10초라도 차 8대를 보냈다면 120 + 40 = 160점이 됩니다(가정한 숫자입니다).
상황별 판단 예시
상황 1. 가운데에서 정면 차를 만났을 때(점수 640 근처). 가운데 차선의 차가 위험 구간에 들어오기 전 약 0.79초(48단계) 동안은 어느 쪽으로 옮겨도 안전합니다. 다만 옮겨 간 차선에 다음 차가 올 수 있으니, 두 차의 위험 구간 사이 빈 시간이 약 0.17초뿐이라는 점을 기억하세요. 즉 첫 차가 지나가기 전에 다음 차가 어느 차선인지 확인하고 이동 방향을 정하는 것이 핵심입니다.
상황 2. 가장자리에서 반대편으로. 왼쪽 끝 차선에 있는데 다음 차가 왼쪽 끝과 가운데에 연달아 나온다면 오른쪽 끝으로 가야 하지만, 한 번에 한 칸씩만 움직이므로 두 번 입력해야 합니다. 점수 0 구간처럼 여유가 1.67초 정도일 때는 문제가 없지만, 최고 속도 구간(0.61초)에서는 입력 두 번 사이 간격까지 계산해야 하므로 처음부터 가운데에 서 있는 것이 훨씬 안정적입니다.
상황 3. 일시정지로 위치를 확인할 때. P 키나 일시정지 버튼으로 멈춘 동안은 게임이 진행되지 않아 점수가 오르지 않고 차도 움직이지 않습니다. 다시 이어갈 때는 시간 기준점이 초기화되므로 멈춘 시간만큼 차가 한꺼번에 내려오지 않습니다. 다만 일시정지는 연습용 도구일 뿐이며 최고 기록을 늘려 주지는 않습니다.
탭을 벗어났다 돌아올 때와 입력 지연
브라우저는 다른 탭이나 창으로 가면 화면 그리기를 멈추는 경우가 많습니다. 이 게임은 돌아온 뒤 처리할 시간 차이를 한 번에 최대 100밀리초(약 6단계)까지만 따라잡도록 제한해 두었기 때문에, 오래 비워 둬도 차 여러 대가 한꺼번에 몰려오지는 않습니다. 그래도 게임 중에 탭을 옮기는 것은 피하고, 필요하면 일시정지를 쓰세요. 입력은 눌린 순간 곧바로 반영되지만 화면에는 다음 그리기에서 나타나므로, 60Hz 화면에서는 눈에 보이는 위치가 최대 한 프레임(약 0.017초)쯤 늦을 수 있습니다.
코드 규칙에서 나오는 공략
- 가운데 차선을 기본 위치로 삼으세요. 가운데에서는 한 번 누르면 양쪽 어느 쪽으로든 갈 수 있지만, 가장자리에서 반대편 끝으로 가려면 두 번을 눌러야 합니다.
- 차선을 바꾸는 타이밍은 위험 구간 진입 전입니다. 이동이 즉시이므로 서두를 필요가 없고, 피하려는 차가 내 차 위쪽 284픽셀 선 위에 있을 때까지는 안전하다는 점을 이용해 다음 차의 위치까지 보고 옮길 곳을 정하세요.
- 한 번에 한 차선만 옮깁니다. 양쪽 끝 차선 사이를 오가야 한다면 중간 차선이 비는 순간을 거쳐야 하므로, 빨간 차가 연달아 양쪽 끝에 나오는 패턴을 미리 읽는 것이 중요합니다.
- 키를 연타하지 마세요. 입력이 쌓이는 방식이 아니라 눌린 만큼 즉시 이동하기 때문에, 습관적으로 두 번 누르면 안전하던 차선에서 벗어나 위험한 차선으로 들어갑니다.
흔한 실수와 한계
- 차가 내 차 옆을 지나는 중인데 "이미 지나갔다"고 판단해 옆 차선으로 들어가는 실수가 가장 많습니다. 판정은 차량의 아래쪽 끝이 내 차의 위쪽 끝을 지나야 끝납니다.
- 이 게임에는 아이템, 생명, 난이도 선택이 없고 한 번 충돌하면 바로 끝납니다. 차량은 직선으로만 내려오며 차선을 바꾸거나 옆으로 움직이지 않습니다.
- 난수는 브라우저의 Math.random() 하나뿐이며 보안용이 아닌 일반 난수입니다. 같은 패턴이 반복되도록 고정하는 기능은 없습니다.
- 점수 기록은 판 사이에만 비교하는 용도입니다. 기기·주사율에 따라 달라지지 않지만, 키보드 지연이나 터치 반응 같은 입력 환경 차이는 반영하지 못합니다.
최고 점수 저장
최고 점수는 이 브라우저의 localStorage에 키 lane-dodge-best로 저장되며 서버로 전송되지 않습니다. 기기나 브라우저를 바꾸면 이어지지 않고, 브라우저의 사이트 데이터 삭제(또는 개발자 도구의 Application 탭에서 해당 키 삭제)로 지울 수 있습니다. 시크릿 모드에서는 창을 닫을 때 사라질 수 있습니다.
자주 묻는 질문
차선은 몇 개인가요?
총 3개입니다. 왼쪽·오른쪽 입력은 한 번에 한 칸씩 이동하며, 끝 차선에서 바깥쪽으로 입력하면 무시됩니다.
속도는 얼마나 빨라지나요?
처음에는 단계당 3.5픽셀(초당 210픽셀)이고 점수 1000점 근처에서 상한인 9.5픽셀(초당 570픽셀)에 닿은 뒤로는 더 빨라지지 않습니다. 생성 간격은 640점 근처에서 하한 28단계에 닿습니다.
고주사율 모니터나 느린 폰에서도 같은 난이도인가요?
게임 진행은 시간을 기준으로 초당 60단계로 맞춰져 있어 120Hz 화면에서도 속도가 두 배가 되지 않습니다. 다만 아주 느린 기기에서 화면이 끊기면 그 사이 진행이 한꺼번에 처리되어 갑자기 차가 가까워진 것처럼 보일 수 있습니다.
모바일에서는 어떻게 조작하나요?
캔버스의 왼쪽 절반을 터치하면 왼쪽으로, 오른쪽 절반을 터치하면 오른쪽으로 한 칸 이동합니다. 화면 아래의 ◀ ▶ 버튼도 같은 동작을 합니다.
충돌했는데 억울해요. 판정이 정확한가요?
판정은 같은 차선에서 두 차의 세로 범위가 겹치는지만 봅니다. 가로 방향의 스침은 없으므로, 충돌했다면 그 순간 같은 차선에서 빨간 차와 내 차가 세로로 겹쳐 있었다는 뜻입니다. 위 표의 "충돌 위험 시간"이 그 겹침이 이어지는 길이입니다.
첫 번째 차는 언제 나오나요?
게임을 시작하는 첫 단계에서 곧바로 한 대가 만들어집니다. 속도 3.5로 내려오면 약 100단계, 시간으로 1.67초 뒤에 내 차선의 위험 구간에 들어오므로 첫 판은 화면을 읽을 시간이 충분합니다.
점수가 오르는 속도는 일정한가요?
아닙니다. 시간 점수는 초당 약 12점으로 일정하지만 통과 보너스는 차가 지나가는 빈도에 따라 늘어나므로, 속도가 오르면 초당 점수도 함께 올라갑니다. 위 생존 곡선 표처럼 최고 속도에 닿기 전에는 구간마다 증가폭이 조금씩 커집니다.
충돌 직후 키를 눌러도 새 판이 안 시작되는 이유는요?
충돌 후 0.5초 동안은 조작 입력을 무시하도록 되어 있습니다. 급하게 누르던 방향키가 의도치 않게 새 판을 시작하는 일을 막기 위한 것이며, 0.5초가 지나면 방향키나 캔버스 터치로도 다시 시작됩니다.
최고 점수가 사라졌어요.
최고 점수는 브라우저 localStorage의 lane-dodge-best 키에 있습니다. 사이트 데이터를 지우거나 다른 브라우저·기기에서 접속하면 보이지 않는 것이 정상입니다.
비슷한 순발력 게임
점프로 장애물을 넘는 방식은 장애물 점프 게임, 사방에서 날아오는 탄을 피하는 방식은 탄막 피하기 생존 게임, 틈새를 통과해야 하는 방식은 틈새 비행 피하기 게임, 깃발 사이를 빠져나가는 방식은 스키 슬라롬 게임에서 즐길 수 있습니다.