AI가 플레이어의 솜씨를 보고 섬세하게 난이도를 조정하고, 심지어 무대까지 만들어 주는 날도 가까울지도 모른다. 개발자용 컨퍼런스「CEDEC 2024」의 2일째, 2024년 8월 22일에 행해진 응용”에서는 스퀘어 에닉스의 AI&엔진 개발 디비전에서의 연구 성과가 밝혀졌다.
● 「플레이어의 『능숙함』과 게임의 『어려움』을 분석하는 수법과 레벨 자동 생성에의 응용」 등단자
송 아성씨(스퀘어·에닉스 AI&엔진 개발 디비전 프로그래머)-
성소 헌씨(스퀘어·에닉스 AI&엔진 개발 디비전 AI 프로그래머)-
사진 왼쪽에서 송 아나이씨, 성소 헌씨
|
AI가 플레이어의 솜씨를 분석해, 기분 좋은 어려움을 연출한다
게임을 놀기에 있어서, 플레이어에게는 공격을 맞추거나 회피하는 등의 다양한 능력이 요구된다. 플레이어마다 능숙한 분야와 서투른 분야가 있지만, 현재의 게임에서는 난도 설정이 획일적이며, 개별 플레이어에 맞춘 것은 되어 있지 않다고 송씨는 지적한다.
이러한 상태에서는 난도를 바꾸면 모든 요소가 일률적으로 상하해 버려, 꽉이 발생할 수 있다. 예를 들면, 회피가 약하고 공격이 특기인 사람이 난이도를 낮추고 회피가 용이해지면, 공격에 대해서는 원래 높은 스킬을 가지고 있으므로, 너무 간단해져 버린다고 하는 상태다.
거기서, 송씨는
「분야마다의 난도를 동적으로 조정할 수 있으면, 플레이어 각각의 자랑이나 서투른 체험을 주어지는 것이 아닐까」
라고 생각했다고 한다. 그러기 위해서는 미리 플레이어의 능력을 분류한 후에 AI에 판정과 분석을 실시하는 구조가 필요하다.
|
|
이렇게 만들어진 것이 「어빌리티 그래프」에 의한 「어빌리티 분석」의 구조다. 「게임 마스터 AI」가 플레이를 감시해 능력의 판정을 실시할 뿐만 아니라, 이것을 분석해 게임의 전개에도 간섭, 플레이어의 솜씨를 보고 도움을 하거나 적을 늘리거나 하는 것이다 .
이것을 세로 스크롤 슈팅의 기술 데모(플레이어는 육지를 걷고, 이동할 때는 지형으로부터의 간섭을 받는다. 지형은 파괴할 수 있어 그 중에서 아이템이 출현한다)에 적용한 사례가 말되었다.
어빌리티 그래프에는, 「어빌리티 노드」가 「엣지(화살표)」로 링크된 그래프 구조를 갖는다. 어빌리티 노드는 분석하고 싶은 능력을 나타내고 있으며, 「기본(이동이나 공격 등의 기본을 해내는 능력)」, 「행동(적을 쓰러뜨리고, 아이템을 픽업하는 등), 복수의 기본 능력을 구사해 목표를 달성하는 능력 )」 「전술(위협을 줄이고, 데미지를 방지, 스테이터스를 늘리는 등, 게임플레이의 방침을 나타내는 능력)」의 3 카테고리가 존재한다.
각각에 플레이어 자신의 숙련도를 나타내는 「마스터리 레이트(이하, MR)」와, 게임 측으로부터 요구하는 능력인 「챌린지 레이트(이하, CR)」 같은 척도가 있어, 어빌리티 노드끼리의 링크에는 가중치(관련도)의 수치가 설정되어 있어 높을수록 중시된다.
실제로 게임을 플레이하면 게임 마스터 AI가 어빌리티 그래프를 기준으로 어빌리티 노드 각각의 항목으로 플레이어의 솜씨를 체크한다. 특기 ← → 서투른 어려움 ← → 용이한 2 축을 가진 그래프로 "어빌리티 특성"을 판단하지만, MR이 높으면 특기 (낮으면 약함)에서 CR과 MR의 차이가 높으면 어려움 (낮으면 용이)라는 셈이다.
이를 보고 게임 마스터 AI는 게임의 전개를 방해한다. 자신 분야이지만 어렵다고 느끼고 있는 경우는 아군 NPC에 협력시켜, 서투르지만 과제 자체는 쉬운 경우는 TIPS를 표시해 상달을 지원한다고 하는, 세세한 팔로우를 해 가는 것이다. 또, 연출에도 응용할 수 있어 고전하고 있다면 배경을 엉망으로 한 데다 비를 내리고 불온한 분위기를 표현할 수도 있다.
플레이어가 고전하는 것 같으면 그 지원을 하면 좋고, 반대로 난이도가 부족한 것 같으면 적이나 장애물을 늘리면 좋다고 하는 것처럼, 플레이어가 씹는 느낌을 주는 「기분 좋은 어려움」을 표현 하는 것이 가능해진다고 한다.
플레이어가 지형을 파괴하는데 어려움을 겪었을 때, 화면 오른쪽의 아군이 번개를 떨어뜨려 바위를 부수어 준
|
|
이 어빌리티 노드 방식에서는 평가에 사용하는 MR과 CR의 산출이 중요해지기 때문에 다양한 궁리가 집중되고 있다. 어빌리티 노드 중에는 직접 평가할 수 있는 것과 그렇지 않은 것이 있다. 예를 들면 「적을 쓰러뜨린다」 경우는, 적을 쓰러뜨린 수와 쓰러뜨릴 수 없는 수로부터 MR, 레벨상으로 배치되어 있는 적의 종류나 수로부터 CR을 산출할 수 있다.
하지만, 전술계 어빌리티는 「스테이터스를 늘린다」 「스테이지를 잘 클리어」등 추상 때문에, 그래프상에서 부모가 되어 있는 어빌리티의 MR이나 CR로부터 웨이트를 이용해 추정한다. 이 생각 자체는 FPS나 턴제 RPG, FPS 등 장르나 맵의 형식을 불문하고 사용할 수 있는 것이다.
미래에는 플레이가 잘 된 이유나 그렇지 않은 이유를 추정하고, 원인이 된 어빌리티의 연습이 되는 콘텐츠를 제시할 수 있도록 하고 싶다고 송씨는 향후 전망을 말했다.
AI를 이용하여 플레이어의 솜씨에 맞는 스테이지를 자동 생성한다
강연의 후반에서는 성소씨가 어빌리티 노드나 CR을 레벨의 자동 생성에 활용한 예, 즉 AI가 플레이어의 솜씨에 응한 스테이지를 만들어 내는 대처에 대해 말했다.
Procedural Content Generation(절차형 컨텐츠 생성, 이하 PCG)을 레벨 생성에 사용하는 경우, 이 예라면 각각의 CR에 따른 PCG의 알고리즘이 필요하게 되지만, CR이 사양 변경하면 알고리즘도 사용할 수 없게 되어, 복수 의 CR을 고려한 알고리즘으로 했을 경우는 너무 복잡해진다는 약점이 있다.
이를 해결하기 위해 사용된 것이 Procedural Content Generation via. Reinforcement Learning(강화 학습에 의한 레벨 생성, 이하 PCGRL)이다. 인간이 설정한 보수에 근거해 레벨 생성을 할 수 있다는 것으로, 이 경우 CR을 보수로 하면 AI가 레벨을 만드는 방법을 학습해 준다.
강화 학습이란 에이전트가 보수에 근거해 최선의 방책을 학습해 가는 것으로, 보다 많은 보수를 얻을 수 있는 방법을 모색해 간다. PCGRL에서는 에이전트가 편집 중인 레벨에 장애물 등을 배치하면 보상을 받을 수 있으므로, 보다 높은 보상(스테이지 설계의 의도에 맞는 배치)을 목표로 학습해 나간다.
PCGRL과 한 마디에 가도 다양한 수법이 있어, 각각에 제약이 있다. 예를 들면, 「크레이트를 골에 밀어넣는 퍼즐 게임(이른바 “창고번”일 것이다)」의 자동 생성에 PCGRL를 이용하는 경우, 보수를 조정하는 것 어느 정도의 난도를 가진 레벨은 만들 수 있지만, 크레이트나 골의 수를 컨트롤하는 등 파라미터에 따른 레벨은 만들 수 없다.
즉, 목표인 CR에 따른 레벨 생성은 불가능하다는 것이다. 이 문제를 해결하는 것이 Controllable PCGRL이 된다. 앞서 언급한 예라면 크레이트나 골의 수, 최단 절차의 수수 등 부분을 제어할 수 있는 PCGRL이지만, 이번에 만들고 싶은 슈팅과 같은 복잡한 게임 레벨은 생성할 수 없다.
Multi-layer PCGRL이라면 적이나 지형 등의 「레벨 레이어」와 CR등의 정보를 가지는 「정보 레이어」라고 하는 레이어나 지형 생성 모듈, 적 배치 모듈 등을 조합하는 것으로, 복잡한 게임의 레벨도 자동 생성 할 수 있다. 지형 생성 모듈이 지형을 만들고, 이를 바탕으로 적 배치 모듈이 적을 배치, 또한 아이템 배치 모듈이 아이템을 놓는 것으로 레벨이 완성되는 것이다.
강연에서는 지형 파괴라는 어빌리티에 대해 Multi-layer PCGRL이 어떻게 레벨을 자동 생성하는지도 설명되었다. Multi-layer PCGRL에서는 1화면씩 자동 생성을 한다. 그 때의 목표가 되는 것이 1화면분 20행×16열의 CR의 평균을 취한 「평균 20행 CR」. Multi-layer PCGRL은 생성된 레벨의 평균 CR이 평균 20행 CR이 되도록 시행착오를 반복한다. 즉, 어떤 레벨을 생성하고 싶은지의 방침이 평균 20행 CR이며, 합치하고 있을 만큼 높은 보상을 받을 수 있는 것이다.
이번 예에서는 약 4일간에 2000만 스텝을 학습시켜, 랜덤인 CR을 지정해 100의 레벨(이 경우는 100화면분의 맵)을 만든다고 하는 테스트를 실시하고 있다. 보통으로 생성한다면 평균 0.62초, 길 등 플레이어를 유도하는 지형을 생성시켜도 0.46초, 장애물을 추가시킨다면 0.74초와 모두 고속으로, 게다가 생성한 레벨의 모두가 평균 20행 CR이라는 기준을 충족시키는 것으로 되어 있었다고 한다.
평평한 지형에 적이나 아이템을 평균 20행 CR 기준으로 배치했을 경우, 적은 평균 0.32초, 아이템은 0.48초로 배치할 수 있고, 100%가 평균 20행 CR을 가지게 되었다고 한다. 기존 레벨을 PCGRL에 편집시키는 것으로, 처음에는 간단하지만 후반은 어렵다고 하는 메리하리가 있는 것을 생성하는 것도 가능하다고 한다. 또, 플레이 중에 실시간으로 PCGRL에 레벨 생성시키는 테스트를 실시한 결과, 양호한 결과가 얻어졌다고 한다.
마지막으로 송씨는 어빌리티 분석 수법에 대해 콘텐츠나 퀘스트를 동적 생성하거나 플레이어가 만든 맵을 AI가 완성시키는 것 외에 플레이어 VS.게임 마스터 AI와 같은 싱글 플레이인데 멀티 플레이를 연상시키는 새로운 게임 성에 응용할 수 있는 것이 아닐까 향후 전망에 대해 이야기하고 강연을 마무리했다.
AI에 의한 난도의 자동 조정은 옛부터 대처가 계속되는 게임 개발자에게 있어서의 꿈의 하나이다. 현대의 AI 연구와 머신 파워에 의해, 그 꿈은 보다 현실적이고 광범위하게 되었다고 말할 수 있을 것이다. 플레이어로서도, 자신의 솜씨에 맞는 게임을 즐길 수 있고, 레벨의 자동 생성으로 전개가 보다 버라이어티가 풍부한 것이 되기 때문에 바라거나 실현하거나 하는 곳이다. 넓은 층을 향해 플레이하기 쉬운 환경을 정비해 나가는 최근의 트렌드도 있어, 강한 요구가 있다고 생각되는 난도 자동 조정이나 레벨의 자동 생성이지만, 본 강연에서는 그 가능성을 강하게 느껴졌다.
위 내용은 AI가 솜씨를 분석하고 난도를 자동 조절해주는 날도 가깝다? 그 기법과 레벨 자동 생성에의 응용이 말한 세션을 보고 [CEDEC 2024]의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!