머신러닝 엔지니어가 퍼즐 게임을 더 재미있게 만드는 방법

최진환, 채지영

쿠키런: 마녀의 성과 퍼즐봇

쿠키런: 마녀의 성(이하 '마녀의 성')은 탭(Tap to blast) 방식의 퍼즐을 풀어 쿠키들을 마녀의 성에서 탈출시키는 퍼즐 게임입니다. 데브시스터즈에서는 마녀의 성을 AI가 학습하여 플레이하는 강화학습 기반의 퍼즐봇을 만들어 게임 레벨 밸런싱에 사용해왔습니다. 전작이었던 또 다른 퍼즐게임인 쿠키런: 퍼즐월드에서도 퍼즐봇을 만들어 게임 밸런싱에 사용했었는데요, 이 때의 경험을 바탕으로 한층 더 정교한 퍼즐봇을 만들어서 사용할 수 있었습니다. 마녀의 성은 각 레벨마다 독창적인 매력을 가진 스테이지들로 이루어져있고, 퍼즐봇은 이러한 각각의 스테이지 (레벨) 를 하나의 단위로 하여 학습하고 플레이를 하게 됩니다.

밸런싱과 폴리싱, 그리고 스테이지 평가 지표

퍼즐 게임에서 밸런싱의 핵심은 각 스테이지에서 유저들이 사용할 수 있는 제한 무브 수를 결정하는 것입니다. 각 스테이지에는 주어진 미션이 있으며, 이 미션을 제한된 무브 수 안에 모두 해결해야 다음 스테이지로 넘어갈 수 있습니다. 따라서 제한 무브 수가 적으면 게임이 어려워지고, 많이 주어지면 비교적 쉬워집니다. 기획팀과 게임 디자인팀에서 제작한 스테이지는 이러한 밸런싱 과정을 거쳐 유저들에게 선보여집니다.

폴리싱 단계도 유저들에게 스테이지를 선보이기 전에 필수적으로 거쳐야 합니다. 폴리싱(Polishing; 연마) 단계란 제작된 스테이지들을 직접 플레이해 보며, 유저들에게 더 나은 플레이 경험을 제공하기 위해 스테이지를 다듬는 과정입니다. 스테이지를 플레이해보고 아쉬운 점을 개선하는 작업입니다. 또한, 폴리싱 단계는 제작된 스테이지를 그대로 사용할 수 있을지 판단하는 중요한 과정이기도 합니다.

저희는 퍼즐봇의 이점을 극대화하기 위해 폴리싱 단계에서도 퍼즐봇 데이터를 활용하고자 했습니다. 결과적으로, 기존의 폴리싱 과정에서 발생할 수 있는 문제점을 보완하고 더 효율적으로 스테이지 제작 과정을 수행하기 위해 퍼즐봇 데이터를 활용하여 각 스테이지를 평가할 수 있는 "스테이지 평가 지표"를 만들었습니다. 본 글에서는 그 이야기를 들려드리려고 합니다.

요약하자면, 저희는 "스테이지 평가 지표" 를 통해 폴리싱 단계에서 제작된 스테이지를 그대로 출시할 수 있을지 판단할 기준을 제공하고자 했습니다. "좋은 스테이지"라고 말할 수 있는 유저의 행동을 기준으로 잡고, 그 행동 비율과 높은 상관관계를 보이는 지표를 만들었습니다. 이렇게 만들어진 스테이지 평가 지표는 실제로 데브시스터즈 내부에서 진행된 사내 테스트 데이터를 기준으로도 유의미하게 높은 상관관계를 보였습니다. 이 지표는 기존 수작업으로 진행되던 폴리싱 단계에서 데이터 관점의 시각을 제공하여 더 효율적인 폴리싱 수행이 가능하게 했습니다.

지표의 필요성과 목표

기존의 폴리싱 과정은 [ 퍼즐맵 제작 → 플레이 후 피드백 → 부족한 점 보완 → 이후 밸런싱 과정 진행 ] 의 순서로 이루어집니다. 이러한 작업은 소수의 폴리싱 작업자의 직감에 의존적일 수 밖에 없고, 이로 인해 개인 성향에 따라 편향되기 쉽습니다. 또한 스테이지의 개수가 늘어남에 따라 폴리싱에 소모되는 시간이 비례하여 증가될 수 있다는 문제가 있습니다.

