The Hole

마지막 수정 시각: 2023-05-30 08:59:56

나는 퍼즐 게임을 굉장히 좋아한다. 잘 만들어진 퍼즐 게임은 보통 독창적이면서도 간단 명료한 규칙을 갖고 있고, 그 규칙 하에서 만들어진 문제들을 풀어나가는 건 상당한 성취감을 주기 때문이다.

간단한 가로세로 낱말 퍼즐부터 스도쿠, 카쿠로 같은 유명한 수학 퍼즐이나, 한국에서는 네모네모 로직이라는 이름으로 잘 알려진 노노그램 같은 퍼즐 등등 나는 거의 대부분의 퍼즐들을 정말 재밌게 플레이했었다. 그리고 내가 퍼즐을 재밌게 플레이한 만큼, 아 나도 이런 재밌는 퍼즐 게임 만들고 싶다! 라는 욕망이 항상 머릿속 한 켠에 존재했었다.

알고리즘 + 게임

동의하지 않는 사람도 많겠지만 알고리즘은 상당히 흥미롭고 재미있는 분야다. 대부분 알고리즘이 뭔지 대충은 알겠지만 그래도 모르는 사람들이 있을테니 알고리즘이 뭔지 간단히 설명부터 해보자.

알고리즘은 정말 쉽게 말해 문제를 푸는 과정이라고 할 수 있다. 실생활에서의 예라고 한다면 싸운 친구와 화해하는 알고리즘, 고장난 컴퓨터를 고치는 알고리즘 같은 걸 생각해볼 수 있다. 이런 알고리즘의 큰 특징 중 하나는 입력과 출력이 있고 문제를 해결하기 위한 유한 번의 중간 과정이 존재한다는 것이다. 싸운 친구와 화해하는 알고리즘이라면 일단 입력으로 나와 싸운 친구가 주어질 것이고, 이 알고리즘을 수행하고 나면 우리는 출력으로 화해한 친구를 얻을 수 있을 것이다. 고장난 컴퓨터를 고치는 알고리즘이라면 입력으로 고장 난 컴퓨터가, 그 알고리즘의 출력으로는 정상적으로 동작하는 컴퓨터를 얻을 수 있게 될 것이다.

알고리즘의 또다른 특성은 문제를 해결하기 위한 유한한 중간 단계가 있다는 것이다. 다시 위의 예제에 빗대어 말해보자. 싸운 친구와 화해하는 알고리즘에서 우리가 할 수 있는 중간 단계에는 뭐가 있을까?

1. 싸운 이유와 내가 한 잘못에 대해 생각해본다.

2. 둘이 조용히 이야기를 나눌 수 있는 장소를 마련한다.

3. 진솔하게 대화를 나누면서 잘못한 부분에 대해 사과한다.

4. ...

등등의 것을 생각해볼 수 있을 것이다. 이런 중간 과정을 잘 정리해서 조건에 따라 어떤 일을 해야할 지를 정리한 것이 바로 순서도이다.

흔히 말하는 프로그래밍 문제라는 것은 바로 이 알고리즘을 작성하는 문제를 말한다. 만약에 싸운 친구와 화해하는 알고리즘을 만드는 게 주어진 문제라면, 다양한 종류의 나와 싸운 친구가 제공되고, 내가 만든 알고리즘이 그 모든 종류의 싸움에 대해 성공적으로 화해를 해낼 수 있다면 문제를 해결한 것으로 생각하는 것이다. 물론 실제로는 임의의 2차 방정식이 주어졌을 때 그 근을 구하는 프로그램을 작성하시오 따위의 수학적인 딱딱한 문제들이 출제된다.

