한 번 더!는 단추 둘로 하는 게임입니다. 보물 상자 앞에서 지금 열지, 한 번 더 누를지. 한 번 더를 누르면 적힌 성공률로 상자가 일반에서 희귀, 서사, 전설로 한 등급 오르고, 실패하면 상자에 걸린 함정이 터지면서 보상이 깨집니다. 지하 5층까지 내려가 문지기를 넘고 금화를 들고 나오면 그 금화가 점수입니다.

이런 게임은 한 가지만 틀려도 끝납니다. 늘 끝까지 미는 것이 최선이면 단추는 하나로 충분하고, 늘 바로 여는 것이 최선이면 게임을 할 이유가 없습니다. 그래서 화면을 만들기 전에 목표부터 적었습니다. 두 극단이 모두 최선보다 확실히 낮아야 하고, 화면에 보이는 정보를 읽는 사람이 정해진 습관대로 누르는 사람보다 나아야 한다. 이걸 눈으로는 판단할 수 없습니다. 한 판 해 보고 "적당하다" 고 느끼는 건 표본 하나이고, 함정이 두 번 연달아 터졌는지로 결론이 뒤집힙니다.

화면보다 규칙을 먼저 떼어 냈다

규칙은 화면과 3D 를 전혀 모르는 모듈 하나에 모았습니다. 브라우저의 게임도, 수천 판을 돌리는 시뮬레이터도 같은 파일을 씁니다. 시뮬레이터가 규칙을 제 손으로 다시 짜면 게임을 고쳐도 보고서가 안 바뀌는 일이 생기기 때문입니다.

몇 가지는 처음부터 규칙에 박아 두었습니다.

  • 성공률은 정수 퍼센트이고, 화면에 적힌 숫자와 판정에 쓰는 숫자가 같습니다. 0부터 99까지 굴린 수가 성공률보다 작으면 성공입니다. 반올림도 숨은 보정도 없습니다.
  • 보상과 실패 대가는 상자가 나타날 때 미리 굴려 둡니다. 보상 사다리 네 칸에 적힌 금화와 물약과 동료 카드를 그대로 받고, 실패하면 적힌 피해를 그대로 받습니다.
  • 방마다 난수 씨앗을 따로 둡니다. 판 씨앗과 층과 방 번호로 씨앗을 만들어, 전략이 달라도 같은 판이면 같은 상자와 같은 함정을 만납니다. 전략을 짝지어 비교할 수 있어 잡음이 크게 줄어듭니다.
  • 전략은 화면에 보이는 것만 봅니다. 규칙 모듈이 화면용 정보(칸마다 성공률, 실패 피해, 파편 금화)를 내주고, 전략도 화면도 그것만 읽습니다.

휴대폰 세로 화면과 그 아래쪽을 확대한 그림. 왼쪽 휴대폰에는 파란 희귀 상자가 있고 위에 RARE 글자와 희귀 상자 명패가, 아래에 가시 함정과 녹슨 자물쇠 +8%p 배지, 등급 네 칸짜리 보상 사다리, 열기와 한 번 더 단추가 보인다. 오른쪽 확대 그림에서 사다리 칸은 일반 금화 9, 희귀 금화 19와 물약 +5, 서사 금화 42와 물약 +7과 물방울 거북, 전설 금화 97과 물약 +10과 불꽃 여우이고, 칸 사이에 66%와 48%가 적혀 있다. 한 번 더 단추에는 66%, 성공하면 금화 42와 물약 +7과 물방울 거북, 실패하면 가시 피해 7과 보상 깨짐이 적혀 있다

전략 일곱과 합격 기준

비교한 전략은 이렇습니다. 문지기와 모닥불에서 하는 선택은 모든 전략이 같은 규칙을 써서, 점수 차이가 상자 앞의 선택에서만 나오게 했습니다.

전략상자 앞에서 하는 일
늘 바로 열기한 번도 안 누른다
늘 희귀까지 / 늘 서사까지정해 둔 등급까지만 민다
늘 전설까지더 못 누를 때까지 민다
반반 무작위누를 때마다 동전을 던진다
체력 보고 문턱체력이 넉넉하면 서사까지, 반쯤이면 희귀까지, 낮으면 바로 연다
보이는 정보로 계산사다리 네 칸과 성공률, 실패 피해, 이번 층 문지기 피해를 읽고 기댓값이 큰 쪽을 고른다

합격 기준은 사람이 표를 읽고 판단하지 않게 코드로 적었고, 하나라도 어기면 시뮬레이터가 실패로 끝납니다. 한 묶음만 돌린 결과는 그 묶음에서만 참일 수 있어서, 씨앗 묶음 네 개를 합쳐 판정하고 묶음 하나하나에서도 결론이 같은지 따로 봅니다.

첫 결과: 조심하면 절대 안 죽었다