물론, 기획자 및 게임 디자이너분들의 감은 아주아주 중요한 요소이지만, 스테이지 제작 과정을 보다 효율적으로 확장하기 위해 폴리싱 단계에서의 추가적인 판단 기준이 될 수 있는 지표를 제공하고자 했습니다. 이는 보다 객관적인 성격의 지표로 사용이 가능하며 폴리싱 과정을 효율화 시키는데 도움이 될 수 있습니다. 정성적인 평가에 대한 의존성을 낮춤으로써, 하나의 레벨에 대해서 [ 여러 맵을 제작 → 지표를 통한 1차적인 판단 → 기획자 / GD 분들의 정성적 평가 → 폴리싱 ] 과 같은 방식으로 프로세스를 개선시킬 수 있습니다.

스테이지 평가 지표

기준이 되는 유저의 행동

스테이지 평가 지표는 유저들이 스테이지를 플레이했을 때의 반응을 예측할 수 있는 지표로 생각해볼 수 있습니다. 이를 위해 기준이 되는 유저의 행동을 설정해야 했습니다. 기획팀과의 논의 끝에 "게임을 클리어하지 못했을 때, 얼마나 높은 비율로 이어하기 및 하트 구매 후 재시도가 이루어지는지"를 기준으로 삼게 되었습니다. 이는 곧 게임 클리어에 실패했을 때, 결제를 해서라도 클리어하고 싶은 스테이지라는 뜻으로 해석할 수 있습니다.

게임 성공 시의 행동에 대해서는 실패 경험이 유저 경험에 더 큰 영향을 미치며 레벨이 진행될수록 실패 케이스의 비중이 커지기 때문에 기준에 포함시키지 않는 방향으로 결정했습니다.

스테이지 평가 지표는 이러한 '유저의 행동'을 예측할 수 있는 지표여야 한다(= 상관관계가 높다) 는 것을 목표로 두고 지표 제작 과정을 시작하게 되었습니다.

스테이지 평가 지표를 위한 EDA - 쿠키런: 퍼즐월드 데이터

우선, 마녀의 성의 전작인 <쿠키런: 퍼즐월드> 의 실제 유저 플레이 데이터를 활용하여 스테이지 평가 지표를 만들기 위한 힌트를 얻고자 했습니다. 마녀의 성을 플레이한 유저 데이터를 사용할 수 있다면 더 좋았겠지만, 게임 런칭 전에 스테이지 평가 지표가 제작되어야 했기에, 오랜 기간 운영되어 유저 분석이 가능한 기존의 쿠키런: 퍼즐월드 데이터를 활용했습니다. 디테일한 인게임 로직은 차이가 있지만, "미션"과 "유저의 행동"은 퍼즐 게임이라면 어느 정도 공통적인 특성이 있을 것으로 판단했습니다.

우선, 유저가 게임 클리어에 실패했을 때 남는 기록은 "남은 미션 수" 밖에 없습니다. 제한된 무브 수를 다 사용했지만 남은 미션의 수가 0이 되지 못했다면 게임에서 실패한 것이기 때문입니다.

total mission left missions

쿠키런: 퍼즐월드의 상위 50%, 하위 50% 스테이지들에 대한 남은 미션 수 분포 비교

위 차트는 기존에 정한 "유저의 행동" 비율을 기준으로 상위 50%에 해당하는 스테이지들(Good, 파란색)과 하위 50%에 해당하는 스테이지들(Bad, 빨간색)의 남은 미션 수 분포를 나타낸 것입니다. 남은 미션 수가 1인 지점에서 파란색이 약 25%였고, 이는 상위 50%에 해당하는 모든 스테이지의 평균을 냈을 때 남은 미션 수가 1개인 플레이 비율이 약 25%였다는 것을 의미합니다.

위 차트를 그리면서 상위, 하위의 극단적인 스테이지들을 가져온 것이 아니라 모든 스테이지를 포함시켜 단순 평균을 낸 것임에도 유의미한 차이가 발생했다고 판단되었습니다. 즉, 유저 행동의 비율이 높은 경우, 남은 미션 수가 적은 실패 플레이 비율이 더 높다는 것을 의미합니다. 전체 스테이지가 아닌 성공률을 기준으로 보았을 때나 미션별로 스테이지를 구분하여 보았을 때도 대부분의 경우 위 차트와 유사한 경향이 나타났습니다. 다만, 미션에 따라 총 미션 수에 큰 차이가 있었고, Good과 Bad(파란색, 빨간색)가 달라지는 지점에도 조금씩 차이가 있었습니다.

milk mission left missions

밀크 로드 미션 스테이지들 기준

popping mission left missions

팝핑 젤리 벌레 미션 스테이지들 기준