아무튼 나는 이런 알고리즘을 만드는 걸 굉장히 재밌게 생각했고, 그래서 그 알고리즘의 특성이 잘 살아 있는 퍼즐 게임을 만들고 싶었다. 그럼 알고리즘만의 특성에는 뭐가 있을까? 사실 알고리즘은 문제의 해답 자체보다는 그 해답을 찾기 위한 방법론을 다룬다는 점이 가장 큰 특성이긴 한데, 이런 추상적인 점만 가지고 퍼즐을 구상하기는 힘들다. 너무 뜬구름만 잡는 것 같은 기분이라고 해야 할까. 그래서 이런 개념적인 특성보다 알고리즘의 구체적인 정의로부터 퍼즐에서 쓸만한 특성을 먼저 뽑아 보았다.

1. 입력과 출력이 존재한다.

2. 입력으로부터 출력을 유도하기 위한 유한한 단계의 중간 과정이 존재한다.

이 조건을 조금 비틀면 바로 만들고자 하는 퍼즐의 형태를 정의할 수가 있다.

"어떤 입력과 그 입력으로 만들고 싶은 결과(출력)가 주어졌을 때, 그 출력을 만들기 위한 중간 과정을 설계하는 퍼즐"

이 정의에 부합하는 형태의 퍼즐이라면 알고리즘 특유의 느낌이 좀 살아 있는 퍼즐이 될 수 있지 않을까 싶은 생각이 들었다.

첫 번째 시도 : 공장

처음으로 떠올린 퍼즐 소재는 바로 일종의 공정을 설계하는 게임이었다. 공정이라는 건 어떤 원자재들이 주어졌을 때 그걸로 필요한 가공품을 만들어내는 과정이다. 원자재(=입력), 가공품(=출력)이라고 했을 때 그걸 위한 중간 과정을 설계하는 건 내가 생각한 퍼즐의 정의에 완전히 부합하는 것이었다.

이제 여기서 더 구체화를 해보자. 공정이라는 말도 사실 굉장히 추상적이고 폭이 넓다. 재료의 종류나 컨셉도, 그 결과로 만들어낼 수 있는 것의 형태도 무궁무진하기 때문에 이 걸 좀 더 단순하게 좁힐 필요가 있다고 생각했다. 스도쿠나 네모네모 로직 같이 유명한 퍼즐들을 보면 규칙이 굉장히 이해하기 쉽고 단순하다. 이게 너무 복잡하면 플레이어 입장에서는 규칙을 이해하는 것도 짜증나고, 퍼즐 자체가 별로 명료하게 느껴지지 않을 수 있다.

그래서 공정은 공정이되 어떤 공정을 만드는 걸로 할까? 를 고민하다가 내가 선택한 건 색칠하기였다. 단순하게, 재료로 흰색 공이 주어지고, 나는 이 걸 잘 색칠해서 색이 칠해진 공을 만들어내야하는 것이다. 이러면 일단 퍼즐의 재료는 항상 고정이고, 그 결과물도 단순히 어떤 색깔을 칠하면 된다 정도니 크게 복잡하지 않을 거라고 생각했다.

이 건 2011년 겨울 쯤에 이렇게 퍼즐의 기본적인 아이디어를 구상하고 그 퍼즐 스테이지를 짜기 위해 만들었던 툴의 스크린샷이다. TCF 툴이라고 이름이 붙어있는데 도대체 TCF가 뭐의 줄임말이었는지는 기억이 안 난다. 아무튼 툴의 오른쪽을 보면 이 스테이지의 요구 조건이 적혀있다. 스크린샷의 스테이지는 흰색 공이 3개가 투입되고, 그 3개의 공을 색칠해서 빨강, 초록, 파란색의 공을 각각 하나씩 만드는 퍼즐인 것이다.

왼쪽에 이것저것 복잡하게 배치되어 있는게 실제 퍼즐인데, 빨간색 초록색 파란색 칠해져있는 칸을 흰색 공이 지나가면 그 색깔로 바뀌는 것이다. 두 가지 이상의 색을 지나가면 그 두개가 혼합된 색으로 바뀌는 방식. 그래서 이런 것들이 기본적으로 여러 개 배치되어 있고, 내가 갖고 있는 일정량의 돈 안에서 필요한 물건들을 설치해서 원하는 출력을 만들어야하는게 퍼즐의 목표였다.

