상세 컨텐츠

본문 제목

모바일 RPG의 메타 게임 디자인 분석하기

[번역] Gamasutra

by brightwing1218 2019. 12. 19. 14:34

본문


원제: Breaking down the metagame design in a mobile RPG

원문 주소:
https://www.gamasutra.com/view/news/333792/Breaking_down_the_metagame_design_in_a_mobile_RPG.php

Gamasutra 2019.01.07 Posted

저자: Pol Vilaseca, Pietro Guardascione

저자 약력:
Pol Vilaseca is senior economy designer at King,
and Pietro Guardascione is senior director of envelope design at King.

역자: brightwing1218


<Hero> King 사에서 개발한 액션 RPG이며, 2016년 아시아 각국에서 소프트런칭 되었다. 이 게임에서, 당신은 세 명의 히어로(워리어, 메이지, 아처) 중 한 명을 선택할 수 있고, 다양한 타입의 적군과의 연속 전투로 구성된 레벨들을 플레이하게 된다. 비록 이 게임은 글로벌 런칭하기 이전 서비스 종료하게 되었지만, 이 게임의 개발 도중 우리가 직면했던 디자인적 문제들로 인해 모바일 RPG의 디자인에 대한 몇 가지의 귀중한 인사이트를 얻을 수 있었다. 이 포스팅의 목적은, 게임의 몇 가지 시스템을 만들면서 우리가 경험하고 느꼈던 내용들을 한 데 모아 기록하는 것이다.

 

이 게임의 메인 루프(main loop)는 꽤 심플하다. 퀘스트를 완수해 가는 것으로 플레이어는 골드를 벌어 축적하고, 축적된 골드를 통해서는 새로운 아이템을 살 수 있다. 더 강력한 장비 아이템은 히어로의 총체적인 파워를 증가시키고, 다시 이는 플레이어로 하여금 더 어려운 퀘스트에 도전할 수 있게 만든다.

 

 

상술된 심플한 메인 루프와 함께, 전반적인 플레이어 경험은 기본적으로 하단 세 개의 게임 시스템에 의해 형성된다:

 

1) 전투 시스템
전투 시스템은 전투 성과에 기여하는 모든 요소들과, 그들의 상호 관계로 이루어진다. 다른 많은 이러한 요소, RPG들과 마찬가지로 공격력, 체력, 방어력, 치명타 확률, 원소 데미지, 스플래시 데미지 등과 같은 플레이어 스탯으로 대표된다.

그리고 전투 성과는, 히어로와 적군 간의 스탯에 대한 전투 방정식에 의해 결정된다. 예를 들어, 히어로의 공격력과 몬스터의 체력이 주어진다면, “전투 방정식은 그 몬스터를 죽이는 데 몇 번의 공격 횟수가 필요한지에 대해서 결정한다.

 

2) 성장 시스템
성장 시스템은 플레이어의 게임 진행에 따라, 히어로와 몬스터의 스탯 성장을 얼마나 다르게 가져갈지를 결정하는 룰들로 구성되어 있다. <Hero>에서는, 성장을 장비 아이템[각주:1]으로 드라이브하였다. , 캐릭터의 스탯은 그 캐릭터가 착용 중인 장비 아이템에 의해 결정되는 것이다. 아이템의 레벨이 높을수록, 캐릭터의 스탯에 더 지대한 영향을 미친다. 히어로의 현재 레벨과 스탯은 그 히어로가 착용 가능한 장비 아이템의 레벨에 의해 결정된다고 볼 수 있다.

 

3) 상자 시스템
상자 시스템은, 아이템에 대한 랜덤 보상 시스템이다. 상자 시스템은 게임 내에 존재하는 몇 가지 다른 타입의 상자들과, 그 상자들에 적용되는 규칙들(출현 확률, 빈발도 ,등장 아이템 확률)로 이루어져 있다. <Hero>에는 다양한 타입의 상자들이 존재하며, 각각의 상자들은 정해진 레어도의 아이템을 드롭할 확률을 가지고 있다.

 

