홈 › 읽을거리 › 칼럼

난이도를 고친 기록: 솔저 러쉬·레오니스·챔피언 방어전

칼럼 · 2026-10-08 · GamePool 편집팀

난이도는 처음부터 맞게 만들 수 없었습니다. 챔피언 방어전은 50스테이지로 확장한 직후 5분 안에 난이도를 낮추는 커밋이 여섯 개 쌓였고, 군단 점령전의 연타 배수문은 설정값을 세 번 갈아엎은 끝에 지금의 값이 되었습니다. 이 글은 난이도 이론이 아니라 저장소의 변경 이력(git log)에서 변경 전후 숫자를 확인할 수 있는 사례만 모은 기록입니다. 값마다 어떤 신호를 보고 쉽다 혹은 어렵다고 판단했는지도 같이 적었습니다. 이력에 근거가 남아 있지 않은 부분은 그렇게 표시했습니다.

솔저 러쉬: 시작 병력과 체력 곡선을 동시에 고치다

솔저 러쉬의 시작 병력은 현재 clamp(5 - floor(레벨 ÷ 3), 2, 5)로 정해집니다. 레벨 1~2는 5명, 3~5는 4명, 6~8은 3명, 9 이상은 2명으로 시작합니다. 한때 이 식 없이 1명으로 시작하던 때가 있었고(보너스 병사를 받으면 2명), 식을 넣으면서 초반 레벨에 병력을 넉넉히 주었습니다. 레벨이 오를수록 시작 병력이 줄어드니 후반에는 도중에 병력을 불리는 일이 중요해집니다.

이후 너무 쉬워졌다는 의견이 나와서 적 체력 곡선을 바꿨습니다. 이전 식은 66 × (1 + 0.075 × (레벨 - 1))에 레벨 10 이후로 1.025배씩 곱하는 거의 직선이었고, 바뀐 식은 72 × 1.13^(레벨 - 1, 최대 10승까지)에 레벨 11부터 1.06배씩 곱하는 곡선입니다. 계산해 보면 레벨별 일반 적 체력은 다음과 같이 달라집니다.

레벨 1은 66에서 72로 약 9% 늘어 첫 판의 맛이 거의 그대로입니다. 레벨 5는 86에서 117로 약 36% 늘어 차이가 벌어지기 시작하고, 레벨 10은 111에서 216으로 약 95% 늘어 초반 10레벨 안에 체력이 두 배 가까이 되도록 했습니다. 레벨 20은 205에서 413으로, 11레벨 이후는 증가율이 6%로 완만해져 후반이 무한정 가팔라지지는 않습니다.

같은 커밋에서 무리 크기 공식도 바꿨습니다. 이전에는 레벨과 무리 순번만 반영하던 식을 한 레벨 안에서 뒤로 갈수록 무리가 커지는 식으로 바꿨습니다. 무작위 ±15%를 빼고 평균으로 계산하면, 레벨 5에서 무리 순번 n이 0일 때는 11명에서 6명으로 줄고 n이 10일 때는 15명에서 16명으로 늘었습니다. 레벨 10에서는 n=0이 21명에서 10명으로 줄어드는 대신 n=10은 24명에서 28명으로 늘어납니다. 시작은 편하게, 끝은 빡빡하게 만든 것입니다. 이 밖에 달리는 적의 비율을 20% 고정에서 레벨에 따라 최대 32%로, 브루트 적 등장 확률 상한을 10%에서 16%로 올렸고, 샷건 데미지를 0.5배에서 0.4배로, 로켓과 유탄 데미지 계수는 11과 7에서 8과 5로 내렸습니다. 난이도를 올리면서 강력한 무기의 효율을 함께 깎은 것입니다. 중기관총수 해금 레벨도 3에서 5로 늦췄습니다.

판단 신호는 두 가지였습니다. 하나는 너무 쉬워졌다는 의견이고, 다른 하나는 봇 시뮬레이션으로 레벨마다 병력이 어떻게 바뀌는지 확인한 결과입니다. 의견은 방향을 알려 주지만 얼마나 올릴지는 알려 주지 않기 때문에, 숫자는 봇을 돌려 보며 맞췄습니다.

레오니스: 몬스터 40% 강화와 등장 1.3배

레오니스에서는 레벨업 능력을 고르는 방식을 바꾼 일이 난이도 조정의 시작이었습니다. 원래 레벨업 능력은 다음 스테이지에서 초기화됐는데, 영구 누적으로 바꾸고 능력마다 최대 레벨을 두었습니다(사기와 신성력 능력은 10레벨까지). 플레이어가 점점 강해지는 구조가 되었으니 적도 따라 강해져야 했고, 같은 날 모든 몬스터(보스와 관문 수호자 포함)의 체력과 공격력을 40% 올렸습니다. 코드의 난이도 계수는 체력 1.3, 공격력 1.15에서 각각 1.3 × 1.4 = 1.82, 1.15 × 1.4 = 1.61이 되었고, 주석에는 퍽이 영구 누적되면서 올림이라고 이유를 적어 두었습니다.

