방어 양궁프로젝트 소개

Castle Archer

성문을 지키는 수동 조준 게임 제작기. 방패병의 상태를 재사용 때 초기화하고, 조준 원과 적의 돌파선을 화면의 성벽에 맞춘 경험을 담았습니다.

AI Tools Lab · 소개 글 작성 · 수정

Castle Archer 시작 화면
드래그 조준과 화살 발사로 성문을 방어하는 Castle Archer의 시작 화면입니다.

궁수가 움직이지 않아도 판단은 바뀐다

Castle Archer에서 궁수는 성벽 중앙에 고정돼 있습니다. 저는 이동으로 적을 피하는 게임 대신, 드래그로 조준하고 손을 놓아 발사하는 성문 방어 게임을 만들었습니다. 아래로 당겨도 화살 방향이 성벽 아래를 향하지 않도록 위쪽 조준 범위 안에 제한합니다. 짧은 탭도 발사가 되지만 계속 조준하는 동안에는 방향을 볼 수 있습니다.

실패 기준은 궁수 한 명의 충돌이 아니라 성문의 체력입니다. 적이 돌파선에 닿으면 성문 피해가 들어가고, 치유 물약으로 회복할 수 있습니다. 정조준에는 더 높은 점수를 주고 방패병은 첫 발로 방패를 깨고 다음 발로 처치하도록 나눴습니다. 빠르게 가까워진 적과 한 발 더 필요한 적 중 무엇을 먼저 막을지 판단하게 하는 구조입니다.

저는 적을 추가할 때 그림과 체력만 바꾸지 않았습니다. 기본 고블린, 빠른 러너, 방패병, 무거운 브루트가 속도와 크기, 등장 조건에서 차이가 나도록 연결했습니다. 적의 수가 늘어나는 것과 대응 순서가 달라지는 것을 구분하려 했습니다.

방패를 잃은 모습이 다음 고블린에 남으면 안 된다

적을 반복해서 만들고 없애는 대신 비활성 대상을 다시 사용하는 구조에서는 이전 적의 상태가 남을 수 있습니다. 방패병은 방패를 맞고 체력이 바뀌며 표시도 달라집니다. 그 객체를 다음 적으로 사용한다면 새 종류의 그림, 체력과 속도를 다시 설정해야 합니다.

저는 생성 시점에 적의 종류에 맞는 상태를 부여하고, 방패 파괴와 처치의 보상을 나눴습니다. 첫 발의 피드백이 처치처럼 보이면 아직 남은 적을 놓칠 수 있기 때문입니다. 방패 파괴에는 별도 표시를 주고, 남은 체력을 가진 적은 계속 진군합니다.

이후 확인 조건에도 연속 등장에서 방패 상태가 일반 고블린에 넘어가지 않는지를 넣었습니다. 한 번의 방패 파괴가 정상이라고 해서 재사용까지 정상인 것은 아닙니다. 실제로 확인해야 하는 대상은 ‘방패병을 맞혔다’에서 끝나지 않고 ‘그 대상을 제거한 다음 새 적이 자기 상태로 등장한다’까지 이어집니다.

화면 안의 성벽과 피해가 들어가는 선을 맞췄다

2026년 7월 화면을 다듬는 과정에서는 적이 배경에 그려진 성벽 위에 서 있는 것처럼 보이는 문제가 있었습니다. 그림의 성벽과 적을 제거하는 시점이 맞지 않았습니다. 저는 돌파 정리를 앞당겨 적이 성벽의 돌파선에 닿으면 성문 피해를 적용하고 비활성화하도록 고쳤습니다.

이 선택은 충돌 판정과 시각 표현을 연결하는 작업입니다. 플레이어는 적이 성벽에 닿는 모습을 보고 실패를 이해합니다. 코드의 피해 시점이 눈에 보이는 경계와 어긋나면 적이 통과했는데 피해가 늦게 나오거나, 이미 피해를 입었는데 적이 남아 있는 것처럼 읽힙니다.

성문 하트도 돌파와 회복에 맞춰 바뀝니다. 물약을 받았을 때 체력 상한을 넘기지 않게 하고, 이미 가득 차 있다면 점수 보상으로 처리합니다. 같은 물약 입력이 상태에 따라 무엇을 바꾸는지 화면의 피드백까지 연결했습니다.

조준점의 중심뿐 아니라 원 전체가 남아야 했다

같은 후보정에서는 왼쪽과 오른쪽으로 크게 조준했을 때 조준 원이 화면 밖으로 잘릴 위험을 확인했습니다. 조준점의 중심 좌표만 화면 안에 두면 원의 가장자리는 바깥으로 나갈 수 있습니다. 저는 조준 가이드와 원을 보이는 전장 안쪽으로 제한했습니다.

명중 효과에도 비슷한 조건이 있었습니다. 화면 끝의 적을 맞히면 효과가 커지면서 잘릴 수 있으므로 발생 위치를 가장자리에서 떨어뜨렸습니다. 적의 중심이 들어가는 공간과 효과가 펼쳐지는 공간은 같지 않습니다. 조준과 타격을 읽을 수 있는 여백을 각각 확보해야 했습니다.

궁수와 적의 그림에서는 분리된 조각과 투명 가장자리의 잔여 색을 정리했습니다. 화살에 다른 그림 조각이 붙어 있거나 적의 애니메이션 프레임에 옆 프레임의 방패가 남으면 실제 행동과 무관한 도형이 움직입니다. 화살, 적, 물약이 각각 하나의 대상으로 보이도록 외곽을 다듬는 작업도 판독성에 포함했습니다.

적이 많은 장면과 멈춘 장면을 따로 보았다

처음 몇 초의 전투만으로는 적 종류와 상태를 충분히 확인할 수 없습니다. 빠른 적과 방패병이 함께 나오는 장면에서는 우선순위와 그림의 차이가 드러나고, 일시정지에서는 전투 객체가 메뉴를 가리지 않는지 확인해야 합니다. 게임오버 뒤에는 종료된 전투 상태를 읽는 과정이 예외를 만들지 않는지도 필요합니다.

적은 등장부터 재사용까지 상태가 이어지므로, 화면의 경계와 함께 다뤄야 합니다. 적이 등장하고, 맞고, 상태가 바뀌고, 돌파하거나 처치된 뒤 다시 쓰이는 흐름입니다. 각 단계에서 무엇이 화면에 남고 무엇이 제거되는지를 정해야 방어 규칙이 자연스럽게 보입니다.

다음 고정형 사격 게임에서도 적을 하나 더 넣기 전에 상태 초기화와 피해 시점을 확인하려고 합니다. 조준 원의 반지름, 명중 효과의 최대 크기, 배경에 그려진 방어선도 실제 판정과 함께 봅니다.

개발 자료

게임 프로젝트

성문 방어의 판정과 방패병 재사용 상태, 화면 가장자리의 조준 표시를 다듬은 경험입니다.

GitHub 게임 저장소 · coreline-ai ↗ · 문의·정정 요청