여기 설명된 각 시스템들에 대해 낱개로 하나씩 분석하는 것도 가능하지만, 이 세 시스템은 아주 강력하게 상호 의존적이라는 점을 말하고 싶다.

예를 들어, 성장 시스템이 장비 아이템에 의해 드라이브되고, 장비 아이템은 상자를 수집하는 것에 의해 획득된다. 이것은 상자 시스템이 성장 시스템의 핵심 드라이브 요인이라는 것을 의미한다. 따라서, 상자 시스템 룰과, 상자들의 드롭 확률을 올바르게 설정하는 것은, 히어로의 적정 성장률을 도출하는 데 있어 필수적이다.

한편, 성장 시스템은 히어로와 적군 간의 스탯을 어떻게 스케일할 지를 결정한다. 그리고 이제, 성장 시스템은 전투의 결과에 대해 결정하게 된다. 결국, 전투 시스템은 우리가 디자인한 구체적인 캐릭터 성장도에 적합하게, 아주 세심하게 디자인되어야 했었다.

마지막으로, 전투 성과는 플레이어가 얻을 상자를 결정하게 되고, 이것이 성장 시스템과 다시 연결되게 된다.

우리가 이러한 상호 연관 관계에 대해 알고 난 뒤로는, 각 게임 시스템에서 발생하는 모든 플레이어 경험과, 그것이 나머지 모든 시스템에 미치는 영향에 대해 조사할 수 있는 방법이 필요하다는 사실이 자명해졌다. 그리고 우리는 수학적 모델링과, 프로토타이핑 툴 및 시뮬레이션을 결합하여, 이를 조사해낼 수 있었다.

이어지는 내용에서는, 이러한 접근법에 대해 조금 리뷰를 해 보고자 한다.

 

전투의 스케일링: 통상적 접근법

전투 시스템은 액션 RPG의 가장 핵심적인 부분이라고 할 수 있다. 전투 시스템이 성장 시스템과 붙여졌을 때, 두 시스템 모두가 서로를 호환할 수 있도록 세심하게 디자인되어야 한다. 그렇지 않으면, 몇몇 스테이지에서는 전투가 자칫 밸런스 잡힌 것처럼 보일 수 있지만, 나중 스테이지로 가면 갈수록 완전히 그렇지 않게 된다.

이를 이해하기 위해, 딱 공격력, 체력 두 개의 스탯만으로 캐릭터화된 히어로와 몬스터가 있는 미니멀한 전투 시스템을 가정해보자. 전투 상황에서, 히어로는 몬스터의 체력을 다 닳게 해서 죽게 만들기 위해서는, 일정 횟수의 공격 기회를 가져야 할 것이다.

 

N은 공격 횟수이며, HE 는 적 몬스터의 체력을, AH 는 히어로의 공격력을 나타낸다. 적 몬스터의 체력이 높을수록, 그 몬스터를 죽이기 위해 더 많은 공격 횟수가 요구된다. 또한, 히어로가 강력할수록, 그 적을 때려 눕히는 데 더 적은 공격 횟수가 요구된다.

체력과 공격력이 전투의 성과를 좌우하긴 하지만, 이 스탯들은 유저에게 보이지 않도록 숨겨져 있다. 유저가 실제로 인식할 수 있는 변수는, “적을 처치하기까지 필요한 공격 횟수”(혹은 그것에 의해 죽거나) 뿐이며, 공격력과 체력에 대한 정보는 얻을 수가 없다. 그러므로, 우리는 전투의 감각, 경험이란, 죽이는 데 필요한 공격 횟수 혹은 전투에서의 사망에서 온다고 말할 수 있다.

 

