▲ 스퀘어에닉스 마나베 카즈코 AI 엔지니어

수많은 캐릭터를 모아서 파티를 짜고 육성하는 수집형 RPG는 어느덧 게임 시장에서 한 축을 이루는 메이저 장르로 손꼽히고 있다. 지금도 시장에는 수도 없이 많은 수집형 RPG가 시장에 출시되고 있으며, 다양한 수집형 RPG를 즐기는 유저들도 늘고 있다.

"어떤 덱이 가장 좋은가?" 이미 장르에 익숙해진 유저들은, 수집형 RPG가 새로 출시될 때마다 이런 질문을 던지기 시작했다. 수집형 RPG를 즐기는 다양한 방법이 있지만, 가장 효율적으로 재화를 모으고, 빠르게 게임을 플레이할 수 있는 방법은 해당 게임의 메타에서 가장 좋은 덱을 구성하는 것이기 때문이다.

숙달된 유저들뿐만 아니라, 수집형 RPG가 처음인 유저들도 이 질문을 던진다. 수집형 RPG는 일반 RPG보다 많은 캐릭터들이 있기 때문에, 처음 접하면서 어떤 캐릭터들의 성능이 좋고 시너지가 좋은지 한 눈에 파악하기 어렵기 때문이다. 또한 덱과 캐릭터들의 밸런스를 잡아가야 하는 개발자들도 이 질문을 꾸준히 던지게 된다.

이번 CEDEC 2018에서 스퀘어에닉스의 마나베 카즈코 AI 엔지니어와 아와지 시게루 온라인 엔지니어는 스퀘어에닉스에서 제작한 수집형 RPG '그림노츠'에서 AI를 통해 덱 파워를 분석해나간 과정을 되짚어간다. 지난 CEDEC 2017에서도 마나베 AI 엔지니어는 해당 주제로 강연을 했지만, 이번에는 PVP 밸런스를 잡아가기 위한 덱 밸런스 체크 과정이 추가됐다고 덧붙였다.





여타 수집형 RPG가 그렇듯, '그림노츠'는 주 1회 간격으로 꾸준히 업데이트를 진행한다. 마나베 AI 엔지니어는 이를 다르게 이야기하면 개발자들이 업데이트 후에 1주 내로 문제를 체크하고, 다음 업데이트 전에 이 부분을 어느 정도 해결해야 한다는 의미이기도 하다고 덧붙였다. 또한 캐릭터 덱, 그리고 밸런스 문제 또한 변경된 이후로 1주일 내로 어느 정도 체크가 되어있어야 한다는 의미이기도 했다.

'그림노츠'는 다른 수집형 RPG처럼 주인공이 직접 전장에 뛰어드는 구성이 아니라, 각 주인공별로 2명의 히어로들을 배정한 뒤 히어로들이 전장에 참가하는 방식이다. 주인공에 따라 데려갈 수 있는 히어로가 달라지기 때문에 주인공들의 조합에 따라서도 히어로들의 조합이 바뀌게 된다. 밸런스를 잡기 위해서는 이런 부분도 고려를 해야 했다. 그 외에도 히어로 개개인의 성능을 좌우하는 장비나 육성 상태 등도 밸런싱을 위해서는 체크해야 할 요소였다.

▲ 그림노츠의 덱은 주인공 넷에, 각 주인공마다 2명의 히어로가 할당된 구성이다

가장 좋은 방법은 모든 조합을 다 체크해보는 것이지만, 이는 물리적으로 불가능한 일이었다. '그림노츠'에 등장하는 수도 많은 데다가, 이를 덱으로 하나하나 편성하게 되면 그 경우의 수가 몇 배가 되기 때문이었다. 그래서 방향을 수정할 필요가 있었다.

그 다음으로 그림노츠의 밸런스팀은 강한 덱들이 어떤 덱인가를 체크하는 것부터 시작했다. 강한 덱들을 분석하고, 여기서 그 파티들이 강하게 만들어주는 요소를 찾아가다보면 밸런스를 파괴할 수 있을 정도의 요소를 찾을 수 있지 않을까 싶었기 때문이었다.

