📖 폴리스너츠 한글화 작업 후기 — 한 사람의 버킷 리스트가 현실이 되어가는 넉 달의 기록. ① 글자를 가르치다 · ② 검은 화면과의 긴 싸움 · ③ 다 갈아엎고, 전부 새로
지난 이야기: 게임에게 한글을 가르쳐 첫 글자를 띄우고, 메뉴를 한글화했다. 그리고 스토리 번역에서 가장 끈질긴 적 — 한국어가 화면에서 ‘툭 잘려나가는’ 문제 — 와 마주쳤다.
4장 — 상자의 비밀, 그리고 빈방을 찾아서 (3월 말~4월)
잘림 문제를 정면으로 풀기 위해, 게임이 대사를 ‘어디서 찾아 읽는지’ 그 내부 동작을 끝까지 파고들었다.
게임 안에는 “몇 번째 글자부터 읽어라"라고 적힌 작은 이정표 같은 숫자가 있었다. 이 숫자의 계산 규칙을 완전히 풀어내자 — 1,029개의 대사 전부에서 100% 들어맞았을 때의 기분이란! — 비로소 길이 보였다. 대사를 원래 자리에 욱여넣는 대신, 파일의 빈 공간이나 끝자락에 길게 적어두고, 이정표만 그쪽으로 돌려놓으면 되지 않을까.
말하자면, 좁은 방에 억지로 짐을 우겨넣는 대신, 복도 끝에 빈방을 만들어 긴 짐을 옮겨두고, 문 앞에 “이쪽으로 오세요” 푯말을 붙이는 발상이었다.
이 방법을 처음 시험한 무대가, 게임 초반 조나단의 사무실 책장 장면이었다. 책장 위에 놓인 추리소설 한 권과, 재떨이의 담배. 그걸 살펴볼 때 뜨는 두 줄짜리 평범한 대사 — 사건과는 아무 상관도 없는, 그저 분위기를 위한 소품 같은 말들. 그런데 하필 이 두 대사가 게임 내부적으로 같은 출발점을 공유하며 줄줄이 이어 읽히는 구조라, 길이를 잘못 건드리면 단번에 망가지는 까다로운 자리였다. 그래서 이 ‘추리소설’과 ‘담배’가, 그날부터 모든 실험의 시험대가 되었다. 새 빌드를 올릴 때마다 가장 먼저 이 장면을 열어, 추리소설 대사가 멀쩡히 뜨는지, 그 뒤로 담배 대사가 제대로 이어지는지를 확인했다. 별것 아닌 두 줄이, 어느새 작업 내내 곁을 지키는 동료가 되어 있었다.
처음 푯말을 옮겨 붙였을 때, 긴 한국어 대사가 잘리지 않고 온전히 떴고 — 추리소설도, 담배도 멀쩡했고 — 게임도 끝까지 진행됐다. 작은 승리였다.
하지만 이 방법에도 한계가 있었다. 이정표가 가리킬 수 있는 거리에 상한이 있어서, 긴 대사 전부를 구제하진 못했다. 더 근본적인 해법을 찾아 게임의 심장부 — 프로그램 코드 자체 — 로 들어가야 했다.
5장 — 검은 화면과의 긴 싸움 (4월~5월)
여기서부터는, 솔직히 말해 실패의 기록이다.
게임의 동작 한계를 아예 늘려버리려고 프로그램 코드를 직접 건드렸다. 한 글자만 잘못 바꿔도 결과는 가차 없었다. 검은 화면. 켜자마자 아무것도 뜨지 않는, 그 막막한 검정. 코드를 이리 바꾸고 저리 바꾸며 빌드를 돌릴 때마다, 화면은 몇 번이고 검게 죽었다.
이정표를 늘려도 검은 화면, 코드를 다른 자리로 옮겨도 검은 화면. 어떤 날은 열 번을 시도해 열 번 다 검었다. 검은 화면을 뚫고 게임이 켜질 때면, 어김없이 가장 먼저 그 책장 장면부터 열었다. 추리소설이 빈칸으로 나오면 실패, 담배로 매끄럽게 이어지면 성공. 그 두 줄이, 성패를 가르는 판정관이었다.
그러던 중, 두 달 가까이 나를 괴롭힌 정체불명의 현상이 있었다. 어떤 빌드에서는 게임이 대사를 찾을 때 주소가 두 개로 나뉘어 보였다. 분명 한 곳을 가리켜야 할 숫자가, 어떨 땐 이쪽을 어떨 땐 저쪽을 가리키는 듯했다. 5월 내내 이 ‘두 개의 주소’를 전제로 코드를 짰고, 어떤 빌드는 우연히 동작하고 어떤 빌드는 추리소설이 빈칸으로 떴다.
진짜 원인은 어이없을 만큼 단순했다. 주소가 두 개였던 게 아니라, 게임을 돌리던 에뮬레이터가 어긋난 주소를 슬쩍 보정해서 보여준 탓에 두 개처럼 보였을 뿐이었다. 한마디로 착시였다. 진범은 따로 있었다 — 데이터를 읽는 위치 계산에서 한 칸씩 어긋나는, 정렬 오류 하나. 게임은 짝수 자리에서 읽어야 할 표를 홀수 자리에서 읽으며 바로 옆 칸의 엉뚱한 값을 집어오고 있었고, 그래서 추리소설을 펼치면 빈칸이, 담배 자리에선 추리소설 대사가 튀어나왔던 것이다. 증상의 아귀가 완벽하게 들어맞았다. 숫자 하나(이정표 계산에 쓰는 기준값)를 바로잡자, 두 달간의 유령은 거짓말처럼 사라졌다. 그리고 그제야, 그동안 실패했던 수많은 빌드의 진짜 사인(死因)이 전부 이 하나였음을 알았다. 엉뚱한 곳을 의심하며 흘려보낸 두 달이었지만, 그 끝에 마침내 범인을 잡았다.
그 사이사이, “이건 된다!” 싶은 순간들이 가뭄의 단비처럼 끼어들어 멈추지 않게 붙들어주었다. 게임의 화면 버퍼를 넓히는 데 성공해 잘렸던 대사 일부가 살아났을 때, 코드의 어떤 함정이 어디 있는지 비로소 알아냈을 때.
이 시기의 진짜 성과는, 어쩌면 “이 길은 막혀 있다"는 사실을 확실히 알아낸 것일지도 모른다. 게임이 대사를 불러오는 진짜 관문이 어디에 하드코딩되어 있는지, 어디를 건드리면 안 되는지. 수많은 검은 화면이 하나씩 가르쳐준 지도였다. 헛수고처럼 보였던 실패들이, 결국 다음 단계의 길잡이가 되었다.
이 길고 외로운 구간을 견디게 한 것은 결국 처음의 그 마음이었다. 대사집을 넘기던 소년에게 했던 약속. 검은 화면 앞에서도, 그 약속은 꺼지지 않았다.
← 이전 편 ① 글자를 가르치다 | 다음 편 → ③ 다 갈아엎고, 전부 새로