이 게임을 한 문단으로
운석 격추 게임은 화면 아래에 고정된 우주선을 좌우로만 움직이며, 위에서 쏟아지는 운석을 자동 발사되는 광선으로 부수는 슈팅 게임입니다. 발사 버튼이 없기 때문에 플레이어가 결정하는 것은 단 하나, 지금 어느 가로 위치에 서 있을 것인가입니다. 운석 하나를 격추할 때마다 10점을 얻고, 운석이 우주선에 닿으면 목숨이 하나 줄며, 목숨 3개가 모두 사라지면 끝납니다. 짧은 점심시간에 한 판 하기에도, 어떤 위치 선택이 안전한지 따져 보며 기록을 올리기에도 맞게 규칙을 단순하게 유지한 게임입니다.
규칙과 수치 한눈에 보기
아래 값은 이 페이지의 게임 코드에서 직접 읽은 것입니다. 화면 크기와 속도 단위는 게임 내부 좌표(캔버스 420×480) 기준입니다.
- 캔버스: 가로 420, 세로 480. 우주선은 아래에서 40만큼 올라온 높이(y=440)에 고정되고, 폭 34, 높이 22의 삼각형입니다.
- 광선: 14프레임마다 한 발씩 자동 발사됩니다. 60프레임을 1초로 보면 초당 약 4.29발이고, 광선 한 발은 프레임당 7만큼 위로 올라갑니다. 같은 가로 줄에서 연달아 나가는 광선 사이의 세로 간격은 약 98입니다.
- 점수: 운석 격추 1개당 10점. 운석 크기와 상관없이 같은 점수이며, 광선 한 발이면 어떤 크기든 즉시 부서집니다.
- 목숨: 3개. 운석이 우주선 판정 범위에 들어오면 그 운석은 사라지고 목숨이 1 줄어듭니다.
- 놓친 운석: 우주선을 지나 화면 아래로 떨어진 운석은 점수도 감점도 없이 그냥 사라집니다. 목숨은 오직 우주선과의 충돌로만 줄어듭니다.
- 이동: 방향키·A/D 키는 프레임당 6씩(캔버스 한쪽 끝에서 반대쪽 끝까지 약 1.1초), 마우스와 터치는 포인터 위치로 바로 이동합니다.
- 무작위: 운석의 가로 위치, 크기(반지름 12~26), 기본 속도, 회전 방향이
Math.random()으로 정해집니다. 보안 목적의 난수가 아니라 게임용 일반 난수입니다.
시간이 지나면 얼마나 어려워지나
난이도는 "단계"가 아니라 경과 시간에 따라 연속적으로 올라갑니다. 등장 간격은 처음 62프레임에서 시작해 200프레임(약 3.3초)마다 1프레임씩 줄어 최소 28프레임에서 멈추고, 운석의 낙하 속도에는 경과 프레임을 1800으로 나눈 값이 더해지되 최대 2.5까지만 더해집니다. 아래 표는 이 식으로 빌드 시 계산한 값입니다. "우주선 도달 시간"은 화면 위에서 우주선 높이까지 440만큼 내려오는 데 걸리는 시간을 단순 환산한 근사치입니다.
| 경과 시간 | 등장 간격 | 초당 등장 | 속도 범위(프레임당) | 우주선 도달(빠른~느린) |
|---|---|---|---|---|
| 0초 | 62프레임 | 0.97개 | 1.60 ~ 3.00 | 2.4초 ~ 4.6초 |
| 15초 | 58프레임 | 1.03개 | 2.10 ~ 3.50 | 2.1초 ~ 3.5초 |
| 30초 | 53프레임 | 1.13개 | 2.60 ~ 4.00 | 1.8초 ~ 2.8초 |
| 60초 | 44프레임 | 1.36개 | 3.60 ~ 5.00 | 1.5초 ~ 2.0초 |
| 90초 | 35프레임 | 1.71개 | 4.10 ~ 5.50 | 1.3초 ~ 1.8초 |
| 120초 | 28프레임 | 2.14개 | 4.10 ~ 5.50 | 1.3초 ~ 1.8초 |
표에서 읽을 수 있는 사실이 두 가지 있습니다. 속도 보너스는 75초(4,500프레임)에 상한에 닿고, 등장 간격은 약 113초(6,800프레임)에 하한에 닿습니다. 그 뒤로는 난이도가 더 오르지 않으니, 2분을 넘긴 시점부터는 같은 강도의 판이 계속됩니다. 코드를 그대로 재현해 세어 보면 처음 30초 동안 약 31개, 60초까지 약 68개, 120초까지 약 171개의 운석이 등장합니다. 광선 발사 속도(초당 약 4.3발)가 후반의 등장 속도(초당 약 2.1개)보다 빠르기 때문에, 화력 자체가 모자라서 지는 일은 드뭅니다. 병목은 "광선이 운석 아래 줄에 있느냐"입니다.
충돌 판정: 운석 크기와 피해야 할 폭
우주선과 운석의 충돌은 원이 아니라 사각형 범위로 검사합니다. 가로 차이가 우주선 폭의 절반(17)에 운석 반지름의 0.6배를 더한 값보다 작고, 세로 차이도 우주선 높이의 절반(11)에 같은 보정을 더한 값보다 작으면 충돌입니다. 운석 반지름은 12에서 26 사이이므로 크기별 판정 범위는 아래와 같습니다.
| 운석 반지름 | 화면에 보이는 지름 | 가로 판정(좌우 각각) | 세로 판정(상하 각각) |
|---|---|---|---|
| 12 | 24 | ±24.2 | ±18.2 |
| 19 | 38 | ±28.4 | ±22.4 |
| 26 | 52 | ±32.6 | ±26.6 |
가장 큰 운석(반지름 26)은 눈에 보이는 폭이 52인데 가로 판정은 좌우 ±32.6로, 우주선 중심 기준 약 65의 띠가 위험 구역입니다. 운석이 우주선 가로 중심에서 이보다 멀리 떨어진 줄로 내려오면 닿지 않습니다. 이 판정은 운석이 우주선 높이를 지나는 순간의 가로 거리만 따지므로, 운석이 떨어지는 동안 우주선이 어디에 있었는지는 상관없습니다.
계산 예시로 보는 위험 구간
예시 1. 한 번 피하는 데 필요한 이동 거리. 중간 크기(반지름 19) 운석이 정확히 우주선 바로 위 줄로 내려온다면 가로 판정이 ±28.4이므로, 우주선 중심을 최소 그 값보다 멀리 옮겨야 합니다. 방향키 속도는 프레임당 6이므로 28.4를 이동하는 데 약 5프레임, 즉 0.08초가 걸립니다. 60초 시점의 가장 빠른 운석도 위에서 우주선까지 1.5초가 걸리므로, 운석이 보이자마자 반응하면 시간이 충분합니다.
예시 2. 화력 대 등장 속도. 초당 약 4.29발이 나가고 광선 한 발이 운석 한 개를 부수므로, 한 줄에서 이론상 초당 약 4.3개까지 격추할 수 있습니다. 후반 등장 속도 2.14개/초와 비교하면 약 2.0배의 여유가 있습니다. 하지만 운석이 가로로 흩어져 내려오기 때문에 우주선이 한 곳에 서 있으면 다른 줄의 운석은 부수지 못합니다. 그래서 점수 효율은 "많이 움직이기"가 아니라 "운석이 몰리는 줄을 읽기"에서 나옵니다.
예시 3. 점수 환산. 점수는 격추 수에 10을 곱한 값입니다. 60초까지 등장하는 약 68개를 모두 격추하면 680점이 상한이고, 그중 몇 개는 놓칠 수밖에 없으므로 실제 점수는 그 아래입니다. 이 수치는 규칙에서 나온 상한이지 평균 기록이 아닙니다.
코드 규칙에서 도출되는 전략
- 운석은 가로로 흐르지 않습니다. 코드에서 운석의 가로 위치는 생성 후 바뀌지 않고 세로로만 내려옵니다. 그래서 위에서 운석이 보이면 그 가로 줄이 곧 도착 지점입니다. 우주선을 그 줄에서 멀리 두면 안전하고, 그 줄 아래에 두면 격추할 수 있습니다.
- 크기는 점수와 무관합니다. 큰 운석이든 작은 운석이든 10점이고 한 발이면 부서집니다. 대신 큰 운석은 판정 폭이 넓으므로 격추를 서둘러야 합니다.
- 광선은 발사 순간의 위치를 따릅니다. 우주선이 움직이면 광선은 지나온 자리에 줄지어 남기 때문에, 이동 중에는 사선 형태로 광선이 깔리고 운석 바로 아래에서 멈춰야 정확히 맞습니다. 발사 주기는 이동과 무관하게 계속 돌아가므로, 멈추는 타이밍이 어긋나면 한 박자 늦게 맞기도 합니다.
- 놓친 운석을 쫓아가지 마세요. 우주선을 지나친 운석은 감점이 없고, 쫓아가려다 다른 줄의 운석 아래로 들어가는 편이 더 위험합니다.
- 대기 위치는 중앙 근처가 유리합니다. 화면 가장자리에 붙어 있으면 피할 수 있는 방향이 한쪽으로 줄어듭니다. 중앙에서 양쪽을 열어 두면 어느 쪽 줄에서 운석이 내려와도 반대편으로 비킬 수 있습니다.
- 빠른 운석은 광선을 스칠 수 있습니다. 광선은 한 점으로 검사하고 프레임마다 위치를 확인합니다. 후반에 운석이 빨라지면 가장자리를 스치는 광선이 맞지 않고 지나갈 가능성이 있으므로, 큰 운석은 중심 줄에 맞추는 편이 확실합니다.
흔한 실수와 오해
- "운석을 놓치면 목숨이 줄어든다"는 오해: 이 게임에서는 줄지 않습니다. 목숨은 우주선과의 충돌에서만 줄어듭니다.
- 마우스를 캔버스 위에 올려 두면 움직일 때마다 우주선이 따라오므로, 다른 곳을 보며 마우스를 건드리면 의도치 않게 이동할 수 있습니다. 자리를 비울 때는 일시정지를 쓰세요.
- 터치 중 손가락이 캔버스 밖으로 나가도 우주선의 가로 위치는 캔버스 범위 안으로 제한되어 끝에서 멈춥니다.
- 한글 입력 상태에서도 A/D 키가 동작하도록 물리 키 위치(KeyA, KeyD)로 인식합니다. 그래도 반응이 없다면 페이지를 한 번 클릭해 포커스를 맞춰 주세요.
한계와 저장되는 정보
이 게임에는 아이템, 보스, 별도 난이도 선택이 없고 모든 판이 같은 규칙으로 진행됩니다. 점수 순위표나 서버 저장도 없습니다. 최고 점수만 이 브라우저의 localStorage에 meteor-shooter-best라는 키로 저장되며, 다른 기기나 다른 브라우저와는 동기화되지 않습니다. 기록을 지우려면 브라우저의 사이트 데이터(쿠키 및 저장공간) 삭제를 하면 되고, 개발자 도구의 Application 탭에서 이 키만 삭제할 수도 있습니다. 시크릿 모드에서는 창을 닫으면 기록이 사라질 수 있습니다.
다른 반사신경 게임도 즐겨보세요
점프로 장애물을 피하는 게임이 궁금하다면 장애물 점프 게임도, 패들로 공을 튕겨내는 게임이 궁금하다면 패들 볼 게임도, 총알 사이를 빠져나가는 방식이 궁금하다면 총알 피하기 생존 게임도 확인해보세요.
자주 묻는 질문
운석은 항상 정해진 자리에서만 떨어지나요?
아니요. 운석마다 가로 위치, 크기(반지름 12~26), 기본 속도가 무작위로 정해지므로 같은 패턴이 반복되지 않습니다. 대신 한 번 정해진 운석은 가로로 흔들리지 않고 곧게 내려옵니다.
목숨은 몇 개이고 언제 줄어드나요?
3개로 시작하며, 운석이 우주선 판정 범위에 닿을 때만 하나씩 줄어듭니다. 운석을 격추하지 못하고 화면 아래로 지나가게 두는 것만으로는 목숨이 줄지 않습니다.
광선을 직접 쏘는 버튼은 없나요?
없습니다. 14프레임(대략 0.23초)마다 자동으로 한 발이 나갑니다. 플레이어가 조절하는 것은 우주선의 가로 위치뿐입니다.
일시정지와 자동 정지는 어떻게 동작하나요?
일시정지 버튼, P 키, Esc 키로 멈추고 다시 누르면 이어집니다. 다른 탭으로 이동하면 게임이 자동으로 일시정지되어, 돌아왔을 때 갑자기 목숨이 줄어드는 일이 없습니다.
고주사율 모니터에서도 속도가 같은가요?
네. 게임 로직을 초당 60번의 고정 간격으로 계산하므로 60Hz, 144Hz 화면에서 운석 속도와 발사 간격이 같게 유지됩니다.
최고 점수는 어디에 저장되나요?
이 브라우저의 localStorage(meteor-shooter-best)에만 저장되어 서버로 전송되지 않으며, 사이트 데이터를 지우면 함께 사라집니다.