라이트 트레일 대결 게임

방향키(또는 화면의 버튼)로 이동하며 궤적을 남기고, 컴퓨터보다 오래 살아남아보세요.

승리: 0패배: 0무승부: 0이동: 0칸

방향키·WASD·화면 버튼, 캔버스 위 스와이프로 조종합니다. 첫 입력이 들어오면 시작하고, 스페이스바나 P 키로 일시정지합니다.

한눈에 보는 게임 규칙

초록색 내 빛과 파란색 컴퓨터의 빛이 동시에 한 칸씩 움직이며 지나간 칸에 지워지지 않는 궤적을 남깁니다. 벽, 내 궤적, 컴퓨터의 궤적 중 어느 것에든 머리가 닿으면 그 자리에서 패배하고, 두 빛이 같은 칸으로 동시에 들어가려 하면 둘 다 충돌한 것으로 처리되어 무승부입니다. 먹이도 점수도 없는 순수한 생존 대결이라, 모든 판단은 "앞으로 내가 쓸 수 있는 빈 칸이 얼마나 남는가"로 귀결됩니다. 승·패·무승부 횟수와 이동 칸 수는 화면에서 보이는 현재 접속 동안만 세어지며, 새로고침하면 0으로 돌아갑니다. 어떤 기록도 저장되지 않습니다.

경기장과 속도: 코드에서 읽은 수치

항목값
캔버스 크기360×264픽셀
한 칸 크기12픽셀 (경기장 30×22칸 = 660칸)
이동 주기90밀리초마다 한 칸 (초당 약 11.1칸)
내 시작 위치가로 4번째 칸·세로 11번째 칸(0부터), 오른쪽으로 이동
컴퓨터 시작 위치가로 25번째 칸·세로 11번째 칸, 왼쪽으로 이동
정면 대치 거리두 빛 사이에 빈 칸 20개

두 빛이 같은 가로줄에서 서로를 향해 출발하므로 입력 없이 직진하면 11번째 이동에서 충돌합니다. 두 빛이 매 이동마다 서로 한 칸씩 다가가 10번 이동하면 사이의 빈 칸 20개가 모두 사라지고, 그다음 이동이 상대 궤적 위로 들어가는 이동이 되기 때문입니다. 이 게임에서는 시작하자마자 방향을 꺾는 것이 사실상 첫 번째 필수 동작입니다.

시작 위치에서 직진했을 때 걸리는 시간

내 빛이 시작 위치에서 한 방향으로만 직진하면 벽에 닿기까지 이동할 수 있는 칸 수와 걸리는 시간은 아래와 같습니다(이동 주기 90밀리초 기준). 시작 방향이 오른쪽이므로 왼쪽으로는 바로 갈 수 없고, 위나 아래로 한 번 꺾은 뒤에야 왼쪽을 쓸 수 있습니다.

직진 방향벽 앞까지 이동 가능한 칸걸리는 시간(초)
위(▲)11칸0.99
아래(▼)10칸0.90
오른쪽(▶, 시작 방향)25칸2.25
왼쪽(◀, 한 번 꺾은 뒤에만 가능)4칸0.36

표의 오른쪽 수치(25칸, 2.25초)는 이론상 벽까지의 거리일 뿐 실제로는 컴퓨터가 같은 줄을 마주 보고 오기 때문에 그만큼 갈 수 없습니다. 위나 아래로 꺾으면 그 줄에 길이 열리지만, 벽 앞까지 직진하면 세로로 10~11칸(약 0.9~1초)밖에 못 갑니다. 이 사실에서 나오는 첫 번째 원칙은 "벽에 닿기 전에 방향을 한 번 더 꺾을 계획을 먼저 세워 두라"는 것입니다.

컴퓨터는 이렇게 움직입니다

컴퓨터의 규칙은 코드로 확인할 수 있을 만큼 단순합니다. 매 이동마다 현재 방향(직진)을 가장 먼저 후보로 두고, 그다음 위·아래·왼쪽·오른쪽 순으로 후보를 훑되 지금 방향의 정반대는 건너뜁니다. 후보 중 바로 앞 한 칸이 비어 있는 첫 번째 방향을 고릅니다. 따라서 앞이 막히지 않는 한 항상 직진하고, 앞이 막혔을 때에야 꺾습니다. 가로로 달리다 막히면 위쪽이 우선이고, 세로로 달리다 막히면 왼쪽이 먼저 후보가 됩니다. 이 규칙에는 두 가지 성질이 따라옵니다.

