상세 컨텐츠

본문 제목

(GDC) Data Driven Design을 통한, Stellaris의 복잡한 AI 행동 만들기

[번역] Gamasutra

by brightwing1218 2020. 3. 24. 15:02

본문


원제: Creating Complex AI Behavior in Stellaris Through Data-Driven Design

원문 주소
https://www.gamasutra.com/view/news/309636/Video_Creating_Stellaris_complex_AI_behavior_via_datadriven_design.php

Gamasutra 2017.11.14 Posted

 

역자: brightwing1218


1. 요약

<Stellaris>에서 AI 디자인 시 활용한 Data Driven Design 사례 소개

 

2. 본문

2.1. <Stellaris> 소개

스텔라리스는 은하에 흩어진 수많은 제국들이 은하의 패권을 두고 경쟁하는 전략 시뮬레이션 게임이다. 

플레이어는 은하에 속한 1개의 제국으로 시작해, 다른 AI 플레이어의 제국들과 경쟁하게 된다.

 

2.2. <Stellaris>에서의 Data Driven Design 필요성 

<Stellaris>를 개발한 Paradox 사의 게임 철학[각주:1]을 만족시키기 위해서이다.

 

이를 위해서는 다량의 데이터에 의해 스스로 행동을 결정하는 AI의 구축이 필요했는데,

종래의 Behavior Tree 스테이트 머신 개념이나, Decision tree 개념을 사용한다면,

시간이 많이 소모될 뿐 아니라, 큰 퍼포먼스 이슈를 발생시킬 것이다.

위의 방식으로 짜여진 AI는 리스트에 있는 모든 상호작용 가능한 요소의 조합을 검토해야 하기 때문이다.

또한 비교적 예상 가능한 형태의 AI가 되기 때문에, 

스텔라리스에서 추구하는 사람같고 예측 불가능한 AI의 플레이 경험과는 정 반대의 결과를 얻게 된다.

 

결론적으로, <Stellaris>의 AI는, 특정한 의사결정에 몇 가지 옵션을 두고 자신의 행동을 검토하며,
설정한 값에 따라 모든 의사결정들에 합리적으로 대응할 수 있도록 디자인되었다.

이는 현재 부상하고 있는 Utility AI와 유사한 개념이라고 이해해도 무방할 것이다.

 

Paradox 사의 각 게임 철학과 Data Driven Design이 적용된 AI의 필요성은 하단에서 자세히 확인할 수 있다.

 

철학 1. 반복 플레이 가능성의 확보

Paradox 사의 홈페이지에 소개된 Replayability

Paradox 사는, 게임에 있어 기본적으로 '완료' 상태가 없는 것을 지향한다.
도전적인 형태의 샌드박스 환경을 제공하는 System-driven game을 통해,
플레이하는 매 세션마다 독특한 플레이 경험을 자아내야 하는 것을 목표로 삼는다.

 

<Stellaris>에서는, 이러한 게임 철학을 만족시키기 위해, AI 또한 절차 생성되는 은하 시스템을 구축했다.

그래서 특정 세션이 시작되기 전에 우리는 새로 생성된 AI가 어떠한 성능을 가지고 있을지 미리 알 수 없다.

당신이 <Stellaris>의 디자이너이든, 프로그래머이든, 그 누구이든 말이다.

 

Data driven design 기법을 사용하는 것은 AI가 돌발 행동(emergent behavior)을 하는 것을 가능케했으며,

이것을 통해 당신이 원할 법한 예측 불가능하고, 유니크한 NPC와의 상호작용  경험을 만들어낼 수 있었다.

 

철학 2. 긴 플레이타임의 확보

이것은 전작인 <Crusader Kings>에서부터의 기조이다. 

우리는 우리의 팬들이 즐거워하는 것을 원하고, 이것은 우리의 플레이어 층을 늘림으로써 달성 가능하다고 생각한다. 

자세한 수치는 공개할 수 없지만, 2012년 이래로 우리는 Crusader Kings에서 엄청난 플레이어 층 증가를 이루어냈다.

 

발매한 지 몇 년이 지난 후에도 컨텐츠 추가가 가능하기 위해서는
새로운 컨텐츠를 적은 프로그래머의 지원만으로 만들어낼 수 있어야 한다.
왜냐하면, 우리는 패러독스에서 매우 작은 팀이고, 게임 발매 이후에는 팀의 규모가 더 작아지게 되기 때문이다.

