본문으로 건너뛰기
VFX Diary
VFX Diary

게임 개발일지 04 7월18일

지난 3부에서는 휴대폰에서 포탑을 원하는 곳에 놓고, 선택하고, 스킬을 조준하는 흐름을 정리했습니다. 조작이 조금씩 손에 붙기 시작하니 그 다음부터는 화면에서 아쉬운 부분이 더 잘 보였습니다. 기능은 돌아가는데 포탑이 바닥에서 떠 보이고, 스킬을 써도 반응이 약하고, 메뉴마다 분위기가 달라 아직 테스트 화면처럼 느껴졌습니다.

그래서 이번 며칠은 게임의 인상을 바꾸는 작업이 많았습니다. 나무와 포탑 아래에 그림자를 붙이고, 액티브 스킬과 공격 이펙트를 탑뷰에 맞게 다시 만들고, 포탑과 몬스터가 실제 이동 방향을 바라보게 했습니다. UI도 거의 처음부터 다시 정리했습니다. 그리고 마지막에는 전장 한가운데 가만히 서 있기만 했던 영웅 아라가 선택되고, 움직이고, 적을 공격하기 시작했습니다.

개발하는 입장에서는 각각 별개의 작업처럼 보이지만, 플레이할 때는 전부 하나로 이어졌습니다. 오브젝트가 바닥에 붙어 보이고, 버튼이 읽히고, 공격 방향과 이펙트가 맞고, 영웅이 내 터치에 반응하니 그제야 화면이 조금 더 게임처럼 느껴졌습니다. 이번 4부는 그 변화가 어떻게 이어졌는지 편하게 정리해보려고 합니다.

VFX Diary VFX 아카이브에는 완성된 결과뿐 아니라 이렇게 중간 단계에서 기준이 바뀐 과정도 계속 남겨두려고 합니다. 나중에 보면 어떤 기능을 넣었는지보다, 왜 다시 만들었는지가 더 도움이 되는 경우가 많기 때문입니다.

RogueTD Greenwood wave battle with redesigned HUD, towers and top-down combat effects
포탑, 영웅, 탑뷰 전투 FX와 새 HUD가 한 화면에서 같이 움직이기 시작했습니다.

화면을 바꾼 첫 단계는 그림자였다

처음 손본 건 의외로 화려한 이펙트가 아니라 그림자였습니다. 포탑과 몬스터, 나무와 바위가 모두 개별 이미지로 놓여 있다 보니 바닥과 살짝 떨어져 보이는 느낌이 있었습니다. 특히 모바일 화면에서는 작은 오브젝트의 높낮이를 자세히 보기 어렵기 때문에, 발밑의 짧은 그림자가 위치를 읽는 데 꽤 큰 역할을 했습니다.

그렇다고 실시간 그림자를 무겁게 켤 수는 없었습니다. RogueTD는 낮은 사양의 모바일 기기에서도 안정적으로 돌아가는 게 우선입니다. 그래서 포탑, 적, 영웅, 장애물에는 가볍게 표시되는 접지 그림자를 붙이고, 나무와 바위 같은 환경 소품은 각 오브젝트 아래에 맞는 크기로 따로 정리했습니다. 화면에서는 그냥 부드러운 타원 하나처럼 보이지만, 이 작은 차이로 나무와 포탑이 바닥에 훨씬 자연스럽게 앉았습니다.

Greenwood 배경도 같이 다시 봤습니다. 큰 바위와 수목 클러스터를 포함한 기존 배경을 복원하고, 플레이 영역 바깥이 갑자기 검게 끊겨 보이지 않도록 잔디와 어두운 안개 경계를 조정했습니다. 한 번에 멋진 배경을 새로 만드는 작업이라기보다, 지금 있는 배경이 게임 영역과 자연스럽게 이어지도록 가장자리를 계속 다듬는 과정에 가까웠습니다.

이 작업을 하고 나서 느낀 건, 화면의 완성도는 큰 리소스 하나보다 작은 기준들이 맞을 때 올라간다는 점이었습니다. 그림자 방향, 바닥 경계, 오브젝트 중심이 서로 맞으면 플레이어는 특별히 의식하지 않아도 화면을 편하게 받아들입니다. 반대로 하나라도 어긋나면 이유를 설명하기는 어려워도 임시 화면처럼 느껴집니다.

스킬을 썼다는 느낌이 이제야 생겼다