종래에는 게임 디자이너가 테스트를 하고 밸런스를 조정한 뒤에 출시하는 방식이었지만. 그림노츠에서는 게임 디자이너가 테스트를 하는 파트에 AI를 도입했다. 즉 AI가 테스트를 한 뒤, 가장 강한 덱이 무엇인지 하나하나 찾아가는 한편, 어떤 것들이 주요 요소인지 파악할 수 있도록 알고리즘을 구성해야 했던 것이다.

마나베 AI 엔지니어는 유전 알고리즘에서 덱 편성을 위한 AI의 알고리즘의 힌트를 얻었다고 설명했다. 유전의 법칙과 생물의 진화를 베이스로 해서 만들어진 이 알고리즘은 현 세대뿐만 아니라 다음 세대, 혹은 몇 십, 몇 백 세대 후에 이르기까지의 어느 한 요소들의 결합과 변화를 가정, 산출하는 알고리즘이다.

▲알고리즘은 유전 알고리즘을 참고해서 작성했다

해당 알고리즘을 사용하기 위해서는 각 항목을 유전자, 혹은 유전의 법칙에 맞게 치환해서 생각해야 했다. 예를 들어 덱 구성을 유전자로 정하고, 유전자에 영향을 미치는 환경을 전투로 상정하는 것이다. 그래서 만들어진 유전자의 조합을 완성된 파티의 모습으로 환산해서 알고리즘을 돌리는 과정을 거쳤다고 마나베 AI 엔지니어는 설명했다.

유전 알고리즘을 사용하게 되면, 마치 생물체가 서로 다른 유전자를 결합해서 자손을 낳는 것처럼 각 파티에 있는 다양한 요소들이 서로 쪼개진 뒤 재구성을 하면서 새로운 세대를 만들어내게 된다. 이후에는 파편화된 요소들이 각각 어느 덱에서 온 것인지 체크하고, 실제 전투를 통해서 원래의 덱들과 새로운 덱을 비교평가하는 과정을 거쳤다.


즉 알고리즘을 짠 뒤에는 전투에 대한 부분도 생각해야 했다고 마나베 AI 엔지니어는 덧붙였다. 유전 알고리즘은 환경에 대한 유전자의 우, 열을 평가하는 알고리즘이고 '그림노츠'의 유전 알고리즘에서 이 환경이라는 요소를 전투로 치환했기 때문이었다. 작년까지의 배틀 모델은 실제와 똑같은 계산식을 사용했지만, 몇 가지 요소가 생략된 형태였다. 이렇게 해서 약 1초만에 실행이 가능하다는 장점이 있었지만, 결과의 정확도가 실제 전투에 비해서 상당히 떨어진다는 단점이 있었다. 이 때문에 문제가 발생했을 때 원인을 규명하는 것이 상당히 어려웠다.

특히나 어느 순간, 갑자기 이후 세대의 덱들의 평가치가 높아지지 않는 문제가 발생했다. 이 부분에 대해서 마나베 AI 엔지니어는 두 가지 측면에서 문제를 파악했다. 알고리즘에 이상이 있는지, 혹은 배틀이 문제가 있는지 체크해나간 것이다. 그 결과 이전에 테스트에 썼던 배틀 모델에서 문제가 발생했다는 것을 알게 됐고, 이를 해결하기 위해 고정 프레임 레이트 적용 및 난수 시드를 고정해 전투 환경을 개선하는 방향으로 수정해나갔다.

이런 문제가 있고, 번거로운 과정이 있는데도 왜 유전 알고리즘을 채용했을까? 마나베 AI 엔지니어는 유전 알고리즘이 역사가 깊고 자료도 많은 데다가, 시간 내에 다양한 항을 얻을 수 있기 때문이었다고 설명했다. 또한 간단한 알고리즘이기 때문에 구현 자체도 어렵지 않고, 범용성도 높은 만큼 여러 가지로 활용도가 높은 알고리즘이기도 했다.

