1부에서는 RogueTD를 왜 만들기 시작했는지, 그리고 처음에 어떤 타워디펜스를 생각했는지 정리했습니다. 2부는 그 다음 이야기입니다. 이번에는 “아이디어가 실제 게임 화면이 되기 시작하면서 어떤 문제들이 보였고, 그걸 어떻게 고쳤는지”를 중심으로 적어보려고 합니다.
처음에는 기능이 돌아가는지만 봐도 충분하다고 생각했습니다. 적이 나오고, 타워를 설치하고, 웨이브가 진행되고, 보상을 고르는 흐름만 이어지면 일단 게임이 된다고 봤습니다. 그런데 실제 화면으로 계속 확인하다 보니, 게임은 단순히 시스템이 작동한다고 끝나는 게 아니었습니다. 플레이어가 지금 뭘 해야 하는지 알아야 하고, 화면이 답답하지 않아야 하고, UI가 손을 방해하지 않아야 했습니다.
그래서 2부의 작업은 새 콘텐츠를 무작정 늘리는 쪽보다, “플레이 가능한 화면으로 정리하는 과정”에 가까웠습니다. 포탑을 추가하고, 설치 영역을 고치고, Pause 메뉴를 다시 만들고, Android APK까지 반복해서 빌드했습니다.
설치 영역이 화면을 너무 많이 가렸다
가장 먼저 크게 신경 쓴 부분은 포탑 설치 영역 표시였습니다. 타워디펜스에서는 어디에 설치할 수 있는지 보여주는 게 중요합니다. 그런데 처음 구현은 그 표시가 너무 강했습니다. 설치 가능한 영역과 불가능한 영역을 보여주려고 만든 오버레이가 오히려 맵을 덮어버리는 문제가 있었습니다.
특히 포탑을 선택했을 때 화면 전체가 어둡게 눌리는 느낌이 있었습니다. 길과 배경, 적 위치를 보면서 판단해야 하는데, 설치 표시가 너무 진해서 오히려 판단을 방해했습니다. 그래서 이 부분은 단순히 색을 바꾸는 문제가 아니라, 표시 방식 자체를 다시 봐야 했습니다.
처음에는 월드에 반투명 평면을 깔아 설치 가능 영역을 보여주는 방식이었습니다. 하지만 셀마다 평면이 깔리다 보니 겹쳐 보이거나, 간격이 격자처럼 보이거나, 특정 단계에서 큰 사거리 원이 남아 화면을 가리는 문제가 계속 나왔습니다. 결국 설치 영역은 월드 오브젝트로 덮는 방식보다 HUD 캔버스에서 필요한 만큼만 얇게 그리는 쪽이 더 낫다고 판단했습니다.

보기 좋은 표시보다 덜 방해하는 표시가 먼저였다
이 작업을 하면서 느낀 건, 개발 중에는 표시를 강하게 넣는 게 편하다는 점입니다. 빨리 확인해야 하니까 색도 진하게 넣고, 영역도 크게 표시합니다. 그런데 그 상태가 그대로 게임 화면에 남으면 플레이어 입장에서는 피곤합니다.
그래서 설치 가능 영역은 초록, 설치 불가능 영역은 빨강으로 유지하되 알파를 낮췄습니다. 단순히 30%, 20% 같은 숫자를 바꾼 게 아니라, 실제 화면에서 길과 장식, 몬스터, 타워 아이콘이 같이 보이는지 계속 확인했습니다. 격자선처럼 보이던 셀 간격도 없앴고, 설치 확정 단계에서는 큰 사거리 디스크가 남지 않게 정리했습니다.
결과적으로 설치 화면은 더 조용해졌습니다. 기능이 사라진 게 아니라, 플레이어가 필요한 정보만 보도록 줄인 것입니다. 이건 앞으로도 계속 가져가야 할 기준이라고 생각합니다. 타워디펜스 화면은 정보가 많아질 수밖에 없기 때문에, 강조보다 정리가 더 중요합니다.
포탑 종류가 늘어나면서 역할도 나뉘기 시작했다
1부에서는 독, 빙결, 대포 정도의 기본 구상을 이야기했습니다. 이후에는 여기에 발리스타와 라이트닝 포탑이 추가되면서 타워 역할이 조금 더 분명해졌습니다.
발리스타는 빠르고 싼 기본 화살 포탑에 가까운 방향입니다. 초반에 부담 없이 놓고, 길목을 잡아주는 역할입니다. 반대로 라이트닝은 비싼 포탑입니다. 단일 타겟을 쫓아가는 느낌보다는, 범위 안에 들어온 적 전체에게 번개 피해를 주는 쪽으로 잡았습니다. 비용이 높은 대신, 제대로 놓으면 여러 적을 동시에 압박하는 타워입니다.
이렇게 타워가 늘어나면 단순히 버튼만 추가하면 되는 게 아닙니다. HUD 아이콘, 비용 표시, 공격 방식, 업그레이드 수치, 테스트, Android 빌드까지 같이 따라옵니다. 작은 포탑 하나를 추가하는 것처럼 보여도 실제로는 게임 규칙, UI, 리소스, 검증이 함께 움직입니다.