처음 규칙에서 문지기에게 통행료를 내면 피해를 전부 없애 주었습니다. 결과는 기준 대부분을 통과했지만 한 가지가 이상했습니다. 계산하는 전략의 완주율이 97.5% 였습니다. 문지기 피해를 몇 번이나 올려 봐도 96~98% 에서 움직이지 않았습니다.

들여다보니 이유는 간단했습니다. 체력이 모자라면 금화를 내고 지나가면 되니, 조심스러운 전략은 생존을 통째로 살 수 있었습니다. 문지기가 세질수록 점수만 줄고 죽지는 않았습니다. 밀어붙이기 게임에서 죽을 걱정이 없으면 "버틴다" 는 긴장이 사라집니다. 통행료는 피해를 없애지 않고 60% 로 줄이는 것으로 바꿨습니다.

너무 어렵게 해도 선택이 사라진다

그럼 문지기를 세게 하면 되지 않을까. 해 봤더니 반대쪽 끝에도 벽이 있었습니다. 피해를 크게 올리자 모든 전략이 비슷한 층에서 비슷하게 쓰러졌고, 보이는 정보를 읽는 전략과 늘 서사까지 미는 전략의 점수 차가 3.8 ± 3.8 점, 사실상 0이 됐습니다. 아무리 잘 골라도 결국 쓰러지는 게임에서는 고르는 일이 의미가 없습니다.

지금 수치에서 문지기 피해만 바꿔 가며 다시 잰 것이 아래 도표입니다.

어두운 바탕의 선 도표. 제목은 "어려워질수록 읽는 보람이 사라진다". 가로축은 문지기 피해 배율 0.6배부터 1.8배, 세로축은 평균 점수 0부터 900. 선 네 개가 모두 오른쪽으로 내려간다. 보이는 정보로 계산은 856점에서 161점으로, 체력 보고 문턱은 759점에서 157점으로, 늘 서사까지는 666점에서 173점으로, 늘 바로 열기는 261점에서 63점으로 떨어진다. 1.0배 자리에 지금 수치 점선이 있고, 1.4배 근처에 "1.4배: 차이 12점, 1.6배부터 뒤집힘" 이라는 설명이 붙어 있다. 1.4배부터 위쪽 세 선이 거의 한 줄로 모인다

문지기 피해 배율0.60.81.01.21.41.61.8
보이는 정보로 계산856655559461242182161
체력 보고 문턱759574423325220183157
늘 서사까지666521402321230198173
늘 바로 열기2612712251361178163

쉬울 때는 정보를 읽는 전략이 정해진 습관보다 190점을 앞서지만, 1.4배에서는 12점으로 줄고 1.6배부터는 오히려 뒤집힙니다. 쉬움과 어려움 양쪽 끝이 모두 선택을 없앱니다. 맞출 자리는 그 사이 어딘가였습니다.

봇은 사람보다 강하다

처음에는 "최선 전략의 완주율 30~60%" 를 기준으로 걸었는데, 아무리 해도 맞출 수 없었습니다. 최선 전략이 매 순간 기댓값을 정확히 계산하는 봇이었기 때문입니다. 그 봇을 기준으로 60% 에 맞추면 사람에게는 너무 어려운 게임이 됩니다.

그래서 기준을 나눴습니다. "사람에게 쉽지 않게" 는 사람에 가까운 단순한 전략(체력 보고 문턱)의 완주율 30~60% 로 걸고, 봇에는 "완벽하게 계산해도 90% 미만" 이라는 상한만 걸었습니다. 기준을 결과에 맞춰 옮긴 것이라, 바꾼 이유를 저장소 문서(README)에 그대로 적어 두었습니다.

상인도 통행료와 같은 함정이었다

모닥불 상인은 금화로 물약과 동료 카드를 팝니다. 금화가 점수이면서 살아남는 값이 되게 하려는 장치입니다. 그런데 물약을 30금화에 팔자 계산하는 봇이 필요할 때마다 사서 완주율이 92.5% 로 올랐습니다. 통행료 때와 같은 현상입니다. 생존을 사면 안 죽습니다.

값을 올려도 완주율은 88~91% 에서 잘 안 내려가고 점수만 줄었습니다. 필요할 때 사는 건 그대로라서 입니다. 결국 값은 65금화 × 층 배율로 올리되, 전체 난도는 뒤에 적을 대로 함정 쪽에서 맞췄습니다.

그다음엔 문지기를 조금 더 세게 해 봤는데, 계산하는 봇의 점수가 631에서 272로 절벽처럼 떨어지고 늘 서사까지 미는 전략보다도 낮아졌습니다. 처음엔 모든 전략이 같이 쓰는 문지기 규칙("싸우고 남는 체력이 10 미만이면 통행료") 탓으로 봤습니다. 금화를 많이 모은 전략일수록 가진 금화의 40% 를 자주 내게 되니까요. 사람이라면 그렇게 쓰지 않을 테니 기준을 6으로 낮췄습니다. 그런데 절벽은 그대로였습니다. 원인은 따로 있었습니다.

