2018년 7월 1일 일요일

멀티플레이 게임의 밸런스 - 직관, 반복 그리고 숫자

영어 아티클을 번역한 내용입니다.
원문은 Balancing Multiplayer Games – Intuition, Iteration and Numbers

아래 링크에서 원글을 볼 수 있습니다.
http://pqumsieh.com/2014/01/27/balancing-multiplayer-games-part-1/


개요
게임이 점점 복잡해질수록, 밸런스 작업도 복잡해집니다. 글은 복잡한 게임의 밸런스를 잡기 위해 사용되는 방법들을 찾아보고, 업무에 도움이 되는 몇가지 기술을 제안하는 글입니다.


밸런스 업무의 과정
RelicEntertainment 있는동안, 우리는 밸런스를 잡기 위해 다양한 방법으로 시도를 했습니다. 번째 방법은 직감과 느낌으로 접근하는 것입니다. 접근법으로 결과를 얻으려면, 기획자는 유저의 피드백과 자신의 게임에 대한 이해도를 바탕으로 지속적인 반복작업을 해야만 합니다. 게임이 복잡해 수록 방법을 수행하는 것은 어려워집니다. 게다가, 방법은 본질적으로 주관적이며, 기획자들은 느낌이 옳고 그른지에 대한 생각이 다를 있습니다. 만약 다른 기획자가 작업을 넘겨받게 된다면, 밸런스는 일관성을 유지하기가 힘들어집니다. 기획자가 시간과 노력을 투자하여 좋은 결과를 있지만 대부분의 경우는 그렇게 되지 않습니다. 동료나 다른 누군가로 부터 의미있는 피드백을 받는 것이 간단한 일이 아닌 처럼, 플레이 테스트를 하고 반복작업을 하는 것은 기획자만의 고유한 기술이라고 있습니다.

두번째는 변수들을 정량화하고 게임내의 수치로 할당하는 방법입니다. 예를들어, 만약 어떤 유닛이 공격과 방어값만 가질 있을때, 우리는 공격값에 1 더해주거나 방어값에 1 더한 다른 것과 비교하여 값을 확인할 있을 것입니다. 아래의 예제에서 나타내고 있는 간단한 방법은 공격과 방어를 곱한 값의 제곱근을 구하는 것이다. 방법은 Tom Cadwell 작업이며 레퍼런스는 이곳에서 있습니다.

유닛A vs 유닛B

2D vs 1D
1A vs 2A
2x1 = 2, 2 = 1.41
1x2 = 2, 2 = 1.41

다음 예시는 유닛의 다양한 변수들과 그것이 어떻게 세분화되는지를 보여줍니다.

유닛A vs 유닛B

4D vs 4D
4A vs 8A
4x4 = 16, 16 = 4
4x8 = 32, 32 = 5.66

예시는 4A 8D 유닛B 4A 4D 유닛A보다 1.42 크다는 것을 보여줍니다. 만약 유닛A 코스트가 100이라면, 방법에서 유닛B 142 코스트일 것이라 추측할 것입니다.

이런 방법은 시스템이나 상호작용이 간단한 경우에는 효율적입니다. 그러나 게임의 복잡도가 증가될수록 방법은 적절하지 않을 있습니다. 게다가 방법은 본질적으로 주관적인 가치를 수량화 없습니다. 그러한 한계에도 불과하고 저는 접근법은 게임의 시스템과 매커니즘, 상호작용에 매우 의미있는 인사이트를 제공한다고 믿습니다. 이러한 이해는 복잡한 게임에서 어떤 값을 바꿨을때 나타날 현상들을 서술할 있게 되었기 때문에 우리가 게임의 밸런스를 다룰 있는 능력은 더욱 향상되었습니다.

