2014년 7월 16일 수요일

[Gamasutra] Clash of Clans - Time Monetization Formulas Demystified

by Wolfgang Graebner on 04/02/14 08:10:00 am


Supercell의 초대박 게임인 Clash of Clans 에서 건물 짓기, 업그레이드 또는 병력 생산 등에 필요한 시간을 단축하기 위해서는 현질로 gem이라는 녀석을 구입해서 사용해야만 한다. 결국 플레이어들의 '조바심' 내지는 '조급증'을 돈으로 교환하고 있는 것이다. 사실 CoC 뿐만 아니라 필자가 알고 있는 대부분의 유사 장르 소셜 게임들이 다 이런식으로 돈을 번다.
필자는 이러한 게임들의 이면에서 실제로 어떠한 숨은 공식들이 동작하는지 알아보고 싶었으며, 그 분석 결과를 필자의 블로그인 allworkallplay.org에 정리해 보았다.
한마디로, 이 글은 "CoC에서 시간에 대한 현금 가치는 과연 얼마일까?"에 관한 것이다.
일단 그래프 몇 개부터 살펴보고 시작하자.

아래 그래프는 CoC에서 단축하려는 시간 구간별로 얼만큼의 gem을 필요로 하는지를 보여주고 있다. 당근, 더 긴 시간을 단축하기 위해서는 더 많은 gem이 필요하다. 그렇지만 아래 그래프를 보는 데 있어 오해하지 않도록 주의해야 하는 것은 그래프상으로는 마치 더 긴 시간을 단축하려 할 수록 그 비용이 기하급수적으로(exponentially) 증가하는 듯 보인다는 것인데, 이는 착각일 뿐이다. 초단위로 환산해서 봤을 때, 1분 (60초)와 1주일(604,800초) 사이에 존재하는 시간상 넘사벽 차이 때문에 그렇게 보이는 것일 뿐이다. 즉, 아래 그래프의 x 축 한 눈금 당 시간 증가 간격이 동일하지 않기 때문에, 필요한 비용 역시도 exponential하게 증가하는 듯 왜곡되어 보일 수 밖에 없다. 

(역: 뭐 당연한 얘기인데, 그림상으로 x축 넓이가 동일하기 때문에 느껴지는 착각이다. 즉, 1 Day와 1Week의 시간 차이는 7배나 되지만 그래프 상 눈금 간격은 똑같게 그려놓다 보니 기하급수적으로 비용이 증가하는 듯 보일 뿐이다)


흐음... 그렇다면 x 축 각 구간을 동일한 시간 간격으로 펼쳐놓고 살펴본다면 실제로 우리가 원하는 그림을 얻을 수 있겠네? 아래 그래프가 그 결과이다 (각 눈금을 day 단위로 일정한 간격으로 쭈욱 펼쳐놓았음) . 음... 그런데, 이와 같이 '일' 단위로 시간을 등간격으로 배치했더니 그래프 좌측 하단과 같이 
1초, 1분, 1시간과 같이 짧은 시간에 해당하는 녀석들이 거의 같은 자리에 점이 찍혀 버려서 도대체 알아보기가 곤란하게 되어버렸다. ㅆㅂ

결국 위 그래프로도 제대로 파악하기가 곤란하므로, 다른 방식으로 데이터를 해석해 보도록 하자. 단위 시간당 cost에 대한 관점으로 살펴보는 것이다. 즉, skip하려는 시간이 커질 수록 단위시간(1초)당 가격이 얼마나 큰 할인율이 적용되고 있는가? 의 관점으로 살펴보자는 것이며, 아래의 그래프가 그 결과물 되겠다.

필자의 의견으로는, CoC 에 사용된 '가격 알고리즘 그래프'가 원래는 아래 그래프 상의 붉은색 '곡선'이었지만 단순화 하기 위해 연두색 그래프와 같이 선형화 시킨 것이 아니라, 애초부터 선형으로 만들어진 것으로 보인다. 그렇게 생각하는 이유는 뒤에서 설명하도록 하겠다.


공식 몇 개 살펴보고 가자.


일단 우리에게 필요한 것은 아래와 같이 적당히 구분된 시간 단위에 대해 원하는 가격이 책정된 테이블을 하나 만드는 것이며, 그 밖의 시간에 대한 가격 계산은 사실 단순한 선형보간으로 손쉽게 계산할 수 있다. (역: 예를 들어, 30분의 시간 단축에 필요한 gems는 '1분 ~ 1시간' 사이 구간의 기울기로 간단하게 계산할 수 있다는 얘기)
이처럼 사람에게 친숙한 시간 단위로 나누어 가격을 할당하는 것은 상당히 합리적이라고 할 수 있다. 왜냐하면 누구나 각각의 구간이 얼만큼의 기다림을 필요로 하는 지 직관적으로 느낄 수 있기 때문이다. 뿐만 아니라 이런 형태의 구분은 가격 튜닝에도 용이하다. 나중에 1일에 해당하는 가격을 조금 더 올려야겠다고 판단했다면, 그저 셀 하나의 값만 수정하면 끝나기 때문이다. 