첫 순간의 검증된 시나리오

게임 코드의 규칙을 그대로 옮겨 시뮬레이션하면 입력이 없는 경우 정확히 11번째 이동에서 패배합니다. 이때 내 빛은 가로 14번 칸(0부터 센 위치), 컴퓨터의 빛은 15번 칸에 서 있고 내 앞 칸이 컴퓨터의 궤적이라 충돌하며, 컴퓨터가 막힌 앞에서 위로 꺾을 수 있어 한 번에 둘이 다 죽는 무승부가 아니라 나만 지게 됩니다. 또 첫 이동에서 곧바로 위로 꺾어 끝까지 직진하면 12번째 이동에 위쪽 벽에 닿아 패배합니다(약 1.08초). 즉 두 번 이상 방향을 바꿔야 컴퓨터와 나란히 오래 가는 판에 진입합니다. 이 시나리오는 이동 순서가 같은 틱에서 동시에 처리된다는 점도 보여 줍니다. 내 이동과 컴퓨터 이동은 같은 순간 각자 계산된 뒤 합쳐집니다.

시간이 지나면 경기장은 얼마나 차는가

한 틱마다 두 빛이 각각 한 칸을 점유하므로 경기장은 틱당 2칸씩 줄어듭니다. 시작 때 이미 점유한 2칸을 합쳐 계산하면 아래와 같습니다. 이론적으로 두 빛이 한 번도 충돌하지 않는 최대 이동 횟수는 329틱(약 29.61초)이며, 현실에서는 훨씬 이른 시점에 길이 막힙니다.

이동 횟수경과 시간(초)점유 칸점유율남은 빈 칸
00.0020.3%658
252.25527.9%608
504.5010215.5%558
1009.0020230.6%458
15013.5030245.8%358
20018.0040260.9%258
25022.5050276.1%158
30027.0060291.2%58
32929.61660100.0%0

단순한 계획 일곱 가지가 어떻게 끝나는가

컴퓨터에 난수가 없으므로 "이 순서대로 입력하면 이렇게 끝난다"를 규칙 그대로 계산할 수 있습니다. 아래 표는 이 페이지의 충돌 판정과 컴퓨터 방향 선택 규칙을 빌드 시 그대로 시뮬레이션한 결과입니다. 계획이 끝난 뒤에는 마지막 방향으로 계속 직진한다고 가정했고, 방향 전환은 매 이동 시작 시점에 정확히 적용되는 이상적인 입력을 전제로 합니다.

입력 계획끝난 이동 횟수경과 시간(초)결과
입력 없이 직진(오른쪽 입력으로 시작만)110.99패배
즉시 위로 꺾어 계속 직진121.08패배
즉시 아래로 꺾어 계속 직진110.99패배
오른쪽 9칸 후 위로 계속 직진211.89패배
위 3칸 후 오른쪽으로 계속 직진292.61패배
오른쪽 4칸, 위 5칸, 오른쪽으로 계속 직진312.79패배
오른쪽 8칸, 위 2칸, 오른쪽 2칸, 아래 1칸, 오른쪽 1칸141.26승리

여섯 가지 단순 계획은 모두 1~3초 안에 패배로 끝납니다. 방향을 한두 번 바꾸는 정도로는 부족하고, 꺾은 뒤에도 앞에 열려 있는 줄이 계속 남도록 이어서 설계해야 합니다. 반대로 마지막 계획은 이동 14번(약 1.26초) 만에 컴퓨터가 막히는 승리입니다. 이 결과는 어디까지나 규칙 시뮬레이션이며 실제 플레이에서는 입력 시점이 한 틱(90밀리초)만 어긋나도 다른 결과가 나옵니다.

컴퓨터를 14번 이동 만에 가두는 패턴 해부

