프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.

밸런싱, 숫자의 함정

기획 2013. 1. 25. 10:00
Posted by 월하

기획, 특히 밸런싱쪽을 하다 보면 숫자를 믿게 됩니다.

 

'나의 엑셀 데이터는 완벽하다!' 라거나 "드랍 확률이 50%이니 두 번에 한 번은 나오겠지. 얻기 쉽네' 라거나 말이죠.

 

음... 물론 산술적 데이터를 작성하고 이를 바탕으로 밸런스를 잡는건 중요 합니다.

 

밑도 끝도 없이 무작정 우기는 것보다 더 명확하고 다른 사람(자기 자신을 포함)을 설득 하기도 쉽죠.

 

하지만 이 숫자에는 많은 함정이 있습니다.

 

속는 사람이 유저가 될 수도 있고 기획자 자신이 될 수도 있죠.

 

물론 잘만 이용하면 아주 사악한 컨텐츠를 만들수도 있죠.

 

 

 

확률 이야기를 잠깐 해볼까요?

 

가령...

 

 

1에서 100까지 적힌 숫자가 있는 종이 중 1이 적힌 종이를 뽑는 유저에게 뭔가 특별한 상품을 주기로 하였습니다.

 

정말 명확하게 1% 확률로 상품을 지급 하는 구조가 되겠죠.

 

그런데....

 

1. 하나의 상자가 있습니다.

2. 이 상자에는 1에서 100의 숫자가 적힌 종이가 들어 있습니다.

3. 유저들은 자기가 원할 때 이 상자에서 아무 종이나 무작위로 뽑습니다.

4. 한 번 뽑은 종이는 다시 상자에 넣지 않습니다.

5. 모든 종이를 다 뽑으면 그 때 다시 종이들을 모두 넣습니다.

6. 또는 하루가 지나면 뽑힌 종이들을 모두 넣습니다.

 

이런 조건 이라면 어떨까요?

 

 

명확하게 1%의 확률이라고 할 수 있을까요?

 

처음에 시도한 사람이 1이 적힌 종이를 뽑는다면?

 

정말 1%의 확률 일까요?

 

1이 적힌 종이가 안나올수록 당첨 확률은 증가 됩니다.

 

하지만 1이 적힌 종이가 나온 이후로는 확률이 0%가 됩니다.

 

'뭐 이런 엉망인 시스템이 다 있어!' 라고 할지 모르지만..... 

 

 

 

자.... 지금부터 재미있는 이야기가 됩니다.

 

 

1. 유저들에게 당첨자가 있다는걸 알려 주지 않는다.

 

자~ 당첨자가 나왔지만 유저들은 계속 해서 뽑기를 돌립니다.

 

아니 돌릴 마음이 있는 유저들은 계속 돌리겠죠.

 

한 명이 한 번만 돌릴수도 있고, '계속 돌리면 언젠간 나오겠지!'라고 정말 계속 돌리는 유저가 있겠죠.

 

정말 고마운 유저죠. 어차피 꽝인걸 알면서도 계속 돌려주고 결국 초기화 되거나 날이 바뀌어 초기화 되어 당첨이 되는....

 

이미 당첨 유저가 나와 계속 꽝이지만 자긴 운이 없는줄 알거나 그렇겠죠.

 

어차피 날이 바뀌면 초기화 되는데도 열심히 돌려 초기화 시킨 후 당첨이 되겠죠.

 

 

 

2. 유저들에게 당첨자가 있다는걸 알려 준다.

 

유저들이 위의 룰을 알고 있다면 사실 알려주는게 더 재미있습니다.

 

자... 초반에 뽑을지 아니면 슬슬 눈치를 볼지.....

 

분명 당첨자가 나오기 전에는 늦게 뽑을수록 당첨 확률이 올라 갑니다.

 

1/100 에서 2/100, 3/100 4/100 ....... 100/100 이런식으로 말이죠.

 

그런데 중간에 누가 덜컥 당첨 된다면?! 그 뒤로는 전부 꽝!

 