위 분석을 통해 "남은 미션 수가 적게 남은 플레이 비율이 얼마나 많은가"를 스테이지 평가 지표에서 활용하는 것이 합리적이라는 결론을 내렸습니다. 다음 문제는 "그러한 정도를 어떻게 측정할까"와 "총 미션 수에 따라 달라지는 디테일을 어떻게 반영할까"였습니다.

스테이지 평가 지표 설계 및 분석

“남은 미션 수가 적게 남은 플레이 비율이 얼마나 많은가”를 두 가지 방식으로 활용해 보고자 했습니다. 첫 번째는 남은 미션 수의 분포가 얼마나 0에 가깝게 존재하는가, 두 번째는 총 미션 수 대비 남은 미션 수의 비율 혹은 남은 미션 수가 특정 갯수 이하인 플레이의 비율이 어느 정도인가의 기준이었습니다.

첫 번째 기준: 남은 미션 수의 전체적인 분포가 얼마나 0에 가깝게 존재하는가

첫 번째 기준으로 남은 미션 수의 전체적인 분포가 얼마나 0에 가깝게 존재하는가를 평가하기 위해 다음과 같은 과정을 거쳤습니다. 먼저, 스테이지마다 총 미션 수가 다르고, 실패한 플레이 횟수도 다르기 때문에 정규화 과정을 거쳤습니다. 그리고 표준편차를 계산하는 방법에서 아이디어를 얻어, 남은 미션 수가 적은 경우에 높은 가중치를 주었습니다. 이를 단순하게 표현하면, 하나의 스테이지에 대해 남은 미션 수 별로 (남은 미션 수 별 가중치) X (플레이 종료 시 해당 미션 수가 남은 유저 플레이의 횟수=플레이 카운트)를 합한 값을 정규화하여 첫 번째 지표로 삼았습니다.

두 번째 기준: 특정 비율 혹은 특정 개수 관점의 지표

두 번째 기준은 특정 비율 또는 특정 개수 관점의 지표입니다. 예를 들어, 20%를 기준으로 한다면 스테이지마다 주어진 총 미션 수 대비 20% 이하의 미션 수만 남긴 플레이의 비율을 계산하는 것입니다. 총 미션 수가 100개인 스테이지라면, 제한된 무브 수를 다 사용했을 때 20개 이하의 미션만 남긴 플레이의 비율을 계산합니다.

그런데 총 미션 수 자체가 적은 경우에는 비율을 기반으로 설정하는 것이 어렵습니다. 예를 들어 총 미션 수가 2개인 스테이지에서 남은 미션 수가 1개라면 비율을 50% 로 설정하여 지표화하는 것이 의도를 잘 반영하기 힘듭니다. 따라서 총 미션 수가 특정 개수 이상이면 비율을 기준으로, 특정 개수 이하라면 절대적인 미션 수를 기준으로 사용하고자 했습니다.

결과적으로 지표의 기준으로 사용할 [총 미션 수], [기준 미션 수], [기준 미션 수 비율]의 세 가지 값을 찾아야 했습니다. 기획팀의 도움으로 각 기준의 적당한 범위를 설정하고 Grid Search를 통해 최적화를 진행했습니다. 이 세 가지 값을 바꿔가면서 나온 플레이 비율과 유저의 행동 비율 사이의 상관관계가 높은 것을 찾는 것이 목표였습니다.

상관관계 분석

위의 두 관점에서 설계한 지표들과 유저의 행동 사이의 상관관계는 아래와 같았습니다.

  • 전체 분포 관점 지표와 “유저의 행동” 사이의 상관관계 : 0.49 ~ 0.51
  • 특정 비율 or 개수 관점 지표와 “유저의 행동” 사이의 상관관계:

    • 총 미션 수 기준 = 12 / 기준 미션 수 = 2 / 기준 미션 비율 = 0.2 일 때 0.51 ~ 0.54
    • 이는 곧, 총 미션 수가 12 이하일 때는 남은 미션 수의 개수가 2 이하인 플레이 비율에 해당하며, 총 미션 수가 12 초과일 땐 남은 미션 수의 비율이 (총 미션 수 대비) 20% 이하인 플레이 비율에 해당합니다.

kpi2

하지만 총 미션 수가 너무 적은 경우(초록색 원) 경향에서 벗어나는 케이스가 다수 발생했습니다. (색이 어두울 수록 총 미션 수가 적은 스테이지) 따라서 이를 보완하기 위해 총 미션 수가 너무 적을 때는 전체 분포 관점 지표를 사용하는 것으로 변경하였습니다. 최종적으로, 총 미션 수가 3개 이하일 때 전체 분포 관점 지표를 사용했을 때 상관관계가 0.56 ~ 0.57의 값을 보였습니다.