화면에 있는데 고를 수 없던 단추

절벽을 파고 들어가서야 첫 시제품 때부터 있던 결함을 찾았습니다. 5층 문지기 피해가 34였는데 시작 체력은 30이었습니다. 싸운다 단추는 화면에 멀쩡히 있었지만, 체력이 가득해도 누르면 쓰러지니 실제로는 늘 금화 40% 를 내는 통행료만 고를 수 있었습니다. 절벽도 여기서 생겼습니다. 문지기를 조금 세게 하자 4층 문지기 피해까지 30에 닿았고(28일 때 631점, 30~31일 때 272~380점), 가장 많이 모은 전략이 두 층 연달아 금화의 40% 를 내야 했던 것입니다.

부끄러운 건 이게 정직한 표시 때문에 오히려 안 보였다는 점입니다. 단추에는 피해 34와 "쓰러짐" 표시가 정확히 붙어 있었고, 화면에도 로그에도 틀린 것이 없었습니다. 틀린 것은 선택지 자체였습니다. 그 뒤로 "모든 층의 문지기 피해는 시작 체력보다 작다" 를 합격 기준에 코드로 넣었습니다.

압박을 실패 쪽으로 옮겼다

문지기를 싸워 볼 수 있는 선으로 낮추자 이번에는 체력 압박이 통째로 사라졌습니다. 사람형 전략의 완주율이 61~71% 로 뛰었고, 늘 바로 열기는 94~100% 살아남았습니다. 압박이 거의 문지기 한 곳에서만 오고 있었던 것입니다.

밀어붙이기 게임이라면 압박은 상자를 밀다가 실패할 때 와야 선택이 무거워집니다. 그래서 가시 함정 피해를 상자 등급마다 2씩 더 크게 해 늦게 실패할수록 아프게 하고, 폭약을 세게, 모닥불 휴식을 8에서 6으로 줄였습니다. 덕분에 첫 층에서도 욕심에 대가가 생겼습니다. 늘 전설까지 미는 전략이 예전에는 1층에서 한 번도 안 쓰러졌는데, 지금은 15.7% 가 1층에서 쓰러집니다.

지금 숫자

전략평균 점수완주전설 상자/판깨진 상자/판
보이는 정보로 계산557 ± 1180.5%0.426.1
체력 보고 문턱423 ± 1040.7%08.0
늘 서사까지401 ± 1120.4%08.7
늘 바로 열기225 ± 286.3%00
늘 희귀까지202 ± 353.7%04.4
반반 무작위162 ± 527.6%0.344.0
늘 전설까지114 ± 50.4%1.796.9

합격 기준 12개를 모두 통과합니다. 늘 바로 여는 전략은 최선의 40%, 늘 전설까지 미는 전략은 21% 에 그치고, 보이는 정보를 읽는 전략은 가장 잘한 고정 습관(늘 서사까지)보다 짝지은 차로 156 ± 6 점 높습니다. 늘 바로 열기는 가장 오래 살아남지만 점수가 절반도 안 됩니다. 안전하게 가면 살아남되 가난하다는 것이 이 게임이 원래 말하려던 줄다리기입니다.

한 점짜리 우연이 아닌지도 봤습니다. 문지기 피해, 성공률, 물약 값, 가시 피해, 휴식, 시작 체력, 금화를 하나씩 10% 안팎으로 흔들어도 순위와 핵심 결론은 그대로였습니다. 다만 "늘 바로 열기만 해서는 편히 못 산다(완주 90% 미만)" 는 86% 로 경계에 서 있어서, 휴식을 조금만 늘려도 94% 로 넘어갑니다. 이건 숨기지 않고 기록에 남겨 두었습니다.

숫자는 시뮬레이터로, 규칙은 진짜 함수로

시뮬레이터는 숫자를 알려 주지만, 규칙이 말한 대로 도는지는 따로 재야 합니다. 그래서 규칙 검사를 따로 두었습니다. 무작위로 6,000판을 두면서 8만 번 넘게 누른 한 번 더 전부에서 "굴린 수가 성공률보다 작으면 성공" 이 어긋난 적이 없는지, 열었을 때 받은 것이 미리 보인 카드 목록과 한 글자도 다르지 않은지, 실패 피해와 저주와 파편, 상인의 값이 미리 보인 그대로인지를 봅니다.

이 검사가 진짜로 잡는지도 확인했습니다. 판정을 1%p 후하게 바꾸거나, 물약을 안 주거나, 함정 피해를 1 더 하거나, 여명의 훈장이 층마다 한 번이 아니라 계속 막게 하거나, 서사에서 전설로 가는 한 칸만 몰래 5%p 올린 사본을 만들어 돌리면, 다섯 가지 모두 검사가 실패로 잡아냅니다. 확률을 화면에 정직하게 보여 준다는 약속은 이렇게 기계가 매번 확인하게 해 두었습니다.