2017년 CEDEC에서 마나베 AI 엔지니어가 그림노츠에 적용된 유전 알고리즘을 설명했을 당시에는 PVE에 대응하는 알고리즘만 있었다. 그 이후에는 PVP에 대응하는 알고리즘도 구현해나가게 됐으며, 여기에는 다른 기준이 적용돼야 했다고 설명했다.

실제로도 대다수의 게임에서 PVE와 PVP에서 요구되는 조건이 다른데, 이는 그림노츠 또한 마찬가지였다. 우선 PVE와 PVP의 승리 조건도 달랐다. PVE에서는 적을 전부 쓰러뜨리거나, 혹은 보스를 격파하면 됐지만 PVP에서는 적을 제한시간 내에 무찌르거나, 혹은 적보다 체력을 더 많이 보존하는 것이 승리 요건이었다. PVE에서는 다수의 약한 적들이 등장하지만, PVP에서 마주하게 되는 적은 유저와 비슷하거나, 때로는 더 강한 전투력을 보유하고 있다. 여기에 마주치는 적의 조합도 PVP에서는 계속 변화가 있었다. PVE에서는 스테이지마다 똑같은 적이 등장하지만, PVP는 유저마다 각각 다른 덱, 혹은 같은 덱이더라도 육성 상태가 달랐기 때문이다.


또한 '그림노츠'는 스테이지를 도는 데 행동력을 요구하지 않는다. 즉 횟수에 제한이 없기 때문에 무한히 반복하는 것이 가능했다. 그렇지만 PVP는 하루 제한된 횟수만 할 수 있다는 것도 달랐다. 여기에 PVE에서는 져도 페널티가 없지만, PVP에서는 패배시 포인트를 잃기 때문에 이러한 점도 알고리즘을 짤 때 감안할 필요가 있었다.

PVP용 유전 알고리즘을 만들기 위해서 마나베 AI는 세 가지 부분에 집중했다. 적의 강한 정도와, 배틀 횟수가 제한이 되어있다는 점, 그리고 패배시에 페널티가 주어진다는 점이었다. PVE에서는 약한 적을 무한히 상대하면서 캐릭터를 육성하는 것이 최우선 목표였기 때문에 이에 맞춘 기준으로 덱을 평가하게 됐다. 전투에서 승리했을 경우에는 더 효율적인 캐릭터 육성을 위해서 전투 시간이 얼마나 짧은지 체크했다. 이를 반영해서 덱의 평가치를 산출했으며, 패배시에는 적에게 입힌 데미지, 그리고 적에게 받은 데미지의 양을 보고 평가치를 산출하는 식으로 알고리즘 내에 요소들을 파악해나갔다.

하지만 PVP는 약간 달랐다. PVP에서는 다양하고 강한 적들을 상대하는 데다가, 하루에 플레이할 수 있는 횟수가 제한되어있기 때문에 PVE에 비해서 빠른 승리의 중요도가 좀 떨어졋다. 무엇보다도 패배하게 되면 포인트가 사라지는 페널티가 존재했다. 이 때문에 PVP에서 덱 전투력 평가에서 가장 중요한 요소를 안정적으로 승리할 수 있는지 여부로 꼽았다. 다양한 적들을 상대로도 승률이 안정적인지, 또 전투를 계속 진행했을 때 평균 승률이 어느 정도인지가 주요 척도가 된 것이다.

▲ 패배시 페널티가 있기 때문에 안정적인 승리를 우선 조건으로 취했다

최초에는 다양한 적을 랜덤으로 배치하는 방식을 취했지만, 그렇게 되면 어느 순간 덱의 진화가 멈춰버리는 일도 종종 발생했다. 그 덱보다 약한 덱과 지속적으로 매칭이 되어버리면 그 덱이 최상의 상태라고 규정하고 변화하지 않았기 때문이다. 그러한 상황에서는 실질적으로 테스트가 진행이 되지 않았기 때문에 현 세대에서 가장 강한 덱, 즉 탑 플레이어들이 사용하는 덱을 테스트에 반영해서 사용했다.