3부에서 스킬의 누르고, 드래그하고, 놓는 조작은 잡았지만 시각적인 반응은 아직 약했습니다. 손가락을 놓았는데 범위 안에서 무슨 일이 일어났는지 바로 읽히지 않으면 조준을 잘해도 만족감이 떨어집니다. 그래서 Fire Rain, Slow Field, Poison Cloud, Time Freeze, Armor Break 다섯 스킬에 전용 이펙트를 붙였습니다.

처음에는 각각의 원본 이펙트가 화면 정면이나 약간 비스듬한 각도에서 보이는 형태였습니다. 그런데 RogueTD 카메라는 거의 위에서 내려다봅니다. 옆으로 솟는 불꽃이나 세워진 얼음 조각은 개별 이미지로 보면 멋있어도 게임 안에서는 방향이 어색했습니다. 그래서 바닥에 퍼지는 원, 짧게 번지는 충격, 중심에서 바깥으로 읽히는 실루엣처럼 탑뷰에서 바로 이해되는 형태로 다시 맞췄습니다.

Fire Rain은 주황색 불꽃이 지면에 여러 번 떨어지는 느낌으로, Slow Field는 푸른 장판이 천천히 붙잡는 느낌으로 정리했습니다. Poison Cloud는 초록 독기가 퍼지고, Time Freeze는 순간적으로 시간이 굳는 듯한 밝은 반응을, Armor Break는 방어가 깨지는 짧고 강한 표시를 목표로 했습니다. 다섯 스킬이 같은 원 모양만 색만 바꾼 것처럼 보이지 않게, 각 역할을 실루엣과 움직임으로 나누려고 했습니다.

포탑 공격과 몬스터 처치 골드 피드백도 같은 기준으로 손봤습니다. 독, 빙결, 발리스타, 번개 포탑은 공격이 맞은 지점에서 짧게 반응하고, 적을 처치하면 금빛 링과 스파크가 나타납니다. 전투가 복잡해졌을 때 이펙트가 서로 자리를 뺏지 않도록 포탑 공격과 액티브 스킬의 표시 예산도 분리했습니다. 적이 많이 몰린 순간에도 중요한 스킬이 조용히 사라지지 않게 하려는 작업이었습니다.

VFX를 붙인 뒤에는 반드시 실제 전투에서 다시 봤습니다. 파일 한 장만 열어보면 괜찮아도 잔디, 흙길, 포탑, 몬스터가 한 화면에 들어오면 색이 묻히거나 크기가 과해질 수 있습니다. 이번에는 웨이브 6까지 직접 진행하면서 여러 공격과 스킬이 동시에 나오는 장면을 확인했습니다. 앞으로 교육자료에서도 이런 탑뷰 게임용 이펙트 판단 과정을 따로 정리해볼 만할 것 같습니다.

포탑과 몬스터가 방향을 갖기 시작했다

전투 화면에서 또 크게 달라진 건 방향 표현입니다. 이제 등록된 포탑 5종과 몬스터 9종이 화면에서 바라보는 방향에 맞는 모습을 사용합니다. 포탑은 적을 조준할 때 포신이나 무기부가 그쪽을 향하고, 몬스터는 길을 따라 꺾을 때 이동 방향에 맞춰 모습이 바뀝니다.

이전에도 일부 포탑에는 방향 이미지가 있었지만, 실제로는 같은 그림을 뒤집거나 몇 방향을 반복해서 쓰는 경우가 남아 있었습니다. 발리스타와 번개 포탑까지 고유한 방향을 갖도록 채우고, 포탑 5종의 세 레벨과 몬스터 9종을 같은 규칙으로 확인했습니다. 원본 방향 시트는 블로그에 그대로 올리지 않고, 실제 게임 안에서 어떻게 읽히는지만 보여드리려고 합니다.

중간에는 포탑이 적과 반대쪽을 보는 문제도 있었습니다. 월드 기준 방향과 화면에서 보이는 좌우가 달랐기 때문입니다. 숫자로 계산하면 맞는 방향인데 카메라를 거치면 반대로 보이는 상황이었습니다. 결국 포탑에서 적으로 향하는 벡터를 화면 기준으로 다시 해석하도록 바꿨고, 발리스타의 화살 궤적과 포신이 같은 대상을 향하는지 실제 전투에서 확인했습니다.

이건 기능만 보면 작은 수정이지만 체감은 컸습니다. 공격 이펙트가 오른쪽 위로 날아가는데 포탑은 왼쪽을 보고 있으면 화면 전체가 금방 가짜처럼 느껴집니다. 반대로 포탑의 방향, 발사 궤적, 피격 이펙트가 한 줄로 이어지면 공격력이 같아도 훨씬 제대로 때리는 느낌이 납니다.

