고전 숫자 퍼즐 게임 (Magic 15 Puzzle - Classic Sliding Number Game )
안녕하세요. 나이 마흔 중반에 평생 해오던 일과 전혀 상관없는 분야에 뛰어들어, 인생 첫 앱 출시를 앞두고 감격에 겨워 글을 쓰는 늦깎이 초보 개발자입니다.
대학 시절 코딩을 공부했으나 뜻을 두지 못하고 중퇴한 뒤, 평생 프로그래밍과는 거리가 먼 삶을 살아왔습니다. 그러다 얼마 전 회사를 그만두고 실업급여를 받게 되면서, "남은 인생은 진짜 해보고 싶었던 걸 찾아 도전해 보자"는 마음이 들었습니다. 이때 사부님의 추천을 받아 요즘 유행한다는 Unity에 무작정 손을 대게 되었습니다.
감사하게도 사부님은 저 같은 초보가 시작과 마무리를 할 수 있도록 큰 가이드를 주셨고, 첫 목표로 '고전 슬라이딩 퍼즐'을 제시해 주셨습니다.
다들 어릴 때 문구점에서 파는 1부터 15까지 숫자를 밀어서 순서대로 맞추는 고전 게임 아실 겁니다.
사부님은 강의를 보고 완성된 것을 재조립하는 따라기 강의 대신, 최초 15퍼즐 게임의 애플 컴퓨터 기계어 자료와 개발자의 의도가 담긴 아주 깊이 있는 자료들을 건네주셨습니다. 앞으로 어떻게 방향을 잡아야 할지 그리고 무엇부터 해야 할지 몰랐던 제게 사부님은 프로젝트 생성부터 폴더 구조 짜는 법까지 사소한 것들을 손에 익을 때까지 반복 연습을 하도록 로드맵까지 가이드해주셨죠.
제가 아는 것이 부족해 중간에 답답한 마음에 유료 강의도 들어봤지만, 영상을 끄고 나면 제 스스로는 코드 한 줄 써 내려가지 못했습니다. '따라 하기'가 제 실력의 전부인 것 같아 좌절하고 포기하고 싶은 마음이 수시로 들었습니다.
어설픈 실력으로 게임을 구현하던 중 재미있는 문제가 생겼습니다. 난수(Random)를 발생시켜 칸을 섞었는데, 아무리 머리를 굴려도 절대로 완성할 수 없는 배열이 중간 중간 나오는 것이었습니다.
알고 보니 난수 방식 배열로 무작위로 섞으면 50%의 확률로 '절대 풀 수 없는 배열'이 생성된다는 수학적 사실이 숨어 있었습니다. 사부님이 주신 자료를 꼼꼼히 살폈거나 설명해 주실 때 잘 들었으면 미리 알았을 텐데, 이후에도 반복적으로 설명 해주셨지만 무엇이 중요한지 제대로 알지 못했던 저는 들어 알면서도 깨닫지 못해 알지 못하는 상황이 생겼던 것이었습니다.무작정 해보는 것에만 정신이 팔려 몸으로 깨닫느라 한참을 헤맸던것 같습니다.
제자리걸음만 반복하던 제게 사부님은 최초 퍼즐 개발자의 자료에서 영감을 얻은 아이디어를 추천해 주셨습니다.
"절대 풀 수 없는 배치라면, 게임 내에 마법 같은 솔루션을 제공해 의도적으로 풀어내게 만들면 어떨까?"
단순히 칸을 밀기만 하는 게임을 넘어, 난수가 만든 불가능한 장벽을 전략과 논리로 타파하는 독특한 시스템을 구현하는 것이 핵심이었습니다. 안 풀릴 것 같던 배열을 아이디어로 해결했을 때의 쾌감은 정말 엄청났습니다.
UI를 다듬으며 뇌 정지가 오기도 했지만, 스승님의 끈기 있는 격려 덕분에 마침내 'Magic 15 Puzzle'이라는 이름으로 심사를 제출했습니다.
거창한 부자가 되겠다는 꿈보다는, 제 작은 결과물을 누군가 즐겨주시고 그 수익이 다음 단계를 위한 동기부여가 된다면 더할 나위 없이 행복할 것 같습니다. 마흔 중반의 늦은 나이, 불안감 속에 시작했지만 끝까지 마무리해 냈다는 사실 하나만으로 제 스스로가 조금은 자랑스럽습니다.
부족한 초보 개발자의 첫걸음을 응원해 주시면 감사하겠습니다. 다시 한번 이 길을 열어주신 사부님께 진심으로 감사의 말씀을 올립니다.