곡선이 아니라 이처럼 선형 가격 구간을 만들어 사용하면 좋은 점은 특정 시간대의 가격을 조절하는 것(tweak)이 가능해진다는 것이다.

자 이제, 위 테이블을 그래프로 표현 가능한 형태의 수식으로 작성해 보자.
선형방정식 기본형은 다음과 같다.


두 점 (xi , yi)와 (xi+1 , yi+1) 사이를 지나는 직선의 방정식을 구하는 방법은 다음과 같다.



당근, x 축은 시간이며, y축은 가격 즉, 필요한 gem의 갯수 되겠다.

자 이제 공식이 준비되었으니 각 변수를 실제 Clash of Clans의 데이터들로 채워보자. 그러니까, 1시간(3,600초)과 1일(86,400초) 각각에 해당하는 가격인 20 gems와 260 gems을 넣자는 것이다. 이를 통해 해당 구간을 나타내는 직선의 방정식을 얻을 수 있다.



이제 위 공식을 이용하여 [1시간 ~ 1일] 사이의 time skip이라면 원하는 단축시간에 대한 가격을 쉽게 얻어볼 수 있다. 예를 들어, 건물 짓는데 4시간이 남았다고 할 경우, 미지수인 x에 14,400초를 입력하면, y = 51 gems 라는 것을 바로 알 수 있다. (역: 60초 * 60분 * 4시간 = 14,400초)
각 개별 구간에 대한 수식을 모두 모아 아래와 같이 하나의 개별식 함수(piecewise funcion)로 나타낼 수 있다.

바로 이 녀석이 Clash of Clans의 gem 과 시간 간의 변환율 공식 되겠다.

위 공식을 excel 형태로 적용하고 싶다면 아래의 수식을 B1 셀에 붙여넣자. 이제 A1에 구하고자 하는 시간만 초단위로 입력하면, 필요한 gem의 양이 B1 셀에 자동으로 계산되어 나타나게 된다.
=ROUND(IF($A$2=0,0,IF($A$2<=60,1,IF($A$2<=3600,((20-1)/(3600-60))*($A$2-60)+1,IF($A$2<=86400,((260-20)/(86400-3600))*($A$2-3600)+20,((1000-260)/(604800-86400))*($A$2-86400)+260)))),0)
Excel Web App을 이용해서 live demo를 한번 실행해 보는 것도 좋겠다. 더블클릭하여 time을 수정하고, 가격에 해당하는 gem 필요량이 변하는 것을 직접 확인할 수 있다.

자, 이제 이 모든 것들이 실제 돈과는 어떤 관계가 있는 지 알아보자.


지금까지 CoC의 현질 캐쉬인 "gem"의 관점에서만 얘기했다. 그런데 알다시피, gem은 앱 스토어에서 현질로 구입해야 하는 만큼 실제 현금 가치를 할당하는 것 또한 가능하다. 다음 테이블이 Supercell이 할당한 gem에 대한 현질가격 테이블이다. 
보면 알겠지만 gem 하나당 가격은 더 많은 량의 gem 패키지 상품을 구입할 수록 저렴해진다. 그렇지만 할인율과 관련된 내용은 뒤에 더욱 자세히 다루기로 하고, 일단은 문제를 단순화 하기 위해 평균 가격인 £0.0055를 gem당 단가로 퉁쳐서 사용하도록 하자.

자 이제 우리는 앞서 구했던 공식을 이용해 원하는 시간 단축에 대한 실제 가격을 알 수 있게 되었다(역: 물론 할인율이 반영되지 않은 근사 가격이다). 아마도 Supercell의 누군가 높은분은 하루 대기타임 스킵에 평균 £1.43 그리고 1주일 스킵에는 £5.49가 적절하다고 판단한 듯 하다. 만약 여러분이 이러한 CoC의 가격 정책에 동의하지 않는다면 손쉽게 변경을 가해 볼 수도 있다. 예를 들어, 하루 스킵에 대한 가격으로 £2.00로 변경한다면 나머지는 자동으로 반영된다. 이러한 접근은 게임 monetization을 튜닝하는데 있어서 대단히 편리하며 합리적인 방법이다.

(주제와는 약간 거리가 있지만 짧은 사족하나: 혹시 여러분은 Supercell이나 Microsoft같은 회사들이 헷깔리는 변환율과 함께 굳이 별도의 가상화폐를 도입하려 하는지에 대해 궁금해 해본 적이 있는가? 이번 조사 도중 필자는 그러한 가상화폐의 이면에 자리하고 있는 심리학과 관련한 멋진 글 2개를 발견할 수 있었다. 혼자 보기 아까워서 링크 공유하니 함 읽어들 보시라. 

part 1 은 요기, 그리고 part 2 는 요기.)

