408. 고생 끝에 보이는 것
200명의 캐릭터를 만들어오겠다고 호언장담했던 혁찬은, 잔뜩 시무룩해진 얼굴로 4달이 지난 후에야 상혁을 다시 찾아왔다.
그리고는 한참을 쭈뼛거리며 말을 꺼내지 못하다가, 조용히 자신의 말을 기다리는 상혁을 향해 입을 열었다.
“형···.”
“어. 혁찬아.”
“캐릭터 수 말인데요···.”
“줄이면 안 되냐고?”
“알고 계셨어요?”
“예상은 했지.”
“생각보다 작업량이 너무 무지막지 하더라고요.”
상혁은 고개를 끄덕였다.
“단순히 산술적으로 계산만 해도, 캐릭터가 200명이면 서로 1번씩만 상호작용하는데도 2만개가 넘는 이벤트를 작업해야 하니까.
그것도 1:1 상호작용 이벤트를 캐릭터 매칭당 1회만 진행했을 때 최소 이벤트 숫자가 그렇다는 이야기고 볼륨 좀 늘리고 여러 명이 얽힌 조합까지 고려하면 캐릭터 간 상호작용만 해도 몇만 개는 훌쩍 넘어가겠지.
거기에 연애 파트에 이벤트 10개씩만 잡아도 주인공하고 진행되는 이벤트가 2만 개는 더 추가될 거고.
거기에 우리가 원래 구현하려고 했던 것처럼 캐릭터 간 호감도에 따라 질투 이벤트라던가 전우애 이벤트 같은 게 추가되면 캐릭터 하나당 이벤트가 수백 개는 되어야 할 텐데, 그걸 캐릭터 200명에 캐릭터 간 라이벌 관계라던가 히스토리까지 적용해서 작업하려면 이 게임의 이벤트 수는 최소가 50만 개 이상은 될 테니까.”
50만 개.
유저 번역을 시도했을 때부터 그 많은 대사 분량으로 유명했던 ‘올드 스크롤 V – 하늘림’의 대사량이 약 6만 라인 정도였으니, 그 8배가 넘는 수량을 대사가 아닌 ‘이벤트’로 처리해야 하는 것은 절대 간단한 일이 아니라 할 수 있었다.
정말로 그 모든 이벤트를 작업하는 데 성공한다면, 그 순간 전 세계에서 가장 대사가 많은 게임으로 기네스북에 오르는 것이 당연할 정도로.
그러나 각 캐릭터 간의 상호작용이 다양해질수록 대사 작업의 난이도도 함께 올라가게 되기 때문에, 그 작업은 세계에서 가장 큰 규모의 스토리 전문 작업팀을 가진 PTW에게도 결코 쉬운 작업이 아니었다.
혁찬은 오늘 그 문제를 상담하기 위해 상혁을 찾아온 것이었고.
“어떻게 50명 정도로 줄일 수 있으면 볼륨을 희생하지 않고도 수량을 맞출 수 있을 것 같은데요.”
“지금 작업에 참여하고 있는 스토리 팀 인원이 몇 명이지?”
“타 게임 작업에 투입되고 있는 인원도 있어서 지금은 33명이요.”
“확실히, 33명밖에 안되는 인원으로 대사 50만 개도 아니고 이벤트 50만 개를 작업한다는 건 확실히 무리가 있네.”
“그쵸? 말을 꺼낸 제가 이야기하기엔 확실히 부끄러운 이야기이긴 하지만, 캐릭터 숫자를 좀 줄여주시면······.”
“허나 거절한다!”
“엑?! 왜요?!”
“너도 알다시피 우리가 개발 중인 게임은 히로인 수집형 미소녀 연애 시뮬레이션 게임이야.
그리고 지금까지 작업한 분량에 따르면 이 게임의 월드에는 동양 문화권에 속하는 나라가 2개, 서양 중세 문화권에 속하는 나라가 3개, 이집트 분위기의 거대 국가가 1개 있고 고대 로마를 컨셉으로 한 국가 1개와 그리스 컨셉의 국가 2개, 바이킹 문화를 기반으로 한 국가가 2개 들어가 있어.
그러니까 현재 게임 안에 존재하는 국가 단위의 펙션만 11개 있는 거지.
그 국가 안에 영지가 한 200개 가까이 존재하는 구조고.
현재 목표는, 월드 안에 있는 영지를 지키는 나이트의 파일럿은 전부 연애 가능이란 설정으로 가려고 하고 있어.
거기서 캐릭터 수를 줄여버리면, 필연적으로 영지의 숫자도 줄여야 하는데, 그럼 문제가 좀 심각해지지.”
“하지만 형은 이미 스토리 팀 작업에 문제가 생길 걸 예상하셨다고 하셨잖아요?
지금의 팀 규모로, 그 모든 작업을 처리하는 게 무리라는 걸 이미 알고 계셨다고요.
그럼 그 문제는 어떻게 처리하실 생각이었어요?”
“사람을 더 뽑아서.”
상혁이 말했다.
“이미 혁찬이 네가 스토리 팀을 대표해 200개의 캐릭터를 작업하겠다고 한 바로 그날부터, 현주 선생님과 나는 스토리 팀의 인력 보강을 위한 구인 작업에 들어갔어.
현재의 50명에 더해서, 추가로 80명 정도의 인력을 더 추가하려고.”
“80명이요? 그럼 회사 안에 스토리 작업하는 사람만 130명이 넘어가는데요?”
“그래서?”
“아니, 이상하잖아요. 130명이면 웬만한 중대형 스튜디오 규모인데, 그 많은 인력을 스토리 작업만 하려고 뽑을 생각이세요?
이번 작품은 이벤트 비중이 비정상적일 정도로 높으니 그렇다 쳐도, 이번 작품 개발이 끝나면 작업이 없어서 전부 놀게 될 거라고요.”
“그거야 우리 회사가 과거의 PTW였다면 그럴 수도 있겠지.
하지만 지금 우리는 누구나 쉽게 배울 수 있는 엔진을 바탕으로 게임을 제작하는 회사잖아?
이번에 입사한 인원들도 현재 리얼 엔진으로 이벤트와 캐릭터 작업을 하는데 필요한 기초 교육을 받는 중이고, 곧 수련 과정이 끝나서 스토리 팀에 합류하게 될 거야.
툴 자체를 사용하는데 필요한 기술적 장벽의 문제를 해소할 수 있다면, 회사가 개발자에게 요구할 능력은 단 한 가지뿐이지.
본인의 아이디어와 창의력을, 얼마나 디테일하게 상상하고 구현할 수 있는지.
이번에 뽑은 인력은 전부 그런 잠재적인 포텐셜을 기준으로 뽑은 사람들이야.
현직 라노베 작가 출신도 있고 에로 게임 시나리오 라이터 출신도 있고, 드라마 작가 출신도 있고 독립 영화감독 출신도 있지.
그들은 이번 프로젝트가 끝나도 게임 개발을 계속할 사람들이야.
그들에게 있어서, 리얼 엔진은 게임을 만들기 위한 툴이 아닌, 자신의 상상력을 표현하는 또 다른 도구일 뿐이니까.
게다가 반복되는 작업으로 정체된 현재의 스토리 팀 분위기를 단숨에 일신할 수 있는 좋은 기획이기도 하고.”
상혁은 서랍을 열어 새로 뽑은 80명의 이력서를 혁찬에게 넘겨주었다.
그리고는 웃으며 혁찬에게 말했다.
“80명으로 부족하면 말해. 100명이든 200명이든 원하는 결과물이 나올 때까지 인력을 충원해 줄 테니까.”
그러자 이력서를 훑어보던 혁찬이 한숨을 쉬며 말했다.
“아시다시피 기존의 작업 스타일에 새 팀원들이 익숙해지는 데도 시간이 걸리고, 인원이 많아지면 관리에도 문제가 생길 가능성이 커지죠.
그냥 캐릭터 숫자를 줄이는 게 낫지 않을까요?
남들은 다 그렇게 하는데요?
200명이 50명이 된다고 해서 게임 볼륨이 작다고 불만을 가질 게이머는 한 명도 없을 거라고요.
어차피 콘솔 패키지 게임을 기준으로 하면 50명도 무지막지하게 많은 숫자니까.”
혁찬의 말을 들은 상혁이 커피잔을 들고 자리에서 일어났다.
그리고는 창가 너머로 보이는 천하대 호수를 바라보며 말했다.
“예전에 일본의 초밥집을 다루는 다큐멘터리를 본 적이 있었어.
거기 나온 장인은 그날 생선의 품질이 마음에 들지 않으면 아예 가게 문을 닫아버리는 사람이었는데, 1년에 몇십만 원이나 하는 연회비를 내지 않으면 가게에서 식사조차 할 수 없는 그런 가게였지.
그 다큐멘터리에서, 그 장인은 이렇게 말했어.
아마 10점짜리 재료가 아니라 7점, 8점짜리 재료를 초밥으로 내놓아도, 손님 대부분은 전혀 눈치채지 못할 것이다.
하지만 누군가는 그 미묘한 차이를 알아차릴 것이고, 나는 내가 언제나 10점짜리 재료만을 내놓을 것이라고 굳게 믿고 있을 그 손님을 배신할 수 없기에 가게 문을 닫는 거다.”
“자신에게 기대하는 손님의 마음을 배신하지 않겠다는 각오 같은 거군요.
그런 마음이라면, 언제나 손님이 줄을 서는 가게가 될 테니, 장사도 잘 될 테고요.”
“아니, 경영난으로 고민하고 있던데?
자존심 때문에 간판도 없이 장사하는 장인인 데다, 애당초 회원이 아니면 출입조차 안 되는 가게라서 돈이 많이 안 되더라고.”
“잉? 망했어요? 분명 대화의 흐름은 결국 그런 고집 때문에 크게 성공해서 최고의 장인이 되었다는 분위기 아니었나?”
“안타깝게도 세상은 그리 만만하지 않지.
하지만 난 경영난 속에서도 장인으로서의 자신을 지켰던 그 초밥 장인의 말에서 배울 점이 있다고 생각해.
혁찬이 네 말대로, 우리가 200명의 캐릭터를 50명으로 줄인다고 해서 우리에게 캐릭터 볼륨이 적다고 투덜댈 게이머는 없을 거야.
하지만 이 게임이 목표하던 포텐셜이 어디까지인지 잘 알고 있는 우리 개발자들은, 우리가 현실과 타협하여 볼륨을 줄였다는 사실을 너무나 잘 알고 있겠지.
인원이 모자라서, 작업량이 많아서, 기술력이 달려서, 시간이 모자라서.
타협의 이유는 개인마다 수없이 많이 존재할 수 있어.
그리고 그 모든 이유가 정당한 이유가 될 수 있고.
하지만 이유가 타당하다고 해서 타협한 사실이 사라지는 건 아니지.
개발자 스스로가, 완성된 게임을 보면서 ‘와, 이건 진짜 더 건드릴 여지가 없을 정도로 완벽하게 만들었다.’라고 자신 있게 말할 수 있는 게임.
200명의 캐릭터 중에 아무 캐릭터나 랜덤으로 뽑아도 그 캐릭터가 메인 히로인처럼 보일 정도로 캐릭터 모두가 각각의 스토리와 고민, 히스토리를 가진 게임.
난 이번 게임이 그런 게임이 되었으면 좋겠다고 생각해.
그리고 그 목표를 위해서는, 이번에 새로 뽑은 80명의 신규 인력뿐만 아니라, 혁찬이 너와 함께 하는 기존 스토리팀 인력의 도움이 꼭 필요하고.
그러니까 넌 다른 건 생각하지 말고, 오직 이것만 생각하라고.
‘어떻게 해야 이 게임을 더 말도 안 되는 퀄리티로 만들 수 있을 것인가.’
거기 필요한 지원은, 회사에서 전부 해 줄 거야.
그 목표를 달성하는데 돈이 얼마가 들든 간에.”
“그러다 회사 기둥뿌리 흔들리는 거 아니에요?
이건 랜덤 박스도 없는 패키지 게임이라 일정 이상 개발비가 올라가면 회수가 어려울 텐데···.”
“뭐 겨우 80명 더 고용했다고 경영 상태가 위기에 처할 만큼 허접한 회사는 아니니까, 넌 걱정 안 해도 돼.
그리고 어차피 YAS가 정식 서비스를 하게 되면 회사에도 든든한 캐시 플로우가 또 하나 추가될 거고, 테슬러 측에 넘기기로 한 레벨 5 자율 주행기술의 라이선스 비용도 조만간 받을 수 있을 테니까.”
“엥? 그건 스타링크 지분의 절반을 받기로 하고 그 대가로 넘기는 게 아니었어요?”
“그건 기술 자체에 대한 독점권을 넘긴 거지, 그렇다고 기술료를 안 받겠다는 의미가 아니야.
게다가 현재 우리가 완성한 레벨 5 주행기술은 STC로 설계한 전용 칩셋의 존재가 필수니까.
설계는 우리가 하고, 생산은 삼정 파운드리에서, 그리고 사용은 테슬러에서 하는 거지.
그 과정에서도 우리 쪽에 이윤이 꽤 남을 거야.
그러니까 돈 걱정은 하지 말고 필요한 지원이 있다면 팍팍 이야기해.
80명이 아니라 500명이라도, 게임을 완벽하게 만드는 데 필요한 인력이라면 얼마든지 지원해 줄 테니까.”
“어째 개발자가 들으면 기뻐할 만한 대사 1위가 될 것 같은 말이긴 한데, 그 정도로 밀어주신다니까 역으로 부담되네요.
그렇게 무제한급 지원을 받았는데 결과가 별로라면 말도 안 되는 상황이 벌어질 것 같아서.”
“그건 괜찮아. 내가 아는 개발자 이혁찬은 그 말도 안 되는 상황이 벌어지지 않게 알아서 잘 할 녀석이니까.”
그렇게 말하며, 상혁이 혁찬을 향해 주먹을 내밀었다.
그러자 혁찬은 잠시 그 주먹을 바라보더니, 피식하고 웃음을 터트리며 자신도 주먹을 내밀어 상혁의 주먹에 가볍게 맞대었다.
그리고는 한결 가벼워진 기분으로 자리에서 일어나며 말했다.
“그럼 바로 가봐야겠네요. 추가 인력이 투입되기 전에, 현재 작업의 인수인계를 위한 자료도 준비해야 하고, 그 정도의 대규모 인력이 일사불란하게 협업을 진행할 수 있도록 팀 구조도 다시 잡아야 할 테니까요.
게다가 현재 인력 부족 때문에 대충 만들어놓았던 이벤트도, 대대적으로 손봐야 하고.”
“대충 만든 이벤트가 있었어?”
“필요한 숫자가 너무 많았잖아요. 대충 말투만 바꿔서 복붙한 이벤트도 꽤 있었죠.
하지만 걱정 마세요.
그거 전부 다 날려버리고 진짜 캐릭터 하나하나에 맞게 독립적이고 개성 있는 이벤트로 게임을 가득 채워드릴 테니까.”
그렇게 말한 혁찬은, 상혁에게 고개를 숙여 가볍게 인사하고는 몸을 돌려 부실을 나가려고 했다.
그러자 상혁은 혁찬의 이름을 부르며 그를 멈춰 세웠다.
미리 준비해둔 80명의 추가 인력에 더해, 또 하나의 도움을 주기 위해서.
“혁찬아, 잠깐만.”
“예?”
“아마 다음 주부터 추가 인력이 즉시 투입되어 함께 개발을 진행하게 되긴 하겠지만, 솔직히 말하면 나도 혁찬이 네 의견에 어느 정도는 동의하고 있어.
33명이 아니라 113명이 작업을 한다 하더라도, 현재의 이벤트 숫자는 너무 많으니까.”
“하지만 이벤트 수를 줄이면 캐릭터 당 볼륨이 줄어들 수밖에 없어요.
게이머 입장에서는, 그게 질투 유발 이벤트든 온천 이벤트든 아니면 미션 도중에 단둘이 고립되는 이벤트든, 좋아하는 캐릭터와 최대한 많은 이벤트가 있어야 게임이 만족스러울 거고요.
형이 말한 대로, 이 게임은 200명의 히로인 중 어느 한 명을 랜덤으로 뽑아도 그 히로인이 메인 히로인 같은 느낌의 게임이 되어야 하죠.
그러니 이벤트 숫자가 많다는 불평은 하지 않을래요.”
“내가 말하려는 건 단순히 이벤트의 숫자만을 말하는 건 아니야.
중요한 건 얼마나 효율적으로 이벤트의 형태를 잡을 수 있냐는 거지.
상호작용의 경우도, 무리하게 200명 전원의 상호작용을 전부 구현하려고 애쓸 필요는 없어.
사람마다 성향이 다 다르듯, 캐릭터의 성격에 따라서 다른 캐릭터를 의식하는 수준도 전부 다를테니까.
만약 그 히로인이 엄청나게 질투가 심한 히로인이라면 주인공에게 접근하는 199명의 다른 히로인에 대한 모든 상호작용 이벤트를 가지게 되겠지만, 반대로 다른 히로인들이 아닌 주인공에게 집중적으로 어필을 강화하는 히로인도 있을 수 있고, 아니면 그냥 말없이 삐지는 히로인도 있을 수 있지.
이 캐릭터에 이런 이벤트가 들어갔으니, 다른 캐릭터에도 전부 그와 비슷한 이벤트를 넣어야 한다고 생각하지 말자고.
그냥 매 히로인의 입장에서, 각 상황에 맞춰 히로인 캐릭터들이 어떤 행동을 취하는 것이 가장 자연스럽고 재미있을 것인가만 생각하면 돼.
그러니까 각 캐릭터 당 이벤트 숫자를 무리하게 통일하려 하지 말자고.
중요한 건 해당 캐릭터의 스토리가 얼마나 재미있느냐지, 그 캐릭터의 이벤트 수량이 다른 캐릭터 이벤트 수량보다 얼마나 충실한지가 아니니까.”
“그러니까 캐릭터 성격이나 행동 양식에 따라서, 이벤트의 볼륨을 조정한다는 거죠?
굳이 필요 없는 이벤트를 굳이 양 불리려고 넣지 말고요.”
“맞아. 그리고 커뮤니케이션 엔진도 좀 활용하고.”
“커뮤니케이션 엔진을요?
이번엔 그거 안 쓰기로 한 거 아니었어요?”
리얼 엔진에 탑재된 커뮤니케이션 엔진은, 각 상황에 따라 캐릭터들이 자연스러운 대사를 하게 만드는 데 특화된 엔진이었지만, 반대로 이번 게임처럼 미리 학습된 데이터가 없는 오리지널 세계관의 게임 속에서는 제대로 된 대사를 하지 못한다는 단점을 가지고 있었다.
그것은 혁찬도 초창기에 커뮤니케이션 엔진의 적극적 사용을 추진했다가, 전부 수동으로 대사를 작업하기로 한 이유이기도 했다.
게임 속 세계관 안에서의 히로인들의 가치관 속에서는 ‘나이트’의 존재가 매우 큰 비중을 차지하고 있는데, 커뮤니케이션 엔진의 AI는 그런 세계 속의 캐릭터가 사고하는 정상적인 대화를 구현하기 어려웠기 때문이었다.
게다가 현실에서는 흔히 보기 어렵지만, 게임 안에서는 자주 발생하는, 드라마 틱한 상황에 대한 대응력도 많이 떨어지는 편이었고.
그렇기에 스토리를 총괄하는 혁찬은, 이번 작품에서만큼은 커뮤니케이션 엔진의 적용에 대해 부정적인 견해를 보이고 있었다.
이 게임에서 필요한 ‘히로인 캐릭터’는, 현실의 인물처럼 자연스러운 대사를 하는 인물이 아니라, 말 그대로 오타쿠의 망상을 그대로 그려낸 듯한 ‘만들어진’ 캐릭터여야 하기에.
그리고 그 사실은, 상혁도 잘 알고 있는 사실이었다.
“물론 현재 버전의 커뮤니케이션 엔진으로 제대로 된 대사를 구현하는 게 어렵다는 건 나도 알아.
하지만 그건 ‘이제까지의 커뮤니케이션 엔진’이지.
앞으로의 커뮤니케이션 엔진은 아닐거거든.
물론 특수한 상황이 매우 자주 발생하는 이번 신작 특성상 모든 대사를 커뮤니케이션 엔진의 기능으로 생성하는 건 무리가 있지만, 단순히 인물 사이에서 발생하는 서브 이벤트의 경우는 충분히 기능을 할 수 있을거야.
기존의 커뮤니케이션 엔진이 지원하는 기능에 더해서, 민준이 추가로 개선 작업을 진행했으니까.”
“개선 작업이요?”
“자세한 건 민준에게 들어. 나도 구체적으로 어떻게 바뀐건지는 잘 모르거든.
아마 이번 프로젝트만을 위해서 특수 용도로 기존 모듈을 개조한 것 같은데, 민준이 말로는 괜찮은 느낌이라고 하더라고.
하지만 결국 캐릭터가 뱉는 모든 대사에 대한 최종 권한은 스토리팀에 있는 거니까.
그게 쓸만한 수준인지 아닌지는 민준이 아닌 네가 보고 판단하는 게 좋겠지.”
“알겠습니다.”
다시 인사를 하고 민준을 찾아 부실을 나서려던 혁찬은, 자리로 돌아가려는 상혁을 향해 질문을 던졌다.
지금까지의 대화를 통해, 한가지 궁금한 점이 생겼기 때문에.
“형?”
“어?”
“하나 묻고 싶은 게 있는데요?
형은 제가 캐릭터 200명을 작업하겠다고 한 시점에서 이미 일이 이렇게 될 거라고 예상하고 계셨잖아요?
그래서 80명의 추가 인력을 별도로 뽑아서 지금까지 훈련한 거고요.”
“그렇지.”
“그럼 왜 그때 이야기 안 해주셨어요?
200명은 무리다. 아마 너희가 작업할 수 있는 캐릭터 숫자는 50명 정도가 한계일 거라고, 미리 귀띔해주실 수도 있었잖아요?”
“그때 내가 그렇게 말했으면, 구체적으로 작업을 시작하지 않았던 상태의 너는 나에게 이렇게 말했을 거야.
‘스토리 팀의 역량을 무시하지 말아달라’고.
그렇게 고집을 부린 상태에서 작업이 시작되었다면, 실제 작업량이 네가 생각한 것보다 어마어마하게 거대하다는 걸 인정하고 나를 다시 찾아오는 게 좀 더 어려워졌겠지.
내가 반대한 사항을 억지로 밀어붙이다가 ‘해봤는데 형 말이 맞더라고요.’라고 말하는 건 더 힘든 일이니까.
게다가 실제로 작업을 진행하면서, 구체적으로 어떤 형태의 이벤트가 많이 요구되는지, 캐릭터 하나를 완성하기 위해서는 어떤 종류의 이벤트를 얼마나 만들어야 하는지도 파악할 수 있었을 테고.
이따금 복싱선수가 훈련할 때는, 한쪽 손을 아예 테이프로 몸에 고정하고 훈련을 하기도 해.
나머지 한 손만 가지고, 계속 훈련을 하는거지.
하지만 아이러니하게도, 그 훈련은 봉인되지 않은 손의 사용법을 익히기 위한 훈련이 아니야.
사용하지 못하는 손의 훈련을 위해서 사용하는 훈련법이지.
원투를 날려야 하는 타이밍에, 한쪽 손이 몸에 고정되어 있어 발생하는 갑갑함,
구체적으로 언제 나머지 손을 사용해야 가장 효율적으로 적을 쓰러트릴 수 있을지에 대한 감각의 강화.
그 과정을 통해서, 마침내 나머지 한 손의 봉인이 풀렸을 때, 선수는 느끼는 거지.
아, 이 손은 이렇게 쓰는 거구나!”
허공을 향해 주먹을 슉슉 휘두르는 상혁을 보며, 혁찬이 미소지었다.
“때로는 고생해봐야 보이는 것도 있다는 말이군요.
명심하겠습니다.”
그렇게 말한 혁찬은 이번에야말로 상혁에게 고개 숙여 인사를 하고는, 부실의 문을 나섰다.
그리고는 상혁이 말한 대로 스토리 팀을 위해 커뮤니케이션 엔진을 뜯어고쳤다는 민준을 찾아 PTW 본사 지하에 있는 스컹크 웍스의 연구동으로 이동했다.
그곳에서 혁찬이 발견한 것은, 자신과 마찬가지로 눈 밑에 다크 서클이 잔뜩 낀 상태로 미친 듯이 키보드를 두드리고 있는, 마치 좀비 같은 모습을 하고 있는 민준의 모습이었다.
***
“형, 괜찮아요?!”
혁찬이 말을 걸었음에도 한참을 모니터에서 눈을 떼지 않고 작업하던 민준은, 마치 버퍼링이라도 걸린 것처럼 한참을 가만히 앉아 있었다.
그리고는 천천히 고개를 돌려 혁찬을 바라보더니, 영혼이 빠져나간 듯한 목소리로 말했다.
“어···. 왔냐?”
“아니 못 본 사이에 왜 이리 좀비같이 변하셨어요?
밥은, 아니.
밥보다 잠은 제대로 주무시는 거 맞아요?”
“잠은···. 어차피···. 무덤에 가면 푹···, 잘 수 있어···.”
“그 말, 다른 사람이 말했다면 농담처럼 들렸겠지만, 민준형이 말하니까 진짜 공포 그 자체네요.
잠깐 기다려요.
지금 커피 가져올 테니까.”
혁찬은 연구동 벽 쪽에 있는 에스프레소 머신을 향해 이동했다.
그리고는 잠시 고민하다 무려 8샷을 한 컵에 집어넣고는, 얼음만 추가해서 민준에게 가져갔다.
민준은 거의 걸쭉한 수준으로 타온 혁찬의 커피를 보더니, 한숨을 쉬며 그것을 쭉 들이켰다.
그리고는 머리를 크게 흔들며 혁찬에게 말했다.
“후, 이제야 정신이 좀 드네!”
“에스프레소 8샷을 먹고 겨우 정신이 드는 수준이면 아메리카노는 수면제 정도겠네요.”
“그래서, 무슨 일로 찾아온 거야?”
“상혁 형이 보내서 왔어요. 이번 프로젝트 때문에 민준 형이 커뮤니케이션 엔진을 뜯어고치는 중이라고 하면서.
하지만 아직 한참 작업 중인 것 같네요.
형 상태를 보면, 완성이 가능한 수준인가 의심스럽기도 하고.”
그러자 민준이 쓴웃음을 지으며 혁찬에게 말했다.
“세상에 불가능한 건 없지.”
“장비가 없으면 인간은 하늘을 날 수 없죠.
맨몸으로 물속에서 숨 쉬는 것도 불가능하고요.
상혁이 형이나 민준이 형이나, 두 사람은 가끔 현실의 벽이란 게 얼마나 두꺼운지 인정할 필요가 있을 것 같아요.”
“현실의 벽은 당연히 두껍지.
하지만 우리가 만드는 건 게임의 세계야.
그 안에서는 장비가 없이 하늘을 날아다니는 것도, 맨몸으로 물속에서 숨을 쉬는 것도 가능하니까.
필요한 건 오로지 그것을 만들기 위한 기술과 노력 뿐.
하면 된다라는 불굴의 정신으로 불가능에 도전하는 게 스컹크 웍스의 모토라고.”
“그래서, 그 스컹크 웍스의 수장이신 민준 형님은 안 그래도 완벽에 가까운 수준인 커뮤니케이션 엔진을 어떻게 뜯어고치고 계셨나요?”
“별건 아니야. 단지 기존의 데이터를 기반으로 만들어진 커뮤니케이션 엔진의 대사 생성 시스템에, 개발자의 의도가 더 크게 개입될 수 있도록 개조했을 뿐이지.”
“구체적으로는요?”
“새 버전에서는 개발자가 캐릭터의 히스토리를 생성해서 AI에 적용할 수 있어.
어린 시절 어떤 가정환경에서 자라났는지, 그리고 양육자의 성격은 어떤 성격이었는지.
원하는 것을 바로바로 얻을 수 있는 환경에서 자라났는지, 아니면 욕구가 충족되지 않는 환경에서 자라났는지.
누구에게 라이벌 의식을 느끼고 있는지, 혹은 어린 시절 PTSD가 생길만한 어떤 사건을 겪은 적이 있는지.
그 사건을 통해서 어떤 사고방식을 가지게 되었는지.
어떤 종류의 행위에 발끈하는 역린을 가졌는지.
단순히 현재의 상황이나 상대의 대사를 보고 기계적으로 반응하는 것이 아니라, 좀 더 인격체 같은 사고가 가능하도록 개조하는 게 이번 개선 작업의 목적이었어.
기존에 리얼 엔진에 포함된 AI 성격 생성 시스템이, 일반적으로 발생할 수 있는 수만 개의 상황을 개발자에게 질문하면서 각각의 질문과 비슷한 상황이 발생했을 때 캐릭터가 어떤 식으로 행동하는지를 결정하는 방식이었다면, 개선된 버전은 각 캐릭터가 여러 가지 상황에서 어떤 대응을 하는지를 묻는 것이 아니라, 아예 그 캐릭터가 ‘어떤 인물’인지를 입력하도록 요구하고 있지.
그 외에 말버릇이나 겉으로 표현되는 대사와는 다른 캐릭터 내면의 심리.
다른 인물에 대해 지니는 자격지심이라던가 사랑하는 대상에 대한 집착의 수준, 그리고 그것이 발현되는 형태까지.
개발자가 원하는 캐릭터 인격의 모든 부분에 개입할 수 있도록 하는게 이번 버전의 최종 목표라고 할 수 있어.”
혁찬은 아무 대답도 할 수 없었다.
OGC를 개발하던 당시, 단순히 사람처럼 대답하는 AI를 만들기 위해서 수백만 라인의 대사를 작업했던 혁찬은, 민준이 말하는 것이 얼마나 말도 안 되는 것인지 뼈저리게 이해할 수 있었기 때문에.
민준이 구현하고자 하는 것은, 단순히 데이터에 기반하여 상황에 따라 적절한 대사를 골라서 내뱉는 AI가 아닌, 진짜 ‘인격’을 가진 사고하는 AI를 만들겠다는 이야기나 마찬가지였다.
그리고 혁찬이 알고 있기론, 인간이란 존재는 단순히 데이터 몇백줄 집어넣는다고 만들어지는 단순한 존재가 아니었다.
단 한마디의 말을 뱉는 과정에서도, 그 사람이 살아온 삶의 과정을 반영하는 존재가 혁찬이 아는 인간이란 존재였기에.
침묵하던 혁찬은 자신이 이해한 것이 맞는지 민준에게 물어볼 수밖에 없었다.
“그러니까, 형 말은···.”
“아마 네가 하려는 말이 진짜 인간처럼 사고하는 AI를 만들려는 게 맞냐는 질문이라면, 부분적으로는 맞아.”
“그게 가능해요?
아니, 가능하다 하더라도, 제대로 된 캐릭터가 성립되기 위해서는 진짜 말도 안 되게 방대한 데이터의 입력이 필요할 텐데요?
어쩌면 대사를 짜는 것보다 캐릭터 시트를 입력하는 시간이 더 걸릴지도 모르고요.”
“맞아. 게다가 현재 필요한 데이터를 모두 집어넣는다고 해도, 기존 DB에 없는 특수 상황에서의 대사는 생성하지 못할 거야.
이건 인간 수준으로 완전한 사고가 가능한 AI는 아니니까.”
“그럼 노력에 비해 얻는 게 너무 적지 않아요?
상혁이 형은 이번 개선 작업의 결과물을 메인 이벤트가 아니라 서브 이벤트에 쓰는 게 어떠냐고 말했었어요.
그 말은 결국, 메인 이벤트에 해당하는 캐릭터의 대사는 전부 스토리 팀에서 작업해야 한다는 소리잖아요?
거기에 추가로 작업이 더 얹어지는 느낌인데요 이건?”
“그야 모든 데이터를 수동으로 입력하면 그렇게 되겠지.
하지만 혁찬아. 스컹크 웍스는 그 정도 문제도 파악하지 못할 정도로 바보는 아니야.”
그렇게 말한 민준은 작업 창을 밑으로 내리고 바탕화면에 있는 아이콘을 클릭했다.
그러자 혁찬이 걱정했던 것처럼, ‘저게 인간이 다 채울 수 있는 항목인가?’라는 생각이 절로 떠오를 만한 매우 복잡한 형태의 입력 창이 나타났다.
그러나 민준은 그런 혁찬의 반응을 보고도 미소를 잃지 않은 채, 조용히 마우스의 커서를 움직였다.
그리고는 화면 오른쪽 상단에 있는 ‘프리셋 선택’ 버튼을 클릭했다.
그 순간 툴 위에 창 하나가 떠올랐고, 혁찬은 민준이 어떻게 그 복잡한 입력 과정을 생략하려 하는지 바로 이해할 수 있었다.
혁찬의 눈앞에 나타난 화면은, 이 프로그램을 처음 보는 혁찬도 바로 이해할 수 있을 정도의 직관적인 화면이었기 때문에.
화면 위에 펼쳐진, 수많은 캐릭터의 초상화들.
하나같이 유명 애니메이션이나 영화의 등장인물들로 구성된 캐릭터들의 밑에는, 해당 캐릭터의 데이터가 얼마나 입력되어있는지에 대한 공정률이 % 형태의 수치로 기재되어 있었다.
그 말은 곧, 자신이 만들려는 성격과 비슷한 캐릭터를 고르는 순간, 해당 캐릭터의 초상화 밑에 있는 숫자만큼의 데이터가 자동으로 채워진다는 뜻이기도 했다.
“뭐 이건 어디까지나 프리셋이고 실제 작업할 때는 해당 캐릭터에 맞춰서 어느 정도 추가 입력이나 설정 변경을 하긴 해야겠지만, 그래도 여기 있는 캐릭터 중 어느 하나만 골라서 적용해도 그 캐릭터가 직접 하는 말과 구분하기 어려울 정도까지는 작업되어 있어.
처음부터 모든 데이터를 전부 작업하려면 힘들겠지만, 이거라면 시간을 꽤 아낄 수 있겠지.
이쪽의 ‘고유 설정 사용’ 부분을 해제하면, 해당 캐릭터가 등장하는 작품에서의 라이벌 관계나 인물 관계 같은 고유 설정은 모두 사용하지 않고 성격만 그대로 따와서 사용하게 되니까 사용한다는 크게 문제가 없을 거기도 하고.
최소한 내부 테스터들이 확인했을 때는 AI가 생성한 대사와 해당 캐릭터가 할만한 대사에 거의 위화감이 없는 수준으로 개발된 상태니까, 바로 사용해도 문제는 없을 거야.
게다가 지금도 계속 개선 작업 중이니까, 완료될 시점에는 퀄리티가 더욱 올라갈 거고.”
“지원하는 프리셋은 몇 종류에요?”
“500개 좀 넘어.”
“그 많은 캐릭터의 데이터를 4달 만에 전부 입력하셨다고요?
도대체 어떻게?!”
경악하는 혁찬의 표정을 보며, 민준이 작게 미소지었다.
그리고는 혁찬의 등을 툭툭 두드리며 말했다.
“혁찬아. 넌 PTW 본사가 어디에 있는지 까먹은 거 같구나?”
“본사야 당연히···. 아!”
“그렇지. 우리 PTW엔, 다른 회사와는 다르게 이런 단순 작업을 시킬만한 존나 큰 알바생들의 풀이 있다고.”
“그럼 이 모든 데이터가···.”
“맞아.”
민준이 말했다.
“이 안엔 애니메이션이나 라이트 노벨 같은 거엔 전혀 관심이 없던 수많은 천하대 학생들과 대학원생들의 피와 땀이 서려 있지.
지금은 모두 단체로 오타쿠 문화에 물들어버린, 불쌍한 희생자들의 피와 땀이 말이야.
게다가 대충 되는 대로 데이터를 입력하는 걸 방지하기 위해서, 같은 캐릭터에 대해 5명씩 작업자를 붙였어.
그중 2명 이상은 반드시 해당 작품을 잘 이해하고 있는 사람이 참여했고.
그러니까 이 많은 캐릭터를 전부 검증하지는 못했어도, 신뢰도는 꽤 높을 수준이라고 생각해.
물론 진짜로 쓸만한지는, 캐릭터 대사를 직접 작업하는 스토리 팀에서 확인해줘야겠지만.”
그렇게 말하는 민준의 표정엔, 평소에 관심도 없던 서브컬쳐 컨텐츠를 강제로 시청해야 했던, 무려 2만 명이 넘는 대학생 작업자에 대한 동정심 같은 건 전혀 담겨있지 않았다.
그리고 혁찬의 표정에서도.
두 사람의 머릿속에는, 민준이 개발한 이 신기능을 사용해서 얼마나 많은 서브 이벤트의 추가가 가능할 것인지에 대한, 개발자다운 욕망만이 이 가득 차 있었기 때문에.
게임의 완성도만 올릴 수 있다면, 그 어떤 희생도 감수할 수 있다는 생각.
그것은 PTW의 개발자 모두가 가지고 있는, 지극히 ‘PTW스러운’ 사고방식이라 할 수 있었다.