저는 Relic 있던 시절 게임의 모든 요소간의 관계를 수학적 접근법으로 완벽히 나타내기 위해 많은 노력을 쏟았습니다. 유닛의 효율을 가장 나타내는 수식을 찾기위해 경쟁하며 시간동안 토론하고 자료를 찾아보기도 했습니다. 저와 동료들은 이후에 방법은 가치가 있지만, 우리 게임 같은 복잡한 경우에는 적절하지 않다는 것을 깨달았습니다. 이론적으로 매우 훌륭해 보이는 매우 많은 수치들이 있었지만 실제 테스트에서는 그렇게 동작하지 않았습니다. 우리는 공정한 플레이와 의미있는 선택지를 만들 밸런스에 접근하는 중간 지점이 있다는 결론을 내렸습니다. 과정은 수학과 기획자의 직감을 결합한 것이었습니다.

복합적인 접근 방식

이러한 깨달음을 얻고 , 우리는 두번째 방법의 어떤 부분이 첫번째 방법과 결합시킬 부분이 없을지 찾아봤습니다. 방법은 타입별(Archetypes) 유닛의 기준치를 정할때에 사용하기 시작했습니다.
Relic사의 RTS 게임인 컴퍼니오브 히어로즈에서 Archetypes 보병이나, 무기팀, 중형 탱크, 중관포 등을 말하는 것이고, FPS에서는 Archetypes 아마도 돌격소총, 서브머신건, 라이트 머신건 같은것을 포함합니다. 다음 단계는 기획자가 작동하고 있다고 만족할때 까지 타입별 유닛의 값을 조정하는 것입니다. 비록 초안이고 기획자의 의도나 목표를 완벽히 나타내고 있지 못하더라도, 시기에는 모든 사항을 고려하기 위해 노력해야 합니다.  핵심음 다른 비슷한 유닛이 상대적인 값을 가져올 있는 기준값을 정하는 것입니다. 이를 통해 기획자는 개발과정전반에 걸친 조정값들의 영향을 보다 파악할 있습니다.

아래 이미지는 접근법의 유용성을 보여줍니다. 카테고리값을 조정하면 Raw Unit Value 값에 변동이 생길 것입니다.


Unit Name
Damage
Rate of Fire
Penetration
Range
DPS0
DPS10
DPS20
DPS30
DPS35
DPS40
DPS45
AVG DPS
Entity Count
Health
Armor
Effective Health
Raw Unit Value
Projected Manpower
Grenadier
16
0.2735
1
35.00
3.77
2.21
2.21
1.34
1.03
0.00
0.00
9.71
4
320
1.50
480
68.30
241
Conscript
16
0.239
1
35.00
2.54
1.46
1.46
0.86
0.64
0.00
0.00
9.64
6
480
1.00
480
68.00
240



다음 그림은 RawUnitValue 68에서 96.2 바꿈으로 인해 Conscripts 데미지가 2배가 되는 것을 보여줍니다. 아래에서 나는 어떻게 이런 값들이 예상 코스트(projected cost) 영향을 주도록 바뀌는지를 설명할 것입니다.


Unit Name
Damage
Rate of Fire
Penetration
Range
DPS0
DPS10
DPS20
DPS30
DPS35
DPS40
DPS45
AVG DPS
Entity Count
Health
Armor
Effective Health
Raw Unit Value
Projected Manpower
Grenadier
16
0.2735
1
35.00
3.77
2.21
2.21
1.34
1.03
0.00
0.00
9.71
4
320
1.50
480
68.30
241
Conscript
32
0.239
1
35.00
5.08
5.08
2.92
1.71
1.28
0.00
0.00
19.29
6
480
1.00
480
96.20
340



 Raw Value Projected Cost 변경

Raw Unit Value 유닛과 비교를 위해 선택한 다른 유닛간의 상대적인 비교값일 뿐입니다. 선택한 변수는 동작하는 시스템과 매커니즘이 같도록 해야합니다. 그렇지않으면 값은 의미가 없어지게 됩니다. 컴퍼니 오브 히어로즈에서 유닛들은 기능적으로 같은 로직을 사용하였습니다. 보병들은 같은 속도로 움직이고, 비슷한 진형을 갖고 있으며, 무기에 같은 방법으로 대응한다거나 하는 입니다. 그렇기 때문에 기획자들은 이런 변수들은 무시할 있었습니다. 일반적인 분석은 주로 유닛의 성능에 직접적으로 효과를 주는 대미지와 내구성에 초점을 맞추게 됩니다. 단계에서는 유닛의 가치를 명확하기 정하지 않는 점이 중요합니다. 대신에 유닛을 비교할 대략적인 아이디어를 모으는데 더욱 신경을 써서 기준선을 만들게 됩니다.