할인 (Discounts)

Gem 구입에 적용된 할인율
각각 Gem pack의 gem수량은 고정되어 있다. 즉,  한 번에 501 gems와 같은 임의의 숫자로 구입하는 것은 불가능하며, 500 gems 또는 1,200 gems와 같이 정해진 묶음상품 형태로만 구입이 가능하다. 상품별 할인율을 그래프로 함 살펴보자.
위 그림으로는 잘 구분이 안될 수 있는데, 비싼 상품쪽으로 갈수록 그 경사가 약간씩 완만해 지고 있다. 즉, 대량의 gem pack 상품을 구입할수록 더 큰 할인을 제공하고 있다.
위 테이블을 통해 14,000 gems 상품을 구입할 경우 500 gems 상품에 비해 gem당 단가는 16.4% 할인된 가격에 제공되고 있음을 확인할 수 있다.

대기시간 스킵에 적용된 할인율

Gem 상품에 적용된 할인폭과 대기시간 스킵에 사용된 할인폭을 비교하면, 대기시간 스킵에 사용된 할인폭이 뒤로 갈 수록 (더 긴 시간을 스킵하기위해 gem을 사용하려 할 수록) 보다 확실하게 적용되고 있음을 확인할 수 있다. 

즉, 1주일의 대기시간을 스킵하는 경우 1분 스킵했을 때와 비교하면 단위 시간당 gem소비량을 90.1%나 절약할 수 있다.
한가지 흥미로운 점은, 위 테이블을 살펴보면 1분 ~ 1시간 사이의 할인율은 66.7%나 되지만 1시간 ~ 1주일 사이의 할인율은 고작 23.4% 정도 증가했다는 것이다. 1~59분 사이에 책정된 가격이 너무 비싸다고 생각되지 않는가? 왜 Supercell 친구들은 상대적으로 짧은 시간의 단축에 대해서 이처럼 과도하게 비싼 가격을 할당한 것일까?

뭐 난들 알겠어? 다만 추측해 보건데, 남은 대기 시간이 짧을수록 플레이어의 조급증이 강하게 자극될 것이며, 이로 인해 유저들은 (상대적으로)비싼 가격을 기꺼이 지불하는 메커니즘을 이용한 것이 아닐까 생각한다. 결국 일종의 가격 차별화 정책이 멋지게 반영된 것이 아닐까? 물론 어디까지나 개인적인 추측일 뿐이므로, 보다 그럴듯한 이유를 알고 계신 분 있다면 댓글 남겨주시면 감사하겠다. :)

누적 할인받기 (Stacking Discounts)

만약 여러분이 gem을 구입하고, 대기시간 단축에 사용한다면, 중첩된 할인 효과를 노릴 수 있다.

가장 비 경제적인 경우라면, £2.99에 500 gems pack을 구입하고, 1분 대기시간 단축에 gem을 사용하는 상황이 될 것인데, 이 경우라면 1초당 £0.000100 비용을 지불한 것이라 볼 수 있다.
반대로 가장 경제적으로 사용한 경우는 £69.99 의 가격에 14,000 gems pack을 구입한 후, 1주일 대기시간 단축에 gem을 사용한 경우 되겠다. 이 경우는 초당 고작 £0.000008의 금액만 지불한 꼴이 된다.

위 두 경우 단위시간당 가격차이는 무려 91.7%에 달한다.


할인율의 위력(Discount Power)

초당 단가만 놓고 보면 소숫점 밑으로 한참 내려가는 숫자이다 보니 그닥 크게 와닿지가 않는다. 그런데, 604,800초(1주일) 라는 긴 시간을 단축하는 비용으로 놓고 보면 얘기가 달라진다. 즉, 경우에 따라 동일한 1주일 대기시간 단축에 £5가 아니라 무려 £60의 비용을 투자되는 상황이 발생할 수도 있다는 것이다!

긴 시간일수록 더 관대한 할인율을 적용하는 것이 핵심이다. 그렇지 않을 경우 순식간에 엄두가 나지 않는 가격이 되어버릴 것이며, 결국 아무도 돈을 지불하고싶지 않도록 만들 것이기 때문이다. 
필자 생각으로는 일찍이 Supercell이 위와 같은 것들을 알고 있었을 것으로 생각한다. 손쉽게 할인율을 튜닝할 수 있는 방법이 필요했을 것이며, 이를 위해서는 단순한 라인 세그먼트의 조합이 최적의 해결방법인 것이다.

끝으로, 정말로 다른 해결 방법은 없었던 걸까?