하지만 만들고 보니 생각과 달랐던게, 게임이 너무 복잡하고 직관적이지 않았다. 조금만 복잡한 스테이지를 만들려고 해도 전체적인 퍼즐의 크기 자체가 너무 커졌고, 그러다보니 플레이어 입장에서 이걸 어떻게 접근해야 퍼즐을 해결할 수 있지? 라는 생각이 들어버리는 것이다. 게다가 입력은 그냥 공이고 출력은 그걸 색칠하는 것 뿐이니, 그 컨셉 자체도 별로 매력적이지 않았다. 퍼즐을 풀면 풀었을 때의 성취감이 있어야하는데 소재 자체가 별로 매력적이지 않아서 성취감을 반감시키는 것이었다.

결국 이 아이디어는 이대로는 별로 쓰기 힘들겠다는 결론에 도달하게 됐고, 이런저런 사정들이 겹치면서 퍼즐에 대한 생각은 2년 정도 접어놓게 된다.

두 번째 시도 : 포탈

2013년도에 대학 입시 문제가 해결되고 나서 나는 다시 접어뒀던 퍼즐 게임에 대한 아이디어를 꺼내들었다. 시간이 지나고 다시 아이디어를 돌아보니 예전엔 몰랐던 문제점들이 좀 더 명확하게 보였다. 우선, 룰을 쉽게 만들었다고 생각했지만 실제로는 그렇게 쉽지 않았다. 여전히 좀 복잡했다. 출력 종류도 너무 다양했고, 주어진 비용 내에서 여러 가지 오브젝트들을 설치한다는 점 등 플레이어 입장에서 고려해야할 게 너무 많았던 것이다.

제일 먼저 바꾼 것은 출력을 없애는 것이었다. 정확히 말하자면, 출력 대신에 목적지라는 개념을 넣었다. 즉, 플레이어는 입력으로 주어지는 공을 목적지까지 보내야한다. 퍼즐의 목표는 공을 목적지까지 보내는 것으로 단순화된 것이다.

두 번째로 바꾼 것은 플레이어의 선택지를 줄이는 것이었다. 플레이어가 할 수 있는 행동의 종류가 너무 많아질 수록 게임은 복잡해진다. 할 수 있는 행동은 단순하되 그 단순한 행동을 기반으로 머리를 많이 써야하는게 더 좋은 퍼즐이다. 스도쿠같은 걸 예로 들어보면, 플레이어가 할 수 있는 건 단순히 조건에 맞춰 빈칸에 들어갈 숫자를 써 넣는게 다다. 네모네모 로직 류의 퍼즐도 조건에 맞춰 각 칸을 검은 색으로 채울 거냐 말거냐만 정하면 되고. 하지만 그 단순한 숫자 써넣기, 칸 채우기를 위해 머리를 많이 써야하고, 다양한 전략을 시도해볼 수 있다.

여기서 내가 가져온 아이디어는 바로 포탈이었다. 공은 포탈에 닿으면 다른 포탈이 있는 위치로 순간이동하고, 플레이어가 할 수 있는 행동은 서로 다른 세 종류의 포탈을 적절히 배치하는 것 밖에 없다.

위의 아이디어를 기반으로 만든 제일 첫 번째 물건이 바로 이것. 아래쪽의 재생 버튼을 누르면 화면의 파란 화살표에서 공이 발사되고(화살표 방향으로), 이 공을 목적지(오른쪽 위의 분홍색 사각형)로 보내면 퍼즐을 클리어하게 되는 것이다. 그리고 검은색 블록은 벽으로, 공이 여기에 부딪히면 폭발한다.