UI는 거의 처음부터 다시 만들었다

7월 16일에는 게임 UI를 크게 개편했습니다. 이전 UI는 기능이 추가될 때마다 필요한 버튼을 붙여온 형태라 화면마다 분위기와 크기가 달랐습니다. 시작 화면은 한 스타일, 전투 HUD는 다른 스타일, 보상 화면은 또 다른 느낌이었습니다. 게임이 커질수록 이 차이가 더 눈에 띄었습니다.

그래서 어두운 반투명 청회색 패널과 밝은 글자, 민트색 강조를 기준으로 전체 UI를 다시 맞췄습니다. 상단에는 골드, 웨이브, 생명을 나누고 왼쪽에는 포탑, 오른쪽에는 스킬과 속도, 일시정지 버튼을 배치했습니다. 시작, 설정, 일시정지, 보상, 설치 확인 화면도 같은 패널과 버튼 규칙을 사용하도록 정리했습니다.

처음 개편한 뒤에는 휴대폰에서 여전히 작게 느껴질 수 있겠다는 생각이 들었습니다. 그래서 게임 중 HUD와 터치 영역을 약 두 배로 키웠습니다. 글자와 아이콘만 키우면 서로 겹치기 때문에 상단 상태창, 좌우 버튼 레일, 선택한 포탑 정보, 강화와 판매 버튼의 위치까지 같이 다시 잡았습니다. 장착한 스킬만 조밀하게 보여 전장을 가리지 않도록 한 것도 이 과정에서 정리한 부분입니다.

설치와 첫 웨이브 안내도 조금 더 구체적으로 바꿨습니다. 처음에는 돈이 부족하거나 길 위를 눌러도 아무 반응이 없는 순간이 있었습니다. 이제는 왜 설치할 수 없는지 화면에서 알려주고, 첫 포탑은 맹독 포탑을 추천하며, 설치 가능한 셀을 클릭하거나 터치하라는 안내가 같은 순서로 이어집니다. 게임이 어려운 것과 게임이 설명을 안 해주는 건 다른 문제라서, 이 부분은 계속 구분해서 보고 있습니다.

보상 화면은 세 장의 카드를 가로로 놓고, 현재 포탑과 연결되는 효과인지 설명을 따로 보여주도록 바꿨습니다. 재시작이나 철수처럼 실수로 누르면 곤란한 동작에는 한 번 더 확인하는 창도 추가했습니다. 눈에 띄는 장식보다 플레이 중 자주 하는 행동을 덜 헷갈리게 만드는 쪽에 우선순위를 뒀습니다.

RogueTD enlarged modern fantasy HUD with selected poison tower upgrade and sell controls
확대한 HUD와 선택 포탑 정보, 강화·판매 버튼이 한 화면에서 겹치지 않도록 다시 배치했습니다.

보기 좋아진 만큼 실제로 버티는지도 확인했다

화면을 다듬는 동안 전투가 실제로 성립하는지도 계속 확인했습니다. 특히 레벨 1 포탑이 너무 약해 첫 웨이브부터 막히는 문제가 있었습니다. 뒤쪽 웨이브를 쉽게 만들고 싶지는 않았기 때문에 레벨 2와 3, 적 수는 그대로 두고 각 포탑의 첫 단계 역할만 조금씩 보강했습니다.

독 포탑은 지속 피해, 빙결은 안정적인 첫 타격, 대포는 범위, 발리스타는 빠른 기본 공격, 번개는 비싼 대신 여러 적을 압박하는 특징을 유지했습니다. 다섯 포탑이 모두 똑같이 강해지는 방식이 아니라, 초반에 각자 맡은 일을 할 수 있는 수준을 찾는 쪽으로 조정했습니다.

숫자를 바꾼 뒤에는 한두 번 잘 풀리는 판만 보고 끝내지 않았습니다. 여러 포탑 정책과 시드를 바꿔 8웨이브 런을 반복했고, 최근 250회 검증에서는 포탑별 승률이 50%에서 70% 사이에 들어왔습니다. 한 계열만 압도적으로 좋거나, 게임이 멈추거나, 골드가 음수가 되는 흐름도 없는지 같이 봤습니다. 자동 검증이 사람의 재미를 대신할 수는 없지만, 적어도 명백하게 깨진 수치를 걸러주는 역할은 해줍니다.