그렇게 해서 AI에 PVP 전투 테스트와 덱 구성 알고리즘을 입혔지만, 문제는 다른 곳에서 발생했다. 한 번 전투할 때 약 3분 정도의 시간이 소요되는데, 동일한 적과 최소 5번은 싸워야 난수가 최소화된 데이터를 얻을 수 있었다. 그리고 한 세대 덱의 전투 데이터와 평가치를 얻기 위해서는 최소 30번 이상, 다른 덱과의 전투가 필요했다. 그리고 최소 300세대 이상을 거쳐야 의미있는 수치를 확인할 수 있는데, 이를 환산하면 약 135,000분의 시간이 걸린다. 일수로 환산하면 93.75일이라는 시간이 소요되는 것이다.

AI에 내재된 유전 알고리즘을 통해 덱을 짜고 평가하는 것은 전체 밸런스 공정에서 극히 일부분이고, 전체 공정은 1주일, 혹은 길더라도 몇 달 이상을 소모하지 않는다. 그런데 하나의 공정에서 93.75일이 걸려버리면 그 작업에 소모되는 시간 때문에 모든 공정이 막혀버리는 병목 현상이 발생하게 된다.

▲ 밸런싱은 전체 공정 중에 일부인데, 여기에만 93.75일을 쓰면 모든 공정이 막혀버리게 된다

이 병목 현상을 해결하기 위한 가장 간단한 방법은 다수의 클라이언트를 돌려서 전투 연산을 한꺼번에 여러 개 진행하는 일이었다. 그러기 위해서는 대량의 계산 리소스와 PC가 필요한 만큼, 예산과 설비에 제한이 있으면 사용할 수 없었다. 두 번째는 고속 모드로 전투를 빠르게 진행하는 것이지만, 고속 모드를 적용하기 위해서는 이를 고려해서 리소스를 조정하는 작업이 필요했다. 현재 그림노츠에서는 실제 적용을 위해서 리소스를 조정 중에 있으며, 이런 번거로움을 최소화하기 위해서는 처음부터 고속 전투를 상정하고 리소스를 구축하는 게 좋다고 마나베 AI 엔지니어는 조언했다.

최근에는 물리 클라이언트가 아닌 클라우드를 통해 다중으로 클라이언트를 구축하는 방식도 있다. 이를 적용하면 물리적인 기기를 관리할 필요 없이, 쉽게 여러 대의 클라이언트로 구동이 가능하다. 다만 이런 부분도 최초에 적용하지 않으면 이후 구조를 바꾸기 어려운 만큼, 최초부터 이를 고려하는 것이 좋다.

AI 덱 구성 알고리즘을 적용했을 때 발생한 또 다른 문제는 가시화의 문제였다. AI 내에서는 이것이 강하다, 라고 처리를 하고 선정을 했지만 디자이너에게 왜 이것이 어떤 이유에서 강한가, 라고 표현을 할 수 없었기 때문이다. 유전 알고리즘은 각 유전자들의 결합과, 그로 인해서 산출된 결과만을 보여주는 만큼, 이 부분은 디자이너가 이해할 수 있도록 시각화하는 작업도 필요했다.

▲ 강한 덱을 선정해줬는데, 어떤 이유에서 강한 덱인지는 따로 설명이 필요했다

아와지 온라인 엔지니어는 아파치 제펠린으로 AI가 작성한 결과물을 시각화했다. 그러면서 PVP 덱 평가에 적용되는 지향점을 안정적인 승리가 아닌, 빠른 승리로 바꿨다. 병목현상을 해결하기 위해서는 전투 시간 자체를 줄일 필요가 있었고, 유저들이 지향하는 방향 역시도 짧은 시간 내로 승패가 갈리는 것이었기 때문이었다.