Raw Unit Value 평균 데미지와 유효 체력의 곱에 루트를 씌워서 계산됩니다. (상단의 A/B 예시와 동일합니다.) 값만으로도 유닛의 성능을 비교하는데는 충분합니다. RTS 게임의 문법에서는 값을 코스트로 활용하는 것도 타당합니다. 계산된 값을 가장 처음의 코스트로 설정 하고 반복적인 플레이 테스트를 통해 값을 변경합니다.

컴퍼니 오브 히어로즈2에서, 보병에 240 자원을 선택하였습니다. 값은 pacing 매우 영향을 주었습니다. 값을 증가시켰다면 보병은 게임플레이 도중에 천천히 성장하였을 것입니다. 참고로 컴퍼니오브 히어로즈2 보병은 해당 유닛의 raw value Grenadiers(보병의 기본 유닛) raw value 나누고 240 곱하였습니다.

예상 (projected value)들은 게임에 맞지 않는 경우가 종종 있습니다. 예를 들어 유닛의 4분의 1 정도가 예상된 보다 25%정도 효율이 안나고 있는 것을 알게 되었습니다. 그래서 유닛들의 예상 값을 계산하면서, 유닛의 코스트나 퍼포먼스를 조정하였습니다. 이처럼 예상 코스트(projected cost) 단지 게임에서 유닛의 가치를 예상한 것입니다. 오직 반복적인 플레이테스트를 통해서만 진짜 값을 확인 있습니다. 이것이 두가지 방법이 융합된 것입니다. 첫번째는 기준선을 정하는 것이고, 두번째는 정해진 가정을 플레이 테스트를 통해서 반복하여 확인하는 과정입니다. 기준선을 도입함으로써, 최종 상품이 나오는데 까지 걸리는 시간을 상당히 축소할 있습니다. 기준선은 책의 목차처럼 바인딩에 포함된 항목을 빠르게 참조할 있습니다.

반복 작업 같은 것들이 어떻게 발생되는지에 대해서 자세히 설명할 필요가 있다고 생각되지만 내용은 이후에 쓰게 글에서 다룰 예정입니다.



결론

저의 밸런스 업무 방법은 유닛의 상대 값과 기준선을 비교한 반복적인 테스트 과정을 통해 기준선의 단점을 보완하는 것입니다. 이를 통해서 게임에 미치는 영향을 이해하고 있는 상태에서, 요소의 미세한 조정과 원하는 대로 조정을 있습니다.

흥미롭게도 방법은 시간이 지날수록 점점 입증되었습니다. 컴퍼니 오브 히어로즈2 플레이어는 미세한 효율이나 비효율을 알아차렸습니다. 이것은 유저들의 빌드 순서에 영향을 주었고, 다양한 종류의 게임 메타에 영향을 주었습니다. 만약 플레이어들이 이런 미묘한 차이를 알아챈다면, 이것은 툴이 동작하고 있다는 것입니다. 이제 이는 기획자가 가진 툴과 직관을 게임을 만드는데 어떻게 사용하느냐는 문제가 되었습니다.

댓글 없음:

댓글 쓰기

18회 ADsP 합격 후기

ADP도 아니고, 겨우 ADsP인데 무척 힘들게 공부했는데ㅜㅜ 결과적으로는 좋은 결과가 나와서 행복하네요! 꽤나 아슬아슬하게 합격해서 창피하긴합니다만ㅋ 합격하면 된거지 뭐 라고 생각하려구요! 언제가 될지는 모르겠습니다만, ADP도 ...