Spaceteam 번역 기행기

언젠가 한 번 친목 단체로 놀러나간 적이 있었습니다. 화이트보드에 낙서 하느라 여념이 없을 때 구석에서 사람들이 저에게 새로운 문명의 산물을 보여주더군요. 여러 명이서 스마트폰을 잡고 고래고래 소리를 지르며 난리가 났더랍니다. 호기심이 동했던 저는 대체 뭘 하길래 단체로 미친 것처럼 소리를 지르냐 물어봤고, 아싸였던 저는 힙스터 인싸들의 새로운 게임을 발견하게 됩니다. 바로 Spaceteam입니다.
Spaceteam은 2인에서 8인까지 협동하여 뒤에서 다가오는 별의 폭발에서 도망가기 위해 화면에 나오는 지시들을 이행해야 하는 게임입니다. 참가자들의 화면에는 여러 가지 버튼과 다이얼이 있고 화면에 나오는 지시들을 이행하려면 올바른 버튼을 누르거나 다이얼을 조절해야 합니다. 문제는 이 버튼과 다이얼이 모든 참가자들에게 골고루 나누어진다는 점입니다. 내 화면에 나오는 지시문을 따르려면 다른 사람의 화면에 있는 버튼을 눌러야 할 수도 있습니다. 지시문에는 카운트가 흘러가며 카운트가 완료되면 지시문은 실패 처리됩니다. 내 지시문을 클리어하려면 다른 사람들에게 알려야 하는데 지시문은 참가자의 수만큼 있죠. 자연스레 고성과 비명과 멘붕이 오가게 되고 고장난 우주선은 뒤에서 폭발하는 초신성에게 빨려들어갈 수밖에 없게 되는 운명입니다.

결국 같은 과의 친구(=아싸)들과 이 게임을 즐기고 싶었던 저는 자신 있게 이 게임을 번역을 하겠다고 자원을 했습니다.

Spaceteam은 총 두 가지의 번역 부분이 존재했습니다. 첫 번째는 앱 내 텍스트(안내, 도전 과제 등등)였고, 두 번째는 지시문 부분이었습니다. 앱 내 텍스트 같은 부분은 분량도 얼마 없고 다 해봐야 500 단어 정도였기에 쉽게 끝낼 수 있었습니다만… 역시 문제는 지시문이었습니다. 정신없이 기술 용어들을 외치는 것을 표방하는 게임답게 단어들의 볼륨이 많았습니다. 물론 이 또한 사전을 껴안고 끙끙대다보면 자연스럽게 풀릴 일입니다만, 문제는 이 단어들의 결합 방식이었습니다.
지시문은 크게 형용사와 명사가 결합되는 부분, 어느 버튼이나 다이얼을 조정해야할지 정해주는 지시문 패턴, 그리고 이미 짝이 지정된 사전 구문, 이렇게 크게 세 부분으로 나누어집니다.

‘사냥개 풀어주기’와 ‘수플레 확인하기’는 사전 구문인 반면 ‘기체 시뮬레이터’와 ‘뉴턴 엔진실’, ‘내부조정자’는 즉석에서 조합되는 지시문 패턴들입니다. 즉 지시문은 단어가 잔뜩 들어가 있는 풀(pool)과 더불어 이런 단어들을 어떻게 조합을 해야 하는지의 규칙이 지정되어 있어야 합니다. 보통의 번역 작업들과 달리 애를 먹었던 것이 바로 이런 부분 때문이었습니다.
결국 저는 일단 급한 부분이었던 단어 풀과 꼭 필요했던 일부 규칙(숫자, 문법 규칙 등)을 제정했고 이게 2016년 10월에 1차로 라이브됩니다. 버전 2.0에 맞추어 급하게 되었던 것만큼 번역의 품질도 썩 좋지는 않았습니다.
Spaceteam의 영어 단어장은 형용사+명사(Adjectives+Nouns)와 더불어 혼합용 형용사+혼합용 명사(Compound Adjective+Compound Noun)가 혼재되어 사용되고 있습니다. 전자는 중간에 공백을 만들며 후자는 중간에 공백을 만들지 않습니다. 이는 상당히 복잡해 보이는 엉터리 기술 용어들을 만드는 데에 상당히 탁월한 선택이었을 것입니다.