이 룰에서 공을 목적지까지 그냥 보낼 수는 없다. 그냥 출발시키면 무조건 벽에 부딪혀서 폭발하기 때문이다. 그래서 노란색 빈 칸에 적절하게 포탈을 설치해서, 공을 목적지까지 보내야한다. 그 때 나는 이 걸 포탈이 아니라 홀(Hole)이라고 불렀다. 포탈 게임이 너무 유명해서 다른 용어를 쓰고 싶었던 것 같다. 아무튼 위의 스테이지의 경우 아래와 같이 배치하면 스테이지를 클리어할 수 있다.

이렇게 해서 플레이어가 할 수 있는 행동은 세 종류의 포탈을 설치한다로 한정시키고, 게임의 목적 역시 공을 목적지까지 보낸다로 단순화시키자 게임이 확실히 이해하기 쉽게 바뀌었다. 이제 이 상태에서 퍼즐의 깊이를 더해줄 오브젝트들을 게임에 집어넣었다. 제일 처음으로 넣은 것은 아주 간단하게, 공의 진행 방향을 바꿔주는 녀석이었다.

화면 오른쪽에 있는 초록색 대각선 막대기는 터너(Turner)라고 이름 붙였는데 공이 부딪히면 방향을 90도 꺾게 만든다. 이 스테이지는 아래와 같은 방식으로 해결할 수 있다.

이 시점에서 이런 식의 직관적이고 이해하기 쉽지만 응용할 여지가 많을 것 같은 오브젝트들을 좀 추가하면 확실히 괜찮은 퍼즐을 만들 수 있겠다는 확신이 들었다.

두번째로 추가한 오브젝트는 방향을 180도 반대로 꺾는 녀석이다. 처음에 백(Back)이라고 부르다가 나중에 이름을 리버스(Reverse)로 바꿨는데, 또다른 특징으로는 한 번 부딪히면 없어진다는 것이다. 처음에 부딪혀도 없어지지 않는 걸로 했다가 이렇게 하니 무한 루프가 생기기 쉽고 스테이지에 다양성을 주기가 좀 힘들어서 한 번 부딪히면 없어지게 했다. 그렇게 하고 나니 이 오브젝트를 활용할 수 있는 상황이 굉장히 많이 생겼다(길을 일단 막아놓고, 한 번 부딪혀서 없앤 다음에 거기를 지나가게 한다든지...)

그 다음으로 추가한 것은 스위치(Switch)와 스위치 블록(Switch Block). 그냥은 지나갈 수 없는 길이지만, 연결된 스위치를 지나가면 해당 블록이 꺼져서(Off 상태가 돼서) 지나갈 수 있게 된다. 스위치를 한 번 더 지나가면 다시 지나갈 수 없게 되는 식. 이 걸 이용해서 플레이어가 강제로 특정 칸을 지나가야만 게임을 깰 수 있게 만들어 퍼즐을 어렵게 만들 수 있었다. 즉 스위치가 없다면 쉽게 깰 수 있는 스테이지지만 그 길이 스위치 블록으로 막혀 있어서 강제로 스위치가 있는 곳을 한 번 지나가게 만듦으로써 퍼즐의 난이도를 향상시키는 효과를 준다. 이 오브젝트는 만든 스테이지가 굉장히 쉽게도 깰 수있고 독특하고 참신한 형태로도 깰 수 있을 때, 굉장히 쉽게 깨는 방법만 막아버리는 용도로 쓸 수 있었다.

마지막으로 추가한 것은 점퍼(Jumper)라고 이름 붙힌 녀석. 간단히 말해 부딪히면 그 오브젝트가 있는 바로 한 칸 다음의 오브젝트를 건너뛰게 만드는 녀석이다. 이 오브젝트는 나중에 모바일로 포팅하면서 좀 변형을 거치게 되는데 그건 이후에 다시.