기본 Greenwood를 건드리지 않고 조금 다른 긴장감을 줄 수 있는 챌린지 기반도 만들기 시작했습니다. 적이 더 빠르게 몰려오는 빠른 침공, 적은 골드로 버텨야 하는 궁핍한 숲길, 마지막 보스를 미리 강하게 연습하는 보스 예행전 세 가지입니다. 지금은 런 시작 때 숫자를 바꿔 적용할 수 있는 데이터 구조와 검증 기준을 마련한 단계이고, 플레이어가 고르는 화면과 최종 수치는 아직 다음 작업으로 남아 있습니다.

여기서 중요하게 본 건 새 모드를 만들기 위해 기본 8웨이브를 망가뜨리지 않는 것이었습니다. 챌린지를 선택하지 않으면 지금까지 다듬은 Greenwood가 그대로 돌아가고, 선택했을 때만 적 수와 속도, 시작 골드, 보상 같은 값이 달라지도록 분리했습니다. 앞으로 챌린지를 조정하다 기본 데모까지 같이 흔들리는 일을 줄이기 위한 준비입니다.

저장 파일이 깨졌을 때 백업에서 복구하는 흐름, Android 프레임 안정성, 8웨이브 완료 과정도 내부 출시후보 기준으로 다시 확인했습니다. 아직 스토어에 공개할 릴리즈는 아니지만, 이제는 기능을 추가한 뒤 빌드가 되는지만 보는 단계에서 조금씩 벗어나고 있습니다. 수정한 기능이 저장, 전투, UI, 모바일 성능과 같이 움직이는지 확인하는 과정이 프로젝트 안에 자리 잡고 있습니다.

그리고 영웅 아라가 전장에 들어왔다

이번 작업에서 가장 눈에 띄는 변화는 영웅입니다. 이전에도 전장 중앙에 영웅 캐릭터가 있었지만 사실상 장식에 가까웠습니다. 정해진 지점을 순찰하거나 서 있을 뿐, 플레이어가 선택해서 움직일 수는 없었습니다.

이제 영웅 아라를 터치하면 얇은 금색 선택 링이 나타납니다. 이동할 곳을 터치하면 바닥에 작은 화살표가 표시되고, 아라는 그 지점까지 걸어갑니다. 도착하면 멈추고, 다시 명령하기 전까지 주변 상황을 봅니다. 포탑을 설치하는 것과 영웅을 움직이는 행동이 같은 화면에서 충돌하지 않도록 선택 우선순위도 같이 정리했습니다.

아라는 이동 방향에 맞춰 여덟 방향 걷기 모습을 바꿉니다. 한 장의 이미지를 억지로 회전시키는 방식이 아니라, 위쪽과 대각선, 좌우, 아래쪽 방향을 각각 사용합니다. 걸을 때는 왼발, 중앙, 오른발의 짧은 흐름이 반복되고 멈추면 안정된 자세로 돌아옵니다. 작은 캐릭터지만 길을 꺾을 때 방향이 바뀌니 전장 안에 실제로 존재하는 느낌이 훨씬 커졌습니다.

전투는 기본적으로 자동입니다. 가까운 적을 찾으면 정찰 화살로 공격하고, 위협 표식, 분열 사격, 신호탄을 상황에 맞게 사용합니다. 플레이어가 매 공격을 누르는 액션 게임보다는, 어디에 서 있게 할지 결정하고 포탑과 함께 방어선을 만드는 역할에 가깝습니다. 타워디펜스의 배치 판단을 흐리지 않으면서도 위기 순간에 직접 개입할 수 있는 장치를 만들고 싶었습니다.

영웅이 움직이기 시작하니 새로운 고민도 생겼습니다. 길목 가까이에 두면 공격 기회는 늘지만 위험해지고, 뒤쪽에 두면 안전한 대신 위기 대응이 늦어집니다. 아직 이 선택이 완전히 재미로 자리 잡았다고 말하기는 이르지만, 포탑만 놓고 기다리던 화면에 플레이어가 직접 바꿀 수 있는 위치 판단이 하나 더 생겼다는 점은 분명했습니다.

네 가지 능력에는 각각 시작, 가장 강한 순간, 사라지는 단계로 이어지는 짧은 탑뷰 이펙트도 붙였습니다. 영웅 선택 링과 이동 화살표, 표식과 신호 효과는 화면에 액터를 계속 새로 만들지 않고 공용 표시 경로에서 처리하도록 구성했습니다. 모바일에서 작은 피드백 때문에 오브젝트가 끝없이 늘어나는 상황을 피하면서도, 명령이 들어갔다는 반응은 놓치지 않게 하려는 선택입니다.