유저들 입장에선 치열한 눈치 싸움이 일어나겠죠.

 

그런데 당첨이 나오면 더 재미있어 집니다!!

 

왜?!! 만약 후반에 당첨이 나왔고 남은 종이가 얼마 없는 경우...

 

1. '이번엔 후반에 나왔으니 다음엔 초반에 나올거야'

 

2. '이번에 후반에 나왔으니 다음에도 후반에 나올거야'

 

3. '순서는 어차피 랜덤이고 많이 뽑을수록 확률이 높아'

 

4. '어차피 랜덤. 될 놈은 되고 안될 놈은 안되지.'

 

 보통 이 네 가지로 나누어 지죠.

 

 

3, 4번 유저의 경우 뭐 아무일도 없지만...

 

1, 2번 유저의 경우  치열한 눈치 싸움이 벌어지죠.

 

1번 유저의 경우 앗싸리 미리 랜덤 박스를 다 돌리고 빨리 초기화 한 후 자기가 뽑을 지

 

아니면 날이 지나서 초기화 되면 그 때 잽싸게 할 지 눈치를 보겠죠.

 

2번 유저의 경우 초기화 될 때 까지 기다리다가 초기화가 되면 슬슬 눈치를 보겠죠.

 

두 유저 모두 초기화 되는 시점을 신경 쓰게 될 테고 초기화가 되는 순간

 

1번 유저의 러쉬와 2번 유저의 눈치 작전이 시작 되는....

 

확률 이야기는 여기까지 하고 이제 고정 수치(공격력) 이야기를 해볼까요?

 

 

 

A 유저는 10초에 한 번 10의 대미지로 공격 할 수 있습니다.

 

B 유저는 1초에 한 번 1의 대미지를 줄 수 있습니다.

 

두 유저가 싸우면 누가 이길까요??

 

자.... 두 유저 모두 체력이 20 입니다.

 

그럼 시간당 체력이 아래와 같이 되겠죠.

 

시간

A 유저 대미지

B 유저 대미지

A 유저 남은 체력

B 유저 남은 체력

0

0

0

20

20

1

10

1

19

10

2

0

1

18

10

3

0

1

17

10

4

0

1

16

10

5

0

1

15

10

6

0

1

14

10

7

0

1

13

10

8

0

1

12

10

9

0

1

11

10

10

0

1

10

10

11

10

1

9

0

 

A 유저가 이기네요.

 

그럼 만약 B 유저가 2초에 한 번 2의 대미지를 주면 어떻게 될까요?

 

시간

A 유저 대미지

B 유저 대미지

A 유저 남은 체력

B 유저 남은 체력

0

0

0

20

20

1

10

2

18

10

2

0

0

18

10

3

0

2

16

10

4

0

0

16

10

5

0

2

14

10

6

0

0

14

10

7

0

2

12

10

8

0

0

12

10

9

0

2

10

10

10

0

0

10

10

11

10

2

8

0

 

그런데 체력이 20이 아닌 21이 된다면 어떨까요?

 

시간

A 유저 대미지

B 유저 대미지

A 유저 남은 체력

B 유저 남은 체력

0

0

0

21

21

1

10

2

19

11

2

0

0

19

11

3

0

2

17

11

4

0

0

17

11

5

0

2

15

11

6

0

0

15

11

7

0

2

13

11

8

0

0

13

11

9

0

2

11

11

10

0

0

11

11

11

10

2

9

1

12

0

0

9

1

13

0

2

7

1

14

0

0

7

1

15

0

2

5

1

16

0

0

5

1

17

0

2

3

1

18

0

0

3

1

19

0

2

1

1

20

0

0

1

1

21

10

2

-1

-9

 

둘 다 동시에 죽겠군요.

 

이번에는 B 유저가 3초에 한 번 3의 대미지를 준다고 해볼까요?

 

시간

A 유저 대미지

B 유저 대미지

A 유저 남은 체력

B 유저 남은 체력

0

0

0

21

21

1

10

3

18

11

2

0

0

18

11

3

0

0

18

11

4

0

3

15

11