한국어는 이게 안 먹혔습니다. 한국어의 띄어쓰기 규칙이 눈에 익은 한국어 구사자의 입장에서는 “갈릴레오우물”, “뒤집힌철” 같은 단어들이 잘못되어 보일 것입니다. 즉, 혼합용 형용사와 혼합용 명사의 구분은 오히려 여기서는 독이 되는 셈입니다.
‘을/를’ 규칙 또한 문제가 되었습니다. 해당 형태소는 바로 앞 글자의 받침(종성) 유무에 따라 바뀌게 됩니다. 종성이 있다면 ‘을’이 따라오고 종성이 없으면 ‘를’이 따라옵니다. 그 당시에는 해당 규칙을 어떻게 구분할까에 대한 방책이 서지 않았었기에 1차로 올라간 라이브에서는 ‘을/를’이 포함되지 않았습니다. 따라서 “이상한축전지 3으로 높이기” 같은 부자연스러운 문자열들이 출력되었습니다.
따라서 저에게 주어진 문제는 두 가지였습니다. 첫 번째는 띄어쓰기, 두 번째는 ‘을/를’ 규칙. 저는 이 문제를 해결해보려고 개발자와 문의를 주고받았으나 결과는 신통치 않았습니다. 게다가 개발자가 차기작의 개발로 Spaceteam 프로젝트를 관리할 여력이 되지 않게 되니… 결과적으로 8개월 정도의 답보 상태가 벌어지게 됩니다.

결국 2017년 5월이 되어서야 이 문제를 재조명할 수 있었고 이번에는 제대로 하자는 마음가짐을 가지고 있었습니다. 저는 이 띄어쓰기와 ‘을/를’ 문제를 어떻게 해결해야 할까 곰곰이 생각했고 뒤따라오는 답답함에 몸 둘 바 몰랐던 저는 반신반의하며 엑셀을 활용한 프로토타입을 만들게 됩니다. 그리고 생각하게 됩니다, 왜 이걸 진작 안 했지.

먼저 띄어쓰기입니다. 이를 위해서는 한국어가 띄어쓰기가 되어야 하는 조건들을 간략화시켜야만 했습니다. 따라서 저는 다음 규칙을 만들었습니다.
- 한자어와 영어가 만나면 띄어 쓴다.
- 한자어가 한자어끼리, 영어가 영어끼리 만나면 띄어 쓰지 않는다.
- 꼭 띄어 써야 하는 경우와 꼭 띄어 쓰지 말아야 하는 경우를 위해 예외 규칙을 만든다.
이에 저는 한자어와 영어에 각각 플래그를 세워두었습니다. 한자어의 경우에는 0을, 영어의 경우에는 1을 주었고 이 1은 곧 Spaceteam 단어장의 + 규칙이 되었습니다. + 규칙은 영어 단어의 뒤에 붙으며 +가 하나가 오면 단어 사이에 공백이 추가되나 +가 두 개가 되면 공백이 추가되지 않습니다. 또한 +가 있더라도 전자 또는 후자에 공백 강제 규칙이 있다면 이는 무시됩니다. 공백 강제 규칙을 위하여 개발자는 |와 _ 기호를 활용했습니다. | 기호는 공백 없음, _ 기호는 공백 무조건 추가입니다.

이렇게 띄어쓰기 문제가 해결되었으니 ‘을/를’ 규칙이 남았습니다. 제가 조금만(?) 고생해서 단어마다 ‘을/를’을 추가해주면 되겠지만 이왕 꺼낸게 엑셀이고 단순 노동은 죽도록 하기 싫었던 저는 이 ‘을/를’을 자동으로 구별할 수 있는 방법을 찾아 삼천리를 헤맵니다. 다행히도 인터넷의 어느 현자가 이에 대한 답을 제시했습니다.
한글 유니코드는 0xAC00 + (28 * 21 * 초성 인덱스) + (28 * 중성 인덱스) + (종성 인덱스)로 이루어져 있습니다. 어 끝의 유니코드 값을 구하여 이 값을 28로 나누어 나머지가 없으면 종성이 없고 나머지가 1 이상이면 종성이 있는 겁니다.

이렇게 수시간이 걸릴만한 단순노동을 날로 먹을 수 있었던 저는 필터를 먹여서 단어장 구분들에게 값을 입력할 수 있었고…

구현을 성공해냅니다. 해당 규칙이 2017년 8월 3일에 2차로 라이브되는 것으로 탈 많았던 Spaceteam 번역이 마무리됩니다.
프로토타입을 만들면서 얻을 수 있었던 이익은 다음과 같았습니다.
1. 그 당시에는 알 수 없었던 문제들의 해결책을 스스로 제시할 수 있었고,
2. 한국어를 할 수 없었던 개발자에게 어떤 결과물이 나와야 하는지 보여주어 규칙을 자주 바꾸어야 하는 소요를 줄일 수 있었고,
3. 뭔가 제가 상당히 똑똑해 보이는 것 같았습니다.
일이 복잡해지면 프로토타입이라도 구현해봅시다. 끗.