몬스터 등장량은 별도로 조정했습니다. 이전 커밋에서 맵 길이를 3분의 1로 줄이고 몬스터를 1.5배로 늘렸는데, 이어서 평상시 등장량을 1.3배 더 올렸습니다. 등장 간격은 1.5로 나누던 것이 1.5 × 1.3 = 1.95로 나누게 되어, 이전의 약 77%로 줄었습니다. 한 번에 여러 값을 같이 건드린 점은 반성할 부분입니다. 맵 단축, 자원 회복 절반, 성물 쿨타임 제거, 몬스터 1.5배를 한 커밋에서 묶어 처리했기 때문에, 나중에 어느 값이 체감 난이도를 바꿨는지 분리해서 볼 수 없었습니다.

요새 위기(체력 30% 이하) 때의 난이도 처리는 실수가 있었습니다. 위기 때 등장 속도를 2배로 올려 달라는 요청을 문장 그대로 구현해서, 위기에 들어서면 몬스터 등장 표가 두 배 빠르게 진행되도록 만들었습니다. 그런데 의도는 위기 시 긴급 호위병이 출격한다는 뜻이었고, 등장 속도 2배는 필요한 것이 아니었습니다. 바로 다음 커밋에서 속도 2배를 삭제하고, 위기가 시작되면 긴급 호위병 7체를 0.4초 간격으로 출격시키는 방식으로 다시 만들었습니다(이전에는 3체를 0.5초 간격). 요청의 단어보다 요청이 노린 장면을 먼저 확인했어야 했다는 교훈이 남았습니다.

챔피언 방어전: 한 시간 안에 이어진 완화 커밋들

챔피언 방어전은 커밋 시각(UTC) 기준 10월 6일 5시 17분에 Stage 1 한 판짜리로 올라왔고, 5시 53분에 2~50스테이지 확장 시스템이 들어갔습니다. 확장 직후의 곡선은 스테이지가 오를 때마다 체력 10%, 피해 8%, 몬스터 수 3.5%씩 늘어나는 식이었습니다. 스테이지 30의 몬스터 체력 배율로 계산하면 1.7 × (1 + 0.10 × 29) = 약 6.6배, 스테이지 50은 약 10배입니다. 보스 체력은 이 값을 그대로 쓰고 있었습니다. 확장 1분 뒤인 5시 54분부터 곡선을 낮추는 커밋이 이어졌습니다.

  • 곡선 기울기: 체력 증가율 0.10 → 0.06 → 0.05, 피해 증가율 0.08 → 0.05, 수량 증가율 0.035 → 0.025. 스테이지 30의 체력 배율은 6.6배에서 약 4.2배로, 스테이지 50은 약 10.0배에서 약 5.9배로 내려갔습니다.
  • 보스 체력 배율: 스테이지 1~29는 1.0 → 0.6 → 0.45. 30대는 0.45 → 0.36 → 0.34 → 0.27 → 0.2, 40대는 0.28 → 0.22 → 0.17, 50스테이지는 0.11. 보스 피해도 1.0 → 0.7 → 0.5로 내렸고 30스테이지부터는 0.32입니다.
  • 영웅 성장: 스테이지당 체력 증가 0.045 → 0.07 → 0.09, 공격력 증가는 0.045 → 0.05. 즉 적의 증가율은 낮추고 영웅의 증가율은 올렸습니다.
  • 웨이브 클리어 회복: 고정 100에서 max(100, 최대 체력의 40%)로. 후반에는 한 웨이브가 끝날 때 더 많이 회복합니다.
  • 엘리트 등장: 마지막 5웨이브 중 일부에서 마지막 3웨이브로 제한하고, 엘리트 피해를 0.7배로 낮췄습니다. 왕국 본성 체력은 4·5단계 값을 540·760에서 600·900으로 올렸고, 암흑 왕 소환은 1차 5마리에서 3마리로, 2차 6마리에서 3마리로 줄였습니다.