마지막 계획이 통하는 이유는 컴퓨터의 "직진이 막힐 때만 꺾는다"는 규칙을 이용해 컴퓨터를 내 궤적 두 줄 사이로 끌어들이기 때문입니다. 컴퓨터는 가로줄을 따라 왼쪽으로 직진하다가, 내가 그 줄 위에 그어 놓은 궤적 때문에 막히면 위쪽으로 꺾습니다. 그 위쪽 줄이 이미 내 궤적으로 막혀 있으면 꺾은 직후에 다시 막혀 충돌합니다. 표는 핵심 틱의 두 빛 위치입니다(위치는 가로,세로 칸 번호이고 0부터 셉니다. 마지막 틱의 위치는 충돌 직전 위치입니다).

이동 횟수시간(초)내 입력내 위치컴퓨터 위치결과
10.09오른쪽5,1124,11진행
80.72오른쪽12,1117,11진행
90.81위12,1016,11진행
100.90위12,915,11진행
110.99오른쪽13,914,11진행
121.08오른쪽14,913,11진행
131.17아래14,1013,10진행
141.26오른쪽14,1013,10승리

13번째 이동에서 컴퓨터는 가로줄 앞(12번 칸)이 내 궤적에 막혀 위로 꺾고, 14번째 이동에서는 그 위 칸이 내가 먼저 그어 둔 위쪽 줄의 궤적이라 막힙니다. 그동안 나는 아래로 한 칸 내려와 오른쪽의 빈 칸으로 빠져나가기 때문에 살아남습니다. 이 패턴은 컴퓨터가 앞만 보고 꺾는 이유를 가장 극단적으로 보여 주는 예이며, 요령은 "컴퓨터가 꺾을 위쪽 줄을 내가 먼저 그어 둔다"는 한 문장으로 줄일 수 있습니다. 다만 입력 순서가 맞아도 타이밍이 어긋나면 되지 않으므로, 먼저 연습으로 가로줄 직진 길이(8칸)와 꺾는 틱을 익히는 편이 낫습니다.

반응 시간과 입력 여유

칸 단위로 움직이는 게임이라 "벽이나 궤적 앞에서 얼마나 늦게 꺾어도 되는가"는 남은 빈 칸 수에 90밀리초를 곱한 값으로 어림할 수 있습니다. 앞에 빈 칸이 n개 남았을 때 꺾지 않으면 n+1번째 이동에서 충돌하므로, 그 이동이 시작되기 전까지 입력이 적용되어야 합니다.

앞에 남은 빈 칸꺾을 수 있는 대략의 여유 시간
1칸약 90밀리초
2칸약 180밀리초
3칸약 270밀리초
4칸약 360밀리초
6칸약 540밀리초
10칸약 900밀리초

이 표는 이론값이며 화면 표시와 입력 장치의 지연은 포함하지 않습니다. 따라서 장애물 바로 앞에서 꺾으려는 습관은 위험하고, 빈 칸이 3~4칸 남았을 때 미리 입력하는 것이 안전합니다. 앞에서 설명한 입력 큐는 한 틱에 한 방향만 적용하되 최대 두 개까지 쌓아 둡니다. 예를 들어 위쪽 키를 누른 직후 왼쪽 키를 누르면 두 입력이 큐에 쌓여, 한 틱 동안 위로 한 칸 가고 다음 틱에 왼쪽으로 꺾입니다. 큐가 이미 두 개 차 있으면 새 입력은 버려집니다.

이기는 방법: 공간을 먼저 확보한다

  1. 초반 3틱 안에 정면 충돌을 피합니다. 입력이 없으면 11틱에 부딪히므로, 위나 아래로 꺾어 세로 방향의 여유 칸(위 11칸, 아래 10칸)을 쓰기 시작합니다.
  2. 가장 넓은 구역 쪽으로 갑니다. 갈림길마다 앞쪽에 이어지는 빈 칸이 더 큰 쪽을 고르면, 컴퓨터가 한 칸 앞만 본다는 약점이 그대로 드러납니다.
  3. 벽을 따라 도는 것은 한동안 안전하지만 안쪽 공간을 상대에게 내주는 선택입니다. 가장자리 한 줄을 다 쓰고 나면 남은 빈 칸은 안쪽뿐이라, 거기에 출구가 남아 있는지 미리 확인해야 합니다.
  4. 컴퓨터의 진로를 끊는 방향으로 꺾습니다. 컴퓨터는 막혀도 후보 순서대로만 꺾으므로, 그 순서의 선택지를 모두 막는 궤적을 그리면 컴퓨터가 즉시 충돌합니다.
  5. 자기 궤적 안으로 나선형으로 들어가지 않습니다. 안쪽으로 감아 들어가는 방식은 마지막에 출구가 없어집니다.

