thumbnail

안녕하세요! 팀 벨라도나 개발일지 다섯 번째 이야기입니다.

이번 주는 여러 결정을 동시에 처리하며 정신없이 달렸습니다. 아트, 개발, 기획이 동시다발로 진행되는 가운데, 예상치 못한 방식으로 큰 도움을 받기도 했어요. 바로 유저 투표입니다.

UI 방향성을 두고 한참 고민하던 중이었어요. 둘이서 이야기를 나눠봐도 좀처럼 결론이 나지 않더라고요.

think

그러다 문득, "굳이 우리끼리 고민할 필요가 있나? 직접 물어보면 되지 않나?" 하는 생각이 들었습니다. 효니의 X 계정으로 투표를 열었는데, 결과가 꽤 놀라웠어요. 5천 명이 봐주고, 약 300명이 투표에 참여해 주셨습니다. X의 알고리즘이 이렇게 무서운 것인지 새삼 실감했습니다.

result

투표 외에도 댓글로 많은 의견을 보내주셨는데, 하나하나 읽어보면서 적용할 수 있는 부분과 다양한 인사이트를 얻게 된 건 덤이었어요. 둘이서 고민하기 어려운 결정이 있다면, 앞으로도 유저분들께 의견을 물어보는 방식을 적극적으로 활용해볼 것 같습니다.


효니: 세계가 점점 실감 나게 채워진다

이번 주는 맵의 텍스처와 셰이더 작업, UI 관련 작업, 그리고 게임 내 여러 애니메이션 리소스 제작을 중심으로 진행했습니다.

월드 파트에서 작업해두었던 텍스처와 배경 느낌을, 마침 판테라가 배틀 파트 작업을 마무리한 타이밍에 맞춰 배틀 씬에도 녹여봤어요. 배틀 시 보이는 카메라 각도를 조정하고 조형물도 추가로 배치했는데, 이후 판테라가 앞쪽 조형물에 포스트 프로세싱을 적용해 전경이 포커스 아웃되는 효과까지 얹어줬습니다. 덕분에 숲 속에서 전투하는 느낌이 훨씬 살아났어요. 이전 버전과 나란히 놓고 보면 분위기가 확연히 달라진 게 느껴집니다.

before battleresult

판테라가 이번 주 구현한 스피치 버블과 목표를 가리키는 화살표에 들어갈 애니메이션 리소스도 제작했습니다. 스피치 버블은 전투 중 짧은 대화나 혼잣말에 쓰이는 UI인데, 말풍선이 자연스럽게 등장하고 사라지는 애니메이션을 작업했어요.

speechbubble

화살표는 플레이어가 다음에 어디로 가야 하는지 가리켜주는 역할인데, 통통 튀는 느낌으로 위아래로 움직이도록 만들었습니다. 이런 작은 요소들이 쌓일수록 화면이 살아 움직이는 느낌이 드는 것 같아요.

arrow

그리고 이번 주는 UI 방향성 때문에 고민을 많이 했습니다. 종이로 구성된 듯한 동화 같은 느낌을 살리기 위해 종이 질감 위주의 UI로 갈지, 아니면 동화와 어울리는 고딕 감성의 UI로 갈지 결론이 나지 않아서 판테라에게 물어봤는데, 판테라도 방향을 잘 모르겠다고 하더라고요. 그래서 아예 유저분들께 직접 물어보기로 했고, 그 결과는 인트로에서 말씀드린 것처럼 예상을 훨씬 뛰어넘었습니다.

gothic gothiclight paper

결과는 종이로 된 질감의 UI를 선호하는 유저가 절반 이상으로 많더라고요. 개인 계정 팔로우도 늘고, 응원 댓글도 정말 많이 받았어요. 이렇게 많은 분들이 관심을 가져주신다는 게 정말 기뻤습니다. 보내주신 응원 하나하나가 작업 동력이 되고 있어요.