5

0

0

15

11

6

0

0

15

11

7

0

3

12

11

8

0

0

12

11

9

0

0

12

11

10

0

3

9

11

11

10

0

9

1

12

0

0

9

1

13

0

3

6

1

14

0

0

6

1

15

0

0

6

1

16

0

3

3

1

17

0

0

3

1

18

0

0

3

1

19

0

3

0

1

 

오오~ B 유저가 드디어 이겼습니다.

 

DPS(초당 공격력)는 1로 동일 합니다.

 

체력도 동일 합니다.

 

방어력 같은거 없이 무조건 고정 대미지가 들어 갑니다.

 

하지만 공격 속도, 체력에 따라 차이가 나게되죠.

 

DPS는 분명 대미지를 비교하는 좋은 기준이 될 수 있습니다.

 

하지만 상황에따라 많은 변수를 가지게 되는 녀석이라 맹신하게되면 망하죠. ㅋ

 

밸런싱을 잡을 때 가장 어렵고 귀찮은게 이런 요인들이 넘쳐 흐르기 때문이죠.

 

간단한 RPG게임이라도...

 

원거리와 근거리, 평타와 스킬, 지속 대미지와 한방 대미지....

 

몬스터와 플레이어의 이동 속도 등등...

 

고려할 사항이 너무 많죠.

 

그럼에도 이런걸 다 무시하고 산술적 수치만으로 밸런싱을 하게 되면 망하기 딱 좋죠.

 

뭐 결국 밸런싱은 테스트와 노가다의 극치입니다.

 

 

 

밸런싱을 하는 방법에는 몇 가지 방법이 있습니다.

 

일부 특출난 사람들은 감각적으로 밸런싱을 잡는 사람이 있다고 합니다.

 

하지만 그게 안된다면 계속 하여 반복 테스트 수정을 하는 거죠.

 

사실 밸런싱 만큼 공을 들인만큼의 퀄리티가 나오는것도 없습니다.

 

대신 경력이 늘고 노하우가 생기면 테스트, 수정, 최초 밸런싱을 할 때 시간이 줄어들게되죠.

 

 

 

.... 뭔 이야기를 하려고 했는지 잘 모르겠지만 여하튼

 

밸런싱을 할 때 숫자를 너무 믿으면 안됩니다!!

 