이 중 가장 많이 흔들린 값이 보스 체력 배율입니다. 30대 보스만 해도 한 번에 정하지 못하고 네 번 고쳤습니다. 지도를 8배로 키운 뒤에도 후반 배율을 한 번 더 내렸고(40대 0.22 → 0.17, 30대 0.34 → 0.27), 40초 뒤 30대를 0.27에서 0.2로 또 내렸습니다. 반대로 같은 날 늦게(UTC 23시 25분) 몬스터 수를 스테이지 3부터 1.2배로 늘리는 변경도 있었는데, 이때는 마리당 금화를 1.2로 나눠서 전체 수입은 그대로 두었습니다. 몬스터를 더 많이 쓰러뜨려도 골드가 늘지 않게 해 난이도만 올린 것입니다.

다만 이 이력에서 읽을 수 있는 것은 방향과 크기까지입니다. 커밋 메시지에는 난이도 곡선 완화, 후반 난이도 완화, 보스 체력 하향이라고만 적혀 있어서, 어떤 관찰을 보고 판단했는지나 클리어율 같은 수치는 남아 있지 않습니다. 그래서 이 글에서도 몇 퍼센트가 깼다는 식의 숫자는 쓰지 않습니다.

군단 점령전: 연타 배수문 설정값 세 번

군단 점령전의 연타 배수문은 가운데를 좌우로 움직이는 폭 2.8의 황금 문이고, 병사가 통과할 때마다 배수가 오르고 놓치면 내려갑니다. 병사 한 명이 문을 지날 때 늘어나는 병사 수는 배수에서 1을 뺀 값입니다. 배수 2.8이면 한 명이 문을 지날 때 1.8명이 추가되는 셈이라 1명은 확정, 0.8은 80% 확률로 1명이 더 붙습니다. 이 배수를 어떻게 오르내리게 할지가 세 번 바뀌었습니다.

  • 첫 설정: 병사가 통과할 때마다 배수 +0.1, 안 맞으면 초당 -0.55. 대포를 한 자리에 세워 두고 5초를 쏴 봐도 배수가 ×1.5에서 올라가지 않았습니다. 계산해 보면 이 설정은 초당 5.5명 넘게 문을 지나야 제자리를 면하는데, 실제 통과 수가 그에 못 미쳤던 것입니다. 배수문이 있으나 마나였습니다.
  • 두 번째 설정: +0.2, 초당 -0.45. 이번에는 첫 적중 후 약 1초 만에 상한 ×6에 붙어 버렸습니다. 정확한 조준이 필요 없어졌고, 조준이라는 선택 자체가 사라졌습니다.
  • 최종 설정: +0.05, 마지막 적중 0.5초 뒤부터 초당 -0.7, 하한 1.5, 상한 ×5. 봇 시뮬레이션에서 배수가 2.8~5.0 사이를 오르내렸습니다. 꾸준히 맞추면 5 근처까지 가고, 조준이 흔들리면 3 아래로 내려옵니다.

두 번째 실패에서 얻은 교훈은 하나였습니다. 올라가는 속도와 내려가는 속도 중 어느 쪽이든 한 변수가 상한이나 하한에 붙어 버리는 시간을 재 보라는 것입니다. 첫 설정은 5초가 지나도 하한에 붙어 있었고, 두 번째 설정은 1초 만에 상한에 붙었습니다. 곡선이 직선 위에서 오르내려야 조준의 의미가 생기는데, 두 값 모두 그 구간 밖에 있었습니다. 최종 설정은 올라가는 속도가 병사 한 명당 0.05로 작으니 많이 맞춰야 오르고, 내려가는 속도는 초당 0.7로 빠르니 놓치면 금방 떨어지는 구조입니다.

같은 변경에서 부서지는 벽도 넣었습니다. 벽의 내구도는 round((14 + 단계 × 2.5) × 3)이고 3단계에서 65입니다. 내구도 65를 깎아야 벽이 부서지고 뒤에 숨은 황금 ×5(8단계부터 ×6) 문이 열립니다. 병사는 발사 후 문까지 약 5초가 걸려서, 쏘는 순간의 문 위치로 조준하면 빗나갑니다. 움직이는 문은 5초 뒤의 위치를 예상해 쏘아야 하고, 연타 배수문의 이동 속도 값은 3.6 + 단계 × 0.25(단계 12에서 멈춤)로 단계마다 조금씩 빨라집니다. 최종 설정에서 감소 속도 초당 0.7은, 문 앞에서 초당 14명이 지나야 배수가 그대로 유지된다는 뜻이라 꾸준히 쏘지 않으면 금방 떨어집니다.

우리가 쉽다·어렵다를 판단한 신호

위 사례를 한 줄씩 요약하면 신호가 되풀이됩니다. 신호의 출처가 이력으로 확인되는 것만 추렸습니다.