분명 같은 목적을 얻기위한 다른 방법들이 있을 것이다. 가능한 대안들에 대해 고려해 보면 Supercell이 선택한 방법의 장단점을 보다 명확히 알수 있을 듯 하다.  

단일 선형 그래프 (A Linear Graph)

사실 필자가 처음 생각했던 것은 아래의 붉은색 그래프와 같이 단순하게 하나의 1차 함수 그래프를 사용하는 것이었다. 그 다음엔 gems <--> time 간의 변환 함수만 만들면 끝날 테니까 말이다 (마치 $ <--> £ 간의 환율 변환 하는 것 처럼).
물론 가능하다. 그렇지만 현재 CoC 데이터를 기준으로 했을 때 1일 시간 단축을 위한 가격은 260 gems에서 100 gems로 바뀌어야 하며, 이는 곧 61.5%의 가격인하를 의미한다. 역으로 1일 단축에 대한 가격을 기존대로 유지하고자 한다면, 전체 기울기가 가파르게 증가하여 1주일 단축에 대한 가격은 엄청나게 비싸질 수 밖에 없을 것이다.

기본적으로, 하나의 1차 함수를 사용할 경우 맨 처음과 끝 2개의 지점에서만 가격을 조절하는 것이 가능하다. 결국, Supercell이 그러했듯, 조금 더 유연한 구간별 가격 책정을 위해서는 추가적인 라인 세그먼트를 추가하는 것이 불가피 하다. 물론, 이론적으로 얼마든지 많은 서로 다른 가격 구간을 추가할 수 있겠으나 Supercell 사람들은 지금 정도의 구간 분할이면 가격 컨트롤에 충분하다고 생각했던 것 같다.

곡선 그래프 (A Curved Graph)

Exponential, quadratic, bezier 함수 등을 이용한 부드러운 곡선을 사용해 보면 어떨까?
위 그림에도 있듯 조낸 부드럽고 뭔가 멋져 보인다. 그러나 결정적으로 원하는 대로 조절을 하기에는 엄청 어렵다 ㅆㅂ... 일단 곡선을 만들어내기 위한 함수를 만들고 원하는 가격 구간을 만들기 위해 수식을 조절하는 것 자체가 토할만큼 어려운 일이다. 이런 저런 시도를 해보긴 했는데... 절대 추천하고 싶지 않다. ㅎㅎㅎ :-P

결론

Clash of Clans 에서 시간 단축을 통해 현질을 이끌어내기 위해 사용한 방법은 정말 세련되다. 적어도 나로서는 이 보다 더 나은 시스템을 고안해 내기 어려웠을 것 같다.


정리해 보자면:
  • 보다 긴 시간을 단축하기 위해서는 더 많은 돈이 필요하다. 그렇지만, 더 좋은 조건(할인율)이 적용된다.
  • 가격 책정은 연속된 몇 개의 선형 구간으로 구성되어 있다.
  • 이런 방법을 선택함으로 인해, 개발자 입장에서는 이해하기 쉽고 직관적으로 방법으로 특정 구간에 대한 가격 설정 및 조정이 가능하다 .
  • 단축 시간이 길어질수록 적용되는 할인율 증가폭이 더 비싼 gem 패키지 구입 시 적용되는 할인율보다 훨씬 크다.
  • 이런 방식을 채택함으로 인해 기꺼이 비싼 gem 패키지를 구입할 수 있도록 유도할 수 있다. 만약 그렇지 않을 경우 gem 패키지의 가격 역시도 급격히 넘사벽으로 비싸져야 할 것이고, 플레이어 입장에서 유혹을 느끼기 힘든 상품이 될 수도 있기 때문이다. 


내 글에 흥미를 느낀다면, 블로그에서 다른 글들도 함 살펴보시라. 

트위터 follow를 해도 좋고~

www.allworkallplay.org

https://twitter.com/awapblog


Disclaimer: 이 글은 나 스스로 CoC를 직접 반복 플레이하며 수집한 데이터와 그 밖의 조사를 통해 얻은 자료들을 이용해 작성되었다. 적어도 필자가 아는 한도 내에서는 정확한 데이터이며, 3번에 걸쳐 모든 숫자와 계산식들을 확인했다. 그럼에도 불구하고 여전히 어딘가에 실수가 존재하거나, 이 글을 쓴 이후로 패치 등을 통해 게임 데이터가 변경되어 글의 내용과 상이할 수 있다. 어쨌든, 이글을 이해하고 사용하는 것은 독자 본인의 몫이며, 필자는 어떤 것도 보장하지 않는다. 다만 혹시 글을 읽는 중 뭔가 이상한 거 발견되면 연락 주시라.

역: 2014/0716 Iron Smith 
나도 오역, 누락 이런 거 많을 수 있다. 책임 못진다 ㅎㅎ