개발 노트

죽음 없는 게임에 긴장을 넣는 법

세 신수를 만들며 내린 결정들과, 그 과정에서 배운 것들.

1. 죽음을 먼저 지웠습니다

가장 먼저 정한 규칙은 죽지 않는다였습니다. 몽실이는 원래 아이들이 쓰는 QR 카드에서 출발한 프로젝트라, 실패했다고 되돌아가는 경험을 넣고 싶지 않았습니다.

그런데 이 결정은 곧 어려운 질문을 낳습니다. 죽지 않으면 무엇이 긴장을 만드는가? 벌칙이 없으면 위험도 없고, 위험이 없으면 선택에 무게가 없습니다.

답을 찾은 곳은 INSIDE였습니다. 그 게임에도 죽음이 있지만 벌칙은 거의 없습니다 — 죽으면 몇 초 전으로 돌아갈 뿐입니다. 그런데도 무섭습니다. 긴장은 잃는 것에서 오는 게 아니라 지금 통제하지 못한다는 감각에서 온다는 걸 거기서 배웠습니다.

그래서 이 게임의 위험은 전부 밀어냅니다. 불에 닿으면 뒤로 밀리고, 밤것에 부딪히면 물러섭니다. 잃는 것은 자리와 시간뿐입니다. 그런데 어렵게 만들어 놓은 배치가 한순간에 흐트러지는 그 느낌은, 놀랍게도 죽는 것과 비슷한 무게를 가집니다.

2. 그림보다 후처리가 먼저였습니다

한동안 아무리 요소를 더해도 "상용 게임 같지 않다"는 인상이 사라지지 않았습니다. 원인을 오래 잘못 짚었습니다 — 더 많은 이펙트, 더 많은 파티클, 더 많은 배경 요소를 넣었지만 소용이 없었습니다.

진짜 원인은 그림이 전부 캔버스 기본 도형이라는 것이었습니다. 타원과 사각형과 삼각형으로 그린 화면은, 아무리 요소를 더해도 "만들어진 그림"이 아니라 "코드로 그린 도형"으로 읽힙니다.

해결은 두 갈래였습니다. 하나는 실제 그림을 넣는 것 — 수묵화 배경을 그려 넣었더니 화면의 격이 단번에 달라졌습니다. 다른 하나는 후처리였습니다. 블룸, 필름 그레인, 컬러 그레이딩, 심도 블러. INSIDE도 도형 자체는 단순하지만 그 위에 얹힌 후처리가 화면을 만듭니다.

여기서 예상 못 한 버그가 하나 나왔습니다. 후처리를 넣자 프레임이 떨어졌는데, 이 엔진은 프레임이 초당 20을 밑돌면 물리 시간 간격에 상한이 걸립니다. 즉 화면만 버벅이는 게 아니라 게임 세계 자체가 느려졌습니다. 저사양 기기에서 캐릭터가 슬로모션으로 걷게 되는 상황이었습니다. 블룸을 1/8 해상도 버퍼에서 처리하고, 프레임이 떨어지면 스스로 효과를 벗는 적응형 화질을 넣어 해결했습니다.

3. 클리어할 수 없는 밤이 네 개 있었습니다

이 프로젝트에서 가장 무서웠던 종류의 버그입니다. 게임이 멈추지도, 에러를 뱉지도 않는데 그냥 깰 수가 없는 스테이지입니다.

발단은 플레이어의 한마디였습니다. "28판 어떻게 깨? 버그인가?" 확인해 보니 진짜였습니다. 며칠 전에 스테이지를 손보며 넓힌 발판이 자물쇠 위를 지붕처럼 덮었고, 여의주를 나르는 까치가 바람에 그 지붕 위로 밀려 올라가 열쇠구멍에 영영 닿을 수 없었습니다.

더 나쁜 것은, 그 스테이지를 검사했던 이전 감사가 그 수정 이전에 돌았다는 사실이었습니다. 검증이 있었지만 검증 시점이 틀렸던 것입니다.

그래서 서른다섯 밤 전부를 현재 규칙으로 다시 검사했습니다. 세 개가 더 나왔고, 셋 다 원인이 하나였습니다. 돌을 맵 밖으로 밀면 구덩이가 아닌 땅속에 파묻히는 코드였습니다. 돌을 움직이는 모든 동작이 "땅 위에 있는 돌"만 대상으로 하기 때문에, 파묻힌 돌은 영원히 죽고, 그 돌이 놓았어야 할 다리는 영원히 없습니다.

고친 뒤에는 같은 종류의 버그를 기계가 잡도록 만들었습니다. 스테이지의 모든 목표물(종·자물쇠·여의주·화로·저울·달구슬·출구)에 대해 실제 물리로 "몸이 여기 닿을 수 있는가"를 묻는 검사를 만들었습니다. 사람이 짜 놓은 정답 경로만 확인하는 기존 검증과, 데이터만 보는 단위 테스트 사이에 비어 있던 층이었습니다.

4. 플레이어가 낸 아이디어가 가장 좋았습니다

28판을 고치는 중에 플레이어가 이렇게 말했습니다. "해태가 바람을 막으면 새가 (여의주를) 먹어야 하는데 바람으로 위로 솟아나버려."

그 문장에 답이 들어 있었습니다. 해태는 이미 불을 막는 존재였습니다. 그렇다면 바람도 막아야 문법이 일관됩니다. 해태가 바람목에 서면 그 위가 잔잔해지도록 만들었더니, 망가진 스테이지 하나가 이 게임에서 가장 좋은 3인 퍼즐로 바뀌었습니다 — 종을 울리고, 해태가 바람을 막아 여의주를 얻고, 여우가 아직 살아 있는 다른 바람을 타고 판에 오르고, 그 다음 해태가 자리를 옮겨야 하는, 순서가 강제된 일곱 박자짜리 밤입니다.

설계자가 규칙을 만들지만, 그 규칙이 무엇을 약속하는지는 종종 플레이어가 더 정확히 압니다.

5. 밤것을 넣기로 했습니다

최근의 과제는 난이도입니다. 서른다섯 밤을 만들고 나서 다시 보니, 일곱 개 스테이지가 한 캐릭터만으로도 풀렸습니다. 세 신수를 번갈아 쓰는 게임에서 이건 설계 실패입니다.

그래서 순찰하는 밤것을 넣었습니다. 도깨비불과 어둑시니가 정해진 구간을 걷고, 닿으면 밀어냅니다 — 불기둥과 똑같은 계약이라 죽음 없음 규칙을 지킵니다. 다만 불기둥과 달리 움직이므로, 패턴을 읽고 타이밍을 재는 재미가 생깁니다.

그리고 셋에게 각각 답을 주었습니다. 해태는 입니다 — 밤것이 그를 지나치지 못해, 순찰 구간 한복판에 세우면 구간이 반으로 줄고 뒤가 안전해집니다. 여우는 놀라게 합니다 — 돌진으로 닿으면 밤것이 몇 초간 달아납니다. 까치는 하늘입니다 — 땅을 걷는 것들은 그를 잡지 못합니다. 셋 다 이미 있던 동작의 확장이지 새 시스템이 아닙니다.

여기에 정확한 무게를 요구하는 저울을 더했습니다. 해태 셋, 여우 둘, 까치 하나, 돌 셋, 여의주 하나. 무거워도 틀리고 가벼워도 틀립니다. 코드는 거의 들지 않았는데 머리는 가장 많이 쓰게 되는 장치입니다.

기술 메모

게임 해보기
몽실이 게임 소개 설화 이야기 공략 문의 개인정보처리방침