빈칸을 메우는 버릇
"이 게임의 전투는 어떻게 계산됐을까?" 라고 물으면 그럴듯한 공식이 돌아온다. 문제는 그 답이 원본에서 나온 것인지, 비슷한 시기 게임들에서 유추한 것인지, 그냥 자연스러워서 지어낸 것인지가 구분되지 않는다는 데 있다.
한 달쯤 지나면 나도 구분을 못 한다. 그때부터는 내가 지어낸 것을 원본이라고 믿는 상태가 된다. 복원 작업이 망가지는 것은 대개 이 지점이다.
근거를 세 등급으로 나눈다
| 등급 | 뜻 | 표시 |
|---|---|---|
| 확인 | 원본 파일이나 화면에서 직접 본 것 | // 확인: 원본 파일 0x1A40 |
| 추정 | 기억이나 정황으로 그럴 것 같다고 본 것 | // 추정: 화면 기록으로는 3~5 사이 |
| 새로 정함 | 원본과 상관없이 내가 정한 것 | // 새로 정함: 원본에 없던 기능 |
이 표시를 코드 안에 주석으로 남긴다. 별도 문서로 관리하면 반드시 어긋난다. 값 바로 옆에 붙어 있어야 값을 고칠 때 같이 눈에 들어온다.
"원본에서 확인된 값만 '확인'으로 적고, 나머지는 전부 '추정' 또는 '새로 정함'으로 표시해라. 어느 쪽인지 모르겠으면 모르겠다고 적어라."
이 한 줄이 없으면 전부 확인된 사실처럼 적힌다. 악의가 아니라 그렇게 쓰는 것이 자연스러운 문장이기 때문이다.
"복원"과 "내 판"이 갈리는 지점
원본의 지도는 좁았다. 다시 만들면서 유라시아 전체로 넓혔고, 가로세로 480 × 310 칸이 됐다. 칸이 많아지니 칸 번호를 담는 자리도 늘려야 해서 3바이트로 바꿨다.
이 순간 프로젝트의 성격이 바뀐다. 더 이상 복원이 아니라 내 판이다. 나쁜 일이 아니다. 다만 그 경계를 스스로 알고 있어야 "원본은 이랬나?" 하는 질문에 흔들리지 않는다.
무엇을 바꿨는지가 아니라 왜 바꿨는지를 적는다. "지도를 넓혔다"가 아니라 "원본 지도로는 내가 하고 싶은 시나리오가 안 나와서 넓혔다".
반년 뒤에 "이걸 왜 이렇게 했지?" 하고 되돌리려 할 때, 이유가 적혀 있으면 되돌릴지 말지를 30초에 판단할 수 있다. 안 적혀 있으면 하루를 쓴다.
손으로 고친 것은 반드시 따로 둔다
지도를 자동으로 만들어 두고, 마음에 안 드는 곳은 손으로 고쳤다. 그리고 지도를 다시 만들 때마다 손으로 고친 것이 전부 날아갔다.
해결은 단순했다. 손으로 고친 내용만 따로 edits.json 이라는 파일에 모으고,
지도를 다시 만든 뒤 그 파일을 다시 덮어씌우게 했다.
자동으로 만드는 것과 사람이 고친 것을 섞지 않는다 — 이 원칙 하나다.
저장 형식도 나중을 생각해서
저장 파일은 .chn 하나로 보이지만 안은 여러 조각으로 나뉘어 있다 —
설명(meta) · 현재 상태(state) · 지도 · 축소 지도.
한 덩어리로 만들지 않은 이유는 하나다.
나중에 한 조각만 바꿔도 되게 하려고. 지도 형식이 바뀌어도 나머지는 그대로 읽을 수 있고, 문제가 생겼을 때 어느 조각이 깨졌는지 바로 안다.
저장 형식은 반드시 한 번은 바뀐다. 설명 조각에 "형식 1" 같은 번호를 처음부터 적어 두면, 나중에 옛 저장 파일을 만났을 때 무엇을 해야 하는지 알 수 있다. 번호가 없으면 읽어 보고 짐작하는 수밖에 없다. (이 번호 때문에 저장이 통째로 깨진 이야기는 L2·06 에 있다)
복원 작업에 쓸 만한 요청 문구
이 값들을 정리해 줘. 표로.
각 줄마다 근거를 반드시 표시:
· 확인 — 내가 준 파일이나 캡처에서 직접 보이는 것
· 추정 — 정황으로 그럴 것 같은 것 (무엇을 근거로 추정했는지 같이)
· 모름 — 판단할 근거가 없는 것
"모름"을 비워 두거나 그럴듯한 값으로 채우지 마.
모르는 칸이 몇 개인지 마지막에 세어 줘.
마지막 줄이 실용적이다. 모르는 칸의 개수가 줄어드는 것이 복원 작업의 진척도이기 때문이다.
정리 — 세 줄
- 근거를 확인 · 추정 · 새로 정함으로 나누고 값 옆에 붙여 둔다.
- 자동으로 만드는 것과 사람이 손으로 고친 것을 섞지 않는다.
- "복원"에서 "내 판"으로 넘어가는 지점을 이유와 함께 적어 둔다.
- 복원하거나 따라 만들고 있는 것(옛 게임, 옛 양식, 남의 설계)에서 값 다섯 개를 고른다.
- 이 편의 요청 문구로 표를 받는다 — 줄마다 확인 · 추정 · 모름.
- "확인" 으로 표시된 것 하나를 골라 근거로 댄 파일이나 캡처에서 직접 찾아본다.
만들고 있는 것이 없다면 좋아하는 옛 게임 하나의 "공격력 계산법" 을 물어보고 같은 표를 받아 본다. 확인이 몇 개 나오는지가 곧 답이다.
근거 세 등급은?
확인(원본에서 직접 봄) · 추정(정황) · 새로 정함(원본과 상관없이 내가 정함).
등급 표시를 별도 문서가 아니라 코드 주석에 두는 이유는?
값 바로 옆에 있어야 값을 고칠 때 같이 눈에 들어온다. 따로 두면 반드시 어긋난다.
자동으로 만든 지도를 손으로 고쳤더니 다시 만들 때마다 날아갔다. 해법은?
손으로 고친 것만 따로 모아 두고(edits.json) 다시 만든 뒤 덮어씌운다. 자동과 수작업을 섞지 않는다.
다음 편에서는 혼자 서비스 하나를 통째로 맡아 만들 때 — 무엇을 맡기고 무엇을 직접 볼 것인가를 본다.