지난번 Developing에서, 저는 게임 엔진 유니티를 고르고 어떻게 쓰는지 배웠습니다. 하지만 이제는 제 게임 아이디어를 공개하고, 또, 본격적으로 만들어 볼 시간입니다. 하지만 게임 개발을 어디서부터 시작할까요? 저는 이 질문이 매우 중요하다고 생각하는데, 왜냐면 곧 보시겠지만, 게임 개발 중에 방향을 잘못 타면, 프로젝트에 처참한 영향을 미치거든요. 설명해드리죠. 좋아요, 게임 아이디어부터 얘기해봅시다. 제가 만들 게임은, 엄청난 거니까 각오하세요, 2D 횡스크롤 플랫포머입니다. 네, 모든 인디 개발자들이 횡스크롤 플랫포머로 시작하죠, 하지만 저도 그만한 이유를 갖고 있습니다. 제가 좋아하는 장르고, 플랫포머가 여러 면에서 상대적으로 만들기 쉽고, MMORPG는 아니니까요. 또 플랫포머 레벨, 캐릭터 디자인에 대해 수많은 영상을 만들어봤으니 도움이 되겠죠. 자, 이 플랫포머는, 또 각오하세요, 독특한 전환이 있습니다. 제 게임의 캐릭터가 자성을 띤다는 설정인데요, 특정한 플랫폼에 밀려나거나 끌려가며, 버튼을 눌러서 극을 바꿀 수 있습니다. 이 아이디어는 사실 이 게임 겁니다. 젤다의 전설: 대지의 장. 이 게임에서 나오는 자석장갑 아이템은 링크가 특정 표면에 밀려나거나 끌려가도록 해주는데, 큰 금속 공을 들어 퍼즐을 풀거나 적들과 싸울 때도 쓰입니다. 굉장히 멋진 메카닉이지만 다소 제한적인데, 장르, 탑뷰 카메라, 그리고 당연히 게임보이의 기술적 한계 때문입니다. 그래서 저는, 이 아이디어를 빌려 다른 장르 게임에 넣어볼까 생각했습니다. 빠른 2D 플랫포머, 셀레스트나 슈퍼미트보이 같은 곳에요. 자성에 대해 완전히 익혀 속도, 유연성, 정확성을 얻는 겁니다. 이게 제 아이디어입니다. 이제 궁금한 점은, 어디서부터 시작하죠? 유니티에 들어가서 코드를 짤까요? 포토샵에 들어가서 아트워크를 만들까요? 스토리나 캐릭터를 구상할까요? 어디서부터 하죠? 솔직히 말할게요. 이 게임은 제가 처음 만들어보려는 게 아닙니다. 어릴 때부터 게임 아이디어를 생각해 왔고, 여러 툴로 구현하려는 시도를 살면서 여러번 했습니다. 하지만 저는 대부분 만들다 그만뒀고, 제가 보기엔 원인이 항상 똑같다 생각해요. 잘못된 방식으로 시작했다고. 보여드리죠. 부모님 집에서 이 폴더를 가져왔는데요, Game Maker's Toolkit을 시작하기 몇 년 전 만드려던 게임의 메모, 스케치, 아이디어로 가득합니다. 여기 스타크래프트:고스트 마우스패드까지 있네요. 이 게임 안 나왔죠? 값 좀 나가겠는데, eBay에 팔아야겠군. 이 게임 이름은 카터의 저주였습니다. 유명한 고고학자 하워드 카터가 투탕카멘의 무덤을 발견하고, 고대 이집트의 저주도 같이 깨워버려 좀비, 미라, 고대 이집트 신들과 싸워야합니다. 이것들 다 그린다고 몇 시간이고 할애했죠. 정말, 괴짜같네요! 아무튼, 이 적들과 어떻게 싸우나요? 바로 피크로스 퍼즐을 풀어서입니다. 피크로스는 이 논리와 격자 기반의 퍼즐 게임이에요, 스도쿠같은. 닌텐도가 피크로스 게임을 많이 냈죠. 북웜 어드벤처 같은 게임에 영감을 많이 받았는데 화면 아래에 퍼즐이 있고, 퍼즐을 깨면 화면 위에 싸우는 장면에서 적에게 데미지를 주는 식입니다. 제 생각도 거의 같았습니다. 화면 아래에 피크로스가 있고 하워드 카터가 위 화면에서 싸우는 거죠. 전 개발을 바로 시작했습니다, iOS 게임 개발용 iPad 앱 Codea를 사용했구요. 이전에 코딩이 할 만한지 보려고 가장 기본적인 피크로스 iOS 앱을 만드는 데 썼지만, 그래픽이 끝내주길 바라서, 저는 포토샵에 들어가 스프라이트와 애니메이션부터 만들었죠. 사실 스프라이트와 애니메이션으로 가득한 드롭박스 폴더를 갖고 있습니다. 여러 캐릭터, 하워드 카터의 마무리 포즈, 도입부 컷신을 만들었고요, 매력적인 버튼이 박힌 메뉴 화면도 만들었습니다. 만드는 데 푹 빠져들었죠. 그러다가 문득 깨달았습니다. 무언가 중요한 걸. 무언가 프로젝트에 해로운 걸. 게임이 별로였어요! 형편없고. 너무 재미없었죠. 코드를 짜고 개발할수록 저는 무엇이 문제인지 눈치챘습니다. 피크로스는 이런 게임에 넣기에 충분한 깊이가 없어요. 전술이나 전략을 짤 수 없고, 어느 적과 싸워도 전투가 다르지 않고, 궁극적으로 당신이 싸우고 있다는 점이 중요하지 않았죠. 위의 화면을 무시해도 게임에 지장이 없는 겁니다, 피크로스 퍼즐만 푸는 거니까요. 제게는 어느 적과 싸우느냐에 따라 더 어렵거나 흥미롭게 만들 능력이 없었고, 플레이어는 같은 짓만 계속 반복하게 된 겁니다. 저는 깊이 없고, 반복적이고, 따분한 게임을 만들었습니다. 문제를 고칠 수도 있겠지만 그러기엔 너무 멀리 와버려서, 전 의욕을 잃고 프로젝트를 전부 폐기해버렸습니다. 그럼, 무슨 실수를 했을까요? 시간이 많이 지난 후 깨닫는 거지만, 이제 거의 10년이네요, 무슨 일이 있었는지 명백합니다. 게임 개발 중 만들 게 여럿 있잖아요, 주로 음악, 그림, 게임 디자인, 스토리, 코드가 있죠. 이들을 동등한 위치에서 바라보기 쉽지만, 아닙니다. 대부분의 경우 게임 디자인은 동등치 않고 오히려 다른 파트가 올라오는 토대에 가깝습니다. 이를 잘못 잡으면, 전체가 무너지는 거죠. 버그는 고칠 수 있고 그래픽은 새로 그리면 되지만 게임플레이에 문제가 있다면, 가끔 프로젝트는 구조가 불가능합니다. 이게 제게 일어난 일이겠죠. 그림과 애니메이션에 시간을 너무 쏟아서, 드디어 게임플레이에 도달했을 때서야 모든 게 잘못됨을 깨달은 겁니다. 불안정한 토대에 집을 지어 놓고서 변기가 아래로 꺼진 것에 놀라고 화를 낸 거죠. 부끄럽게도 이런 실수는 여기서 끝나지 않았습니다. 느와르 포인트앤클릭 어드벤처 게임에 절차가 있는 독특한 단서 시스템을 넣고 싶었지만 스토리와 시대 조사에 시간을 너무 써서, 시스템을 실제로 디자인해보지도 않았습니다. 또 저는 속도감 있는 현대식 모바일 스네이크 게임을 만들고 싶었는데, 버그를 고치고 이동 구현 코드를 완벽하게 하는 데 빠져서 개발에 질리고 지칠 때까지 게임이 재미없단 것을 눈치 못 챘습니다. 저는 항상 제 게임을 디자인할 때마다, 스토리나 그래픽같이 다른 요소를 게임플레이보다 앞서 만들었죠. 왜일까요? 제가 보기엔 매우 잘못된 생각 두 가정 때문입니다. 첫번째는 제가 그 게임을 구상할 때 항상 멋져 보여서, 그걸 다 만들면 재밌을 거라고 생각했던 겁니다. 그건 당연히 틀렸고요. 두번째는 게임을 완성하기까지 그 게임이 재밌는지 알 수 없었단 겁니다. 계속 만들다 보면 언젠가 게임이 괜찮은지 깨닫겠죠, 그렇죠? 아뇨, 또 틀렸군요. 지금은 답이 너무나 분명해서 말하기도 민망하지만, 그땐 아니었어요, Game Maker’s Toolkit을 하면서 알아냈죠. 게임 개발을 연구하면서, 많고 많은 게임 디자이너들과 인터뷰하면서 성공적인 게임 대부분이 어떻게 시작하는지 알게 된 겁니다. 게임 디자이너들은 항상 수많은 아이디어를 갖고 있고 머릿속에선 그게 정말 재밌어 보이겠지만, 최고의 게임 디자이너들은 자신의 뇌가 고약한 거짓말쟁이라는 걸 압니다. 게임 아이디어가 좋은지 확인하려면 만들고 테스트해야만 하는데, 게임 전체를 만들 필요없이 디자이너들은 프로토타입만 만들면 돼요. 프로토타입이란 작고 단편적인 시험용 프로젝트로, 아이디어가 재밌는지 아닌지만 확인합니다. 프로토타입들은 보통 매우 엉성해 미완성 그림, 기본 모양, 다른 게임에서 훔쳐온 스프라이트 등입니다. 대부분 버그 천지에, 고장났으며 메카닉을 테스트하는데 필요한 가장 기초적인 부분만이 갖춰져 있습니다. 겨우 기능하는 버전의 아이디어 구현으로, 최대한 빠르게 만들어져, 괜찮은지만을 봅니다. 재밌거나 흥미로운가? 계속할 가치가 있는가? 게임 전체를 마저 만들어도 될 만큼 기반이 튼튼한가? 그게 오늘 제가 할 일입니다. 이번엔 제대로 하겠어요. 오직 프로토타입을 만드는 데에 집중하고, 게임 아이디어를 테스트하는 것 외에 아무것도 하지 않도록 엄격해질 것입니다. 그래픽은 구글 이미지에서 즉석으로 가져오고요, 음악도 안 넣을 거고, 스토리도 없고, 게임 이름이나 캐릭터 이름도 생각하지 않을 거고요, 만들지도 않은 게임의 아이콘 디자인이나 하지 않고요, 마크 이 바보야. 코드는 아직 유니티를 배우는 참이라 버그도 많고 고장나겠지만, 아이디어가 괜찮을 지 확인하기에 적당할 겁니다. 게임 메카닉을 시험하고 무엇이 재밌는지 보는 샌드박스죠. 이제 시작하고, 유니티를 열어봅시다. 저는 제일 먼저 좌우로 움직이고 점프하는 캐릭터가 필요해서, 해당 키를 누르면 Rigidbody에 힘이 적용받도록 했습니다. 여기서 이미 문제가 좀 있어서 좋은 시작은 아니었지만, 그래도 해냈습니다. 그 다음 Scene에 자석을 넣고 캐릭터가 끌려가도록 만들어야 했습니다. 그러려면 전문적인 프로그래머가 되어야 하는데, 저는 제 매우 영리한 코딩 실력을 발휘하려고 손을 풀고 다음 코드를 한줄 입력했습니다. Rigidbody를 다른 오브젝트 쪽으로 어떻게 옮기는지. 거짓말이에요, 검색해서, 코드 좀 찾고, 제 프로젝트에 때려박았지만, 어떤 코드인지는 이해했습니다. 캐릭터와 자석 사이의 방향을 찾아 그 방향으로 Rigidbody에게 힘을 적용시키는 겁니다. 또 저는 코드를 수정해 자석에 가까워질수록 빨라지게끔 했습니다. 그리고 버튼을 누르면 자석이 꺼지도록 만들어 캐릭터가 속력을 유지하는 효과를 의도했습니다. 하늘을 날아다닐 수 있죠. 플랫폼을 위에 놓으면, 캐릭터를 자석 쪽으로 끌다가 멈추어 뛰어오르게 할 수 있습니다. 기분이 꽤 좋지만, 하지만 컨트롤하기 약간 어렵군요. 이 코드는 완벽하지 않습니다, 쉽게 고장나죠. 하지만 연구 도중 유니티에서 매우 유용한 걸 찾았습니다. 내장된 컴포넌트 Point Effector입니다. 간단히 말해서, 자기장이죠. 이걸 제가 놓치다니 믿기지 않네요, 아이콘이 말그대로 자석 모양인데. 이런 식입니다. GameObject에게 Collider와 Point Effector를 추가하고, 끄는힘 값을 넣으면 Rigidbody가 Collider 안에서 자기장의 중심 쪽으로 이끌립니다. 유니티의 LayerMask 기능으로 특정 오브젝트만 움직이게도 할 수 있죠. 이러면 게임을 만들기 훨씬 쉬워질 테니, 프로토타입을 새로 만들기로 했습니다. 더 현실적인 느낌이네요. 코드도 수정하기 쉽고, 이런 것도 되는데, 끄는점을 자석의 극에 갖다대면 이렇게 됩니다. 꽤 멋지죠. 하지만 두번째 프로토타입을 만들 때, 왠지 잘 모르겠지만, 이번에는 마리오 대신 자석 사진을 메인 캐릭터로 써봤습니다. 이게 제게 영감을 주었는데, 캐릭터가 자석이 아니라, 게임 세계에 자석이 있고 캐릭터가 걸어가서 주울 수 있다면? 구현을 위해 유니티에 내장된 Joint 기능을 씁니다. 또다른 컴포넌트죠. 두 Rigidbody를 Hinge나 Spring 등 여러 형식의 관절로 연결할 수 있습니다. 이제 캐릭터가 자석을 들고 있고, 자석이 금속 조각에 이끌릴 때 캐릭터도 따라갑니다. 자석을 놓아버리면 다시 걸을 수 있죠. 그리고 제가 원했던 게임플레이, 자석의 궤적을 이용해 캐릭터를 높은 플랫폼에 보내는 것, 공중에 자석에서 손을 뗌으로써 아직도 가능합니다. 여러가지 다른 것도 할 수 있게 됐는데, 자석을 두 개 이상 가질 수 있고, 혹은 자석을 여기 놓고, 적이 따라오게 한 다음, 자성을 꺼버리면, 뿌직! 사실 좀 멋진걸요, 재밌어 보입니다. 갑자기 게임이 원래 아이디어보다 훨씬 흥미로워졌어요, 별로일까봐 걱정할 참이었는데 말이죠. 캐릭터가 자성을 띠어서 이끌리고 밀려날 때는 조종하기 어려운 감이 꽤 있었지만, 자석을 개별의 물체로 두면 캐릭터를 완전히 통제할 수도 있고, 자석을 들어 통제에서 조금 벗어날 수도 있죠. 또, 저는 캐릭터가 자성을 띨 때 아이디어를 얼마나 낼 수 있을지 조금 걱정했지만, 각각의 두 독립체로 생각하자마자, 아이디어가 흘러넘쳤습니다. 또, 저는 뚜렷한 플레이 방식 둘을 오갈 수 있는 게임을 매우 좋아하는데, 마리오 오디세이에서 모자가 있을 때 없을 때가 다르듯이요. 제 캐릭터는 자석없이 민첩하며 매우 높이 뛰고, 자석을 들면 느리고 무거워졌으면 하는데 대신 당연히 자석이 무한한 가능성을 제공해 줘야겠죠. 이제는 프로토타입 개발 중 더 나은 아이디어가 생각났다는 사실에 놀라지 말아야겠습니다. GMTK 에피소드 '스스로를 디자인한 게임들'에서 보았듯이, 프로토타입 도중에 새 아이디어가 나오는 일은 흔합니다. 크립트 오브 더 네크로댄서의 경우 원래 턴 시간이 촉박한 로그라이크가 될 예정이었습니다. 하지만 만들고 나서, 타이머 대신 노래 박자에 맞춘다면 더욱더 재밌겠단 사실을 깨달았죠. 고로 프로토타입은 아이디어의 타당성을 확인하기 위한 방법일 뿐만 아니라, 새롭고 더 향상된 아이디어를 생산하기도 합니다. 이 단계들을 거치며 유니티에서 또 흥미로운 걸 발견했는데, 이름은 Sprite Shape고, Ori 시리즈처럼 매우 멋지고 자연스러운 레벨 디자인에 쓰이는데요, 저는 단색을 사용했는데 이를 통해 레벨 디자인 속도가 엄청 빨라졌습니다. 포토샵에서처럼 핸들을 드래그해서 프로토타입 구간을 쉽게 조립할 수 있죠. 프로토타입을 또 지었고, 이번에는 캐릭터의 조작감이 개선됐으면 했어요, 진짜 게임 캐릭터처럼. 저는 움직임과 점프를 코딩하는데 진을 빼고 싶지 않아서 캐릭터 컨트롤 스크립트를 다운로드했습니다. 정말 잘 되고, 코드 수정에 집중할 수 있고, 다시 만들 수 있고, 뭐든지 되겠죠. 지금은 거기에 시간을 쓰기 싫군요. 또 이 프로토타입에서 저는 메카닉을 더 연구했는데, 자석을 던지거나, 토르의 망치처럼 자석을 회수할 수 있죠. 또 자석 Rigidbody가 캐릭터 Rigidbody에 부딪치기 때문에, 자석을 잡으면 이렇게 넉백이 생기는데 자유분방한 느낌이 정말 멋집니다. 이번에는 자석을 쓸만한 다양한 상황을 생각해봤습니다. 밟고 지나가기 위해 벽에 던지거나,  피스톤에 연결했다 자성을 꺼서 멀리 보내거나, 자극을 바꿔 두 컨베이어벨트 사이를 올라가거나, 이 플랫폼에 무게추로 달고, 위에 올라간 다음, 자극을 바꿔서 당신을 위로 올려보낸다면? 엄청 멋지잖아요? 비디오 게임 같습니다. 정말 재밌네요! 이때 저는 이 게임 아이디어에 분명한 잠재력이 있다고 확신했습니다. 독창적이죠, 자석 기반 게임은 많이 봤지만 이런 건 없었어요. 플랫폼 게임도 퍼즐 게임도 되고요, 이 게임의 아이디어가 너무 쉽게 생각나 색다른 레벨들을 많이 만들 수 있습니다. 가장 좋은 점은 게임이 재밌다는 거예요. 유니티에서 해당 씬에 들어가 플레이하면, 꽤 즐겁습니다. 확실히 좋은 징조군요. 이것이 프로토타입의 힘입니다.  게임 아이디어가 정말로 좋은지 확인할 수 있고요, 운이 정말 좋다면, 프로토타입 시험 중에 새로운 아이디어를 찾을 수도 있죠. 물론 어느 정도의 통제가 필요합니다. "오직 게임플레이만 신경쓰겠다"고 단언할 수 있어야 해요. 게임플레이만. 참 어렵죠. 저는 사실 일주일 내내 파티클 효과, 쉐이더, UI 등에 시간을 낭비했습니다. 정신이 산만해져서, 지금 별 필요없는 것에 몰두하는 옛 버릇이 나와버렸죠. 운좋게도, 저는 이를 제때 깨닫고, 중요한 요소를 다시 다루려고 그 프로토타입을 폐기했습니다. 최종적으로, 정말 잘된것 같아요. 재밌다고 생각되는 작품을 만들었고, 잠재력이 있고, 작업할 때도 즐거웠어요. 어릴 적에 만들려고 했던 게임들은 대충 재밌을 거라며 뜬구름만 잡았습니다. 게임을 만들 때 가장 자신있는 방법은 아니죠. 하지만 이번엔 튼튼한 토대 위에 짓는 기분이 들었고, 이제 다른 측면들, 스토리, 음악, 아트워크 등을 받쳐주는 토대가 견고하다는 안도감 아래 작업할 수 있게 되었습니다. 이것이 바로 게임 개발을 시작하는 방법이겠군요, 프로토타입을 짓는 것. 이제 남은 질문은, 대체 뭘 해야 하죠? 다음 Developing 시간에 찾아보는 게 좋겠네요. 시청해주셔서 감사드리며, 다음 에피소드에서도 뵙길 기다리겠습니다. 안녕히. 이 아이디어는 사실 이 게임 겁니다. 젤다의 전설: 대지의 장. 젠장. 이 게임 겁니다. 이런. 다. 게임 겁니다. 이 게임 겁니다. 겁니다. 겁니다. 겁니다. 젤다의 전설: 대지의 장. 이 게임 겁 이 아이디어는 사실 이 게임 겁니다. 젤다의 전설: 대지의 장. 방금 거 좋다.