6회 - 프로토타입
황제국은 <삼국지:공성전>의 밑그림을 완성했다. 장르와 대략적인 게임 시스템, 제목까지 정한 황제국은 본격적인 개발에 들어갔다. 그가 제일 먼저 착수한 일은 전장을 만들 수 있는 ‘게임 에디터’를 만드는 일이었다.
황제국이 예전 인생에서 게임 개발을 할 때는 보통 그래픽/사운드/물리 엔진 등 게임 개발에 필수적인 도구(툴)가 모두 담겨 있는 ‘게임 엔진’을 사용했다.
게임 개발이 갈수록 복잡해 지면서 게임 엔진은 필수가 됐다. 그래픽만 해도 풀3D 게임을 만들려면 기본적인 형태를 만드는 폴리곤(polygon, 다각형) 모델링부터 표면 질감을 입히는 텍스쳐, 빛과 그림자 효과와 각종 특수 이펙트 등등 처리해야 할 부분이 엄청나게 많다.
이를 개발자가 하나부터 열까지 전부 만들어야 한다면 게임 개발 인력과 시간, 비용이 끝도 없이 늘어난다. 그래서 3D 게임에 공통으로 필요한 요소들을 모아 처리해주는 개발 도구가 등장했다.
물론 같은 게임 엔진을 사용하더라도 세부적인 사항은 게임에 맞춰 수정하기 때문에 모두 똑같다고 할 수는 없다. 그래도 게임 엔진을 공유하는 게임은 마치 척추와 골격, 신경 등을 공유하면서 서로 외모는 전혀 다른 생물체와 비슷하다 할 수 있다.
그러나 98년으로 돌아온 황제국에게는 사용 가능한 게임 엔진이라고는 없었다. 이드 소프트웨어의 존 카맥이 <둠>을 만들면서 개발한 게임 엔진 소스를 공개했지만 그건 3D FPS 게임용이었다.
“유니티(Unity)라도 있으면 다시 익혀서 할 텐데 이걸 바닥부터 완전히 다시 만들어야 하네.”
새로운 게임 개발에 가슴이 부풀었던 황제국은 막상 코딩을 시작하려 하자 막막함이 밀려왔다. 병따개라는 도구만 있으면 뚜껑을 쉽게 딸 수 있는데, 지금은 마땅한 병따개가 아직 없어 병따개부터 직접 만들어야 하는 상황이었다.
황제국은 어떤 방식으로 개발할지 고민하다가 제일 중요한 일부터 하기로 했다. <삼국지:공성전>은 디펜스 게임인 만큼 전투가 핵심이었다. 주어진 맵에서 특정한 패턴으로 끊임없이 밀려오는 적에 맞서 싸워야 한다. 전투는 스테이지 형식으로 구분되어 있다. 각 스테이지를 만드는 것이 이 게임에서는 레벨 디자인에 해당한다. 당연히 뒤로 갈수록 적은 강해지고, 게임도 어려워진다.
그렇다면 각 스테이지를 손쉽게 디자인할 수 있는 개발 도구, 즉 에디터를 잘 만드는 것이 개발을 빠르고, 쉽고, 효율적으로 할 수 있는 열쇠였다.
그는 우선 강력한 에디터를 만드는데 전력을 다했다. 며칠을 거의 밤낮을 가리지 않고 에디터 개발에만 매달렸다.
침대에 누우면 푹 잠들어 버릴까 봐 한밤중에도 책상에 엎드려 쪽잠을 잤다. 그렇게 잠깐 졸고 일어나서 다시 에디터를 만들었다. 생각보다 피곤하지는 않았다. 10대 후반의 체력이란 생각보다 어마어마했다.
그렇게 밤을 새우고 나면 부모님과 함께 아침을 먹으러 주방으로 나갔다. 다행히 황제국 부모님은 아들이 제때 밥만 먹으면 나머지는 터치하지 않았다. 그런데 아침을 먹다 보면 졸음이 밀려왔다. 그는 어느새 꾸벅꾸벅 졸기 일쑤였다.
“어이구, 국그릇에 다이빙하겠네. 정신 좀 차리고 밥 먹어.”
“아니, 여보. 그러지 말고 제국이 국그릇을 대야로 좀 바꿔줘요. 그냥 바로 입수하게.”
아들이 밥 먹다 조는 모습을 보고 어머니가 잔소리를 하면 옆에서 아버지가 거들었다.
“아, 안 졸았어요. 지금 먹고 있는데.”
“안 졸기는. 내가 눈앞에서 보고 있는데. 그래, 밤새 또 무슨 게임을 하시느라 아침부터 졸고 계십니까, 아드님?”
“게임 안 했어요.”
“진짜? 그럼 뭐 했는데?”
황제국은 부모님이 호기심을 보이자 밥을 삼키고 목소리를 다듬었다. 그리고 진지한 말투로 말했다.
“게임을 만들고 있어요.”
“아이고~~ 게임을 하는 것도 모자라서 이제는 게임을 만들고 있으세요?”
“내 잘못이야. 제국이가 이렇게 게임에 빠질 줄 알았으면 어릴 때 컴퓨터 안 사주는 건데.”
“그래서 내가 컴퓨터 말고 다른 거 시키자고 했잖아요.”
“아, 그래도 제국이가 대학을 S대 컴퓨터공학으로 가잖아. 그럼 컴퓨터값은 뽑고도 한참이나 남았지.”
황제국이 게임을 만든다는 말에 부모님은 대놓고 실망했다. 그의 부모님은 예전에도 게임에 빠져 사는 아들을 끝끝내 이해하지 못하셨다. 그가 대학을 졸업하고 게임 회사에 입사하자 완전히 내려놓은 듯했다.
그래서 황제국은 언젠가 꼭 부모님께 그가 만든 번듯한 게임을 보여드리고 싶었다. 게임 개발이 결코 하찮은 일이 아니며, 게임은 컴퓨터로 만들 수 있는 최상의 문화 중 하나라는 걸 보여드리고 싶었다. 그래서 부모님께도 게임의 재미를 알려드리고 싶었다.
“뭔지 모르겠지만 수능 끝났다고 술 마시러 다니는 것보다는 낫겠지. 뭐든 열심히 해.”
“네.”
황제국은 씁쓸하게 대답하며 아침을 먹었다. 마음속으로 이번 생에는 전혀 다른 결과를 만들겠다고 다짐하고 또 다짐했다.
아침을 먹고 나면 방에 다시 들어가서 그제야 잠을 잤다. 오후가 되면 어김없이 오종석이 찾아왔다.
“어이, 황제 폐하. 공성전은 잘 되고 있나? 얼마나 진척됐어?”
“반.”
“뭐? 벌써?”
“시작이 반이니까. 이미 반은 한 거지.”
“아씨, 진짜! 황제국, 졸라 썰렁한 소리 할래? 너 대학 가서 그런 늙은이 같은 농담 하지 마라. 맞아 죽는다.”
“걱정 마라. 너한테나 하는 거니까. 얼마나 했는지 보여줄까?”
“그래!”
오종석이 오면 황제국은 짜고 있는 코드를 보여주었다. 베이직도 조금 공부하다가 만 오종석은 당연히 단 한 줄도 이해할 수 없었다.
“흠······.”
그래도 그는 아주 진지한 얼굴로 미간을 찡그리고, 턱을 매만지고, 가끔 고개를 끄덕이며 코드를 훑어봤다. 표정만큼은 탑레벨 개발자가 코드 리뷰를 하는 것 같았다.
“좋아, 흥미롭네. 이대로 진행해.”
“야, 대체 뭘 안다고 이대로 진행하라는 거야?”
“모르긴 뭘 몰라? 너 어제는 대충 300줄 정도 짰는데 오늘은 보니까 1,800줄이네. 이제 속도가 붙었다는 거 아니겠어?”
“호오?!”
황제국은 조금 감탄했다. 물론 코딩이 단순히 라인이 많다고 좋은 게 아니다. 만약 좋은 프로그래머의 기준을 코딩을 몇 줄 했느냐로 따지면 프로그래머들은 라인을 늘리는 온갖 꼼수를 부릴 것이다.
오히려 더 짧고, 간결하고, 구조를 명확하게 설계해 똑같은 프로그램을 버그 없이 구현하는 것이 훨씬 좋은 코딩이다. 프로그래머들은 이미 완성한 코드도 더 섹시하게 다듬기 위해 며칠을 매달리기도 한다.
그래도 오종석이 맞춘 것도 있었다. 확실히 황제국은 하루, 이틀이 지나자 코딩에 탄력이 붙었다. 점차 98년의 개발 환경에도 익숙해지고, 무엇보다 에디터를 어떻게 만들 것인가를 고민하면서 전투를 어떻게 구현할지가 머릿속에서 더 또렷해졌다.
그는 있었으면 하는 기능을 에디터에 빠짐없이 추가했다. 상상 속 게임을 실제로 만들었을 때 재미가 있을 수도 있지만, 생각보다 별로일 수도 있다. 사실 별로인 경우가 훨씬 더 많다.
일단 에디터에는 풀 세팅을 해놓고, 시범 스테이지를 몇 개 만들어 테스트 할 계획이었다. 재미없는 부분이나 기능이 있으면 에디터를 조정해 수정하고 영 아니다 싶으면 그때 제거하면 된다.
게임의 재미와 난이도가 전투에서 판가름 나는 만큼, 스테이지를 구성하는 레벨 디자인은 어차피 반복 수정이 필수다. 에디터는 이 과정을 훨씬 빠르게 해 줄 것이다. 유닛의 공격 효과를 바꾸려고 매번 코드에서 찾아 수정하기보다, 에디터에서 숫자만 바꿔주는 것이 훨씬 간결하고 효율적이다.
황제국은 에디터를 완성하는 것이 게임을 절반 이상 완성하는 것과 같다고 생각했다. 그러니 머릿속에 에디터가 얼추 정리된 지금, 절반 정도 진척되었다는 말이 농담만은 아니었다.
“좋아, 순조롭네. 그럼 열심히 해!”
매니저 흉내에 만족한 오종석은 <삼국지>를 꺼내 황제국 침대에 털썩 누웠다. 그러면 황제국은 워크맨에 너바나(Nirvana)의 <네버마인드(Nevermind)> 카세트테이프를 밀어 넣고, 헤드폰을 썼다.
그는 볼륨을 크게 키우고 플레이 버튼을 눌렀다. 테이프 특유의 쉭~~하는 노이즈에 이어 수만 번은 들었던 익숙한 기타 리프가 뒤따랐다.
반항적인 에너지가 뿜어져 나오는 음악과 함께 황제국도 뇌에 시동을 걸었다. 그의 눈동자가 빠르게 모니터를 훑어 내리고, 키보드 위에서 손가락이 춤을 추기 시작했다.
황제국이 코딩에 빠져들면 오종석은 책을 내려놓고 종종 그 모습을 바라보곤 했다. 뭐가 뭔지 모르지만, 그의 눈에는 정말 멋지게 보였다.
에디터 개발은 빠른 속도로 이어졌다. 황제국은 시작한 지 일주일도 되지 않아 공성전 에디터 v1.0을 개발 했다.
이제 뼈대는 완성되었으니 본격적인 살을 붙일 차례였다. 황제국은 에디터를 이용해 몇 개의 스테이지를 적당히 플레이만 할 수 있는 프로토타입(prototype)으로 만들었다. 맵에는 길만 있고 숲이나 바위와 같은 배경 디테일은 전혀 없었다.
유닛들은 모두 허수아비처럼 생겼고, 칼, 창, 활, 말, 쇠뇌 등 병과는 컬러로 구분했다. 우선 필수적인 부분만 구현하고, 생각대로 플레이되는지, 진짜 재미가 있는지 확인할 필요가 있었다.
황제국은 에디터를 완성하고서도 오종석에게 보여주지 않았다. 오종석이 오면 레벨 디자인을 구상하다가, 오종석이 집에 가면 그때서야 에디터로 실제 전투맵을 짰다. 오종석이 게임을 최대한 모르는 상태에서 해보는 게 좋기 때문이었다. 황제국은 오종석의 깜짝 놀랄 얼굴을 기대하며 밤새 게임 초반부를 만들었다.
개발을 시작하고 열흘 후, 황제국은 드디어 오종석에게 <삼국지:공성전> 프로토타입을 공개했다.
“자! 드디어 프로토타입 완성이다!”
“오오오오오!!!!! 그럼 이제 진짜 해볼 수 있는 거야?”
“그래. 근데 아직 프로토타입이라 그래픽은 엉성해. 그래도 게임하는 데는 문제 없어.”
“오키키! 오키키!”
오종석이 호들갑을 떨며 의자에 앉자 황제국이 프로토타입을 실행시켰다. 첫 화면에 게임 타이틀이 텍스트로 떴다.
[ 삼국지: 공성전 - created by 황제국 ]
“오오오오오오오! 크리에이티드 바이 황제국! 우리 황제 폐하 좀 쩌는데!”
“야, 아직 타이틀 이미지도 제작 안 했는데 뭘.”
오종석이 한껏 오버하자 황제국은 뿌듯하면서도 민망해하며 말했다. 열흘 동안 미친 듯이 만들기만 했는데 막상 친구에게 게임을 보여주려니 그도 두근거리긴 마찬가지였다.
타이틀 화면이 지나가고 군주 선택 화면이 나타났다.
[ 군주를 고르시오 ]
[ 유비 ] [ 조조 ] [ 손권 ]
“혈통보단 능력이지. 난 조조!”
오종석이 조조를 클릭했지만 반응이 없었다. 오종석이 이상하다는 듯 ‘조조’에 대고 몇 번이나 클릭했다.
“야, 아직 프로토타입이라 유비밖에 안 돼. 유비로 해.”
“아, 난 조조가 딱인데. 일단 알았어.”
오종석이 유비를 선택하자 텍스트로 배경 설명이 이어졌다.
[ 219년, 한중을 침공한 유비는 양평관과 정군산에서 연달아 승리를 거둔다. 양평관에서 하후연이 전사했다는 소식을 들은 조조는 직접 군대를 이끌고 한중으로 출정한다. ]
“오, 한중 전투! 진짜 한중에서 벌어진 싸움을 그대로 따온 거야?”
“설마. 맵은 그냥 게임에 맞게 내가 임의로 짠 거야. 그래도 맥락은 진짜 역사처럼 느껴지게 해야지. 그래야 몰입감이 생기지.”
“그렇지. 오, 시작한다! 시작해!”
배경 설명을 마치자 <삼국지:공성전>의 첫 번째 스테이지가 열리며 전투맵이 열렸다. 화면을 바라보는 오종석의 눈이 반짝거렸다.