이러한 조건을 부여하자 AI는 힐러를 제외하고 파티를 짜게 됐고, 그만큼 공격력이 높아지고 유지력은 낮아졌기 때문에 전투 자체가 빠르게 종료됐다. 그러나 또 다른 문제가 발생했다. 갑작스럽게 덱 진화가 멈춰버린 것이었다. 좀 더 자세히 분석해본 결과, '빠른 승리'라는 조건만으로는 부족한 점이 많았다. 약한 상대와 붙어서 빨리 이기는 것 역시도 그 조건에 들어가는데, 이것이 계속 반복되면 AI는 더 이상 덱에 변화를 줄 필요가 없다고 인식해버린다. 즉 정체가 되면서 밸런싱 작업이 제대로 이루어지지 않는 것이다.

▲ 약한 상대만 매칭될 경우, 덱은 어느 순간 진화를 멈춰버린다

이를 개선하기 위해서 PVP 덱 평가 기준을 변경해야 했다. 그래서 빠른 승리보다는 높은 승률이라는 조건을 붙였으며. 승률의 기준은 5번의 전투를 1세트로 해서 한 세트 내에 몇 번 승리했는지로 결정했다. 다만 이 경우에는 승률을 나타낼 수 있는 패턴이 0승부터 5승까지 6가지밖에 존재하지 않는다는 단점이 있었다. 그래서 세트 수를 다섯 세트로 늘리면서, 승리와 패배가 좀 더 의미있게 적용될 수 있도록 상대방의 덱을 현재 톱랭커의 덱들과 똑같이 구성한 덱으로 편성했다.

이렇게 조건을 변경하자 덱에서는 계속 진화를 거치면서 유의미한 지표들을 만들어냈다. 이를 가시화하는 것이 아와지 온라인 엔지니어와 그의 팀원들의 역할이었다. AI가 산출한 결과들은 일반적으로 그래프나 분포도, 떄로는 숫자로 나오게 되는데, 이와 같은 형태는 데이터 분석을 전공하지 않은 사람들이 읽어내기는 어렵다. 어떤 조건에서 어떤 일이 벌어졌는지, 해설을 하는 작업이 필요했기 때문이다.

이를 위해서 리플레이 기능을 활용하는 한편, 승리에 영향을 주는 중요한 스킬도 체크하도록 했다. 아울러 딜 미터기를 활용해서 최고 중요한 캐릭터, 아와지 온라인 엔지니어에 따르면 '슈퍼 에이스'를 선정해나갔다. 슈퍼 에이스를 선정한 뒤에는 그가 끼고 있는 장비와 다른 캐릭터들이 끼고 있는 장비를 표에 나타내고, 그 수치도 시각화했다. 가장 강력한 캐릭터에게 일반적으로 장비를 몰아주는 경향이 있는데, 그것이 어느 정도로 영향을 미치는지도 파악하는 것이 필요했기 때문이다.

▲ 승패 결정에 중요한 역할을 하는 캐릭터와, 주요 스킬을 찾아서 체크해서 지표로 나타냈다

그 외에도 각종 영향을 미치는 지표를 찾아서 표나 그래프로 환산하고, 디자이너들이 파악하기 쉽도록 재분류하는 룰을 적용했다. 이렇게 해서 만들어진 자료들을 토대로 그림노츠에서는 디자이너들이 덱의 밸런스를 파악하고, 수정할 부분을 찾아서 교정하고 있다. 이러한 작업이 처음에는 개발 과정과 연관이 없어보일지 몰라도, 한 번 시스템이 구축되면 여러 가지로 수정해서 다양한 상황에 사용할 수 있는 만큼 AI 알고리즘과 데이터 처리에 대해서 관심을 가져볼 필요가 있다고 아와지 온라인 엔지니어는 조언했다.


8월 22일 개최된 일본 개발자 컨퍼런스 CEDEC 2018의 강연 정보와 뉴스를 현지에 나가 있는 박광석, 윤서호 기자가 생생하게 전달해드립니다 ▶ 인벤 뉴스센터: https://goo.gl/ha5vNc