LAST LIGHT: 제로 아워
자동 사격을 유지하면서 수동 조준과 충전 무기를 연결한 생존 슈팅 제작기. 모바일 무기 카드의 여백과 로딩 검사까지 다듬은 경험을 담았습니다.
AI Tools Lab · 소개 글 작성 · 수정

자동으로 쏘면서도 손으로 바꿀 수 있는 전투
LAST LIGHT에서는 감염 도시의 정화 장치 헬리오 코어를 지킵니다. 저는 하단 전투 구역을 움직이며 오래 버티는 게임을 만들면서, 반복 사격과 직접 개입할 순간을 나눴습니다. 손을 떼면 가까운 적을 향해 기관포를 쏘고, 드래그하는 동안에는 이동 방향을 수동 조준에 사용합니다. 이동과 공격을 별도 버튼으로 계속 입력하게 하는 대신 하나의 드래그로 전투 방향을 바꾸는 구조입니다.
자동 사격이 유지돼도 선택은 남습니다. 측면에서 들어오는 적을 향해 움직일지, 기관포가 과열되기 전에 특수 무기를 사용할지, 충전된 무기를 밀집 구간까지 남길지 결정해야 합니다. 기관포의 열과 특수 무기의 충전은 서로 다른 자원으로 두었습니다. 기본 공격이 멈출 때 다른 공격을 이어 갈 수 있지만 모든 무기를 한 번에 계속 쓰는 구조는 아닙니다.
수동 조준이 있으면 자동 사냥의 이동보다 우선하도록 연결했습니다. 자동 사냥을 켜 둔 상태에서 손으로 방향을 바꿨는데 다른 계산이 플레이어를 끌고 가면 두 조작이 경쟁하기 때문입니다. 자동화와 수동 입력을 함께 넣을 때는 각각의 기능보다 어느 입력이 우선하는지를 먼저 정해야 했습니다.
무기 카드를 눌러도 기관포는 이어지게
무기 카드는 단순히 현재 무기를 바꾸는 메뉴가 아닙니다. 기관포는 기본 사격을 유지하고, 충전된 특수 무기를 누르면 현재 조준 방향으로 독립 발동합니다. 산탄은 가까운 부채꼴, 아크는 밀집한 적의 연결, 로켓은 폭발, 레일은 직선 관통에 대응하도록 나눴습니다.
이 선택은 전투 화면의 표시에도 영향을 줬습니다. 기관포 카드에는 열과 과열 상태를, 특수 무기 카드에는 충전과 재사용 시간을 표시합니다. 같은 길이의 막대를 사용해도 뜻이 다르므로 글자 상태를 함께 붙였습니다. 플레이어가 막대가 찬 모습을 보고 모두 “곧 발사할 수 있다”고 해석하면 기관포의 과열을 거꾸로 읽을 수 있습니다.
저는 카드의 역할을 공격 종류와 자원 상태까지 연결했습니다. 충전됐는지, 재사용을 기다리는지, 방금 발동했는지가 같은 영역에서 보이게 했습니다. 버튼을 누른 반응만 보여 주는 것으로는 다음 행동을 판단하기 어렵습니다. 사용 전 조건과 사용 뒤 상태가 이어져야 전투 중 짧게 읽을 수 있습니다.
큰 논리 화면의 여백이 휴대폰에서는 작아졌다
2026년 8월에 모바일 무기 카드의 배치를 다듬었습니다. 이 게임의 기준 화면은 1440×2560이고, 실제 휴대폰에서는 축소해 표시합니다. 기존 카드 위치는 일정한 숫자로 배치돼 있었습니다. 논리 화면에서 남긴 27px의 가장자리 여백은 390px 화면에서 약 7.3px가 됐고, 당시 검사 기준인 8px에 못 미쳤습니다.
저는 카드 시작 위치와 간격을 화면 폭에서 계산하도록 바꿨습니다. 논리 여백을 36px로 잡고 카드 폭과 카드 수를 함께 사용합니다. 카드 수가 바뀌어도 첫 카드와 마지막 카드가 같은 기준으로 배치되는 방식입니다. 눈으로 보기에는 작은 차이지만, 화면 끝에 붙은 입력을 피하려면 표시되는 폭까지 계산해야 합니다.
이 수정은 카드를 작게 만드는 일과 다릅니다. 카드가 들어가는 공간과 바깥 안전 여백을 따로 확보한 뒤 그 안의 간격을 구했습니다. 전투 화면에는 이동 입력과 무기 입력이 동시에 있으므로 버튼 크기, 화면 가장자리, 조작 영역을 함께 봐야 했습니다.
겹쳐야 하는 로딩 막대는 예외를 좁혀서 처리했다
같은 시기 로딩 화면에서는 진행 막대의 배경과 채움이 겹친다는 문제가 검사에 잡혔습니다. 채움 막대가 배경 안에 들어가는 것은 의도한 구조입니다. 모든 겹침을 오류로 취급하면 정상적인 진행 막대도 실패가 됩니다.
원인은 화면에 선언한 겹침 허용 관계가 레이아웃 등록 과정에 전달되지 않는 데 있었습니다. 저는 두 막대 사이의 허용 관계를 전달하도록 고쳤습니다. 화면 전체에 겹침을 허용하는 대신 해당 짝에만 예외를 남겼습니다. 다른 버튼이나 텍스트가 겹치는 문제는 계속 찾을 수 있게 한 선택입니다.
빌드 경로도 함께 정리했습니다. 특정 배포 경로가 박힌 번들은 로컬 미리보기에서 파일을 찾지 못했고, 캔버스가 열리지 않았습니다. 상대 경로로 바꿔 게임이 놓인 위치를 기준으로 번들을 찾게 했습니다. 전투 로직이 준비돼 있어도 로딩에서 멈추면 플레이어에게는 시작할 수 없는 게임입니다.
다시 만들 때 확인할 순서
브라우저에서 플레이하기에서는 자동 사격과 수동 조준의 전환을 먼저 살펴볼 수 있습니다. 그다음 기관포의 열과 특수 무기의 충전을 나눠 읽어 보면 각 카드가 다른 판단을 요구하는 이유가 보입니다.
다음 전투 화면에서도 저는 입력 우선순위, 자원 표시의 의미, 축소된 화면의 안전 여백을 함께 확인하려고 합니다. 자동으로 처리하는 행동을 늘릴수록 수동으로 개입했을 때 무엇이 바뀌는지 명확해야 합니다. 카드가 여러 개라면 같은 배치 공식 안에서 수와 폭을 바꿔 보고, 로딩 검사에서는 의도한 겹침과 잘못된 겹침을 구분해야 합니다.
개발 자료
게임 프로젝트
자동 사격과 수동 개입을 연결하고 모바일 전투 화면의 입력 여백을 다듬은 제작 과정입니다.
GitHub 게임 저장소 · coreline-ai ↗ · 문의·정정 요청