탄막 회피 서바이벌 게임

방향키(또는 화면의 버튼)로 이동하며 사방에서 날아오는 탄막을 최대한 오래 피해보세요.

생존 시간: 0.0초최고 기록: 0.0초

방향키 또는 WASD로 이동, P로 일시정지, 게임이 끝나면 Space·Enter로 재시작합니다.

이 게임은 어떤 방식인가요?

360×360px 정사각형 화면 가운데에서 초록 구슬(반지름 8px)을 움직여, 가장자리에서 나타나 날아오는 빨간 탄(반지름 5px)을 피하는 생존 게임입니다. 구슬과 탄의 중심 거리가 13px(= 8 + 5) 미만이 되는 순간 즉시 끝나고, 그때까지의 생존 시간이 기록입니다. 체력, 아이템, 무기, 점수가 따로 없고 시간 하나만 쌓입니다. 아래 수치는 모두 이 페이지 코드의 상수에서 계산한 것입니다.

시간에 따라 어떻게 어려워지는가

탄 속도는 90 + min(6×경과초, 160) px/s이고, 발사 간격은 max(0.28, 1.1 − 0.02×경과초)초입니다. 탄 속도는 약 26.7초에 최대치 250px/s에 이르고, 발사 간격은 41초에 최소 0.28초에 이릅니다. 그 이후로는 더 어려워지지 않고 같은 강도가 유지됩니다.

경과 시간탄 속도(px/s)발사 간격(초)분당 발사 수가장자리 중앙→화면 중심(초)그동안 구슬이 움직일 수 있는 거리(px)속도 비교(구슬 190)
0초901.10552.00380내가 더 빠름
10초1500.90671.20228내가 더 빠름
20초2100.70860.86163탄이 더 빠름
30초2500.501200.72137탄이 더 빠름
40초2500.302000.72137탄이 더 빠름
60초2500.282140.72137탄이 더 빠름

탄이 구슬보다 빨라지는 시점은 약 16.7초입니다. 그 이후에는 "달아나기"로는 탄을 따돌릴 수 없고, 탄의 진행 방향에서 옆으로 비켜서는 방식이 필요합니다. 누적 발사 수는 10초에 약 10발, 30초에 약 39발, 60초에 약 135발, 120초에 약 346발입니다. 탄은 화면 밖 40px 바깥으로 나가면 사라지므로 한 시점에 화면에 존재하는 탄의 수는 이보다 훨씬 적습니다.

시간대별로 나눠 보는 한 판

구간별 발사 수와 화면 위의 탄 수

발사 간격이 계속 줄어들기 때문에 같은 10초라도 시기에 따라 쏟아지는 탄의 양이 전혀 다릅니다. 아래 표는 60단계/초 시뮬레이션으로 센 구간별 발사 수입니다.

구간(초)발사 수초당 발사
0~1010발1.00
10~2012발1.20
20~3017발1.70
30~4543발2.87
45~6053발3.53
60~90105발3.50
90~120106발3.53

처음 10초에는 10발이지만 90~120초 구간에서는 30초 동안 106발, 즉 초당 3.53발입니다. 그렇다면 화면에는 동시에 몇 발이 떠 있을까요? 탄은 화면 밖 40px 지점에서 지워지므로, 중심을 지나 반대편으로 나가는 직선 경로라면 가장자리 10px 바깥에서 40px 바깥까지 약 410px를 날아갑니다. 시점별로 이 시간을 발사 간격으로 나누면 대략의 동시 탄 수가 나옵니다.

경과 시간탄 속도(px/s)발사 간격(초)410px 통과 시간(초)동시에 떠 있는 탄(대략)
0초901.104.564.1발
20초2100.701.952.8발
40초2500.301.645.5발
60초2500.281.645.9발

이 값은 가장 긴 직선 경로 기준의 근사입니다. 구슬 쪽으로 조준한 탄은 대개 더 짧게 날아 사라지므로 실제 평균은 이보다 적고, 비스듬히 스쳐 가는 탄은 더 오래 남습니다. 어쨌든 최대 강도 구간에서도 화면에 한꺼번에 열 발 안팎 이상이 쌓이는 일은 드뭅니다. 어려움의 정체는 탄의 개수보다 "탄이 구슬보다 빠르고 새 탄이 0.28초마다 나타난다"는 점입니다.