한편, 히어로와 적 몬스터의 스탯은 하단과 같은 성장 시스템에 의해 진화/성장한다.
위의 패러미터에서, AH HE 는 각각 히어로의 레벨, 그리고 적 몬스터의 레벨에 의존한다. 그러므로, 레벨 x  인 히어로가 레벨 y 인 몬스터를 죽이기 위해 필요한 공격 횟수를 표현한 함수는 하단과 같다.

 

게임 디자인에 있어 핵심 요구사항은, 플레이어의 전체 성장 과정에 있어 양질의 전투 경험을 보장하는 것이다. , 레벨 5의 히어로가 레벨 7의 몬스터와 싸우는 전투 경험은, 레벨 65의 히어로가 레벨 67의 몬스터와 싸우는 것과 균등한 감각을 줄 수 있어야 한다. 히어로와 몬스터 간 레벨 차가 일정하다면, 전투 경험은 균질해야 하는 것이다. 이러한 요구사항은, 함수가 히어로와 몬스터 간 레벨 차를 기준으로 필요 공격 횟수를 산출하도록 구성하여 수학적으로 표현할 수 있다. 히어로와 몬스터 레벨 자체를 기준으로 삼지 않고 말이다.

이 요구사항은 성장 및 전투 시스템에 강력한 제약을 건다. 체력과 공격력 비율을 기반으로 하는전투 공식과, 스케일 불변적인 전투는 스탯이 기하학적인 비율로 성장할 것을 요구한다. 이는, 플레이어와 몬스터의 스탯이 지수적 형태를 가져야 함을 시사한다.

 

 A H 는 각각 히어로의 공격력과 적 몬스터의 체력에 대한 기본 값이다. 또한 패러미터 a 는 레벨 증가 시마다 스탯의 증가 스케일을 조절한다. 그리고 AH HE 는 이전 N(x, y) 식에서 사용했던 표현을 그대로 가져왔다. 이렇게 하면, 우리는 하단과 같은 공식을 얻는데,

이 공식은 명백히 히어로와 몬스터 간의 레벨 차에 의존하며, 레벨 그 자체에 의존하지 않는 식이 된다. 이는 플레이어가 받게 될 전투 경험이 어느 스케일에서건 균질하게 유지됨을 뜻한다.
좀 더 사실적인 전투 시스템에서는, 데미지 경감이라던가, 크리티컬 히트, 원소 데미지 등의 요소들을 포함하기도 한다. 해당 요소들을 사용하여 전투 공식을 확립할 때에도 다르지 않다.
의 차에만 의존하는 식이 되도록 각별한 주의를 기울여라.

 

탄탄한 전투 모델을 한 번 확립하고 나면, 이는 정확한 스케일링을 보장한다. 그러므로, 우리는 주어진 적을 몇 번의 공격으로 쓰러뜨리는지, 혹은 적에게 사망하는지를 계산 가능한 시뮬레이터를 파이썬으로 구현했다. 우리는 히어로와 적 몬스터 스탯이 전투 공식에서 어떤 값으로 나타나는지를 탐구하기 위한 툴을 사용했는데, 우리는 각 값의 세트마다 적의 레벨이 높을 때, 그리고 낮을 때, 전투 경험이 어떻게 스케일되는지를 시각화했다. 이는 히어로와 적 몬스터의 스탯을 밸런싱할 수 있게 했고, 전투 경험이 모든 디자인적 요구사항을 충족하도록 만들 수 있었다. 이에 더해서, 어떤 새로운 적 몬스터 타입이나 아이템을 추가하든 우리가 짜 놓은 수학적 모델 안에 쉽게 적용할 수 있게 되었을 뿐 아니라, 툴을 이용하여 이에 대응하는 스탯 또한 거의 비용을 들이지 않고 세팅할 수 있게 되었다.

자료 1: 전투 방정식을 푸는 전투 시뮬레이션의 스냅샷

상자 시스템 시뮬레이팅하기