이 오브젝트가 가지고 있는 중요한 역할 중 하나는 게임에 비대칭성을 추가시켜준다는 것이다. 리버스가 한 번 부딪히면 사라지는 것도 마찬가지로 비대칭성을 부여해주는 것인데, 터너같은 경우는 같은 위치에 같은 방향으로 부딪혔을 경우 결과가 항상 동일하다. 그렇기 때문에 그 오브젝트를 여러 가지 용도로 활용하기가 쉽지 않다. 반면에 한 번 부딪히면 없어지는 리버스나, 한 칸을 건너뛰게 만들어버리는 점퍼의 경우 다른 오브젝트들과 결합되면 상당히 기발한 형태의 경로를 지나가야만 목적지에 도달할 수 있도록 퍼즐을 구성할 수 있고, 이게 퍼즐의 참신함에 상당히 큰 도움을 준다.

여기서 이 4가지 요소를 활용한 다양한 스테이지들을 만들고, 그래픽을 좀 더 개선한 다음 고등학교 축제 때 동아리에서 전시했었다. 그래픽은 고맙게도 그 때 그래픽을 좀 잘 하는 동아리 후배가 맡아서 작업을 해줬었다.

이렇게 그나마 조금 더 개선된 그래픽에 스테이지를 여러 개 만들어서 축제에 전시했었다. 당시에 만들었던 퍼즐들의 난이도가 너무 높아 반응은 별로였긴했지만, 그래도 퍼즐성 자체는 괜찮은 평가를 받았었다.

세 번째 시도 : The Hole

이렇게 한 번 퍼즐게임을 어느 정도 완성하고 나서, 언젠가 나는 이 걸 모바일로 옮겨야지 마음만 먹은 채 2년의 시간이 흘러가게 된다. 고등학교를 졸업하고 당장 공부하느라 개발할 시간이 안 나기도 했고, 제대로 그래픽과 컨셉을 살린 채 완성할 엄두가 나지 않았기 때문이기도 했다.

The Hole은 여차저차하다보니 나와 나의 친형이 함께한 형제 개발팀의 첫 번째 개발작이 되었다. 형과 같이 한 개발팀의 결성과 그 간의 과정은 따로 다룰 이야기가 많으니 여기서는 생략하고 이후에 따로 다뤄야 할 것 갈다.

아무튼 The Hole은 2016년 초에 약 2개월간 개발하여 안드로이드에만 출시를 했다.

이 건 모바일 버전의 플레이 영상. 원래 생각했던 기본적인 퍼즐의 컨셉은 유지하되 전반적인 게임의 그래픽 퀄리티와 게임에 좀 더 몰입하는데 도움이 될만한 주변 요소를 강화하는 것에 집중했다.

1. 스테이지 구성

이런 종류의 순수하게 문제 해결에만 집중하는 퍼즐 게임은 퍼즐의 질과 양이 게임의 퀄리티, 컨텐츠의 양과 그대로 직결된다. 그러니 스테이지를 잘 만드는 게 중요한데 이 걸 일일히 손으로 만들다가는 너무 오랜 시간이 걸릴 거라는 생각이 들었다. 그래서 제일 먼저 만든게 스테이지를 검증하는 프로그램이었다. 대충 이렇게 저렇게 배치하면 되지 않을까? 라고 생각하고 오브젝트를 배치해보고, 그걸 프로그램에 넘기면 그 프로그램이 내가 만든 스테이지가 잘 만들어진 스테이지인지 검증해주는 것이다. 즉 내가 만든 퍼즐 스테이지가 잘 만들어진 스테이지인지 검증하는 알고리즘을 구현한 것이다.

그러면 잘 만들어진 스테이지의 기준은 뭘까? 이 기준이 곧 퍼즐의 퀄리티와도 연관이 있기 때문에 이 기준을 잘 세우는게 중요하다. 또, 퍼즐의 재미나 난이도 같은 요소는 컴퓨터가 판단하기 힘들기 때문에 컴퓨터가 반복적으로 확인 가능한 기준이어야한다는 점도 고려해야했다.

조건 1 : 정답이 존재해야 한다.

