Meteor Dash
한 손으로 운석을 피하는 생존 게임 제작기. 예고된 운석 폭풍과 한 번 막는 보호막을 연결하고, DPR이 높은 기기에서 캔버스가 과도하게 커지지 않도록 다듬었습니다.
AI Tools Lab · 소개 글 작성 · 수정

별을 얻으러 가는 선택에 위험을 남겼다
Meteor Dash는 우주에서 떨어지는 운석을 피하고 별을 얻는 한 손 생존 게임입니다. 저는 드래그로 움직이는 조작을 중심에 두고, 별을 얻는 행동은 선택으로 남겼습니다. 살아남는 경로와 높은 점수를 얻는 경로가 항상 같지 않도록 구성했습니다.
기본 실패는 운석에 맞아 한 판이 끝나는 것입니다. 별은 점수를 주지만 운석을 피하는 데 필요한 움직임을 대신하지 않습니다. 배경과 난이도 단계가 바뀌어도 마지막 승리 구간을 두기보다 최고점을 이어 가는 생존 구조로 정했습니다. 단계 상승을 완주 목표와 혼동하지 않게 종료의 의미를 분명히 두었습니다.
저는 같은 낙하가 계속되는 화면에 운석 폭풍과 보호막을 연결했습니다. 폭풍은 미리 경고하고 일정 시간 동안 낙하 간격을 줄입니다. 보호막은 한 번의 피격을 흡수합니다. 일반 회피, 예고된 집중 구간과 한 번의 복구 기회가 같은 드래그 안에서 다른 판단을 만듭니다.
폭풍은 등장 전에 읽을 시간을 줬다
운석 폭풍이 갑자기 낙하 수만 늘리면 플레이어가 다음 행동을 준비하기 어렵습니다. 저는 폭풍 전에 경고 배너를 표시하고, 경고가 끝나면 짧은 집중 구간으로 들어가게 했습니다. 폭풍 구간의 생성 간격과 일반 구간의 간격은 같은 생성 흐름 안에서 배율로 연결합니다.
폭풍을 버티면 생존 보너스를 줍니다. 별을 따라가는 판단과 공간을 확보해 폭풍을 버티는 판단을 서로 다른 보상으로 연결한 것입니다. 낙하 속도를 계속 올리는 방식에 예고와 해제 시점을 넣으면 같은 이동도 구간마다 뜻이 달라집니다.
이 구조에서는 배너가 끝났는지, 집중 구간이 끝났는지와 생성 주기가 같이 바뀌어야 합니다. 경고만 남고 실제 낙하가 일반 속도라면 안내가 무의미하고, 배너 없이 낙하가 갑자기 바뀌면 준비할 근거가 없어집니다. 화면의 예고와 생성 상태를 함께 묶었습니다.
보호막은 한 번 막은 뒤 판정까지 정리한다
보호막을 얻으면 플레이어에 링을 표시하고, 피격을 흡수한 뒤 보호막을 소모합니다. 잠깐의 무적 깜빡임도 줍니다. 운석이 닿은 같은 순간에 충돌이 반복되면 보호막을 소비한 직후 다시 사망할 수 있으므로 짧은 복구 상태가 필요했습니다.
충돌 처리에서는 보호막이 피해를 흡수했는지 먼저 확인합니다. 흡수한 운석도 비활성화하고 그 피격은 게임오버로 이어지지 않게 끝냅니다. 보호막의 아이콘만 없애는 것으로는 충분하지 않습니다. 화면에 남은 운석과 다음 충돌까지 정리해야 ‘한 번 막는다’는 규칙이 성립합니다.
이 선택은 보호막을 계속 안전한 상태로 만드는 것과 다릅니다. 막는 횟수는 한 번이고 소모 뒤에는 다시 회피해야 합니다. 얻은 상태, 흡수한 순간과 무적이 끝난 상태가 각각 명확히 이어지게 했습니다.
FHD 화면에 DPR을 또 곱하지 않았다
2026년 7월에는 모바일 그림의 표시 기준을 정리했습니다. 초기에는 390×844 논리 캔버스에 DPR을 곱하는 방식이었고, 이후 기본 캔버스를 1080×1920으로 바꿨습니다. 이때 DPR3을 다시 곱하면 그리기 영역이 3240×5760까지 커질 수 있습니다.
저는 네이티브 FHD 캔버스를 기준으로 두고 카메라 확대는 1로 유지했습니다. 고해상도 기기라는 이유만으로 이미 큰 캔버스에 배율을 또 적용하지 않도록 정리한 것입니다. 그림의 원본 해상도, 실제 그리기 크기와 CSS 표시 크기를 구분해 봤습니다.
좌표와 피격 영역, 글자, 버튼, 효과와 보호막 크기는 FHD 변환 도구로 맞췄습니다. 캔버스만 커지면 운석과 플레이어의 크기 관계가 달라지거나 경고 배너가 다른 곳에 놓일 수 있습니다. 같은 생존 규칙이 유지되도록 표시와 판정의 수치를 함께 변환해야 했습니다.
시작에 필요한 파일과 제작용 파일을 나눴다
로딩 경로도 한곳으로 모았습니다. 배경과 플레이어 시트, 운석, 별, 보호막, 버튼과 소리를 로딩 화면에서 준비합니다. 배포에는 실제 사용하는 런타임 파일을 넣고 제작용 파일은 따로 보존했습니다. 원본 파일을 보관하는 일과 게임이 읽는 파일을 보내는 일을 같은 목록으로 다루지 않았습니다.
운석 폭풍·보호막·해상도 변경은 화면의 표시와 실제 피격 조건을 함께 살펴야 하는 부분입니다. 폭풍에는 준비할 배너가 있어야 하고, 보호막에는 흡수 뒤의 충돌 정리가 있어야 합니다. 해상도를 올렸다면 그 값이 그리기 크기에 한 번만 반영되는지도 확인해야 합니다.
다음 회피 게임에서도 낙하가 늘어나는 순간, 보호막이 사라지는 순간과 화면 크기가 바뀌는 순간을 따로 보려고 합니다. 단순한 드래그 게임일수록 플레이어가 읽을 수 있는 변화가 중요합니다. 버튼을 늘리지 않고도 예고와 자원 상태를 연결하면 같은 움직임 안에 다른 선택을 남길 수 있었습니다.
개발 자료
게임 프로젝트
운석 폭풍의 예고와 보호막 소모를 연결하고 모바일 캔버스의 해상도 기준을 다듬은 경험입니다.
GitHub 게임 저장소 · coreline-ai ↗ · 문의·정정 요청