상자는 랜덤 보상 시스템[각주:2]의 핵심 요소였다. 많은 게임들에서, 플레이어의 게임 진행도는 아이템의 유입량으로 결정된다. 이러한 디자인 환경에서, 상자들은 게임 진행도에 있어 매우 핵심적인 요소가 된다. 그러므로, 상자 시스템의 룰을 이해하고 컨트롤하는 것은 필수적이라고 할 수 있다.

상자란, 간단히 말하자면 게임에서 얻을 수 있는 아이템들과 그 드롭 확률에 대해 정의해 놓은 일종의 추상 함수[각주:3]라고 할 수 있다. , 서로 다른 상자 알고리즘은 정의된 아이템과 그 드롭 확률이 서로 다르다.

대량의 아이템 드롭이 발생할 때, 상자 알고리즘은 아이템 배급에 관련된 책임이 있다. , 플레이어의 인벤토리에 어떤 아이템이 얼마나 들어 차 있을지에 대해 정의해주어야 한다. 드롭 가능한 아이템의 종류와 그 드롭 확률의 세팅에 따라, 플레이어 경험은 천차만별이다.

우리 게임의 상자 시스템을 디자인할 때, 우리는 지정된 개수의 상자를 연 플레이어의 인벤토리가 채워지는 과정에 대해 직접 관찰할 수 있는 시뮬레이션 툴을 만들었다. 이 툴에서는, 드롭 아이템 및 확률 조정을 거친 서로 다른 드롭 규칙을 적용할 수 있었으며, 몇 개의 상자가 열렸고, 그 때의 인벤토리에 어떤 아이템들이 들어 차 있었는지에 대한 스냅샷을 남길 수 있었다.

이 시뮬레이션은 인벤토리 섹션을 다 채우는 데 몇 개의 상자가 필요한지에 대해 어림할 수 있도록 해 주었으며, 특정 아이템을 특정 단계까지 레벨 업 하는 데 상자 오픈이 몇 번 필요한지, 혹은 최소 1개 이상의 전설 무기를 얻는 데 얼마만큼의 인 게임 재화 소비가 필요한지 등에 대해 알 수 있게 했다.

상자 관련 규칙이 플레이어의 게임 진행도에 얼마나 영향을 미치는지에 대해서 명확히 조사하는 것은, 랜덤 보상의 디테일한 규칙이나, 패러미터 결정에 중대한 영향을 미친다. 따라서 우리는, 목표하는 플레이어 경험을 전달하기 위해 상자 규칙에 대한 (디자인 ~ 시뮬레이션) 이터레이션 과정을 지속적으로 거쳤다.

자료 2: 랜덤 보상 시뮬레이션 툴의 스냅샷

메타게임 관찰

우리가 게임의 여러 시스템들 간의 관계들에서 엮어지는 플레이어 행동[각주:4]에 대해 관찰하고 나자, 전체적인 관점에서 플레이어의 게임 진행도에 따라, 해당 시스템들이 유기적이며 적합한 수준으로 구성되어 있는지에 대해 알고 싶어졌다. 이러한 목적의식을 가지고, 우리는 게임 플레이 없이 모든 메타게임, 그리고 그 역학들에 대해 시뮬레이팅 하는 툴을 만들었다.

이 툴은 두 가지 파츠로 이루어져 있다.

1.     메타게임적인 모든 룰, 시스템, 역학이 적용된 모델을 탑재한 시뮬레이션 엔진.
이 엔진은 상자 시스템, 장비 시스템, 캐릭터 스탯의 성장, 퀘스트로 얻어지는 xp gold 보상 등을 포함한다.

2.     유저가 게임에서 수행할 수 있는 모든 액션이 위젯에 UI 형태의 트리거로 붙어 있다.

매 번 액션이 수행될 때(상자 열기, 장비 장착, 아이템 업그레이드 등), 플레이어의 상태는 엔진에 포함된 게임 규칙에 의해 계속해서 성장한다. 또한 플레이어 상태 쪽의 데이터는, 플레이어 상태의 성장을 시각화하기 위해 단계 별로 수집된다.