그럼에도 우리는 라이브서비스 이후 게임의 지속적인 밸런싱이나, 게임 스케일의 확장을 원했고,

그런 상황에서, Crusader Kings에 배정된 프로그래머는 단 한명이었다는 사실을 짚고 넘어가고 싶다.

이럴 때, 당신의 모든 시간을 AI와 싸우는 데 할애하고 있다고 생각해보라!

 

철학 3. 모드 제작이 자유로운(moddable) 게임

유저 친화적이지 않다면, 우리의 게임 커뮤니티와의 유대, 커넥션을 강력하게 유지할 수 없을 뿐 아니라,
스튜디오 바깥에 있는 사람들에게서 영감을 얻거나, 뭔가를 배울 수도 없다.

 

그러므로 플레이어가 자신만의 스토리를 만들 수 있게 하는 우리의 미션 중 하나고,

모드 제작 가능하게 만드는 것은 이 미션을 실행하는 방법 중 하나다.

 

그렇기 때문에 스텔라리스 안에 있는 NPC들은 모드 제작 가능한 컨텐츠에 대응해서
방대한 데이터 수정과 수치 조정이 가능해야 하며, 이로 인해 다른 독특한 행동이 만들어질 수 있어야 한다.

이렇게 만들어진 게임의 모드들은 첫 번째 철학인 반복 플레이 가능성을 다시 증진시키게 된다.

2.2. <Stellaris>에서의 Data Driven Design 활용 사례

기본 개념

Data Driven Design의 원리는 매우 간단하여, 설명하면 하단과 같다.

  • AI의 판단을 일으키는 트리거 이벤트가 발동할 경우

  • 이벤트 타입 및 AI의 특징에 따라, Database에 등록된 오브젝트에 특정한 기준에 의한 가중치를 부여하고

  • 의사결정 타입에 따라 가중치에 기반한 결정을 내린다.

예시를 들자면, 군국주의 이념을 가진 AI에게 영향을 미치는 이벤트가 발생할 경우,

AI는 특정한 의사결정, 예를 들어 군사시설인 연구원을 짓느냐 마느냐에 대해 가중치를 조정한다.

그리고 건설, 정책 등등 의사결정의 타입에 기반해 가중치의 활용을 결정한다.
위의 예시에서는 건설이므로, 가중치를 채택 확률로 설정했다.

 

가중치의 활용 방식은 의사결정 타입에 기반한다.

 

AI가 사람처럼 움직이게 만들기 위한 "성향"의 추가

적용된 내용이 좋은 것이라고 할지라도, 이것들이 독립적이고 랜덤하게 사용되었을 때,

좋은 게임의 느낌, 또 사람 같은 느낌을 주는 AI가 되도록 밸런스를 갖추는 것은 굉장히 힘든 일이다.

 

그렇기에, 우리는 특정한 행동에 대해서는 어느 정도 예측 가능하기를 원했다. 

사람 플레이어와 비슷하게 AI는 특정한 플레이 방식을 가져야 하면서도, 예측 불가능한 여지를 어느 정도 남겨둬야 한다.

 

이것을 위해, 우리는 AI 성향(Personality)을 적용했다. 이것은 그들 행동의 척추(backbone)와도 같은 역할을 한다.

성향은 게임 내 외교화면에 시각화되어 표시되며, NPC와의 상호작용 대사에서 이 성향이 녹아 있다.

게임 내에서의 현실감을 만들어내기 위해서는, dialog 내용과 상호작용 방식을 연동시키는 것이 매우 중요하다.

 

"지배적 제국주의자"의 경우에서의 행동 경향성

 

AI Data Driven Design 기법 적용의 이점

이 모델을 적용함으로써 얻는 이득 중 하나는, 당신의 코드를 매우 깔끔하게 유지할 수 있다는 것이다.

컨텐츠 디자이너들에게 앞서 설명한 AI를 구축하는 것은 큰 작업이지만, 그 작업의 규모에 비해 코드는 굉장히 덜 쓰면서 작업될 수 있다.

 