이 건 정말 당연한 것이다. 정답이 없는 퍼즐은 일단 풀 수가 없으니 제대로 된 퍼즐이 아니다. 모든 스테이지의 답을 일일히 확인해가며 만든다는 것은 굉장히 힘든 일이기 때문에, 답의 존재 여부를 프로그램이 검증해주게 만들었다.

조건 2 : 스테이지 내의 모든 오브젝트를 이용해야 한다.

스테이지에 사용하지 않는 오브젝트가 있다면 그 오브젝트는 사실 배치되어 있을 필요가 없다. 그 오브젝트를 지워도 해당 스테이지는 성립하기 때문이다. 따라서 제대로 된 스테이지라면, 그 스테이지를 클리어하기 위해선 해당 스테이지에 배치된 모든 오브젝트를 반드시 이용해야만 한다. 이게 까다로운 점은 그 스테이지를 깰 수 있는 정답 중 하나라도 스테이지에 배치된 오브젝트 중 사용하지 않는 게 있어선 안 된다는 것이다. 그렇다면 플레이어 입장에서 그 정답으로 스테이지를 깰 경우 "어? 이 오브젝트는 안 써도 깨지는데 왜 들어가있지?"라는 생각이 들 것이고, 이는 퍼즐에 대한 재미와 몰입감을 저해시키는 요소라고 생각했다.

이 두 가지는 컴퓨터가 검증할 수 있는 요소이기 때문에 프로그램을 이용해 내가 만든 스테이지가 제대로 성립이 되는 스테이지인지, 이상한 답안은 없는지를 먼저 검증을 했다. 이 검증 프로그램이 있으면 만든 퍼즐의 답안을 모두 구할 수가 있기 때문에 스테이지를 만드는게 훨씬 쉬워진다. 나는 대충 배치만 하고, 그 스테이지에 대한 검증은 컴퓨터가 해주기 때문이다.

그러면 이제 검증의 압박에서는 벗어났으니, 컴퓨터가 검증할 수 없는 부분에 대한 원칙을 세우고 그걸 지켜 가면서 스테이지를 만들어야하는데, 내가 스테이지를 만들면서 고려했던 기본 원칙은 다음과 같다.

위에 스크린샷들을 보면 알 수 있는데, 게임 안에 들어간 모든 스테이지들이 다 5x5 크기이다(바깥에 나갈 수 없게 막는 테두리 제외). 이렇게 크기를 제한해야 스테이지의 복잡도가 높아지지 않을 거라고 생각했기 때문이다. 개인적으로는 스테이지의 복잡도가 높으면 플레이어 입장에서 막막한 느낌이 든다고 생각했고, 이는 퍼즐의 난이도와는 좀 다른 요소라고 보았다.

만약에 퍼즐 크기를 30x30 정도로 하고, 포탈을 10개 정도 설치해야 깰 수 있는 스테이지라면 당연히 어려울 것이다. 하지만 그 어려움은 퍼즐의 구성 상의 어려움이 아니라 단순히 플레이어 입장에서 고려해야 하는 요소와 양의 크기가 너무 많다는 것에서 나오는 것이라고 생각했다. 이런 어려움은 재미있는 어려움이 아니라 짜증을 유발하는 어려움이다. 나는 스도쿠가 9x9 사이즈로 고정되어 있고 그 내부의 구성 변경 만으로 다양한 난이도의 스테이지가 나온다는게 꽤 멋진 요소라고 생각했기 때문에 이 게임에서도 5x5 사이즈로 유지하고 복잡성보다는 스테이지 자체의 참신함을 통해 난이도가 높아지는 것을 의도했다.

이것 역시 어느 정도 스테이지의 복잡성과 관련이 있다. 플레이어가 문제를 마주했을 때 그걸 어디서부터 해결해야할 지 너무 막막하면 게임에 대한 흥미를 잃게 된다. 난이도는 있되 처음부터 너무 막막하기 보다는 어느 정도 해결을 하다가 중간에 막히는 것이 훨씬 좋은 퍼즐이기 때문에 이 부분도 신경을 써야하는 부분이었다. 퍼즐을 봤을 때 음 여기에는 일단 반드시 홀을 하나 설치해야 할 거 같아. 같은 단서를 빠르게 찾을 수 있도록.