판테라: 회피 하나에 이렇게 깊은 구멍이

이번 주도 여러 가지 구현을 진행했습니다.

저번 주에 공격 위주로 진행했던 타이밍 기반 전투에서 튀어나온 애니메이션 처리 문제와 카메라 구도를 먼저 다듬었습니다. 공격 구현 자체보다 이런 후처리 작업이 체감 품질을 크게 좌우하더라고요.

그리고 이번 주의 진짜 골칫거리는 회피 시스템이었습니다. 처음엔 단순하게 생각했어요. 그런데 파고들수록 만만치 않았습니다. ORK 프레임워크의 기본 회피 시스템은 스테이터스를 기준으로 회피 여부를 판단하는 방식이라, 플레이어가 실시간으로 적의 공격을 피하는 형태는 지원하지 않았어요. 저희가 원하는 건 플레이어가 "언제 회피 키를 눌렀느냐"에 따라 결과가 달라지는 구조였는데, 그걸 직접 설계해야 했습니다.

턴 기반 게임인 만큼, 회피도 페이즈 단위로 나누는 게 맞다고 판단했어요. 결국 회피 페이즈를 총 4단계로 설계했습니다.

0페이즈(Inactive): 전투 밖이거나 플레이어 턴일 때. 회피 입력은 무시됩니다.

1페이즈(PreWindow): 적이 이동해오는 구간. 이 타이밍에 너무 일찍 회피 키를 누르면 느낌표가 뜨면서 앤이 기우뚱하는 애니메이션이 출력됩니다. 조기 실패 처리죠.

evadefailed

2페이즈(WindowOpen): 공격 직전 300ms의 짧은 윈도우. 눈이 째릿한 이미지가 뜨는 그 찰나에 회피 키를 눌러야 회피 모션이 출력되며 정상 회피가 가능합니다.

evade

3페이즈(PostWindow): 공격이 발동되고 결과가 처리될 때까지. 이 구간에서는 입력이 잠깁니다.

이 구조를 세우고 나니 생각보다 빠르게 구현이 진행되었는데, 사실 이게 이번 주에서 제일 힘들게 구현한 파트였습니다. 그에 비해 인벤토리 설정, 세이브·로드 시스템 같은 기능들은 프레임워크 안에 이미 잘 구현되어 있어서 짧은 시간 안에 붙일 수 있었어요.

potion

전투 중 대화 시퀀스도 타이밍 구성만 잡혀 있으면 스키매틱을 바로 연결할 수 있을 정도로 프레임워크가 정교하게 되어 있었습니다.

그 이후엔 효니가 세팅해 놓은 배틀 환경에 카메라 구도를 잡고, 부족한 UI 세팅을 보완하면서 게임의 전체 플로우가 실제로 흘러갈 수 있는 수준으로 맵을 마무리했어요. 핵심 시스템은 이제 끝났습니다. 다음 단계는 컷신 구성입니다. 거의 다 왔어요.


맺음말

이번 주도 정신없이 달렸습니다. 우연히 3주 전 작업물을 다시 꺼내봤는데, 지금과 비교하면 확연히 달라진 게 느껴졌어요. 한 달도 채 되지 않은 시간 동안 정말 많은 것을 해냈구나, 새삼 실감했습니다.

그리고 이 작업들이 저희 둘만의 것이 아니라는 걸 이번 주 투표를 통해 다시 한번 느꼈어요. 응원해 주시고, 의견 보내주시고, 함께 방향을 잡아주신 분들 덕분에 더 힘이 납니다.

이제 1차 맵 구성을 완료하고, 카메라 워킹과 함께 내러티브와 컷신을 사이사이 채워나갈 단계에 도달했습니다. 앨스웨어가 진짜 게임의 모습을 갖춰가고 있어요. 다음 개발일지도 기대해 주세요. 😊

— 팀 벨라도나, 효니 & 판테라