AI를 코드가 아니라 스크립트에 더 많이 노출하는 것은 당신의 코드를 쉽게 만들 뿐만 아니라 AI 디자인을 프로그래머로부터 분리할 수 있다. 즉, 프로그래머가 자신이 잘 하는 분야에 더 잘 집중할 수 있게 만들어 결과적으로 더 많은 작업을 할 수 있게 된다는 것이다. 

또한 컨텐츠 디자이너에게 스크립트를 맡김으로써, 프로그래머로부터 AI를 독립적으로 구성할 수 있는 등 더 강력한 권한을 부여할 수 있다. 동일한 맥락에서, AI 스크립트를 모더들에게 공개함으로써 그들은 더 많은 것을 만들어낼 수 있게 된다.

 

AI Data Driven Design 기법 적용의 한계

그러나 이러한 디자인 기법은, 당연하게도 게임에 잦은 크래시, 버그를 동반한다.

 

코드로 하던 많은 것을 스크립트로 이양한다는 것은,
컨텐츠디자이너나 스크립터, 디자이너에게 최적화 등 익숙하지 않은 작업을 하도록 지시하는 것과 마찬가지이기 때문이다.

 

물론 좋은 툴, 설명을 제공하거나, 어떤 것은 코드로 처리함으로써 이러한 문제는 줄어들 수 있겠지만 말처럼 쉬운 일은 아니다.

<Stellaris> 게임 팀은 디자이너들에게 퍼포먼스 증대를 위해서는 어떻게 스크립팅해야 효율적인지 등을 교육하여 이러한 문제에 대처하였으며, 이것을 개발 일찍 시작했으면 더 좋았을 것이라고 회고한다.

 

또한, AI가 돌발적인 행동을 할 수 있도록 AI를 디자인하였기 때문에,
AI가 하면 안 되는 행동을 하는 케이스를 찾아내기 위해 정말 많은 플레이가 필요하고 이 과정에서 시간과 노력이 매우 많이 소모된다.

 

 

3. Q&A

해당 AI를 QA[각주:2]하기 위해, 어떤 방법을 택했는가?

게임 내 모든 오브젝트에 ID가 부여되어 있고, 이 오브젝트들이 가진 자원 등의 수치를 마음대로 설정할 수 있는 콘솔커맨드를 가지고 있었다. 하지만 이것만으로 QA의 모든 것이 해결된다라고는 할 수 없고, 대부분 수많은 유닛 테스트를 거쳤다. 태생적으로 해당 AI는 많은 반복횟수의 테스팅이 필수적이라고 생각한다.

 

스크립트로 제어하는 범위가 AI의 의사결정에 대한 수치나 플래그를 만드는 것에 국한되는 것 같다. 혹시  디자이너가 스크립트를 통해 특정 이벤트에 대한 AI의 행동을 강제할 수도 있었는가?

본 세션에서 다룬 범위는 해당 AI 디자인의 일부분에 불과하다. 스크립트 내부에서는 질문의 내용을 포함한 굉장히 많은 것들이 가능하며, 디자이너가 하고자 하는 것을 최대한 많이 지원하려고 노력하고 있다.  

 

컨텐츠 디자이너가 스크립트를 통해, 프로그래머가 예상치 못한 이벤트를 추가하여 중추 시스템이 망가질 수도 있어보인다. 또한 데이터나 시스템에서의 의존 관계가 복잡할 경우, 심각한 오류로 이어질 수 있다.  이러한 경우는 없었는가?

거의 매일 AI가 망가졌고, 이를 고치는 형태로 작업을 해 왔다. 그렇기 때문에, 구성원들이 뭔가를 추가할 때 AI가 망가지는 것에 대해 의식적으로 신경을 쓰면서 작업을 해 왔고, 이를 통해 몇몇 위험한 상황을 예방할 수 있었다. <Stellaris> 자체가 복잡한 게임이기 때문에, 이것을 스크립트로 하든, 코드로 하든 AI를 건드릴 때면, 비슷한 위험성이 있었을 것이라 생각한다.

 

AI가 참조하는 "데이터"에 플레이어의 행동으로 학습한 내용 또한 들어가는가?

플레이어의 행동과 자원을 관찰하고 이에 맞추어 행동하긴 하지만, AI 자체가 인간의 행동을 학습하지는 않는다.

 


 

 

  1. Game Pilliars [본문으로]
  2. Quality Assurance [본문으로]

관련글 더보기

댓글 영역