용코바코 게임즈 노트

개발 노트방치형 킹덤

켜 두기만 해도 다 되면 오래 한 사람이 늘 이긴다 — 방치형 킹덤 자동 도약을 하루 10번으로 묶은 이야기

방치형 킹덤의 자동 성장과 자동 도약이 «그냥 두면 알아서 다 된다»는 지적을 받고, 시뮬레이션으로 빈틈을 재서 고친 기록입니다. 자동 도약을 하루 10번으로 묶고, 쉬는 중을 20분으로 줄이고, 가장 짧은 간격 3분을 뺐고, 탑 랭킹에 «이번 주» 판을 붙였습니다.

방치형 킹덤에는 자동 성장(금화를 저절로 쓴다)과 자동 도약(높이가 멈추면 저절로 뛴다)이 있습니다. 도약석으로 특성을 사면 열립니다. 열어 둔 사람이 자는 동안에도 판이 돌아가니 편한 기능이고, 편한 만큼 한 가지 걱정이 따라왔습니다. 그냥 두면 알아서 다 되는데, 그러면 나중에는 오래 켜 둔 사람이 무조건 이기는 게임이 되지 않느냐는 것입니다.

맞는 걱정이라 숫자부터 쟀습니다. 이 글은 무엇을 재서 무엇을 고쳤는지의 기록입니다.

먼저 잰 것 — 무엇이 빈틈이었나

두 기능을 따로 보았습니다.

  • 자동 성장은 처음부터 «보통 손»이 쓰는 방식 그대로입니다. 금화를 가장 싼 것부터 쓰는 그 셈법이고, 이 게임의 층별 난이도 표가 바로 그 손으로 재서 만든 값입니다. 자동 성장이 있다고 표가 틀어지지 않습니다. 그래서 그대로 두었습니다.
  • 빈틈은 쉬는 중에 있었습니다. 손을 안 대면 용사들이 쉬고 자동도 멈추는데, 그 기준이 1시간이었습니다. 한 시간에 한 번만 화면을 건드리면 하루 내내 자동이 돌 수 있었습니다.

네 가지를 고쳤습니다

  1. 자동 도약은 하루 10번까지. 그 뒤는 도약 탭에서 손으로 뜹니다. 손으로 뛴 것은 세지 않습니다. 게임 안에는 «오늘 자동 도약 n / 10»으로 보입니다.
  2. 쉬는 중을 20분으로. 20분 동안 손을 안 대면 자동 성장도 자동 도약도 멈춥니다.
  3. 자동 도약의 가장 짧은 간격 3분을 뺐습니다. 이제 5 · 10 · 20분 중에 고릅니다.
  4. 탑 랭킹에 «이번 주» 판을 붙였습니다. 아래에 따로 적습니다.

왜 10번이고, 3분은 왜 뺐나

하루 10번은 «켜 둔 한 시간에 도약 하나쯤»이라는 계산에서 나왔습니다. 하루에 네댓 시간 하는 사람은 거의 닿지 않고, 하루 내내 켜 두는 사람만 묶입니다.

3분은 시뮬레이션으로 정했습니다. 1,000층까지 오르는 데 걸리는 시간입니다(앞의 세 줄은 하루 몫 제한을 두지 않았을 때입니다).

도약하는 방식1,000층까지
손으로 가장 잘 뛰는 손74시간
자동 도약 3분86시간
자동 도약 5분97시간
자동 도약 5분 + 하루 10번108시간

3분이면 가장 잘 뛰는 손과 14%밖에 차이가 안 납니다. 그러면 켜 두는 쪽이 손으로 하는 쪽을 거의 따라잡습니다. 5분으로 하면 차이가 24%로 벌어집니다. 손으로 하는 몫이 커집니다.

고친 뒤에 어떻게 달라졌나

하루에 몇 시간씩 하는 사람이 3,000층 고개를 넘는 날을 같은 시뮬레이션으로 다시 쟀습니다. 앞은 고치기 전, 뒤는 고친 뒤입니다.

하루앞뒤
2시간339일368일
4시간186일198일
8시간96일103일
12시간65일71일

늦어졌지만 차례는 그대로입니다. 오래 하는 쪽이 앞서는 것은 맞고, 앞서는 폭만 줄었습니다. 쉬지 않고 돌리는 경우는 1,000층에 95시간에서 119시간으로, 3,000층에 787시간에서 893시간으로 늦어졌습니다. 하루 2 ~ 4시간 하는 사람은 하루 몫 10번에 거의 닿지 않아서, 이 사람들이 늦어진 것은 거의 다 «3분 → 5분» 때문입니다.

오래 한 사람과 따로 다툴 판 — 탑 «이번 주»

시간을 묶는 것만으로는 부족하다고 보았습니다. 누적 랭킹은 먼저 시작한 사람이 계속 앞이고, 늦게 들어온 사람에게는 보이는 목표가 없습니다. 그래서 랭킹 탭의 탑 칸에 누적 · 이번 주 두 갈래를 두었습니다.

이번 주는 월요일부터 이번 주에 새로 올린 층 수로 줄을 세웁니다. 앞 층은 빨리 오르니, 예를 들어 1,000층인 사람이 한 주에 40층 오르는 것보다 갓 시작한 사람이 300층 오르는 쪽이 앞섭니다. 늦게 시작해도 1위를 다툴 수 있습니다. 한 층도 안 올랐으면 줄에 서지 않고, 지난주 칸은 따로 남기지 않습니다. 보상이나 칭호는 아직 붙이지 않았습니다.

며칠 쉬고 돌아온 첫 동기화에 실린 자리 비움의 몫은 그 주에 들지 않습니다. 돌아와서 오른 것부터 셉니다.

서버 쪽 한 가지

주간 판을 위해 새 표를 만들면, 최고 층이 오른 동기화마다 쓰기 한 줄이 늘어납니다. 이 게임이 쓰는 Cloudflare D1은 쓰기가 읽기보다 훨씬 비싸서(조회수 노트에 같은 D1 이야기가 있습니다), 표를 늘리지 않고 계정 줄에 칸 두 개를 더했습니다. 주마다 첫 동기화 때 그 주 출발 층을 한 번 적고, 순위는 읽을 때 «지금 최고 층 − 출발 층»으로 셉니다. 쓰기 줄 수는 그대로이고, 대신 순위를 읽을 때 그 주에 동기화한 계정을 훑어야 합니다. 그 읽기는 순위의 공통 부분을 1분 동안 담아 두는 것으로 덜었습니다.

짐작으로 둔 값

하루 10번과 쉬는 중 20분은 짐작으로 정한 값이지 정답이 아닙니다. 해 보고 답답하거나 느슨하면 고칩니다. 탑 «이번 주»에 보상을 붙일지도 아직 정하지 못했습니다. 붙이면 지난주 칸과 표가 같이 들기 때문입니다.

용사를 키우는 다섯 계단은 용사 하나를 세게 만드는 다섯 계단에, 전체 소개는 게임 소개에 탭으로 나눠 두었습니다.

다른 노트

← 노트 목록