조준과 피격 판정에서 나오는 계산

탄은 가장자리 네 변 중 한 곳에서 10px 바깥의 무작위 위치에 만들어지고, 그 순간 구슬이 있던 위치를 향해 발사됩니다. 여기에 ±0.7 rad(약 ±40도)의 무작위 오차가 더해져 완전한 추적 탄은 아닙니다. 한번 발사된 탄은 방향을 바꾸지 않고 직진합니다.

가만히 서 있는 구슬이 어느 탄에 맞을 확률을 대략 계산해 보면, 거리 D만큼 떨어진 곳에서 날아오는 탄이 맞으려면 오차 각도가 asin(13/D)보다 작아야 하므로 확률은 asin(13/D) ÷ 0.7입니다. 화면 한가운데에 서 있고 탄이 변 중앙에서 나왔다면(생성 위치가 10px 바깥이라 D=190) 약 9.8%, 모서리에서 나왔다면(D≈269) 약 6.9%입니다. 탄 한 발 한 발은 대체로 빗나가지만, 발사 수가 쌓이면 가만히 있는 시간이 곧 위험이 됩니다. 반대로 이 계산은 "탄의 경로에서 13px만 벗어나도 안전"이라는 뜻이기도 합니다.

가만히 있으면 얼마나 버틸까: 모델 계산

탄이 나오는 변을 같은 확률로 고르고 변 위의 위치도 고르게 뽑는다는 코드 규칙을 그대로 적용하면, 화면 중앙에 가만히 서 있는 구슬이 탄 한 발에 맞을 평균 확률은 약 8.7%입니다(변 중앙에서 나온 탄은 약 10%, 모서리에서 나온 탄은 약 7%인 값들의 평균). 발사가 서로 독립이라고 보면 누적 발사 수 8발째에서 맞았을 확률이 50%를 넘고, 이는 발사 일정으로 보면 약 8.1초 시점입니다. 90% 확률로 이미 맞은 시점은 26발, 약 22.3초입니다. 탄이 날아오는 시간(초반 최대 2초 안팎)은 반영하지 않은 근사이므로 실제 게임 오버는 이보다 1~2초 늦게 찍힙니다.

이 계산은 단순한 모델이라 실제 플레이 기록과 일치한다고 보장하지는 않습니다. 의미는 두 가지입니다. 첫째, 아무 조작 없이도 몇 초는 버티므로 짧은 기록만으로 실력을 평가하기는 어렵습니다. 둘째, 가만히 서 있으면 이 모델에서는 약 8초에 절반, 22초 안팎에 90%가 이미 맞은 셈이므로 오래 버티려면 움직임이 필요합니다. 기록을 늘리는 첫 단계는 "탄을 피하기"가 아니라 "조준이 정확히 맞는 자리에 머물지 않기"입니다.

코드 규칙에서 도출한 생존 요령

흔한 실수와 한계

가장 흔한 실수는 탄이 지나간 직후 방향을 반대로 크게 바꾸다 새로 발사된 탄 앞으로 들어가는 것입니다. 새 탄은 방금 있던 위치가 아니라 발사 순간의 위치를 향하므로, 큰 동작보다 짧게 비키고 되돌아오는 소동작이 유리합니다. 또 화면 가장자리의 구슬은 이동이 막혀 있어, 탄이 나타나기 전에 안쪽으로 되돌아와야 합니다.

이 게임에는 생명 수, 무적 시간, 방어막, 점수 배율이 없고 난이도 선택이나 스테이지도 없습니다. 탄이 나오는 변, 위치, 조준 오차는 Math.random으로 정해지므로 같은 판이 반복되지 않으며 승패에 영향을 주는 공정성용 난수가 아닙니다. 프레임 간 시간은 최대 0.05초로 제한되어, 브라우저 탭이 느려져도 한 번에 크게 이동하지 않습니다. 창이 포커스를 잃으면 자동으로 일시정지됩니다.

일시정지, 포커스, 재시작의 세부 동작

연습 방법: 목표를 나눠서 잡기