이렇게 해서 게임에 들어간 스테이지는 총 336개였는데, 만만치 않은 양이었기 때문에 솔직히 모든 스테이지의 퀄리티를 보장하지는 못 했다. 둘이서 개발하는데 이 걸 모두 높은 수준까지 검토하기에는 시간이 부족했고, 이 게임은 팀의 첫 게임으로서 우리가 제대로 게임을 만들 수 있는가?를 검증하는게 목표였지 이 게임으로 대박치자!가 목표가 아니었기 때문에 여기에 많은 시간을 투자할 수 없었다.

2. 추가 / 변경된 요소들

일단 고등학교 때 만들었던 버전에 비해 3가지의 오브젝트가 더 추가되었다. 그 중에 두 가지는 개인적으로 조금 기획에 대한 검토가 부족했었다는 아쉬움이 남고 하나는 굉장히 좋은 요소라고 생각하는데, 그걸 일일히 설명하기엔 글이 너무 길어지니까 자세한 내용은 패스. 오브젝트의 추가는 사실 게임 컨텐츠 분량 측면에서 겨우 4종류의 오브젝트만 나오는 건 좀 부족하다고 생각하여 추가한 것이기 때문에 그렇게 큰 변경 요소는 아니었다. 원래 게임의 포맷상 새로운 오브젝트를 추가하는 게 그렇게 힘든 일이 아니기도 하고.

기존 게임에 비해 좀 크게 변경된 새로운 요소라고 하면 리플레이 기능이 있겠다. 기존에는 게임을 클리어하면 그냥 자동으로 다음 스테이지로 넘어가는데, 게임의 특성상 내가 푼 풀이를 보는게 꽤 재밌기 때문에 리플레이를 넣어서 스테이지를 깨고 내가 푼 루트를 감상할 수 있게 하는 게 좀 더 재밌겠다는 아이디어를 형이 냈고, 정말 좋은 아이디어였기 때문에 그 걸 그대로 채용했다.

또 다른 큰 변경점으로는 게임의 컨셉 변화다. 기존에 고등학교 때 만든 건 사실 그래픽이나 배경에서 큰 고민을 하지 않았었기 때문에 거의 추상적인 형태에 가까운 그래픽이었다. 하지만 그 상태로는 좀 부족한 느낌이 들어서, 원래 생각했던 게임의 배경 설정을 다듬어 컨셉을 명확하게 바꾸었다.

워프 시스템을 이용한 우주 여행사의 직원이 되어 고객들이 원하는 여행 경로를 만들어 주자!

이게 새롭게 만들어진 The Hole의 배경 설정이었다. 플레이어가 근무하는 회사는 홀(포탈)을 우주 공간에 자유 자재로 생성할 수 있는 기술이 있다. 고객들은 그 기술을 이용해서 먼 거리에 있는 별로 여행을 떠나고 싶어하고, 플레이어는 그 회사의 직원으로서 효율적으로 홀을 배치해서 고객들이 목적지에 도착할 수 있게 만들어줘야 하는 것이다. 그래서 각 고객들의 출발지(그 고객들이 탑승할 우주선의 시작 위치)와 목적지, 우주 공간의 여러 사물들이 주어졌을 때, 그 상황에서 무사히 도착하려면 홀을 여기 여기 여기 설치해야합니다!를 찾는 것이 퍼즐의 목표가 되는 것이다.

이 배경설정은 개인적으로 꽤 마음에 들어서 실제 게임에도 스토리적인 요소를 좀 넣을려고 했었는데 개발 기간상 시간이 너무 오래 걸릴 것 같아 게임에서는 제외하게 되었다.