방향 이미지와 머티리얼도 그냥 넘어갈 수 없었다
포탑과 몬스터가 화면에서 자연스럽게 보이려면 방향 처리도 중요했습니다. 포탑이 적을 향해 조준할 때, 방향 이미지가 어색하게 뒤집혀 보이면 바로 티가 납니다. 발리스타 작업에서는 특히 하단 받침까지 같이 뒤집히는 문제가 보였습니다. 그래서 받침은 고정하고, 위쪽 무기부만 방향에 맞춰 바뀌도록 다시 정리했습니다.
최근에는 3×3 방향 프레임 규칙도 정했습니다. 방향별로 Dir_Frame 값을 기록하게 해서, 머티리얼 쪽에서 어느 방향 이미지를 보여줄지 더 명확하게 다룰 수 있게 했습니다. 기존 8열 atlas 방식도 호환을 위해 남겨두었고, 새 규칙은 포탑 조준과 몬스터 이동 방향 양쪽에 적용했습니다.
이런 작업은 플레이어가 직접 “좋다”고 느끼는 부분은 아닐 수 있습니다. 하지만 어색하면 바로 느껴지는 부분입니다. 타워가 다른 방향을 보고 있거나, 몬스터 움직임과 이미지 방향이 안 맞으면 게임 전체가 임시처럼 보입니다. 그래서 보이지 않는 정리지만, 실제 완성도에는 꽤 큰 영향을 줍니다.
Pause 메뉴도 다시 만들었다
UI 쪽에서는 Pause 메뉴를 다시 손봤습니다. 처음 적용된 Pause 화면은 기능적으로는 동작했지만, 이전에 잡아둔 B 타입 시안과 많이 달랐습니다. 버튼 위치만 비슷하고, 카드의 느낌이나 색감, 게임 분위기가 잘 살아나지 않았습니다.
그래서 Pause 메뉴는 런타임용 패널 이미지로 다시 만들었습니다. 전열 정비라는 제목을 넣고, 전장으로 복귀, 다시 정비, 철수 버튼을 한 화면에 정리했습니다. 기능 버튼 위치도 실제 터치 영역에 맞춰 다시 계산했습니다.
여기서 중요했던 건 Pause 메뉴가 게임을 멈추는 화면이지만, 게임 분위기와 따로 놀면 안 된다는 점이었습니다. 너무 시스템 팝업처럼 보이면 몰입이 끊기고, 너무 장식적이면 버튼이 안 읽힙니다. 그래서 카드 형태는 유지하되, 버튼은 바로 알아볼 수 있게 구성했습니다.

Blueprint에서 바로 고칠 수 있게 만드는 작업
이번 작업 중에는 겉으로 잘 안 보이지만 중요한 정리도 있었습니다. 포탑이 어떤 머티리얼을 쓰는지 Blueprint에서 바로 확인하고 바꿀 수 있게 만든 부분입니다.
처음에는 런타임 함수나 내부 캐시를 통해 머티리얼을 확인하는 구조였습니다. 개발자 입장에서는 추적할 수 있지만, 에디터에서 포탑을 열어 바로 수정하기에는 불편했습니다. 그래서 포탑의 Authored Visual Billboard 컴포넌트 Details에서 Visual Material, Level Visual Materials를 직접 볼 수 있게 정리했습니다.
이런 구조를 만들어두면 나중에 포탑 외형을 바꿀 때 코드까지 들어가지 않아도 됩니다. 블루프린트에서 레벨별 머티리얼을 확인하고, 필요하면 바로 교체할 수 있습니다. 작은 편의처럼 보이지만, 앞으로 타워 종류가 늘어날수록 이런 저작 구조가 개발 속도를 크게 좌우합니다.
Android APK를 반복해서 빌드했다
RogueTD는 모바일 가로 화면을 목표로 하고 있기 때문에, Mac에서만 확인하고 끝낼 수는 없습니다. 그래서 중요한 수정이 들어갈 때마다 Android APK를 다시 빌드했습니다. 7월 5일, 7월 6일, 7월 7일에 걸쳐 여러 차례 패키징을 진행했고, 최신 빌드는 ProjectA_20260707_01.apk까지 생성했습니다.
빌드할 때는 단순히 APK 파일이 생겼는지만 보지 않았습니다. 패키지 이름, versionCode, target SDK, ARM64 포함 여부, 서명 검증, editor-only 플러그인 참조 여부까지 확인했습니다. 아직 테스트 전달본은 Debug 인증서 기반이지만, 적어도 모바일 빌드로 나갈 때 불필요한 개발용 참조가 섞이지 않도록 확인하는 흐름은 잡았습니다.
물론 아직 남은 것도 있습니다. 연결된 Android 기기에서 매번 설치/실행/FPS까지 확인한 것은 아니고, 일부 빌드는 패키징 검증까지만 진행했습니다. 그래도 이제는 “게임이 어느 정도 되면 빌드하자”가 아니라, “수정하고 검증하고 빌드하는 흐름”이 프로젝트 안에 자리 잡기 시작했습니다.
2부를 정리하면
이번 2부는 눈에 확 띄는 대형 기능 추가보다는, 게임이 실제로 플레이 가능한 형태에 가까워지는 과정이었습니다. 설치 표시가 맵을 가리지 않게 하고, 포탑 종류를 늘리고, 방향 이미지 규칙을 정리하고, Pause 메뉴를 다시 만들고, Android APK까지 반복해서 내보냈습니다.
처음에는 “타워디펜스가 돌아가게 만들자”가 목표였다면, 지금은 “플레이어가 덜 헷갈리고, 화면이 덜 답답하고, 수정하기 쉬운 구조로 만들자” 쪽으로 기준이 조금 더 구체화되고 있습니다. 아직 갈 길은 남아 있지만, 이제 RogueTD는 단순한 초기 프로토타입에서 조금씩 게임다운 형태로 넘어가고 있습니다.
다음 개발일지에서는 실제 플레이 밸런스나 몬스터/웨이브 쪽 이야기를 더 정리해볼 수 있을 것 같습니다. 계속 기록해보겠습니다.