기록이 정체되면 시간대별로 구체적인 목표를 정해 보세요. 처음 15초는 탄이 구슬보다 느린 구간이므로 서두를 이유가 없습니다. 이 구간에서 가운데를 벗어나지 않고 옆으로 한두 걸음 비키는 동작만으로 피하는 연습을 합니다. 15~30초 구간은 탄이 구슬보다 빨라지기 시작하므로, 탄을 눈으로 쫓지 말고 새로 나타난 탄의 출발 위치에서 중심을 잇는 선만 보고 그 선에서 13px 이상 벗어나는 습관을 들입니다. 27초 이후에는 간격이 0.56초 아래로 줄어 한 번에 두 방향을 신경 써야 하므로, 이동을 한 방향 위주로 단순하게 하는 편이 낫습니다.

기록을 비교할 때는 한 판의 결과가 아니라 여러 판의 중앙값을 보세요. 탄의 방향이 매번 무작위라 한 판만으로는 운의 영향이 큽니다. 예를 들어 여섯 판의 생존 시간이 20, 35, 14, 41, 27, 33초라면 중앙값은 정렬한 값(14, 20, 27, 33, 35, 41)의 가운데 두 값 27과 33의 평균인 30초입니다. 최고 기록 41초는 우연히 좋았던 판이고 안정적인 실력은 30초 안팎이라고 읽는 것이 정확합니다.

최고 기록 저장

최고 생존 시간은 이 브라우저의 localStorage bullet-dodge-best 키에 소수점 한 자리 단위로 저장되어 새로고침해도 유지됩니다. 다른 기기와 동기화되지 않으며, 지우려면 브라우저의 사이트 데이터를 삭제하세요.

다른 반응속도 게임도 즐겨보세요

순간적인 반응속도를 측정해보고 싶다면 반응속도 테스트를, 방향 조작으로 오래 버티는 방식은 스네이크 게임을, 클릭 정확도 훈련은 에임 트레이너 게임을, 장애물을 넘는 방식은 장애물 점프 게임을 확인해보세요.

자주 묻는 질문

모바일에서도 플레이할 수 있나요?

네, 화면에 표시되는 방향 버튼을 누르고 있으면 그 방향으로 계속 이동합니다. 두 버튼을 동시에 누르면 대각선으로 움직일 수 있습니다.

최고 기록이 저장되나요?

네, 이 브라우저의 localStorage에 저장되어 새로고침해도 유지됩니다. 다른 기기나 다른 브라우저와는 공유되지 않습니다.

대각선으로 가면 더 빨리 움직이나요?

아닙니다. 대각선 이동도 방향 벡터를 길이 1로 맞추기 때문에 초당 190px로 같은 속도입니다.

탄이 구슬을 정확히 따라오나요?

아닙니다. 탄은 발사되는 순간 구슬이 있던 위치를 향하되 약 ±40도의 무작위 오차가 더해지며, 이후에는 방향을 바꾸지 않고 직진합니다.

얼마나 오래 버티면 잘하는 건가요?

정해진 기준은 없습니다. 이 게임은 탄 속도가 약 27초, 발사 간격이 41초에 최대 강도에 이르므로, 그 이후로 얼마나 더 버티는지가 실력의 지표가 됩니다.

탭을 바꿨더니 게임이 멈췄어요. 고장인가요?

의도된 동작입니다. 창이 포커스를 잃으면 자동으로 일시정지되고, 누르고 있던 방향도 해제됩니다. 돌아와서 P 키 또는 "계속하기" 버튼으로 이어 가세요.

탄이 화면 밖에서 시작해서 억울하게 맞을 수도 있나요?

탄은 가장자리 10px 바깥에서 만들어지고 구슬은 벽에서 8px 안쪽까지만 갑니다. 벽에 붙어 있으면 중심 사이 거리가 가까운 곳에서 탄이 만들어져 반응할 시간이 거의 없으므로, 가장자리에 머무는 것이 위험합니다. 중앙 부근에서 움직이면 이런 상황이 줄어듭니다.

같은 시간에 점수가 다르게 나오는 이유는요?

이 게임에는 점수가 없고 생존 시간만 기록됩니다. 탄의 출발 위치와 조준 오차가 매판 무작위여서 같은 실력이라도 운에 따라 기록이 달라집니다. 여러 판의 중앙값으로 비교하는 편이 정확합니다.

최고 기록을 지우고 싶어요.

최고 기록은 브라우저 localStorage의 bullet-dodge-best 키에만 저장되므로, 사이트 데이터를 삭제하면 0.0으로 돌아갑니다. 게임 안에 초기화 버튼은 없습니다.