스토리 외에 또 다른 추가된 사항으로는 뱃지 시스템이 있다. 게임 특성상 우주선이 발사 후 목적지까지 도착하기 위해 지나가야 하는 칸수(이동거리)가 답을 어떻게 배치했느냐에 따라 달라지는데, 이걸 이용해서 플레이어에게 뱃지를 주게 만들었다. 다른 퍼즐 게임들은 보통 이동 횟수를 최적으로 하면 별 세개, 그거보다 좀 못하면 별 두개, 아니면 별 하나를 주는 방식을 많이 채택하고 그게 익숙하기 때문에 처음에는 똑같은 방식을 적용하려고 했었다. 최단거리로 도착하면 별 세개, 좀 못 하면 별 두개, 아니면 별 하나 이런 식으로.

그런데 스테이지를 만들고 컴퓨터로 답안을 돌리다보니, 웃긴게 최장거리 답안이 정말 어려우면서도 기발한 답안이 나오는 경우가 많았다. 5x5 밖에 안 되는 퍼즐 내부에서 최대한 어거지로 우주선이 많은 거리를 이동하게 만들어야 하다보니 생각하기 상당히 힘든 독특한 답안이 나오게 되는 거였다. 이 요소가 굉장히 흥미로웠기 때문에 포기하기 힘들었고, 그래서 잘 깨면 별 3개주는 시스템을 버리고 뱃지를 주는 시스템으로 바꾼 것이다. 그냥 스테이지를 클리어하면 클리어 뱃지를 주고, 최단거리로 클리어하면 최단거리 뱃지를, 최장거리로 클리어하면 최장거리 뱃지를 주는 식.

이 방식으로 하드코어한 플레이를 하는 유저들이 같은 퍼즐을 반복 플레이하면서도 재밌게 즐길 수 있게 됐다는 생각이 들었다. 또 여기에 덧붙여 뱃지를 수집하기 위한 동기부여를 주기 위해 우주선 스킨을 넣어서, 일정 개수 이상의 뱃지를 모으면 퍼즐을 실행했을 때 우주선이 발사되는게 아닌 다른 이미지가 발사되도록 만들었다. 뭐 농구공, 축구공 이런게 날아간다거나 가위, 바위, 보 같은게 날아간다거나..

마지막으로 새롭게 넣은 요소는 힌트가 있다. 게임의 난이도적인 부분 + 조금이라도 수익이 나왔으면 하는 마음에서 넣었는데, 별 건 아니고 그냥 힌트다. 하나 쓸 때마다 홀을 어디 놓아야 할 지 위치를 하나씩 알려주는 방식.

출시 후

게임은 유료(1000원)로 출시했는데 한 100명 정도 구매했던 것 같다. 그마저도 거의 대부분 지인 분들이었고... 딱히 성과를 기대하고 출시한 건 아니었으니 크게 상관은 없었지만. 한 번 게임 프로세스를 처음부터 끝까지 밟아봤다는 것에 큰 의미가 있었던 것 같다.

이 게임은 이후 BIC(Busan Indie Connect Festival) 출품을 하고 여기서 전시를 하면서 또 내 게임 개발에 많은 영향을 미쳤는데, 이것도 다룰 이야기가 많아서 따로 써야할 것 같다.

The Hole의 아이디어와 퍼즐 구성에 대한 고민은 개인적으로 굉장히 마음에 들어서, 첫 게임이라 어쩔 수 없는 실력 부족으로 인한 낮은 퀄리티가 참 아쉽다. 언젠가 게임을 리메이크해서 다시 출시하고 싶다는 생각을 계속 하고 있는데, 다른 게임 만드느라 바빠서 과연 그럴 날이 올까 싶기도 하고. 어쨌건 이 게임은 내가 게임을 개발하는 과정에서 참 많은 영향을 끼쳤고, 제대로 완성한 첫 게임인 만큼 기억에 많이 남는 게임인 것 같다.