숫자가 거짓말을 했을 때

테스트 대전 중 하나에서 두 군대가 114분 동안 싸웠지만, 어느 쪽도 한 걸음도 나아가지 못했습니다. 어떤 성도 피해를 입지 않았고, 건물도 완전히 무너지지 않았으며, 병력은 같은 땅 위에서 계속 태어나고, 행군하고, 죽어 갔습니다.
114분까지 버틸 사람은 없습니다. 그 지점에 닿을 수 있는 것은 연구실뿐입니다.
감으로는 규모를 따라갈 수 없습니다
2장에서 경제는 종이 위에서 맞아떨어졌습니다. 게임의 첫 번째 방어선은 직접 플레이해 보는 사람입니다. 저희 둘에게는 무엇이든 망가지는 곳을 찾을 때까지 처음부터 다시 플레이하는 사람이 그 역할을 합니다. 한 사람이 찾아낼 수 있는 것은 많습니다. 하지만 800번째 대전에서야 드러나는 문제도 있습니다.
그래서 연구실을 꾸렸습니다. 시뮬레이션은 그래픽 없이 실제 시간보다 훨씬 빠르게 돌아가고, 원하는 만큼 AI끼리 싸우게 합니다. 모든 대전은 고정된 시드를 쓰므로, 이상한 결과는 똑같이 되풀이해 볼 수 있습니다. 그리고 제안된 모든 변경은 새로운 대전 묶음을 통과해야만 남을 수 있습니다.
약 1,000판 규모의 첫 번째 라운드에서 이미 게임이 저희가 생각하던 것이 아니라는 사실이 드러났습니다. 성은 거의 영향을 주지 않았습니다. 대전은 병력 상한에 닿은 두 군대가 벌이는 하나의 거대한 전투에서 결정되었고, 나머지는 그 결과일 뿐이었습니다. 해결책은 버튼 하나가 아니라 묶음이었습니다. 입문 건물을 더 비싸게 만들고, 처치 보상을 줄이고, 병력 상한을 110에서 90으로 낮췄습니다.
끝나지 않는 대전
그다음에는 반대되는 문제가 나타났습니다. 진영끼리의 모든 대결을 열 번씩 돌렸고, 총 1,050판이었습니다:
- 그중 **21%**에서는 10분 이상 아무 진전도 없었습니다. 그런 구간의 전형적인 예에서는 병력 547명이 죽었습니다.
- **18%**는 30분 제한에 닿았습니다.
- 제한을 없애자 **3.8%**는 두 시간이 지나도 동점이었습니다.
숫자를 바꾸기 전에 3,880판을 들여 왜 그런지 알아냈습니다. 세 가지 원인이 두드러졌습니다. 첫째, 병력 상한이 벽이 되었습니다. 두 군대가 최대치에 멈춰 서 있으면 남는 골드는 더 이상 압박으로 바뀌지 않았습니다. 둘째, 범위 피해가 홈그라운드에서만 통했습니다. 주문 건물이 죽인 병력의 99%가 그 건물을 세운 쪽에서 죽었습니다. 그래서 앞으로 나아가는 쪽은 자기 쪽 주문 범위 밖으로 걸어 나가 적의 주문 범위 안으로 들어가게 되었습니다. 셋째, AI가 교착에서 빠져나오지 못했습니다.
용의자에서 제외한 것도 있습니다. 길이 막혀 발이 묶인 병력은 2%가 되지 않았고, 가장 좁은 병목을 가진 테스트 맵이 오히려 가장 결정적이었습니다.
그렇게 많은 대전이 시간 끝까지 간다면, 동점 판정은 승자를 맞혀야 합니다. 그래서 시간 초과된 대전을 제한 없이 다시 돌려 보고, 각 기준이 누구를 가리켰을지 확인했습니다:
| 동점 판정 기준 | 실제로 이겼어야 할 쪽을 맞힌 비율 |
|---|---|
| 결정 시점에 남은 구조 수 | 76% |
| 구조, 그다음 파괴된 건물 수, 그다음 전선 | 68% |
| 지금까지 쓰던 규칙 | 55% |
| 동전 던지기 | 50% |
| 수입만 | 44% |
가장 당연해 보이던 기준, 수입이 동전 던지기에게 졌습니다.
이유는 파괴된 건물을 다시 지으면 수입이 또다시 쌓이기 때문입니다. 그래서 얻어맞고 있는 쪽이 오히려 더 많이 버는 경우가 많습니다.
제자리걸음하는 병사
싸움 속에는 또 다른 이상한 숫자가 숨어 있었습니다. 두 군대가 만나면, 뒤쪽의 근접 병력은 아군의 등에 닿은 채 제자리걸음을 했습니다. 각 병력은 가장 가까운 적을 향해 곧장 갔는데, 그 적은 대개 앞의 병사가 이미 상대하고 있는 바로 그 적이었습니다. 병력끼리 겹치지 못하도록 막는 규칙이 걸음마다 그들을 뒤로 밀어냈습니다.
움직임 규칙만 바꾼 시뮬레이션 복사본을 만들어 규칙 13개를 시험했습니다. 실패가 많은 것을 가르쳐 주었습니다. "앞에서 아군이 싸우고 있으면 멈춘다"는 규칙은 문제를 없앴지만, 뒤에 있던 병력이 도착하지 못해 전투가 두 배로 길어졌습니다. 효과가 있었던 것은 인내의 경로였습니다. 병력은 공격 위치가 비어 있는 목표를 고르고, 그곳까지 짧은 경로를 짜며, 막히면 경로를 다시 짜거나 기다립니다.
| 제자리걸음 비율 | 이전 | 인내의 경로 적용 |
|---|---|---|
| 탁 트인 필드 | 26% | 5.6% |
| 좁은 통로 | 35% | 6.8% |
| AI끼리의 대전 | 9.7% | 1.3% |
이런 규칙은 근접 병력을 훨씬 강하게 만듭니다. 그래서 진영마다 다른 모든 진영과 맞붙여 보았습니다. 규칙마다 같은 시드로 1,050판씩 돌렸습니다. 승률은 같은 범위에 머물렀습니다. 이전에는 4460%, 이후에는 4257%였습니다. 이 테스트의 첫 번째 라운드는 작은 버그가 있는 연구실에서 돌아가서, 일부 대전이 실제 게임과 달라졌습니다. 고치고 전부 다시 돌린 뒤에야 결과를 믿었습니다.
그리고 일부 병력에 날개가 달리자 승률이 3858%에서 2282%로 흩어졌습니다. 한 진영은 거의 모든 병력이 땅만 맞힐 수 있었기 때문에 34포인트 떨어졌습니다. 다른 진영은 아직 비행 병력이 하나도 없어서 20포인트 떨어졌습니다. 해결책은 숫자를 건드리는 것이 아니었습니다. 각 진영에 부족했던 답을 주는 것이었습니다. 앞의 진영에는 비행 병력을 향해 탄막을 쏘는 건물을, 뒤의 진영에는 자기만의 비행 병력을 주었습니다. 다음 라운드에서는 모든 진영이 다시 42%에서 57% 사이로 돌아왔습니다.
너무 부유했던 경제
2장 끝에서 이야기했던 것을 기억하시나요? 저희 대전의 속도를 같은 장르 게임에서 기대하는 것과 비교해 측정했습니다. 병력 생산은 적당했습니다. 문제는 돈이었습니다. 게임은 필요한 것보다 3.5배에서 4배나 부유하게 돌아갔고, 대전마다 골드가 홍수처럼 쏟아졌습니다. 그래서 모든 것을 죄었습니다:
- 더 빡빡한 시작: 골드 300과 성의 수입 14 대신, 골드 250과 수입 5로 시작합니다.
- 수입은 건물과 함께 죽습니다. 전에는 파괴된 건물도 계속 수입을 냈습니다. 이제 기지를 잃으면 정말 아픕니다.
- 먼저 짓는 쪽에 보상: 건설을 가장 먼저 끝내는 쪽은 골드 보너스를 받습니다.
모든 시도가 앞으로 나아간 것은 아닙니다. 아레나를 걸어서 가로지르는 데 너무 오래 걸렸고, 처음 떠올린 방법은 게임 전체의 시계를 빠르게 돌리는 것이었습니다. 효과는 있었지만 전투의 느낌이 바뀌었고, 이미 맞춰 둔 밸런스도 흔들렸습니다. 그래서 되돌리고, 이동 속도만 빠르게 했습니다. 병력과 일꾼은 1.5배 빠르게 움직이고, 나머지는 그대로 두었습니다.
원작을 한 줄씩 읽기
남은 질문은 가장 기본적인 것이었습니다. 저희 숫자가 정말 Castle Fight의 숫자와 같을까? 답을 얻으려고 맵 스크립트를 함수 하나씩 읽었습니다. 병력 32종과 건물 34종 분량입니다. 그리고 맵의 두 번째 버전 데이터와 대조했습니다. 비교할 수 있었던 숫자 105개 중 91개가 맞았습니다. 여전히 저희의 추정치였던 30개 정도의 값은 올바른 값을 얻었습니다.
이제 게임의 모든 숫자에는 어디에서 왔는지 표시가 붙어 있습니다.
증거, 원인, 선택지
이 장에서 얻을 교훈이 있다면 순서입니다. 먼저 증거, 다음은 원인, 그다음은 선택지 목록입니다. 각 선택지에는 위험이 따릅니다. 역전의 가능성을 남기는가? 정당한 방어를 벌하는가? 진영의 정체성을 지워 버리는가? 그제야 숫자가 바뀝니다.
이 순서 덕분에 여러 번 위기를 피했습니다. AI가 건물을 고르는 방식을 처음부터 다시 쓰자 오히려 모든 것이 나빠졌습니다. 반면 기존 로직에 있는 한 줄을 고친 변경은, 연구실에서 시간 제한에 닿는 대전의 비율을 18.1%에서 11.0%로 낮추었고, 진영의 균형을 깨뜨리지도 않았습니다.
모든 것이 해결된 것은 아닙니다. 새 경제, AI, 더 큰 필드는 코드에 들어가 있지만, 진영들은 그 위에서 다시 맞춰야 합니다. 그리고 모든 것은 한 번의 버전으로 함께 나갈 것입니다. 밸런스 작업은 끝나지 않습니다. 하지만 이제 어디를 봐야 할지는 알고 있습니다.
하지만 균형 잡힌 게임이라 해도, 한 번도 해 보지 않은 사람이 배워야 합니다. 그것이 다음 문제였습니다.
— 팀 일동





