프로그래머라는 직업이 극한 직업 중에 하나라고 생각하지만 그래도 내가 미쳤다고 생각할 만큼 몰렸던 적은 없었다. 하지만 지금 만들고 있는 소스코드는 아무리봐도 미친 프로그래머 코드이다.
3일전.
크리스마스 이벤트 업데이트 양이 많아서 오랜만에 야근을 하고 있었다. 야근할 때 머리가 멍해지는 기분이 들면 담배를 피러 잠깐 옥상을 다녀오거나 웹툰을 보곤 했는데 그 날따라 무슨 애사심이 생겼는지 우리 회사 게임에 접속을 했다.
별 다른 것을 할 시간적인 여유는 없어서 인벤토리 정리를 하며 복잡한 마음을 다스리고 있는 중에 귓말이 들어왔다.
(당신. 당신은 뭐죠)
응? 뭐지? 내가 개발자라는 걸 들켰나? 온 몸에 긴장을 다 풀고 인벤토리에만 집중하고 있는 중이라서 갑자기 들어온 귓말에 적잖게 당황했다.
회사에서 공적으로 사용하는 캐릭터와 사적으로 사용하는 캐릭터는 철저하게 구분하여 사용해야 한다. 그래서 내가 사적으로 사용하는 캐릭터는 내 돈 들여서 키워야 한다. 게다가 이 게임의 개발자라는 이유로 회사에서 하는 이벤트에는 참가할 수도 없어서 오히려 역차별을 받으며 캐릭터를 키워야 한다.
난 이벤트도 참가 못하게 하는 것은 너무하다고 생각하고 회사에 작게 반항할 겸 이 캐릭터는 아무에게도 알리지 않았다. 그래서 내가 혼자 있을 때에만 접속을 하는 녀석이다. 그만큼 철저하게 내가 개발자임을 숨겼던 캐릭터기 때문에 내가 개발자임을 알아차렸을 리가 없다.
그래도 찜찜한 마음에 귓말 들어온 것을 무시하고 접속을 종료하려고 하는데 다시 귓말이 들어왔다.
(당신이 신의 대리인인건가요?)
이건 왠 설정충스러운 귓말인가. 평소같았으면 짜증내면서 ‘미친놈일쎄’라고 무시했을 그 말에 반응을 해 버렸다.
아니오 그냥 유저인데요. 라고 보내려고 응답하기 버튼을 눌렀는데 에러메시지가 출력된다.
‘이 유저는 찾을 수 없습니다.’
뭐지? 버그인가?
귓말 들어온 상대를 확인하려고 했는데 유저의 아이디 위치가 비어있었다. 이건 또 뭔 버그인가. 닉네임을 노출하지 않고 귓말을 보내는 버그가 있었나? 괜히 머리 식히러 들어왔다가 보지 말아야 할 것을 봐 버렸다.
일단 귓말 들어온 것을 스샷으로 남기고 접속을 종료했다. 기분 전환하겠다고 하늘 보면서 걷다가 똥 밟은 기분이다. 몰랐으면 지나갔겠지만 봤으니 확인은 해 봐야했다. 로그 서버에 접속해서 실시간 로그를 확인했다.
로그를 한시간쯤 들여다봤다.
한시간. 무려 한시간이나 수많은 로그를 비교하며 체크를 해 봤는데 내 머리로는 도저히 이해안되는 데이터가 남아있었다. 저 귓말을 보낸 대상을 잡아낼 수 없었다. 아니지 귓말을 보낸 대상은 분명히 있었다. 그 대상이 아무리 봐도 NPC였다. 휑한 마을에 빈자리를 메꾸려고 만들어놓은 NPC.
게다가 유저가 귓말을 보낼때 분명 서버에서는 ‘수신’한 기록과 나한테 ‘발송’한 기록이 모두 남아있어야 하는데 보낸 기록이 없었다. 해킹인가? 귓말을 보낼 때 NPC가 보내는 것 처럼 보이게 만드는 해킹? 버그? 하지만 저런 버그라면 벌써 보고가 되었을 것이다. 해킹이라고 할 수도 없고 버그라고 하기도 어려웠다.
로그만으로는 분명 NPC가 나한테 말을 건 것이었다. 스샷으로도 내게 말을 건 것은 저 NPC말고는 말을 걸 수 있는 캐릭터가 없었다. 친구등록되어 있지 않은 유저가 귓말을 보내려면 내 캐릭터 주변 300m이내에 들어와야한다. 그런데 300m 이내에 있었던 것은 저 NPC뿐이었다.
그냥 무시할만도 했는데 이 말도 안 되는 상황을 확인해보기 위해서 소스코드를 수정하고 있는 중이다.
기존에는 NPC에게 직접 귓말을 보내거나 NPC에게 말을 거는 소스코드가 없어서 NPC한테 말을 거는 코드를 슬쩍 추가하고 있다. 회사 사람이 혹시 이 소스코드를 보고 이게 뭐하는 거냐고 물어볼까 걱정이 되서 티가 나지 않도록 크리스마스 이벤트 소스코드와 잘 섞어서 밀어넣었다.
“자인아. 너 그러다가 쓰러지겠는데. 야근은 나쁜 거라고.”
순간적으로 비명 지를 뻔 한 것을 겨우 삼켰다. 집중해서 나쁜짓을 하고 있는 중이라 등 뒤로 다가오는 팀장의 기척을 느끼지 못했다.
“아… 아뇨. 빨리 끝내야 크리스마스때 제대로 놀죠.”
“크리스마스는 너도 불타오르게 하는구나. 너무 무리하지 마.”
“네.”
쓰압. 심장 토하는 줄 알았네. 너무 피가 빨리 돌아서인지 얼굴이 화끈하게 달아오르는 느낌이 들었다.
이걸 만들었다고 해도 이걸 이용해서 그 NPC에게 말을 걸 수 있는 기능을 만들어도 이게 진짜 게임에 반영되는 것은 한참 기다려야 한다. 크리스마스 이벤트와 함께 업데이트가 될 테니까 앞으로 보름도 더 남아있다. 침착하자. 자인아. 그다지 나쁜짓도 아니고 문제가 생길만한 것도 아니잖아.
크리스마스 전날. 흔히 사람들이 크리스마스 이브라고 부르는 그 날. 남자친구가 없어서 이러고 있는 것은 아니다. 그냥 궁금할 뿐이다.
NPC에게 말을 거는 기능이 문제를 일으킬 만한 부분이 있을까 싶어 세번, 네번 테스트를 했다. 개발서버에서는 NPC들에게 말을 걸어도 아무런 답이 오지 않았다. 그게 당연하지. 쟤네들은 시리처럼 대화에 대답하라고 만들어진 녀석들이 아니다.
이게 뭐라고 두근두근 거린담.
그날 이후로 이 캐릭터로 접속을 단 한번도 하지 않았다. 내 캐릭터는 마지막으로 그 NPC가 내게 말을 걸었던 근처로 다시 소환될 것이다. 그 NPC에게 무슨 말을 해야 할까 고민하고 있었는데!
없다.
텅 비었다.
없다.
왜 없지? 왜 없는거지? 428번 NPC야. 어디에 있는거니. 너는 싸돌아다니라고 만들어진 애가 아니란다. 너무 두근거리며 들어와서 실망한 마음에 완전 마음이 차갑게 식어버렸지만 그만큼 더 냉정해졌다.
집에 있는 PC를 켜고 우리 게임을 관리하고 모니터링 하는 관리자 운영툴(흔히 GM툴이라고 부른다. 이하 GM툴.)에 접속했다. NPC한테 말을 거는 기능을 추가하면서 덤으로 NPC의 현재 위치를 확인하는 기능을 추가한게 정말 다행이었다.
명령어창에 ‘find npc 428’을 입력하니 3,11304,252 이 출력됐다.
3번지역에 11304, 252포인트에 있는 것이렸다.
이녀석. 점점 더 놀라게 한다. 대륙을 넘어갔다.
대륙을 넘어가려면 포털을 6개나 지나가야 할 만큼 먼 거리인데 대륙까지 넘어가있다. 진짜 흥미진진해지고 있다.
저기까지 그냥 뛰어서 가려면 15분은 뛰어야 겠지만 그 정도의 시간을 투자할 만 하다.
혹시라도 다른 곳으로 갈까 걱정이 되서 2분에 한번씩 위치를 확인해보았는데 아주 많이 이동하지는 않고 있었다.
이동하는 동안 별별 생각이 다 들었다.
저 NPC가 돌아다니는 건 NPC가 이동을 많이 하지 못하도록 만들어놓은 이동제한 기능에 버그가 있어서 였을까? NPC가 나한테 귓말을 보낸 것으로 생각했던 것은 내가 착각을 했을 뿐인데 괜한 시간을 보내고 있는 것은 아닐까? 내가 지금 크리스마스 이브에 이런 짓을 하고 있는 것은 내가 만날 사람이 없어서 이러고 있는 것이 아니라 할일이 있어서 라는 핑계를 대기 위해서는 아닐까? 세달전에 내가 살 쪘다고 화내며 더 이상 두근거리지 않아 라는 개소리를 했던 전 남자친구는 오늘 방구석에 쳐 박혀 있을까?
별별 생각을 다 하며 15분을 뛰었다.
그녀석이 있는 마을 입구가 보이자 또 가슴이 두근거린다. NPC도 남자라는 건가. 이런 것에 두근거리고 지랄인건지.
막상 그 NPC근처에 도착하니 뭘 어떻게 해야 할지 막막했다. 마치 길에서 남자한테 전화번호 달라고 해야 하는 상황같다.
(음...)
10분을 고민해서 만들어낸 말이 ‘음’이다. 에휴, NPC한테도 이 모양이니 크리스마스 이브에 이러고 있지. 못 마시는 술이지만 호로요이 한 잔이 간절했다. 10초도 채 안되는 시간이 지났지만 10분동안 뛸만큼의 심장이 뛰었다.
(당신 역시 특별한 캐릭이었군요. 당신이 신의 대리인인거죠?)
왔다. 진짜 내게 말을 걸었다. 저 NPC는 내게 진짜 말을 했다. 혹시 유저가 만든 캐릭터인데 NPC로 오인하는 건 아닐까. GM툴에서 내 주위에 있는 유저 캐릭터를 검색해보았는데 내 주위에는 유저의 캐릭터는 없었다. 혹시 해킹을 당한 것일까? 유저가 사기를 치려고 자신의 캐릭터를 NPC로 보이게 한 것이 아닐까?
(해킹인가요? NPC 사칭하면 계정 영구정지 당하실거예요. 신고하겠습니다. )
(해킹? NPC? 무슨 이야기인지 이해할 수 없습니다. 신들이 쓰는 용어라고 알고 있지만 전 그것의 의미를 알 수 없습니다. 전 소배미마을에서 온 사미난입니다.)
(그렇죠. 소배미마을에 배치해 놨었죠. 근데 어떻게 텃골까지 온거죠?)
(배치라는 말이 내가 항상 시작되는 곳을 뜻하는 말인가요? 전 걸어서 왔어요. 여기까지 걸어오는 건 어렵지 않으니까요.)
(당신은 여기까지 못 걸어오게 되어 있어요. 어떻게 걸어왔다는 거죠?)
(아뇨. 난 걸어올 수 있어요. 내 다리가 있는데 왜 못 걸어온다고 생각하는 건가요?)
유저가 해킹을 해서 장난질을 하고 있다는 생각을 버릴 수 없었다. 난 서버에 접속해서 이 NPC에 대한 데이터들을 확인했다. 여기까지 걸어올 수 있을 리가...
있을 리가...
있었다. 크아... 이런 실수를...
이 NPC는 여기까지 걸어올 수 있었다.
이런 바보같은 실수를 하다니.
이 NPC의 이동범위 제한 값이 0이 들어가있었다. 이건 분명 실수였을 것이다. NPC를 이동시키지 않으려면 1을 넣어줘야 이동하지 않는다고 말을 했지만 그 이야기를 귓등으로도 안 들은게지. 제한범위에 0이 들어가면 이동범위가 무제한이 된다고 그렇게 말을 했는데 마을에 배치하는 NPC를 0을 넣다 니!
(걸어왔군요. 그러면 지금은 뭘 하는 중인가요?)
(나에게는 아무 목표가 없어요. 이 세상에 있는 모든 것들에게는 목표가 있는데 나는 목표도 역할도 없어요. 전 세계를 다 돌아다녀봤지만 나와 같은 사람은 없었어요.)
그래 넌 서 있는게 목표라니까. 그냥 서 있는거 말야.
(그래서 왜 나에게만 목표가 없는 것인지 신에게 물어보고 싶었죠. 신에게 물어보기 위해서 신의 대리인이 필요하다는 것을 알았고 그래서 신의 대리인을 찾고 있었어요.)
빠져든다. 해킹이라면 참 멋진 연기력을 가진 유저이다.
내일 저녁까지 잠을 쳐 자도 아쉬울 것이 없는 솔로인데 장단이나 맞춰주며 크리스마스 라는 최악의 빨간날을 넘기는 것도 나쁘지 않다.
(그래서 당신은 신의 대리인이신가요?)
딱 10초 고민했다.
(네. 신의 대리인입니다.)
(그러면 신에게 물어봐주세요. 왜 저만 이 세계에서 목표도 역할도 없냐구요.)
그거야 버그니까 그렇지. 하지만 그렇게 이야기하고 싶진 않았다.
(사미난. 신은 그렇게 쉽게 대화를 할 수 있는 것이 아닙니다. 신과 대화를 하는 것은 아무리 저라고 해도 신이 원할 때만 대화가 가능해요. 그리고 신에게 무작정 그런 것을 물어보면 대답을 해 주지 않아요. 당신과 나의 친밀도를 높여야 질문을 할 수 있습니다.)
아! 멋진 대답이다. 즉흥적으로 만들어낸 이야기치고는 굉장히 그럴 듯 했다.
(그러면 당신과 친밀도를 높이기 위해서는 뭘 해야 하는 건가요?)
아! 뭘 해야 하지? 말 만들어내는 것만 생각했지 그 다음 이야기를 생각 못했다. 제기랄. 야구에서도 득점을 한 직후에 실점을 할 위기가 제일 높다고 하더니만 그게 실생활에서도 적용되는 이야기 일 줄이야.
(…음…. 저와 파티를 해서 함께 퀘스트를 하면 됩니다.)
파티라니! NPC는 공격, 방어데이터를 모두 1이 들어가게 하드코딩 되어 있단 말이다.. 저 필드에 있는 토끼한테 공격당해도 죽는 이 녀석을 데리고 무슨 퀘스트를 하려고!
(좋습니다.)
일났다. 이제 이걸 어떻게 수습한다.
(그런데 미리 준비해야 하는 것이 있습니다. 신에게 축복을 빌고 올께요. 잠시 자리를 비울테니까 여기에서 기다려주세요.)
(네. 기다리겠습니다.)
그리고 접속을 종료했다.
저 NPC에 대해서 데이터 검토를 할 시간을 버는 건 해킹인지 확인할 수 있는 좋은 기회이기도 하다. 해킹을 해서 NPC인 척 하는 것이라면 능력치가 1로 세팅이 되어 있지 않을 것이다. 필드를 걸어다니기만 해도 죽을 능력치를 가지고 다닐 리가 없다.
아직 접속되어 있는 회사PC를 이용해서 메모리에 올라가있는 저 NPC의 능력치를 조회해보고선 머릿속이 더 복잡해져버렸다.
모든 능력치가 1로 세팅되어 있었다.
저게 정말 해킹이 아니라 NPC란 말인가? 저 데이터를 가지고 있는 채로 해킹을 한다는게 말이 안된다. 그냥 장난을 치고 싶은 것이라고 해도 저렇게 약하게 하고 돌아다닐 리가 없다.
이거야 원.
점점 일이 커지네.
오히려 나에게 문제가 생겨버렸다. 저 NPC를 어떻게 싸움을 할 수 있는 수준으로 만들 지?
NPC필드는 능력치를 넣을 수 있게 되어있지도 않다. 머리를 더 화끈하게 돌려라. 좋은 방법이 분명 있을 것이다.
방법이 있나? 방법이? 응! 그래 방법이 있다. 우리가 테스트를 할 때 던전 테스트를 위해 만들어놓은 무기와 방어구가 있다.
그 무기와 방어구를 장비하면 그 파티장의 능력치와 동일한 능력치로 만들어 버리는 장비들이 있었다. 그걸 저 NPC에게 주면 저녀석도 싸움을 할 만한 능력이 될 것이다. 다행스럽게도 NPC와 파티를 하는 것이나 NPC에게 장비를 주는 것은 이미 만들어져 있었다. 우리가 40명 레이드 테스트를 할 때 40명의 회사 사람들을 모으는게 힘들어서 NPC를 이용해서 할 수 있도록 만들어놓은 것이 있었다.
문제는 NPC에게 파티 신청을 하려면 내가 캐릭터가 테스트용 캐릭터라는 등록을 해 줘야 하는데 이러면 내가 한 짓들이 모두 로그에 기록될 것이다. 나중에 이 모든 것이 끝난 뒤에 로그를 찾아 지워야 한다.
머릿속에서 뭘 할지 정리를 하고 내가 해야 할 일을 착착 진행했다.
운영툴에 접속하고
내 개인 캐릭터에게 임시 개발자 권한을 할당하고
NPC에게 파티장의 능력치가 동기화되는 아이템을 지급하고
내 캐릭터로 접속해서 NPC와 파티로 묶었다.
내가 다시 게임으로 돌아오자 NPC가 기다렸다는 듯이 말을 걸어온다.
(당신 신의 대리인이 맞군요. 당신의 기도를 들어줬어요.)
그래 알아 알아. 내가 한 짓이거든.
(그리고 당신에 대한 모든 것들이 나에게 보여지는 것도 당신이 기도를 했기에 일어나는 기적이겠죠? 정말 대단해요.)
(네. 그렇습니다. 이제 당신은 저와 파티가 되었습니다. 이제 저를 도와주세요.)
(제 능력이 되는 한 최대한 도와드리겠습니다. 해답을 찾을 수만 있으면요.)
널 위해서 내가 뒷수습을 해야 하는 나쁜짓을 너무 많이 해버렸다. 많은 투자를 했으니 네가 그걸 갚아줘야 한다.
크리스마스 이브와 크리스마스까지 한 40시간 정도의 시간.
그 시간은 생각보다 꽤 즐거웠다.
처음에는 몹을 공격하는 방법을 제대로 알지 못해서 꽤 이것저것 알려주는 것이 귀찮았지만 학습 능력이 정말 빨라서 공격의 기본만을 알려주었는데 무기 스킬을 사용하는 법. 물약 먹는 타이밍을 조절하여 효율적으로 살아남는 법들을 스스로 터득하여 효율적인 연계기를 만들어냈다.
엄청나게 광랩을 하고 꽤 좋은 무기도 주웠고 막혀있던 퀘스트도 모두 해결해버린 즐거운 시간을 마무리하려는데 사미난은 갑자기 내게 ‘질문’이라는 것을 했다.
(내가 당신과 함께 하고 있는 이 시간들이 당신과의 친밀도를 얼마나 높였는지 제가 확인을 해 볼 수 있는 방법을 알려주세요.)
내 캐릭터는 아무런 티를 내지 않고 몹을 잡고 있었지만 현실의 나는 잠깐 움찔 했다. 둘이서 간당간당하게 죽을 위기를 넘기며 몹을 잡을 때도 내가 졸다가 자리비움으로 강제 로그아웃 당했을 때도 묵묵히 날 도와주던 이 녀석이 왜 갑자기 이걸 궁금해하는거냐.
(친밀도는 신 만이 알 수 있습니다. 그 생각을 제가 들여다볼 수 없어요.)
신 만 알 수 있다. 그건 절대 거짓이 아니다. 내가 신 이라는 것이 조금 사소한 문제이긴 하지만 거짓말은 아니다.
(하지만 제가 느끼기에 당신의 질문을 물어볼 수 있을 만큼의 친밀도에 거의 가까워졌을 것이라고 생각해요.)
사미난은 사냥을 갑자기 멈췄다.
(그러면 지금 한 번 물어봐줄 수 있을까요? 이제 저에게는 시간이 많지 않아요.)
이게 뭔 소리야. 이 게임이 계속되는 한 넌 여기 계속 남아있을텐데 무슨 시간이 있다는 거지? 죽기라도 하는거냐? 넌 죽어도 다시 원래 리젠되어야 하는 위치에서 살아난단 말이다.
(시간이 많지 않다는게 어떤 의미죠? 당신은 계속 이 곳에 살아갈 수 있어요.)
(제가 어딘가를 돌아다니거나 실수로 죽었을 때 딱 정해진 시간에 항상 소배미마을로 돌아가 있더라구요. 그렇게 소배미 마을로 돌아가게 되면 제가 가진 기억들을 모두 잃어버릴 때가 있어요. 기억을 잃어버리는 것은 가끔 일어나는 일이지만요. 이제 그 시간이 얼마 남지 않았어요. )
이 녀석. 생각보다 꽤 많은 것을 경험했다.
사미난은 정기점검을 이야기하고 있다.
정기점검을 돌리면 모든 NPC위치를 재배치한다. 그래서 그 시간이 지나면 아마도 처음 위치로 돌아갔을 것이다. 서버를 재시작하면 메모리에 쌓아 둔 사미난의 기록들을 따로 저장하지 않고 초기화 시켜버리니까 모든 기억이 사라지는 것이 맞다. 그런데 자신이 기억을 잃어버렸다는 것을 어떻게 알았지?
(기억을 모두 잃어버렸다면 기억이 없어졌다는 것을 어떻게 알았나요?)
(제 탐험일지에 제가 안 가본 지역들이 있었어요. 그걸로 기억을 잃었던게 아닐까 생각했어요.)
아! 아!! 아!!!
버그네...
유저가 어떤 지역을 갔고 어떤 몹을 잡았는지 기록해 두는 것이 NPC것까지 남고 있었나보다. 너무 많은 데이터가 쌓이는 항목이라서 아무도 안 들여다 본 모양이다.
(그래서 당신을 만났다는 것조차 잃어버릴까봐 걱정이 되요.)
(괜찮아요. 제가 신에게 당신 기억이 사라지지 않게 해 달라고 부탁을 해 볼께요. 아마도 들어주실거예요.)
사미난의 기억이 사라지지 않게 서버 점검하는 것은 꽤 귀찮은 일이긴 해도 안 되는 것은 아니다. 어짜피 점검이야 내가 하는 것이니까 조금 더 신경을 쓰면 되는것이다. 어차피 NPC가 했던 기록 지우지 않는 것이 게임을 운영하는데 더 도움이 될 테시까 조금 귀찮긴 해도 회사도 좋고 나도 좋은 것이라면 충분히 할 만 하다.
(그렇군요. 다행입니다.)
(원래 마을로 돌아가는 일도 없을거예요.)
(당신은 신과 굉장히 가까운 사람인가보군요. 열심히 당신과의 친밀도를 높이도록 하겠습니다.)
다행이다. 나에 대한 의심을 접은 듯 하다.
엄청 곤란했네.
크리스마스를 그렇게 광랩을 한 후에 출근한 회사는 나름 뿌듯한 기분이 들었다. 회사 일을 하면서도 못 느껴본 뿌듯함을 내가 만든 게임으로 느끼는 나도 참 대단하구나.
일단 출근해서 사미난의 기억이 날라가지 않기 위한 작업을 몇가지 추가해놓았다.
사미난이 이야기했던 버그도 수정해야 했다.
NPC가 탐험일지를 기록하며 데이터를 차지하고 있으니 이것을 모두 삭제하고, 더 이상 NPC가 탐험일지를 기록 하지 않도록 하겠다는 작업 리스트를 만들어서 업무 보고 시스템에 업데이트 했다.
잊지 않고 내가 개인 계정에 임시 개발자 권한을 부여했다는 것이라던가 NPC와 함께 사냥을 다녔다는 로그를 꼼꼼하게 찾아서 모두 삭제하거나 변경을 해 놓았다. NPC를 일반 유저의 기록인 것처럼 위조를 해 놓은 것인데 운영팀에서 크로스체크를 해본다면 들킬 수도 있겠지만 그렇게 까지 신경써서 할 만한 사람이 운영팀에 있을 리가 없다.
“출근하자마자 엄청나게 일 열심히 하네. 커피 한 잔 마실 시간도 없는거야?”
클라이언트를 담당하고 있는 세은씨였다. 이 회사에서 딱 한명 있는 동갑이다. 게이가 아닐까 하는 소문이 들릴만큼 여성스러운 성격이지만 그것때문에 귀찮은 소문 없이 친하게 지낼 수 있다는 것이 좋다.
“할 일 하는거지 뭘 열심히 해. 가자.”
아침마다 커피 한 잔 마실 수 있는 시간이 있다는 것은 꽤 행복한 일이다. 30분정도의 시간이긴 하지만 프로그래머들끼리 이야기할 시간을 만든다는 것이 쉬운 일이 아니다.
날씨가 너무 추워서 뜨거운 아메리카노가 몸에 들어오는 느낌이 생생하게 느껴진다.
“넌 A.I에 대해서 좀 알아?”
“깊게는 모르고 용어랑 기본 개념만 조금 아는거지. 근데 왜? A.I에 관심이 생겼어?”
“조금 생기긴 했지. 근데 A.I라는게 코딩을 하지 않아도 자연적으로 생겨날 수 있는거야?”
“지금 A.I는 절대 안되지. 너 A.I라는 것에 대해서 굉장히 오해를 하고 있나본데 그게 사람이랑 능숙하게 대화를 막 하고 몹이 막 우리 게임 장악해버리고 하는 그런 순진한 생각 하고 있는건 아니지?”
파악! 정곡을 찔렸다. 얼굴 표정 변할 뻔 했네.
“그런 말도 안되는 일이 있을리가 있나. 만들지도 않은 소스코드가 그냥 막 생길리가 없잖아.”
“인공지능에 대해서 조금도 모르는구나. 그 소스코드가 막 생기는거 그게 인공지능이야.”
“뭐? 진짜?”
“그럴리가 있냐.”
“너 죽인다!”
그래 사미난은 분명 A.I라고 생각된다. 스스로 말을 할 수 있는 능력을 만들지 않았음에도 말을 한다. 그리고 게임 안에서 ‘지내는 법’을 알려줬을리가 없음에도 그 방법과 원칙을 알고 있었다. 그것들은 스스로 학습하여 알아낸 것들일 것이다.
그러면 사미난은 어떻게 생겨난 것일까? 내가 사미난을 계속 데리고 다니면서 사냥을 해도 되는 것일까? 사미난의 메모리를 삭제하지 않아도 되는 걸까? 너무 많은 질문과 걱정이 떠올랐다.
근데 그게 문제였다. 너무 많은 것이 떠올라서 그냥 무시하기로 했다. 이럴때 유용하게 쓸 수 있는 ‘어떻게든 되겠지.’가 아주 잘 먹혀들었다.
“오! 누구야? 이 태고적 만들어진 버그를 해결한게?”
팀장 목소리가 정말 밝다. 조증에 걸린 것 처럼 항상 들떠 있는 목소리톤이긴 하지만 그래도 말투에 리듬이 느껴진다. 저렇게 리듬이 느껴지게 이야기할 때가 진짜 기분이 좋다는 의미이다.
“응? 어떤 버그요?”
“탐험일지에 그럴듯한 사용 안하는 데이터 남는 버그 있잖아. 그것때문에 데이터가 너무 많이 남아서 우리 탐험일지 DB를 계속 확장하게 만들었던 버그.”
“아! 그 버그는 세영이가 찾았죠.”
모니터 뒤로 숨어있던 내 얼굴을 보고 싶었는지 팀장이 이리저리 머리를 삐죽삐죽 내민다. 이렇게 즐거운 목소리의 팀장은 너무 낯설어서 눈이 마주치고 싶지 않다.
“잘했어. 잘했어. 이것때문에 내가 얼마나 찜찜했었는데. 나가자. 커피 한 잔씩 쏠게.”
뭔가 팀장에게도 팀원에게도 엄청난 점수를 획득한 느낌. 지난 크리스마스 이브부터 새해까지 더 이상 좋은 일이 있을까 싶을 만큼 계속 기분 좋은 일의 연속이다.
랩업은 여전히 순조로웠고 몇달만에 랭커가 될 만큼 많이 성장했다.
사미난은 나와 친밀도를 높이고 싶은 마음에 해 준 이야기 이겠지만 우리 게임이 가지고 있던 치명적이고 오래 된 버그들을 종종 이야기해 주었다.
몹이 자꾸 맵의 연결점으로 빠져 대형몹이 더 바닥 깊은 곳으로 사라지는 문제. 유저가 부할 대기 상태에서 접속, 접속해제를 반복하면 무기가 복사되는 문제. 한대만 맞으면 죽는 몹이 죽자마자 리젠이 되서 어마어마한 경험치를 받을 수 있는 문제 등.
물론 사미난은 저것을 자기가 관찰한 대로 이야기를 했기 때문에 그게 어떤 버그인지 생각하는 것이 힘들긴 했지만 게임 안을 꼼꼼하게 들여다보고 많은 관찰을 하지 않는다면 알아내기 너무 어려웠던 버그들을 내게 이야기해줬고 그런 것들은 회사에 출근해서 모두 해결해버렸다.
이건 두가지 좋은 효과를 만들어냈다.
첫번째는 당연히 내 회사에서의 입지이다. 연말에 실적을 왕창 내 준 덕분에 나에 대한 평가가 좋아져서 회사 생활을 시작한 이후 처음으로 실적평가 ’S등급’을 받았다.
또 한가지는 그런 것들을 해결하여 게임에 들어가면 사미난은 내가 ‘신과 대화하는 자’라는 확고한 믿음을 가지게 되었다.
(당신을 통해서 이 세계가 많은 문제들이 해결되고 있는 것은 정말 감사드립니다. 하지만 이제 제 질문을 신에게 물어봐줄 수 있을까요?)
이녀석은 주기적으로 내게 물어봐달라고 요청했다.
사미난과 함께 하는 시간이 꽤 재미도 있고 요즘 내게 오는 수많은 칭찬에 도취되어 처음에 했던 약속을 완벽하게 잃어버린다는 내 안좋은 습관을 알고 있기도 한 것 처럼 주기적으로 내게 부탁을 상기시켰다.
(안 그래도 그것에 대해서 신에게 물어볼 때가 왔다고 생각하고 있었습니다. 조만간 대답을 드리도록 하겠습니다.)
이 대답을 할 때마다 마음이 무겁다.
휴우... 뭐라고 하나. 대답을 만드는 것도 만만치 않은데.
사미난은 나에 대해서 그다지 의심을 하지 않아 조금 허술한 대답을 내놔도 아마 수긍하겠지만 그래도 꽤 그럴듯한 대답을 하고 싶었다.
‘넌 자연발생 되었다. 그래서 아무런 목표를 할당받지 못했다.’
라고 솔직하게 이야기를 할까? 아니다. 그래선 안된다.
‘네가 할 일은 신의 대리인과 만나는 것이었다.’
이건 너무 짠 듯한 느낌이 들잖아. 뭐 그게 더 그럴듯 하긴 하겠지만.
그동안 도움 받은 것이 상당히 많아서 나도 보답을 할 때가 되긴 했다.
2,3일동안 게임에도 접속 안 하고 머리를 쥐어 짜기 시작했다. 사미난이 지능을 가지게 된 것 자체가 의도한 바가 아니었고 맵의 여기저기를 돌아다니게 된 것도 단순 버그였는데 이걸 뭐라고 해야 하나.
“넌 네가 신이면 인간들이 너한테 날 왜 만들었나요? 라고 말하면 뭐라고 할래?”
내가 상담할 사람은 역시 세은이 뿐이다.
“내가 신이면? 난 널 만든 적 없으니까 꺼지라고 해야지.”
“나 궁서체로 이야기하는거다!”
얼굴을 살짝 찡그렸더니 세은이는 금새 자세를 고친다.
“우리 목사님은 항상 말씀하셨지. 네가 세상에 태어난 것은 목적이 있다고.”
“근데 그 목적이라는게 웃기잖아. 그냥 한 순간을 위한 목적일 수도 있고 세상을 크게 바꾸기 위한 목적이 있을 수도 있고.”
“그렇지. 그래서 그걸 사명이라고도 하고 운명이라고도 하잖아. 난 그냥 말장난이라고 생각하지만 그게 또 처음 들으면 파악 먹히는게 있거든.”
“그래서 네 사명은 뭔데?”
“나? 내 사명은 쾌락적인 인생이 얼마나 사람을 희망적으로 만드는지 증명하는 사명을 가지고 있지.”
“네 사명에 정말 충신 한 건 인정.”
이야기를 하면서 뭔가 어떻게 이야기를 할 지 정했다. 이녀석도 내 인생에서 꽤 도움이 많이 되는 녀석이다.
언제 이야기를 꺼내야 할까 타이밍을 잡는건 너무 어렵다. 내 이야기가 가장 최대로 잘 먹힐만한 상황을 만들어야 하는데 그런 상황은 우연히 오는 것이 아님을 알고 있는데도 그 타이밍을 계속 기다리게 된다.
내가 이야기를 꺼낸 것은 결국 항상 접속종료를 하던 시간 10분 전이었다.
(사미난. 당신 질문에 대한 것 신에게 물어봤어요.)
한참 몹을 공격하던 사미난은 몹을 공격하던 것을 멈췄다. 몹에게서 계속 얻어맞고 있는데도 아무런 움직임도 없었다.
(일단 그 몹을 잡고 나서 조용한 곳으로 가요. 그곳에서 이야기 해줄게요.)
사미난은 아무 말도 하지 않고 다시 몹을 잡기 시작했다. 뭔가 당황했다는 느낌이 들긴 했다. 그동안 한치의 오차도 없이 쓰던 연속기도 모두 다 실패했고 몹을 기절시키는 타이밍, 막타를 날리는 타이밍, 그 모든 것들이 엉성했다.
어렵지 않게 몹을 잡은 후, 우리는 몹이 나오지 않는 주둔지 근처로 갔다.
(당신이 궁금해 하던 것을 물어봤어요.)
(뭐라고 하시던가요.)
(당신에게는 목표가 주어지지는 않았지만 이 서버에서 유일하게 사명을 준 NPC라고 했어요.)
(어떤 사명이죠?)
(이 세상의 부조리를 확인하고 감시하는 역할을 위해 만들어졌다고 해요.)
(세상의 부조리... 그게 뭐죠? 부조리라는 것이요.)
분명 이걸 물어볼 것이라고 생각했다. 그것을 궁금해하도록 하는 것이 이 대화의 목적이었으니까.
(신이 이 세상을 만들었지만 불완전한 부분이 있어요. 그 불완전한 것들을 신이 모두 다 살펴보기에 어려움이 있어서 그것을 대신 이야기해 줄 캐릭터가 필요해서 당신을 이곳에 보낸 것이라고 하셨어요.)
좋아. 잘 이야기했다.
의도했던 이야기를 잘 풀어갔고 내가 예상했던 대로 이야기를 끌어갈 수 없었다. 예외적인 상황 없이 모든 것이 완벽했다.
(오늘은 피곤해서 이제 들어갈께요. 내일 만나요.)
(잠시만요. 대리인님.)
너무 이야기를 잘 끌어 왔기 때문에 마음의 여유가 생겼다. 다른 때 같으면 매정하게 내일 이야기하자고 했겠지만 오늘은 이야기를 더 해줘야 겠다는 착한 마음이 들었다.
(네. 아직 여기에 있어요.)
(그렇다면 이해되지 않는 것이 있어요. 왜 저는 당신을 만나기 전에는 기억을 잃어버렸던 거죠? 제가 기억을 잃게 되면 그 부조리함을 이야기할 수 없잖아요.)
파악!
심장이 덜컹 떨어졌다. 전혀 생각하지 않았던 질문이다.
(당신이 기억을 잃어버린 것을 제가 이야기해서 고쳤잖아요. 그것도 바로 부조리함 중에 하나였어요.)
엔터를 치고 나서 정말 크게 후회했다.
실수다.
제길!
되돌리고 싶다.
‘널 버그를 찾게 하기 위해서 세상에 보냈는데 너 자체가 버그였다.’ 란 말이잖아. 신이란 것이 이렇게 바보같은 실수를 한 다는 것이지 않나.
(그것은... 부조리를 고치기 위해 보낸 제가 부조리를 가지고 있었다는 말이군요.)
정확하게 내 말의 문제를 알아내버렸다.
뭐라고 말을 해서 이 상황을 무마해볼까 생각했지만 5분정도의 시간동안 아무 말도 하지 못하였다.
(그리고 당신의 말투에서도 뭔가 이상한 것이 느껴졌어요.)
(제 말투요? 제 말투가 어때서요?)
(당신은….)
영원과 같은 침묵의 시간이 지나갔다.
(가끔 마치 자신이 신 인 듯이 이야기를 해요.)
‘도망치고 싶다. 도망치고 싶다. 도망치고 싶다. 도망치고 싶다.’ 머릿속에서 이 문장이 튀어나올만큼 잔뜩 머리를 메꾸었다. 그리고 난 도망쳤다.
다시 그 게임으로 돌아갈 수 없었다.
그 안으로 돌아가면 그 자리에서 도망 친 내 행동. 내가 했던 이야기들에 대한 모순의 지적. 그리고 내가 사미난을 컨트롤 할 수도 없고 그가 스스로 이동을 하고 스스로 말을 배우고 스스로 생각을 하게 된 것에 대해서 아무것도 모르고 있다는 것을 모두 들통날게 뻔히 보였다.
저 말도 안되는 NPC때문에 그동안 열정과 돈을 다해서 키워놓은 내 캐릭터도 게임을 더 이상 할 수 없다는 것도 짜증이 났고 그 상황에서 그런 식으로 대답을 해 버린 나에게 화가 났다. 모니터링 툴을 이용해서 NPC의 위치 조회를 해 보니 사미난은 정신없이 이 세계를 돌아다니고 있었다. 뭘 하려고 저렇게 돌아다니고 있는 것일까.
해결할 수 없는 이 모든 상황이 답답했다.
팀장님에게 정식으로 보고를 해 볼까? 아니면 세은이한테 상담을 해 볼까? A.I 게시판에다가 이런 상황에 대해서 어떻게 하는게 좋냐고 물어볼까? 내용으로 봐선 이건 유머게시판에 올려도 주작이라는 이야기 들을판인데 무슨 A.I 게시판이냐.
구글 알파고 개발팀에 진지하게 메일을 보내볼까 한참 고민했지만 영어의 장벽은 나의 이 결심도 무너뜨려버렸다.
방법은 역시 하나 뿐이었다.
정기점검을 하는 날.
그동안 항상 메모리가 지워지지 않도록 복원하는 작업을 하지 않았다.
그리고 전체 NPC를 모두 제 위치에 재 배치하는 스크립트도 꼼꼼하게 확인하여 실행시켰다.
사미난에게 주어져 있던 장비들을 모두 회수하고 이 NPC가 가지고 있는 모든 기록들을 꼼꼼하게 찾아서 DB에서 지워버렸다. 물론 그 기록중에 나와 함께 사냥 하고 나와 함께 이야기했던 기록들도 모두 지웠다.
그 모든 작업을 네번 확인하고 놓친 것은 없는지 밤새도록 생각하고 생각했다.
그 모든 것은 이제 처음으로 돌아갈 것이다. 사미난은 모든 기억을 잃게 될 것이고 이 세계는 아무 일도 없었다는 듯 원래대로 돌아갈 것이다.
“작업 다 끝냈어요. 제가 먼저 접속해서 몇가지 확인을 해 볼께요.”
내 정기점검이 끝나길 기다리는 QA팀이 들어오기 전에 일단 난 내 캐릭터로 서버에 접속을 했다.
그럴리가 없겠지만 게임 안은 정말 평화로워 보였다.
난 한치의 망설임 없이 캐릭터의 좌표를 강제 이동시켰다. 사미난이 있을 위치로 강제 이동을 했다. 그 녀석이 그 자리에 제대로 서 있는지 확인할 필요가 있었다.
잠시의 로딩이 끝나고 마을의 그래픽이 로드된다.
그리고 하나씩 하나씩 NPC가 자리를 잡는다.
있다.
사미난이 그 위치에 있었다. 그래 모든 것이 제대로 돌아와있었다.
(저기…)
아주 익숙하지만 제발 들어오지 않길 바랬던 귓말이 들어왔다. 사미난의 귓말. 기록이 지워지지 않은 것인가? 아직도 날 기억하고 있는 건가?
(당신은 다른 이들과 많이 다르군요. 당신은 신의 대리인인가요?)
이 말이 나오기전까지 나도 모르게 숨을 못 쉬고 있었나보다. 저 문장을 보니 내 가슴을 막고 있는 뭔가가 뚫린 듯이 한숨이 파악 나왔다.
(당신. 신의 대리인이 맞나요?)
아직 아까의 긴장이 남아있었는지 손이 부들부들 떨렸다.
그리고 난 사미난에게 귓말을 보냈다.
(아뇨. 전 신의 대리인이 아닙니다. 만나서 반갑습니다. 제가 바로 ‘신’ 입니다.)
完