이는 디자이너들이 직접 메타게임을 가지고 플레이할 수 있는 환경을 구축하였으며, 히어로의 성장에 있어서 각기 다른 시스템들이 어떻게 서로 결합되어 영향을 미치는지에 대해 이해하고 느낄 수 있도록 하였다.

이러한 시뮬레이션 툴의 활용은, 캐릭터의 장기적인 성장 과정을 짧은 시간 안에 관찰할 수 있도록 했다. 나아가 새로운 메타게임 피처를 적용하려 했을 때, 신규 피처가 기존의 다른 피처와 어떻게 상호작용하는지에 대해서 관찰하고 이해하는 데에도 도움이 되었다.

자료 3: <Hero>의 메타게임 시뮬레이션 툴 스냅샷

비록 우리가 툴을 수동적으로 메타게임 피처를 상호작용하는 용도로 받아들이고 사용했지만, 다른 행동 패턴을 가지도록 프로그램 된 AI가 자동적으로 툴을 사용하게 하는 것도 가능했었다. 백만 단위의 AI 에이전트가 메타게임과 상호작용하는 것을 통해, 우리는 특정 성장 단계까지 도달하는 데 걸리는 시간의 범위 값 분포를 구하고, 상자 시스템에 허점이 존재하는지 검증하는 등 가치 있는 정보를 모으는 데 활용할 수 있었다.

 

마치며

많은 시스템 및 복잡한 경제를 가진 메타게임은 예측하기 매우 어려운 플레이어 행동을 야기한다. 이러한 상황 속에서, 게임 시스템은 합리적인 수준의 수학적 모델링을 자주 필요로 한다.

우리의 경험을 토대로 하자면, 게임의 각 컴포넌트의 작동 방식과, 상호간 영향을 주는 형태에 대해 파악하는 데 있어서, 게임 시스템을 시뮬레이팅하는 것은 매우 유용한 접근 방법이다. 새로운 피처를 시뮬레이션 툴에 포함한다면, 해당 피처가 플레이어 경험에 어떤 영향을 미치는지 실제 구현 이전에 평가할 수 있을 것이다. 시뮬레이션을 만드는 것은 확인하고, 가설 검증을 반복하는 데 도움을 줄 수 있으며, 심지어 시스템 디자인을 반려하는 데에도 사용될 수 있다. 나아가, 시뮬레이션 환경에서 게임을 플레이하는 것은 디자이너들에게 각 룰들의 결합으로 인해 생겨나는 플레이어의 돌발 행동들에 대한 직관력을 길러 주기도 한다.

우리는 Python이 시뮬레이션을 통한 게임 디자인의 접근에 매우 호소력 있는 언어임을 느낄 수 있었는데, 이는 통계 및 데이터적 시각화 라이브러리가 잘 구비되어, 사용하기 쉽고 읽기 쉬운 언어 특성에 기인한다.

전반적으로, 우리는 어떤 게임이든 수학적 모델링과 시뮬레이션의 결합을 통해 디자인의 모든 절차에서 좋은 효과를 거둘 수 있다고 믿는다. 고차원적인 게임 아이디어의 검증부터 게임 시스템의 상세 내용들에 대한 밸런싱 작업에 이르기까지 말이다.


 

 

  1. gear [본문으로]
  2. 아이템 풀에서 지정된 확률에 의해 플레이어에게 아이템을 지급하는 시스템 [본문으로]
  3. [프로그램 용어] 상세한 구현 없이, 클래스를 선언하는 데 쓰이는 함수.
    이후 구현 단에서 해당 클래스를 상황에 맞게 재정의하여 사용할 수 있다.
    [본문으로]
  4. Dynamics. MDA Framework동역학에 해당합니다. [본문으로]

관련글 더보기

댓글 영역