스테이지 평가 지표 정의

위의 과정으로부터 얻은 스테이지 평가 지표의 정의를 정리해보자면 다음과 같습니다. 아래에서 언급하는 "클리어 실패"란 제한된 무브 수를 모두 소모했음에도 남은 미션 수가 하나 이상인 경우를 의미합니다. 그리고 스테이지별로 총 미션 수가 각각 다르기 때문에 총 미션 수 기준으로 구분하여 정의합니다.

스테이지 평가 지표 = 아래 각 조건별로

  • 총 미션 수가 3 이하인 스테이지 :

    • 전체적인 남은 미션 수의 분포가 얼마나 0에 가까운지 (전체 분포 관점 지표)

      • [ 남은 미션 수 별 가중치 x 플레이 카운트 ]의 합
    • 계산 방법은 아래와 같습니다.

      kpi1 calculation

  • 총 미션 수가 4 이상 12 이하인 스테이지 :

    • 남은 미션 수가 2 이하인 플레이의 비율
    • 계산 예시

      • 총 미션 수가 8개인 스테이지에서 (4 ≤ 8 ≤ 12)
      • 실패한 플레이가 100번이고, 이 중 남은 미션 수가 2 이하인 플레이가 25번 있었다면
      • 스테이지 평가 지표는 25/100 = 0.25 로 계산
  • 총 미션 수가 12 초과인 스테이지 :

    • 남은 미션 수가 총 미션 수 대비 20% 이하인 플레이의 비율
    • 계산 예시

      • 총 미션 수가 100개인 스테이지에서 ( 100 > 12 )
      • 그리고 실패한 플레이가 100번 있을 때,
      • 남은 미션 수가 20개 (100개 * 0.2) 이하인 플레이가 30번이라면,
      • 스테이지 평가 지표는 30 / 100 = 0.3 으로 계산

보조 지표

위에서 설계된 스테이지 평가 지표는 기본적으로 게임에 실패했을 때 남은 미션 수의 분포를 기준으로 합니다. 그런데 모든 실패한 경우에 남은 미션 수가 하나이거나, 남은 미션 수에 상관없이 한 무브만 더 사용하면 클리어할 수 있는 특성을 가지는 스테이지라면 어떻게 될까요? 당연히 남은 무브 수의 분포를 통해 만든 스테이지 평가 지표의 신뢰도가 떨어질 수밖에 없습니다. 이를 위해, 스테이지 평가 지표의 신뢰도를 표현할 수 있는 보조 지표를 설계하게 되었습니다.

단, 이는 별도의 분석 과정이 아닌 논리적인 흐름에 따라 설계한 지표입니다. 처음 발단이 된 생각처럼, 이 보조 지표가 아주 낮을 때 스테이지 평가 지표를 신뢰하기 힘들 수 있다는 식으로 접근하는 것이 맞다고 생각되었습니다. 또한, 실제 런칭 이후 효과적인지에 대한 여부 판단이 필요합니다.

보조 지표 = 퍼즐봇 데이터 기준, '제한된 무브 수 시점에서의 남은 미션 수'와 '모든 미션을 클리어할 때까지 추가로 소모된 무브 수' 간의 상관관계

  • Pearson correlation (value based)와 Spearman correlation (rank based)의 평균값을 사용
  • (참고) 퍼즐봇은 제한된 무브 수를 넘어서까지 게임을 플레이할 수 있음

결과

본 스테이지 평가 지표가 폴리싱 단계에서 사용되는 것을 목표한다면 실제로 스테이지들이 출시되기 전에 스테이지 평가 지표의 계산이 가능해야 합니다. 따라서 먼저 퍼즐봇의 플레이 데이터를 통해 스테이지 평가 지표를 계산하고, 사내 테스트 데이터에서 유저의 행동을 확인하는 과정을 통해 지표를 검증하였으며, 그 결과는 아래와 같습니다.

kpi all stages

위 차트에서 하나의 점은 하나의 스테이지를 의미하며, x 축은 스테이지 평가 지표 값, y 축은 기준이 되는 “유저의 행동” 비율을 의미합니다.

실제로, 스테이지 평가 지표가 증가함에 따라 기준으로 삼은 유저의 행동 비율이 증가함을 볼 수 있었습니다. 또한, 스테이지 평가 지표가 0.5 이상인 스테이지들만 제한해서 본다면,

kpi over 0 5

스테이지 평가 지표와 유저의 행동 사이에 더 뚜렷한 상관관계가 있음을 확인할 수 있었습니다. (Pearson, Spearman 상관관계 기준) 0.55~0.65 정도의 상관관계 값을 가졌습니다.

