쿡앱스 클라이언트 개발자 신서현입니다! 지금까지, <Nacho’s Blast>, <Zoey’s Journey> 등 Match 3 인게임 개발을 담당 해오고 있습니다.
우리 게임만의 특색을 만들기 위한 고민
Match 3 게임은 오랜 시간 플레이되어왔고 이미 플레이가 정형화된 장르라 인게임에서 차별성을 만들 수 있는 요소를 찾기 쉽지 않았어요. 차별성에 대한 아이디어 회의를 나누던 도중, 미션을 찾아 날아가는 특수 블록으로 부메랑을 만드는 게 어떨까 하는 이야기가 나왔어요.
부메랑은 당시 기획 상의 게임 콘셉트와 아주 부합했기 때문에 그 자리에 있던 모두가 좋아했어요. 특히 특수 블록끼리 조합했을 때 부메랑에 폭탄을 테이프로 둘둘 감아서 던지는 모습도 재밌을 것 같았어요.
부메랑에 대해 알아봐요!
진짜 같은 부메랑을 만들기 위해 일단 부메랑의 종류와 차이에 대해 알아봤어요. 던졌을 때 다시 돌아오거나, 돌아오지 않느냐에 따라 종류가 나눠집니다.
예를 들어, 사냥용 부메랑은 한 번 던졌을 때 다시 돌아오지 않아요. 그리고 목표에 날아가 박혀야 하기 때문에 모양이 특이해요. 목표에 가서 부딪혀야 한다는 게 매력적이었지만 타겟을 다시 탐색하려면 어색해 보일 것 같아 고려하지 않았어요. 리터닝 부메랑은 우리가 흔히 알고 있는 제자리로 돌아오는 부메랑이에요. 날개의 개수에 따라 달라지는데, 바나나처럼 생긴 이중 날개형부터 프로펠러처럼 생긴 중 날개형까지 여러 유형이 있었어요. 날개가 많아질수록 쉽게 돌아오지만 그만큼 공기 저항이 커져 멀리 날아갈 수는 없다고 해요.
사냥용 부메랑/이중 날개형/삼중 날개형/사중 날개형
이 중 우리에게 가장 친숙한 이중 날개를 선택해 개발을 시작했어요. 그리고 부메랑의 궤적을 알기 위해 수많은 실제 영상과 레퍼런스들을 찾아봤어요. 영상을 찾아보는 동안에는 참 막연했었는데, 부메랑의 궤적을 추정하는 논문들에서 힌트를 얻을 수 있었어요. 그중 깃 요소법을 이용한 부메랑의 궤적을 잘 정리해놓은 논문을 참고해 개발을 시작했습니다.
막상 개발에 들어가니 논문의 수학 공식을 직접적으로 적용하기엔 너무 복잡했어요. 게다가 특성상 궤적이 실시간으로 바뀔 수 있어 성능을 고려해 가볍게 구현할 수 있어야 했어요. 그래서 실제 구현은 베지에 곡선을 사용하기로 했어요. 베지에 곡선은 점 몇 개만 잡아 놓으면 그 개수와 위치에 따라 형태와 모양이 달라져요.
출발점 A, 도착점 C, 그리고 곡선의 모양을 조절하는 조절점 B가 있어요. 곡선은 0부터 1까지의 범위를 가진 t를 이용해 무수히 생기는 내분점 R을 연결하면 만들어져요. 출발점과 도착점은 부메랑을 날리는 시점에서 알 수 있고, t는 이동 시간으로 잡으면 돼요. 그러면 개발할 때는 내가 원하는 궤적을 만들 수 있도록 조절점 B만 고려하면 돼요.
실제로는 점 4개를 사용한 3차 베지에 곡선을 사용했는데, 더 부드럽고 예뻐 보였기 때문이에요. 이 경우에는 출발점 A, 도착점 D를 지정하고 조절점 B와 C를 계산하면 되겠죠?
우선 베지에 곡선 시뮬레이터를 이용해 원하는 곡선을 만들고, 두 조절점의 규칙을 정했어요. 조절점 B는 점 A를 N도 회전시켜서 구하고, 조절점 C는 점 D를 M도 회전시켜서 구하도록 했어요.
부메랑을 더 멋지게 날려 봐요
결과적으로 원형의 궤적을 그리다가 회귀하려 할 때 목표물을 맞추는 형태를 만들 수 있었어요. 사실 이 과정에서 수많은 수정이 있었는데, 처음에는 단순했지만 후반으로 갈수록 처음 생각했던 만큼 쉽지 않았어요. 실제 부메랑과 속도를 동일하게 만들었더니 밋밋해서 중간 지점에서 감속을 해 보기도 했고요.
2차 곡선, 등속 이동, 등속 회전
3차 곡선, 중간 지점 감속, 중간 지점 회전 속도 증가
3차 곡선, 중간 지점 감속, 중간 지점 회전 속도 증가
3중 날개 부메랑은 어떨까요?
그러나 바나나처럼 돌며 날아가는 2중 날개는 매력적이었지만 칸이 너무 단순하게 보이는 그래픽적 문제가 있었어요. 특히 폭탄에 부메랑을 조합했을 때 어떤 콘셉트로 날려야 할지 몰랐어요. 그래서 우리는 3중 날개로 이미지를 바꿔 테스트했는데, 칸이 비어 보이지도 않고 궤적이 훨씬 예뻐 보이기도 했어요. 게다가 조합했을 때 프로펠러를 장착하는 것 같은 느낌을 줘서 다이내믹한 느낌도 잘 살릴 수 있었어요.
아래에 있는 게 바로 <Nacho’s Blast>에 적용된 최종 버전의 부메랑이에요. 폭탄과 부메랑을 조합했더니 프로펠러를 머리에 달고 이동하는 것 같은 연출도 만들 수 있었죠.
문제점 1: 부메랑이 화면에서 사라졌어요!
실제 게임에서 적용해 보면 잘 만든 것 같다가도 허점이 있었어요. 문제는 부메랑이 화면에서 사라진다는 것이었고, 플레이 경험에 부정적인 영향을 준다는 피드백을 받았어요. 이러한 이유는 궤적이 반드시 화면 밖으로 나갈 수밖에 없는 경우가 생기기 때문이었어요.
보드의 끝점들에서 기존 궤적을 사용하면 이 궤적을 좌우 반전하거나 회전하더라도 무조건 화면 밖으로 나가게 되는 경우가 생겨요. 새로운 버전에서는 궤적의 일부가 화면을 벗어나는 경우 바깥으로 돌지 않는 궤적을 예외적으로 사용했어요.
문제점 2: 부메랑이 멈춰버렸어요!
이 부메랑은 타겟 블록이 도중에 사라질 경우 다시 다른 타겟을 찾아 날아가야 했는데 어떤 스테이지에서는 보드가 아예 비워져 부메랑이 오랜 시간 동안 타겟을 찾지 못하는 경우가 있었어요. 이에 대해 예외 처리를 하지 않아 날지 않고 멈춰 있게 되었죠.
그런 경우에는 부메랑을 제자리에서 빙글빙글 돌게 만들었어요. 그러다 다시 타겟을 찾으면 궤적을 다시 계산하여 날아가도록 했죠. 예시는 일부러 특수한 케이스를 만들어 테스트한 경우에요.
이제 유저에게 보여주는 일만 남았네요!
많은 폴리싱 과정을 거쳐 <Nacho’s Blast>에서 볼 수 있는 지금의 부메랑이 완성되었는데요, 좀 더 디테일한 부분을 살리기 위해 많은 케이스를 테스트하고 있어요.
이런 고민 끝에 만들어진 멋진 부메랑은 <Nacho’s Blast>, <Zoey’s Journey>에서 확인해 주세요!