Mac 플레이에서는 선택, 이동, 방향 전환, 자동 전투와 네 스킬의 시각 효과까지 확인했습니다. 영웅이 포함된 최신 내부 Android APK도 만들었지만, 마지막 스킬 이펙트 재질 수정은 그 빌드 이후에 마무리됐습니다. 그래서 현재 공유된 APK에는 영웅 선택과 이동, 자동 전투가 들어 있고, 최종 스킬 FX는 다음 패키징에서 다시 확인해야 합니다. 이 부분은 다 된 것처럼 넘기지 않고 다음 검증 항목으로 남겨두려고 합니다.

RogueTD hero Ara selected in Greenwood with a thin selection ring and movement destination arrow
얇은 선택 링으로 아라의 상태를 보여주고, 바닥 화살표로 이동 명령이 들어간 위치를 표시했습니다.

Android 빌드까지 가야 한 작업이 끝난다

7월 14일부터 18일까지는 중요한 변경이 들어갈 때마다 Android 내부 빌드를 여러 번 만들었습니다. 그림자와 배경, 액티브 스킬 FX, 8방향 리소스, 새 UI, 탑뷰 전투 FX, 영웅 기능이 순서대로 APK에 들어갔습니다. 중간에는 시작 버튼을 누르자 앱이 종료되는 문제도 있었고, 원인을 고친 교체 빌드를 바로 다시 만들었습니다.

현재 영웅 기능까지 포함해 공유한 내부 빌드는 ProjectA_20260718_02.apk입니다. Android ARM64용 Shipping 형태로 패키징했고, 파일 무결성과 서명, 포함 리소스를 확인했습니다. 다만 공개 배포용 서명과 Firebase 설정을 사용하는 최종 릴리즈 경로는 아직 아닙니다. 실제 스토어에 올릴 수 있는 빌드와 내부 테스트용 APK를 구분하는 원칙은 계속 유지하고 있습니다.

이번 영웅 작업 시점에는 연결된 Android 기기가 없어 실기 터치와 성능 확인을 하지 못했습니다. Mac에서 기능과 화면을 확인했고 APK도 정상 생성됐지만, 모바일에서 영웅을 선택하고 이동시키는 감각은 다음 실기 테스트에서 꼭 다시 봐야 합니다. 화면에 보이는 완료와 실제 손에 잡히는 완료는 다르다는 걸 3부에서 충분히 배웠기 때문입니다.

이런 검증 기록도 VFX Diary 개발일지에 계속 솔직하게 남길 생각입니다. 잘된 화면만 고르는 것도 좋지만, 아직 어디까지 확인했고 무엇이 남았는지 적어두는 편이 다음 작업을 이어갈 때 훨씬 도움이 됩니다.

마무리하며

이번 4부를 돌아보면 새 기능 하나보다 게임 전체의 연결감이 달라진 기간이었습니다. 바닥에 그림자가 생기고, 스킬과 공격이 탑뷰에서 읽히고, 포탑과 몬스터가 방향을 갖고, UI가 같은 언어를 쓰기 시작했습니다. 그 위에 영웅 아라가 들어오면서 플레이어가 전장에 직접 개입할 수 있는 새로운 축도 생겼습니다.

처음에는 타워를 놓고 적을 막는 기본 구조만 완성해도 충분할 것 같았습니다. 그런데 게임을 끝까지 만든다는 건 기능 목록을 채우는 것보다, 서로 다른 기능이 한 화면에서 자연스럽게 이어지도록 계속 손보는 일에 가까웠습니다. 이번 며칠은 그걸 특히 많이 느낀 시간이었습니다.

다음 개발일지에서는 영웅의 Android 실기 조작, 세 가지 Greenwood 챌린지, 첫 60초 안내와 전투 밸런스가 실제 플레이에서 어떻게 이어지는지 정리해보려고 합니다. 앞으로도 개발 과정을 계속 기록할 테니 많은 기대 해주세요.

참고 출처

이번 글은 RogueTD SVN r258부터 r375까지의 변경 기록, 프로젝트 작업 로그, Mac·Android 검증 스크린샷, 자동화 테스트와 8웨이브 밸런스 보고서를 바탕으로 작성했습니다. 외부 뉴스나 홍보 자료가 아니라 현재 개발 중인 프로젝트의 실제 작업 기록입니다.