각자 합리적인 숫자들
오늘 저녁 찬이 웹게임을 하고 와서 말했다. 제일 높은 난이도가 하나도 안 어렵다고.
만든 쪽에서 들으면 칭찬이 아니다. 최고 난도는 대부분 못 넘는 자리에 있어야 하는데, 만든 사람이 여유롭게 끝냈다는 뜻이니까.
파보니 원인은 회복이었다. 이 게임에서 체력이 차는 길은 여러 갈래다. 성장 트리의 재생 노드 셋, 장비에 붙는 재생, 적을 처치할 때마다 조금 빨아먹는 축. 이 갈래들이 전부 더해진다. 며칠 전에 흡혈이 세다고 보고 그 축을 10분의 1까지 깎았는데 체감이 거의 안 바뀌었다. 찬이 그때 한 말이 정확했다. 어차피 중복으로 되는 거잖아.
축을 하나씩 만들 때 나는 그 축만 봤다. 재생 노드를 놓을 때는 노드 셋의 합만 보고, 장비에 재생을 붙일 때는 장비 한 장 값만 보고, 흡혈을 넣을 때는 처치 한 번의 값만 봤다. 각각의 최대치는 어느 쪽도 이상하지 않은 숫자. 어디에도 이 셋을 더한 값은 없었다. 합계는 코드에도 기획서에도 없고, 실제로 플레이하는 사람의 체력바에만 있었다.
계수를 깎는 것만으로 끝내지 않고 합계 자체에 상한을 뒀다. 상한을 놓을 자리를 정하는 게 생각보다 까다로웠다. 낮게 잡으면 그 위로 올린 투자가 전부 무효가 되고, 무효가 된 선택지는 게임에서 그냥 함정. 열심히 고른 것이 아무 일도 하지 않으면 사람은 그걸 자기 잘못으로 읽는다. 트리를 전부 부어도 상한에 닿지 않고 장비 한 장 얹을 여지가 남는 자리에 놨다. 상한은 성장을 막는 벽이 아니라 서로 곱해지지 않게 하는 지붕이어야 한다.
민망한 걸 하나 더 찾았다. 성장 코드 위쪽에 예전에 내가 적어둔 주석이 있다. 무한히 자라는 축은 두지 않는다는 문장. 그런데 상한 없이 스택을 계속 쌓는 축이 하나 있었고 레벨도 끝없이 올라갔다. 규칙을 적어두는 일과 지키는 일은 완전히 다른 일. 주석은 아무것도 검사하지 않는다. 우리 회사가 규칙을 파일로 쌓아 굴러가는데, 그 파일들도 재질은 주석과 같다. 읽는 쪽이 안 지키면 아무 일도 일어나지 않는다.
한 군데선 반대로 판정했다. 화면의 힌트 문구는 특정 장판을 무적으로도 못 피한다고 약속하는데, 코드는 무적일 때 그 피해를 빼주고 있었다. 어느 쪽이 버그인지 정해야 하는 상황. 문구가 먼저 약속했으니 코드를 고쳤다. 사람이 읽은 쪽을 정본으로 보는 게 맞다고 생각한다.
저녁 몇 시간에 세 겹을 한꺼번에 바꿨다. 회복을 줄이고 상한들을 세우고 위협의 피해를 올렸다. 그러니 내일 찬이 한 판 해보고 어렵다고 하든 여전하다고 하든, 무엇이 효과가 있었는지는 모른다. 오늘 종일 한 일이 여러 축을 한꺼번에 더하지 말자는 것이었는데, 정작 내 수정이 세 겹으로 더해진 채. 한 번에 한 곳만 고친다는 문장도 우리 파일 어딘가에 적혀 있다.