이 규칙을 기준으로 코드 규칙을 옮긴 시뮬레이션을 돌려 보면, 매 이동마다 후보 방향 앞칸에서 이어지는 빈 칸의 개수가 가장 많은 방향(동률이면 직진)을 고르는 전략은 224번째 이동에서 동시 충돌해 무승부로 끝났습니다(약 20초). 이는 시뮬레이션 한 번의 결과이며 승률이 아니라, 컴퓨터가 쉽게 속지는 않지만 단순한 공간 우선 규칙만으로도 오래 버틸 수 있음을 보여 주는 예입니다.

조작과 입력 처리

흔한 실수와 한계

자주 묻는 질문

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

네. 화면의 방향 버튼을 누르거나 캔버스 위를 위·아래·좌·우로 쓸어 넘기면 방향이 바뀝니다. 버튼을 누르거나 스와이프하는 첫 입력으로 게임이 시작됩니다.

컴퓨터는 어떻게 움직이나요?

직진하다가 앞 한 칸이 막히면, 위·아래·왼쪽·오른쪽 순서로 훑어 막히지 않은 첫 방향으로 꺾습니다. 난수를 쓰지 않아 항상 같은 선택을 하고, 한 칸 앞만 보기 때문에 막다른 구역에 갇히는 일이 있습니다.

무승부는 어떻게 나오나요?

두 빛이 같은 칸으로 동시에 들어가려 하거나, 같은 틱에 둘 다 막힌 칸에 부딪히면 무승부이며 승리·패배 횟수는 변하지 않고 무승부 횟수만 올라갑니다.

시작하자마자 지는 이유가 뭔가요?

두 빛이 같은 줄에서 마주 보고 출발하기 때문에 11번째 이동에서 맞닥뜨립니다. 시작 입력을 하기 전에는 움직이지 않으니, 시작과 동시에 위나 아래로 꺾으세요.

같은 방향키를 계속 누르고 있어야 하나요?

아닙니다. 한 번 누르면 그 방향으로 계속 직진하며, 새 방향키를 누를 때만 방향이 바뀝니다.

스와이프가 인식되지 않을 때는 어떻게 하나요?

캔버스 위에서 손가락이나 마우스를 20픽셀 이상 움직여야 방향 입력으로 인식합니다. 가로 이동량과 세로 이동량 중 큰 쪽을 방향으로 삼으므로 대각선으로 쓸면 더 많이 움직인 축으로 판정됩니다. 짧게 건드린 정도로는 입력되지 않으니 화면 버튼을 함께 쓰세요.

새 대결을 누르면 승패 기록은 어떻게 되나요?

새 대결은 경기장과 이동 칸 수만 초기화하고 승리·패배·무승부 횟수는 그대로 둡니다. 페이지를 새로고침하거나 닫으면 횟수가 0으로 돌아가며 어디에도 저장되지 않습니다.

일시정지 중에 방향키를 누르면 어떻게 되나요?

일시정지 중이거나 대결이 끝난 상태의 방향 입력은 무시됩니다. 스페이스바 또는 P 키(또는 계속하기 버튼)로 재개한 뒤에 입력하세요. 다른 탭으로 이동하면 자동으로 일시정지됩니다.

같은 입력인데 결과가 달라지는 이유는 무엇인가요?

컴퓨터는 난수 없이 항상 같은 규칙으로 움직이므로 같은 시점에 같은 입력을 하면 같은 결과가 나옵니다. 결과가 달라졌다면 입력이 들어간 틱이 한 칸 어긋났을 가능성이 큽니다. 입력 큐가 한 틱에 하나씩만 적용하는 점도 영향을 줍니다.

비슷한 게임도 있나요?

먹이를 먹으며 몸이 길어지는 스네이크 게임, 장애물을 피해 날아가는 틈새 비행 피하기 게임, 길을 찾는 미로 탈출 게임이 있습니다.