이제 드럼통이 구를 때 소리가 완벽히 납니다
지난 두 번째 뉴스레터의 커버스토리로 마일스톤 마감의 분위기 이야기를 했습니다. 이전에 경험했던 다른 프로젝트에서는 마일스톤 기간 내내 단 한 번도 빌드를 직접 실행해 본 적 없던 고위 의사결정자들이 마일스톤 끄트머리에 서로 다른 부서의 작업물이 통합되어 가는 거의 마지막 단계에서야 갑자기 나타나 몇 주 만에 빌드를 처음 만져보고는 갑자기 무슨 큰 일이라도 난 것 처럼 지난 몇 주 동안 자신의 생각과 현재 빌드를 짧은 기간 안에 일치 시키려는 행동을 거듭한 덕분에 마일스톤 마감은 항상 좋은 경험이 아니었습니다. 하지만 지난번에는 그럭저럭 그런 시도를 조금씩 통제해 가며 마무리할 수 있어 그 이전만큼 나쁘지는 않았습니다.
지난 마일스톤에 개발한 빌드는 그 후 몇 주에 걸쳐 경영진의 세일즈에 활용되었고 우리들은 우리들에게 관심을 보이는 시간대가 다른 여러 잠재 고객들에게 빌드를 시연하느라 강남 사무실에서 일하면서도 시차적응을 해야 하는 상황에 놓이기도 했습니다. 지난 마감 이후 한참 지나는 동안 우리들의 빌드는 제한적이나마 전 지구의 의미 있는 사람들에게 원격으로 시연 되었고 그들 중 대부분은 직접 빌드를 실행해 우리들과 함께 우리들이 할 수 있는 일, 우리들이 앞으로 할 일에 대한 충분한 설명을 듣고 우리들의 가능성을 믿어 볼 것인지를 결정하는데 영향을 끼쳤습니다. 아직 이 과정이 완전히 마무리 되지는 않았지만 지난 마일스톤에 만들어낸 기초적인 빌드는 앞으로 몇 년에 걸쳐 실제로 동작하며 지금까지 우리와 비슷한 결과를 만들 수 있다고 입으로만 말하던 사람들과 크게 다른 결과로써 존재하게 될 겁니다. 왜냐 하면 … 우리는 정말로 이런 걸 만들던 사람들이니까요.
한편 지난 빌드의 개발 완료와 전 지구 상의 시간대가 서로 다른 여러 사람들에게 시연하는 업무와는 별개로 그 다음 마일스톤 목표에 맞춰 개발하며 이번에는 지난번과 비슷한 수준의 기능들을 이번에는 우리들을 믿고 NFT를 구입해 주신 고객분들께 공개하는 것을 목표로 개발해 왔고 이제 그 끝에 거의 다다랐습니다. 이번 빌드는 고객분들께 처음으로 우리가 뭘 만들고 있는지, 우리가 시장의 다른 플레이어들에 무슨 일을 해낼 수 있는지 직접 보여 드리는 것과 동시에 NFT라는 개념이 처음 나타났을 때부터 의문 시 되어 온 이 디지털 데이터의 쓸모를 제시하고 앞으로 그 쓸모가 계속해서 발전해 나갈 예정이라는 사실을 설득하기 위함이기도 합니다.
지난 마일스톤과 기능 상으로는 큰 차이가 없어 보일 수 있지만 지난번에는 제한된 시연 시나리오 안에서 제한된 인원들을 대상으로 하고 우리들이 직접 시연 경험을 만들어내기 위해 약속한 시나리오에 따라 플레이 했기 때문에 그 정도 요구사항을 만족하는 빌드였습니다. 하지만 이번에는 여전히 제한된 인원이기는 하지만 불특정 다수에게 빌드를 공개해야 하기 때문에 같은 기능이라도 지난 빌드의 요구사항과는 상당히 다릅니다. 가령 지난번에는 게임 곳곳이 조금씩 삐걱거리고 있었지만 그런 부분을 잘 감춘 플레이 시나리오를 통해 매끄럽게 시연할 수 있었지만 이번에는 그런 가이드를 제공할 수 없는 실제 고객들이 플레이 해야 하기 때문에 그런 삐걱거리는 부분을 정말로 매끄럽게 만드는데 집중해야만 했습니다.
그런데 이런 개발을 하다 보면 개인 단위로 자칫 앞으로 나아갈 동력을 잠깐씩 잃어버릴 때가 있습니다. 어디선가 주워 들은 말인데 게임 개발은 0%에서 95%까지는 무척 빨리 만들 수 있지만 95%부터 99%까지 완성도를 올리는데는 그 이전 개발에 비해 몇 배의 노력이 필요하며 마지막 1%를 끌어올리는데는 다시 그 이전 개발에 비해 몇 배의 노력이 필요하다고 합니다. 약간 과정된 표현일 수 있을 것 같은데 개인적으로는 저 95% 이후 개발의 일부를 어두운 터널을 통과하는 일과 비슷하다고 비유하곤 하는데 저 망할 놈의 구간은 게임을 아무리 고치고 고치고 또 고쳐도 고칠 곳은 여전히 남아 있고 아무리 비슷한 짓을 반복해도 도무지 이 카오스를 수습해서 고객을 맞을 상태로 만들 수 없을 것 같은 기분이 들기 때문입니다. 실제로 상당수 개발이 취소되는 게임들이 이 마지막 95% 이상 정도 되는 구간에서 한없이 비슷한 개발을 반복하다가 도저히 더 이상 앞으로 나갈 수 없는 온갖 상황에 부딪친 상태로 취소되곤 합니다.
팀이나 프로젝트 단위로 이런 구간에 대응하는 매니징 방법들이 있는데 이는 일종의 프로파간다를 조성하는 방법인데 이 글에서 이야기할 만한 주제는 아닌 것 같습니다. 미래의 뉴스레터를 통해 이야기할 기회가 있을 겁니다. 한편 개인 입장에서 이런 구간에 대응하는 모티베이션 기법에는 개인적으로 맛있는 간식을 미리미리 챙겨 둔다고 표현하는 방법이 있습니다.
개인적으로는 별로 간식을 먹지 않습니다. 맛있는 음식을 마다하지 않지만 종종 일에 집중하다 보면 점심도 거르고 저녁도 거르고 계속 만들다가 문득 화장실에 갈까 하고 자리에서 일어나다가 그날 하루 종일 물도 음식도 안 먹고 집중했다는 사실을 깨닫고 휘청 거릴 때가 있는데 이런 행동의 연장으로 간식을 챙겨 먹는 스타일이 아닙니다. 이 간식 비유는 되게 하기 싫은 온갖 일 사이에 웃기고 쓸모 없고 재미있는 일을 아껴 놨다가 가끔 너무나도 일 하기 싫은 순간에 그 일을 꺼내 표면적으로는 자리에 앉아 열심히 일하고 있지만 실은 웃기고 쓸모 없고 재미있는 일을 하는 것을 말합니다.
이번에도 마일스톤 후반으로 가며 빌드 테스트를 반복한 다음 이번 마일스톤의 목표 수준에서는 아무도 신경 쓰지 않을 것 같고 또 실제로도 아무도 신경 쓰지 않았던 몇 가지 거슬리는 점들을 지라에 그럴듯하게 버그로 등록해 저 자신에게 할당한 다음 수정하지 않고 들고 있었습니다. 그리고 다른 별로 하고 싶지 않거나 고치기 어렵거나 어려운 게임디자인 결정을 해야 하거나 우리가 먼저 시작해야만 우리 다음 사람들이 이어서 일할 수 있는 일들을 별로 하고 싶지 않지만 그렇다고 정말로 안 하면 회사에서 잘리고 급여를 못 받고 그럼 굶어 죽을 수도 있으니 어쩔 수 없이 할 수밖에 없는 일들을 하나 하나 처리해 나가다가 어느 순간 정말로 아무 것도 하고 싶지 않은 기분이 들고 또 이 상태가 도대체 언제 끝날 지 정말 모르겠다는 느낌이 들 때 잠깐 이런 일들의 태스크 상태를 대기로 바꿔 놓고 그 동안 손대지 않던 간식 태스크를 끄집어 냅니다.
마일스톤을 진행하며 만약을 대비해 이런 일을 여러 개 가지고 있는데 이번에 끄집어낸 주제는 총을 들고 몬스터와 싸우는 스테이지의 시작 지역 옆의 눈에 잘 띄지 않게 배치되어 있는 드럼통과 상호작용해도 아무 소리도 나지 않는 문제입니다. 사실 이 드럼통은 아트팀에서 이 레벨을 처음 만들 때 별 의도 없이 배치했을 것 같습니다. 사람들은 스테이지가 시작되면 주변을 둘러볼 것도 없이 앞으로 달려나가 몬스터에게 달려드는데 급급했지만 실은 함께 플레이 하던 다른 사람들이 앞으로 달려 나가는 사이에 잠깐 주변을 둘러보면 플레이에 아무런 영향도 주지 않는 드럼통이 시작 지역 바로 옆에 뻘하게 배치 되어 있을 뿐입니다. 다른 사람들이 몬스터들에게 둘러싸여 생사를 오가는 전투를 하고 있을 무렵 저는 그 드럼통에 다가가 몸으로 부딪쳐 보기도 하고 또 총을 쏴 보기도 합니다. 아직 드럼통에 무슨 상호작용 기능을 붙이지는 않아서 드럼통은 사실 아무런 기능이 없습니다.
드럼통은 그냥 스태틱 메시일 뿐인데 언리얼 엔진 상에서 스태틱 메시를 배치할 때 체크박스 몇 개를 잘 설정하면 아무 설정 없이 플레이어가 몸을 드럼통에 부딪치면 설정된 질량에 따라 드럼통이 주변으로 굴러다니게 만들 수 있습니다. 초기 3D 게임에서도 이런 드럼통과 상호작용하거나 물리엔진이 꼬여 드럼통이 온 사방을 휘젓고 다니는 모습을 종종 보곤 했는데 그 정도는 아니지만 이 드럼통들은 생김새에 비해 훨씬 다양하게 반응하며 사방으로 굴러갑니다. 하지만 드럼통은 그렇게 사방에 부딪치며 바닥을 구르는 동안에도 아무런 소리를 내지 않았는데 당연합니다. 우리가 아무 소리도 넣지 않았으니까요.
그래서 밥 먹고 졸려서 일 하기 싫은 어느 날 오후에 그 드럼통 스태틱 메시를 가져와 액터 블루프린트 모양으로 만들어 물리 이벤트를 받을 수 있게 만든 다음 스태틱 메시가 뭔가와 부딪칠 때 소리를 내도록 만들었습니다. 그리고 아무도 눈치 채지 못하게 이전에 배치되어 있던 드럼통을 새로 만든 이벤트 제어가 들어간 드럼통으로 바꿔치기 해 놨습니다. 그런데 다른 충돌체를 사용하는 대신 그냥 스태틱 메시 자체의 충돌 이벤트를 받아 소리를 내게 만들어 놨기 때문에 충돌은 만족스럽게 일어나지 않았는데 이 시점에서 이미 잠은 다 깬 것 같아서 이대로 저장한 다음 지라에 드럼통을 건드릴 때 소리가 나다 말다 하는 결함이 있다고 보고한 다음 그 태스크를 맛있는 간식처럼 잘 보관해 뒀습니다.
지난 주부터 마일스톤 마감이 가까워지며 온갖 결함들이 나타나고 이걸 제한된 시간과 제한된 비용 안에서 해결할 방법을 찾아 실행하고 또 온갖 빠른 의사결정을 반복하며 상당히 피곤한 상태여서 오늘은 드디어 슬그머니 이 태스크를 꺼내 진행중으로 상태를 바꾼 다음 아무도 신경 쓰지 않는, 그래서 소리가 나는지 안 나는지, 심지어는 부딪치면 움직이는지 아닌지에도 관심 없는 드럼통이 굴러갈 때 본격적으로 제대로 된 소리가 나도록 하기로 마음 먹었습니다. 여느 물리 기능이 강조된 3D 게임에서도 이런 드럼통에는 한 가지 또는 두 가지 소리만 할당되곤 합니다. 대략 뭔가에 부딪치는 소리와 글러가는 소리입니다. 당장 사용할 수 있는 사운드는 부딪치는 소리 뿐이어서 굴러가는 소리는 굴러가는 상태를 감지할 수 있도록 만들어 놓고 적당한 사운드를 넣을 수 있게 되면 바로 실행할 수 있게 준비하고 일단 부딪치는 소리를 제대로 내는데 집중했습니다.
기존에는 스태틱 메시 자체를 충돌 판정에 사용했기 때문에 충돌 이벤트가 만족스럽게 일어나지 않았습니다. 피직스 에셋을 붙여 훌륭한 충돌 상태를 만들 수도 있겠지만 몰래 먹는 맛있는 간식에 그런 노력을 하고 싶은 건 또 아니었습니다. 그래서 드럼통 겉에 대충 단순한 실린더 모양의 충돌체를 씌운 다음 이 충돌체가 충돌을 감지할 때 감지한 충돌 정도에 따라 다른 사운드 큐를 재생하도록 만들었습니다. 충돌 사운드 샘플이 여러 개 있으면 좀 더 그럴듯하게 만들 수 있을 것 같은데 당장은 사용할 수 있는 사운드가 하나 뿐이어서 사운드 큐 수준에서 좀 조작해서 다르게 들리는 사운드를 실시간으로 만들어 재생하게 했는데 훌륭한 것 같진 않지만 그럭저럭 드럼통이 여기 저기 부딪칠 때 이전 처럼 공기가 없는 우주에서처럼 아무 소리를 내지 않는 상태는 아니게 되었습니다.
그렇게 시간을 조금 들여 드럼통에서 그럴듯한 소리가 나게 만든 다음 드럼통이 굴러가는 소리는 언젠가 다음에 넣기로 기약하고 수정사항을 커밋 한 다음 풀 리퀘스트를 하고 지라 태스크에 돌아와 상태를 진행중에서 완료로 변경합니다. 시간을 조금 썼지만 여전히 게임에는 사실상 아무런 변화도 없습니다. 여전히 출발 지역 근처에 아무도 신경 쓰지 않는 드럼통이 놓여 있을 뿐이고 사람들은 게임을 시작하자 마자 앞으로 달려 나가 저 멀리 보이는 몬스터에 관심을 보일 겁니다. 굳이 그렇게 다른 사람들을 보내 놓고 그 옆에 있는 드럼통에 관심을 가질 사람은 없거나 거의 없을 거라 그 드럼통이 이전에는 다른 물체와 부딪칠 때 아무 소리를 내지 않았지만 이제부터는 꽤 그럴듯한 소리가 나도 아무도 알지 못할 테니 게임에는 아무 변화가 없습니다.
하지만 그렇게 드럼통에 공들여 소리를 넣어 놓은 저는 다시 95%부터 99%까지 빌드 수준을 끌어올리는 아무리 반복해도 끝을 알 수 없는 결함 목록과 결함을 아무리 수정해도 별로 달라지지 않는 것처럼 느껴지는 빌드 상태를 견딜 신체적, 그리고 정신적인 상태를 회복합니다. 그렇게 풀 리퀘스트를 보내 놓고 잠깐 자리에서 일어나 화장실에도 다녀 오고 물도 마시고 몸을 쭉 펴기도 한 다음 다시 자리에 앉아 이번에는 숨겨둔 간식 대신 정말로 해야 하는 다른 지라 태스크를 끄집어내 상태를 진행중으로 바꾸고 이 태스크를 해결할 브랜치를 만들어 다음 할 일을 시작합니다.
이번 주를 포함해 지난 몇 주 동안 상당히 높은 업무 집중도를 유지하고 있어 이제 슬슬 집중도를 낮춰야 할 것 같은 불안한 느낌이 들기는 하지만 앞으로 한 주만 더 이 상태로 일하면 어떻게든 고객분들께 우리의 상태, 우리들이 할 수 있는 일, 우리들이 앞으로 할 일을 이런 글 말고 실제 빌드를 통해 설명할 수 있을 겁니다. 그리고 이건 비밀인데 그 빌드에 나오는 드럼통은 구를 때 완벽한 소리를 냅니다.