댓글을 달아 주세요

  1. Favicon of https://raago.tistory.com 라고오 2013.01.25 13:40 신고  댓글주소  수정/삭제  댓글쓰기

    직접 테스트 해보는거랑 얼추 맞겠지 하는거랑은 많이 다르군요 'ㅅ';;
    1초에 1이랑, 10초에 10이랑 비교는 진짜충격!

  2. Favicon of http://bluekms21.blog.me 크로스 2013.01.25 16:10  댓글주소  수정/삭제  댓글쓰기

    뭐 당연한 말을 하시네.. 하고 슥슥 읽었는데
    다 읽고나니 '허얽!!!' 하는 내용이네요. 잘봤습니다.

  3. Favicon of http://bluekms21.blog.me 크로스 2013.01.25 16:10  댓글주소  수정/삭제  댓글쓰기

    뭐 당연한 말을 하시네.. 하고 슥슥 읽었는데
    다 읽고나니 '허얽!!!' 하는 내용이네요. 잘봤습니다.

  4. Favicon of https://mechanicalpaper.tistory.com 박메페 2013.01.25 21:10 신고  댓글주소  수정/삭제  댓글쓰기

    초당공격력 비교 예시가 확실하게 감이오네요..ㄷㄷㄷ 숫자. 뭔가 답 같은 느낌인데 너무어렵네요..

  5. Favicon of https://gamedevforever.com 대마왕J 2013.01.26 12:06 신고  댓글주소  수정/삭제  댓글쓰기

    ㄷㄷㄷㄷ 정신차리고 읽어보면 무서운 글이예요. 역시 기획자들이란..

  6. Favicon of https://gamedevforever.com 친절한티스 2013.01.29 13:33 신고  댓글주소  수정/삭제  댓글쓰기

    ...머야 이글 무서워...

  7. 드류 2013.01.30 11:21  댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다~
    갑자기 생각난건데 여기에 물약이나 힐이라는 변수가 들어가면.. A의 승률이 눈에 띄게 높아질 것 같네요~ 그래서 전 보통.. 몹을 잡을 땐 같은 B처럼 공속을 먼저 보고요~ pk할 때는 A처럼 맥뎀을 먼저 봅니다~ (너무 당연한가요?)ㅎㅎ

    • Favicon of https://gamedevforever.com 월하 2013.01.30 16:45 신고  댓글주소  수정/삭제

      물론 그렇긴 하지만 추가 변수가....
      공격 시 확률적으로 추가 대미지 라거나 확률적으로 상대방에게 스턴을 건다거나 하면
      B가 더 훨씬 유리해지겠죠.
      결국은 케바케 입니다.

  8. 크림슨로더 2013.02.01 23:09  댓글주소  수정/삭제  댓글쓰기

    그래서 강화만 하면 실패고
    좋은 템은 뜨지도 않는 군요.
    사회나 게임이나 불공평햇!

  9. 잔슨 2013.02.05 16:04  댓글주소  수정/삭제  댓글쓰기

    요새는 계수와 기준값을 가지고 오차범위를 설정하고 테스터를 상대로 통계를 돌립니다. 결과를 보고서 오차범위보다 벗어났으면 이유를 찾고(데이터 마이닝이 중요해지겠죠.) 오차 범위 이내라면 잘 한 것이겠죠(하지만 그런 일은 없습니다.) 오차범위란 것도 기준값의 하나지만.

  10. 로케니 2013.02.05 23:03  댓글주소  수정/삭제  댓글쓰기

    흥미롭고 또 와닿네요.
    얼마 전 퍼블리셔가 캐시 랜덤박스 확률 구성을 해서 보내줬습니다.
    나름 자기들끼리 베이 골드 가격도 조사하고 아이템들 거래시세도 조사해서 이런 확률로 가자!!!
    라고 가져왔더군요. 문서를 보니 왠걸..? 이야~ 나름 기대값도 계산하시고 거기에 맞춰서
    확률도 디자인 해왔어요. 기대값이 1000원인 상자를 만들어왔는데 물품 종류가 3가지더군요.
    그리고는 개수만 다르게 디자인해놨죠. 그랬더니 어떻게 됐을까요?
    기대값은 1000원이지만 이 상자는 적게 사면 이득, 많이 사면 손해보는 상자가 되어버렸답니다.
    당연히 그럴 수 밖에... 확률의 기대값이란 1% 확률로 1000원 나온다면 100번째에 반드시 1000원이
    나오는게 아니기 때문이죠. 이 수치대로 라면 1%*1000원=10원의 기대값을 가지지만 실제로도 저게
    10원일까요?
    확률 검증은 해당하는 경우를 무한히 반복할 경우 본래 기대했던 기대값에 근사해진단 불편한 진실

  11. 고양이상자 2013.02.19 10:52  댓글주소  수정/삭제  댓글쓰기

    과연 멋진글입니다 :D
    DPS에서 충격받은 분이 많으실듯 ㅎㅎ

    크리티컬, 치명타 도 굉장히 재밌죠.
    10%확률로 100%의 추가데미지.
    무한히 반복할 경우를 가정할 경우
    데미지 증가의 영향은 10%정도 인걸로 압니다.

    그러나 실제 적용한 상태에서는?

    이런 변수는 유저들에게 나름 아이템 맞추는 재미를 선사해줍니다.
    유저들도 경험으로 알고 있는 이런 케바케 요소에 따라
    깊게 연구하여 최적의 선택지를 찾는 유저도 있고,
    자신의 컨셉에 따라 맞추는 유저들도 생기죠.

    대상과 자신과의 스펙 차이에 따라 최적의 선택이 또 달라지니
    대부분의 유저들은 DPS를 따라가는걸 편하게 생각하기도 하죠.

    멋진글 감사합니다.