디지털 화석 사냥꾼 · 2화
디지털 화석 사냥꾼, 마지막 백업
도윤은 밤을 넘겨도 작업실 불을 끄지 못했다. `mosslamp_doyoon`이라는 문자열 하나가 모니터 아래에 남아 있는 동안에는, 아무리 오래된 서버라도 남의 일처럼 다룰 수 없었다. 그 이름은 단순 계정명이 아니었다. 그 시절의 자기가 너무 가난해서 더 멋진 닉네임을 못 만들고, 책상 위 이끼 화분과 스탠드 조명을 합쳐 장난처럼 지은 이름이었다. 누구에게도 말한 적 없고, 나중에는 자신도 일부러 잊어버린 이름.
그는 에테르니아 07 서버 이미지를 다시 열었다. 이번엔 길드 홀 외곽이 아니라 운영 툴 흔적이 숨어 있는 내부 기록층으로 바로 들어갔다. 일반 플레이어라면 닿지 못하는 영역이었지만, 서비스 종료 직전 강제로 잘린 로그들은 오히려 그 길을 드러내고 있었다. 지워진 줄 알았던 데이터는 언제나 가장 지저분한 형태로 남았다. 끊긴 권한 테이블, 비정상 관리자 명령, 삭제 요청 직후 급하게 덮어쓴 흔적. 도윤에게는 그런 상처가 지도처럼 읽혔다.
길드 홀 지하에는 원래 없는 방이 하나 붙어 있었다. 겉보기에는 빈 저장고였지만, 문 개체 태그가 NPC 퀘스트 플래그와 GM 접근 키를 동시에 물고 있었다. 그는 복원 커서를 천천히 움직여 잠금층을 벗겼다. 문이 열리자 오래된 채팅 로그 조각들이 마치 먼지처럼 흩어지며 화면을 채웠다.
`[guild] rainmoth: 오늘 비 오면 분수 뒤 통로로 와`
`[whisper] mosslamp_doyoon -> rainmoth: 왜 또 거기야`
`[whisper] rainmoth -> mosslamp_doyoon: 네가 꼭 거기로 돌아오잖아`
도윤의 손끝이 미세하게 떨렸다. `rainmoth`. 서린이었다. 오래전 에테르니아 07에서 길드 공지를 제일 꼼꼼하게 정리하던 사람, 비가 오는 날이면 쓸데없이 맵 남쪽부터 돌아다니던 사람, 그리고 마지막 몇 달 동안은 접속 시간이 점점 짧아지던 사람. 도윤은 모니터를 응시한 채 한동안 움직이지 못했다. 그는 서린을 완전히 잊은 줄 알았다. 적어도 이름을 이렇게 읽는 순간 심장이 먼저 기억할 거라고는 생각하지 않았다.
화면 안쪽에서는 채팅만이 아니라 스크립트도 함께 열리고 있었다. 서린은 단순한 플레이어가 아니라, 그 시절 운영팀과 협력하던 커뮤니티 번역 봉사자였다. 그래서 일반 유저보다 조금 더 많은 것을 볼 수 있었다. 그녀가 남긴 코드는 세련되지 않았다. 퀘스트 대사 테이블에 개인 귓속말 문장을 숨기고, 날씨 플래그에 감정 신호를 걸고, 길드 홀 경로 탐색 루프에 특정 플레이어가 왔을 때만 풀리는 대기 조건을 섞어 놓은 수준이었다. 그런데 그래서 더 사람 같았다. 누군가 프로그래머가 아니라, 기다리는 사람이 자기 할 수 있는 만큼만 버틴 흔적처럼 보였다.
로그 맨 끝에는 익숙한 문장이 다시 나타났다.
`아직 로그아웃하지 마`
이번엔 그 아래에 짧은 해설이 붙어 있었다.
`system note: if mosslamp_doyoon disconnects before read, hold state`
도윤은 화면을 한참 내려 보다가 혼잣말처럼 중얼거렸다.
“너, 진짜 나 기다리고 있었구나.”
대답은 돌아오지 않았다. 아직 이건 사람처럼 말하는 존재가 아니라, 너무 오래 한 방향으로만 눌린 감정성 구조였으니까. 그래도 그는 알 수 있었다. 1화에서 보였던 길드 홀 주변의 집요한 움직임과, 비 오는 날마다 분수 뒤 통로로 돌아가던 루프는 전부 서린의 습관에서 잘려 나온 것이었다.
더 깊은 기록을 열기 위해서는 마지막 보안층을 벗겨야 했다. 문제는 현재 서버 보존본이 이미 반쯤 썩어 있었다는 점이었다. 자동 복구는 실패했고, 남은 방법은 하나뿐이었다. 같은 시기의 개인 클라이언트 백업을 복원 연료처럼 태워, 누락된 인덱스를 메우는 것.
시스템은 외부 저장소 목록을 띄웠다. 도윤에게 남아 있는 건 딱 한 개였다.
`mosslamp_local_backup_02`
에테르니아 07을 하던 마지막 시기의 개인 저장본. 스크린샷, 채팅 캐시, 미완료 퀘스트 데이터, 친구 목록, 단축키 세팅까지 섞여 있는 잡다한 뭉치였다. 언젠가 정말 용기 내면 열어 볼 수 있을 거라고 생각하고, 끝내 손대지 못한 상자 같은 파일.
그걸 태우면 이 안에 든 시간을 다시 완전한 모양으로는 못 볼 가능성이 높았다.
도윤은 의자 등받이에 기대 눈을 감았다. 서버를 감정하는 일은 늘 남의 결정을 분석하는 일이었다. 그런데 지금 화면은 아주 단순한 질문을 그에게 돌려주고 있었다. 과거를 보존하고 싶은가, 진실을 열고 싶은가.
그는 짧게 숨을 들이켠 뒤 백업 파일을 선택했다.
진행 막대가 올라가는 동안, 옛날 채팅 캐시가 조각조각 깨져 화면을 스쳤다. 여름 이벤트 분수대 사진. 서린이 올린 길드 공지. 쓸데없는 농담으로 가득한 귓속말 창. 그런데 복원률이 80퍼센트를 넘자 그 파편들이 하나둘 희미해지기 시작했다. 도윤은 그걸 보고도 멈추지 않았다. 이미 여기까지 와 버린 이상, 잃지 않고는 볼 수 없는 기록이라는 걸 알았기 때문이다.
마지막 인덱스가 맞물리자 숨겨진 로그층이 열렸다.
그 안에는 두 종류의 기록이 남아 있었다. 하나는 서린이 만든 대기 코드와 개인 기록. 다른 하나는 운영사 내부 명령 로그였다.
`unauthorized memorial district purge`
`community-built persistence objects flagged`
`emotional residue scripts scheduled for forced cleanup`
도윤은 이를 악물었다. 에테르니아 07의 마지막 날, 유저들은 길드 홀 지하와 분수 뒤 통로에 비공식 추모 구역을 만들고 있었다. 서비스가 닫혀도 완전히 사라지지 않게, 각자의 기록과 움직임 일부를 원시적인 스크립트 형태로 묶어 남기려 했던 것이다. 회사는 그걸 보안 위반이자 관리 불능 요소로 판단했고, 공식 종료 직전 강제로 정리하려 했다. 지금 남아 있는 코드 화석은 그 정리 작업에서 완전히 지워지지 못한 잔해였다.
서린은 그걸 알고 먼저 움직였다. 그녀가 쓴 로그는 짧고 급했다.
`도윤은 늦는다`
`남겨야 하는 건 도시가 아니라 약속`
`완전히 못 남기면 기다리는 습관이라도 남겨`
도윤은 손으로 입을 눌렀다. 그는 그날을 조금 떠올렸다. 에테르니아 종료 공지가 뜬 밤, 그는 접속하겠다고 말해 놓고 결국 들어오지 못했다. 현실의 일 때문이었다는 것만 기억나고, 왜 끝까지 접속하지 않았는지는 이미 흐려져 있었다. 그런데 지금 알게 된 사실 하나만으로도 충분했다. 서린은 그가 돌아오지 못한 자리에, 대화를 남기지 못하면 행동이라도 남기려 했다.
그리고 가장 깊은 층에서 봉인 좌표 하나가 튀어나왔다.
`E07 / south rain gate / archive chamber`
그 아래에는 마지막 로그가 붙어 있었다.
`문이 닫히기 전에 꼭 와. 네가 아니면 아무도 이걸 끝까지 읽지 않아.`
동시에 시스템 우측 상단에 작은 경고가 떴다.
`personal backup consumed`
도윤은 반사적으로 개인 보존함 폴더를 열었다. 방금까지 남아 있던 `mosslamp_local_backup_02` 파일이 회색 처리돼 있었다. 실행 불가. 복원 연료로 소모 완료. 그 시절을 자기가 가진 파일로 완전하게 되돌릴 마지막 기회가 사라진 것이다.
가슴이 비는 것 같은데도, 화면에서는 여전히 서린의 흔적이 그를 더 안쪽으로 불렀다.
이번엔 기다림이 아니라 요청처럼 보였다.
서버 깊숙한 봉인 구역. 아직 아무도 열지 못한 마지막 방.
도윤은 시계를 봤다. 현실의 새벽은 아직 멀었지만, 에테르니아 07 내부 시간축에서는 봉인이 오래 버티지 못하고 있었다. 운영사 정리 루틴의 마지막 찌꺼기가 그 방까지 덮치기 전에 가야 했다.
그는 백업을 잃은 자리 위에 손을 잠깐 올려 두었다. 그리고 아주 천천히, 봉인 좌표 열기 버튼을 눌렀다.