즉, 퍼즐봇 데이터로만 계산된 스테이지 평가 지표가 사내테스트 결과 유저의 행동과 유의미한 상관관계를 보였습니다. 다만, 보조 지표의 경우 경향성을 충분히 확인하기 위한 데이터는 부족한 상태라고 결론지었습니다. 비교 대상 스테이지들 간에 "스테이지 평가 지표의 수치가 비슷할 때에, 보조 지표의 값에 차이가 난다면 어떠한 현상이 있는가"가 중요하므로 지금보다 더 많은 스테이지가 있을 때 확인이 가능할 것이라고 판단합니다.

Discussion

사내테스트 데이터 기준으로, 퍼즐봇 데이터로 만든 스테이지 평가 지표와 유저의 행동 비율 사이의 상관관계가 유의미했습니다. 이 결과를 바탕으로 기존의 프로젝트 수행 목적인 “폴리싱 단계에서의 도움”을 주기 위한 역할을 수행할 수 있을 것으로 생각됩니다.

쿠키런: 퍼즐월드 데이터로 만든 스테이지 평가 지표와 유저의 행동 비율 사이의 상관관계와 거의 유사한 정도를 보였습니다. (다만 게임이지만) 유저 데이터로 만든 지표와 퍼즐봇 데이터로 만든 지표가 거의 유사한 정도의 성능을 보였다는 점은, 성공률을 떠나서 퍼즐봇의 플레이 패턴이 유저의 플레이 패턴과 유사한 지점이 있고 이는 곧 플레이 패턴이 맵의 고유한 특성 자체(맵, 기믹, 미션 등)에서 나올 수 있음을 시사합니다. 즉, 더 좋은 맵이라는 개념이 존재할 수 있을 것이라 생각됩니다.

한계

본 모델링 과정에는 한계가 다수 존재합니다. 퍼즐월드 유저 데이터를 기준으로 최적화한 지표가 마녀의 성 퍼즐봇 데이터에서도 똑같이 유의미할 것이라고 보장할 수 없습니다. 따라서 스테이지 평가 지표 계산 시 필요한 총 미션 수 기준, 남은 미션 개수 기준 등을 새롭게 최적화할 필요가 있습니다. 또한, 사내 테스트 데이터에 대한 검증 결과가 실제로도 유효할 것이라고 판단하기 어렵습니다. 유저의 행동 기준이 “결제”와 직접적으로 연관되어 있는 것에 비해, 사내 테스트는 결제에 대한 심리적 허들이 낮았을 것입니다. 또한 기준이 되었던 유저의 행동, “게임 실패 시 이어하기 및 하트 구매 후 재시도”가 분명 게임 운영 상 좋은 판단 기준이 될 수 있지만, 절대적이고 유일한 기준은 아닙니다. 이러한 유저의 행동을 100% 예측할 수 있다고 해서, 예측 결과가 높은 스테이지”만” 사용하는 것이 항상 좋다고 볼 수는 없습니다.

마무리

위와 같이 한계가 분명히 존재했던 스테이지 평가 지표의 제작 과정이었지만, 실험 과정에서 유의미하다고 판단될 정도의 결과를 확인할 수 있었습니다. 또한 이 지표의 제작은 마녀의 성 게임의 런칭 이전 시점에 이루어진 만큼, 지표 자체의 개선과 유저 데이터의 지속적인 모니터링을 통해 점진적으로 개선 중입니다.

머신러닝 엔지니어로서 게임에 대한 이해도나 게임을 바라보는 시각에 한계가 있을 수 있다고 생각합니다. 하지만 오히려 그렇기 때문에 데이터의 관점으로 게임을 바라보는 시각은 마녀의 성 팀에게 큰 도움이 될 수 있었을 것이라 생각합니다. 부족한 부분도 많았지만, 직군과 역할에 상관없이 게임의 성공이라는 공통된 목적을 가지고 새로운 지표를 만들어낸 경험은 정말 뜻깊은 경험이었습니다. 이처럼 다양한 사람들의 노력이 들어간 쿠키런: 마녀의 성이 더 많은 사람들에게 사랑받을 수 있다면 그것만큼 보람찬 일도 없을 것입니다. 앞으로도 데브시스터즈와 쿠키런: 마녀의 성에 많은 관심 바랍니다!

데브시스터즈는 최고의 인재를 찾고 있습니다.

데브시스터즈에서는 능력있는 Machine Learning Engineer를 찾고 있습니다.
자세한 내용은 채용 사이트를 확인해주세요!
AIMachine Learning

© 2024 Devsisters Corp. All Rights Reserved.