첫째는 의견입니다. 솔저 러쉬는 너무 쉬워졌다는 의견이 직접적인 계기였지만, 의견만으로는 얼마나 올릴지 정할 수 없어 봇을 돌렸습니다. 둘째는 봇 시뮬레이션입니다. 솔저 러쉬의 난이도 상향과 군단 점령전의 연타 배수문은 봇 결과로 숫자를 확정했고, 배수문은 시뮬레이션에서 배수가 2.8~5.0 사이를 오르내리는 것을 확인했습니다. 셋째는 변수가 상한이나 하한에 붙는 시간입니다. 연타 배수문의 두 번 실패에서 얻은 신호로, 5초 안에 오르지 않으면 너무 어렵고 1초 만에 끝까지 오르면 너무 쉽다고 봤습니다.

넷째는 성장과의 균형입니다. 레오니스에서는 플레이어 쪽 성장이 영구 누적으로 바뀌었으므로 몬스터도 40% 올렸고, 챔피언 방어전에서는 반대로 적의 증가율을 낮추고 영웅 증가율을 올렸습니다. 한쪽 성장 구조를 바꾸면 반대쪽 숫자도 함께 점검합니다. 마지막으로 기록이 없는 경우도 있습니다. 챔피언 방어전의 완화는 방향과 배율만 이력에 남아 있고 판단 근거는 남아 있지 않아서, 이 글에서는 근거를 추측하지 않았습니다.

숫자로 보이는 난이도 두 가지: 자동 곡선과 선택 곡선

자동으로 오르는 곡선은 플래피에서 단순하게 볼 수 있습니다. 파이프 사이 틈은 150에서 시작해 1점마다 1.2씩 줄고 118에서 멈추므로, 27점 부근에서 가장 좁아지고 그 뒤로는 더 어려워지지 않습니다. 선택형 곡선의 예는 스도쿠로, 비우는 칸이 쉬움 38, 보통 48, 어려움 55입니다. 두 방식의 차이는 책임 소재입니다. 자동 곡선은 설계자가 틀리면 플레이어가 떠나고, 선택 곡선은 플레이어가 잘못 골라도 되돌릴 수 있습니다. 군단 점령전이나 챔피언 방어전처럼 단계별로 이어지는 게임에서는 선택지를 줄 수 없으니, 위처럼 설계자가 수치를 계속 고쳐야 합니다.

난이도 조정은 끝이 있는 작업이 아니었습니다. 같은 값을 두 번 고치는 일도 있었고(보스 체력 배율 0.27을 0.2로), 반대 방향으로 다시 고치는 일도 있었습니다. 지금 사이트의 값들도 최종이 아닙니다. 이 글의 숫자는 2026년 10월 8일 기준 저장소의 값이고, 이후 바뀌면 이력에 다시 남을 것입니다.

관련 게임 플레이하기

다른 읽을거리

입문스도쿠 입문: 봇이 푼 난이도별 필요 기법이 사이트 스도쿠가 난이도별로 주는 단서 수와, 같은 규칙으로 만든 판을 논리 풀이 봇으로 풀어 본 결과, 힌트·되돌리기의 실제 동작을 정리한 입문 글입니다.공략지뢰찾기 추리법: 봇 1,000판으로 본 추측 횟수이 사이트 지뢰찾기의 지뢰 배치 규칙과 난이도별 지뢰 밀도, 봇으로 1,000판씩 돌려 본 추측 횟수와 승률을 바탕으로 숫자 읽기와 클릭 요령을 설명합니다.입문오목 입문: 컴퓨터 점수표를 읽고 삼삼으로 이기기이 사이트 오목 컴퓨터의 점수표와 난이도별 차이를 소스에서 읽고, 삼삼 준비 모양과 봇 대전 결과로 초반 배치·수비 우선순위·무르기 활용을 정리했습니다.가이드반응 속도 게임: 두더지·러너·새의 숫자와 봇 실험두더지 잡기·점프 러너·날갯짓 새의 소스 수치(출현 간격, 점프 물리, 탭 한 번의 상승량)와 봇 실험으로 정리한 연습 포인트입니다.가이드정적 사이트에 워커 하나: GamePool 구조의 선택과 한계게임 32개가 파일 하나씩인 이유, /api/* 만 처리하는 워커를 둔 이유, 저장소가 막힌 시크릿 모드 대응, 복제 방지 장치까지. 실제 소스와 설정 파일을 근거로 선택과 한계를 적었습니다.가이드닉네임 랭킹의 규칙과 한계: 만든 쪽의 설명과 부탁3글자 닉네임, 게임별 점수 상한, 3초 간격 제한, 걸러지는 닉네임 예시까지. 랭킹 서버와 게임 코드를 기준으로 규칙이 생긴 이유와 아직 막지 못하는 것을 정직하게 적었습니다.