[GDC2019] '디비전2'의 실감나는 NPC들의 전투 AI, 어떻게 구축했을까?

게임뉴스 | 윤서호 기자 | 댓글: 18개 |


▲ 드류 레크너 매시브 엔터테인먼트 수석 AI 디자이너

NPC는 흔히 상점 주인 혹은 퀘스트를 주는 누군가로만 한정해서 취급하는 경향이 있지만, 실제로는 플레이어가 아닌 모든 캐릭터들을 지칭하는 말이다. 즉 플레이어와 같이 싸우게 되는 동료뿐만 아니라, 적들 또한 NPC인 셈이다. 게임에서 재미를 주는 요소들과 다양하게 얽혀있는 만큼, NPC를 어떻게 구축하느냐는 게임을 개발할 때 주요 화두 중 하나다.

지난 15일 출시된 더 디비전2는 전작에 비해서 NPC의 비중이 상당히 높아졌다는 평가를 받았다. 상점 주인, 혹은 그저 퀘스트용 NPC에 가까울 정도였던 전작의 JTF와 달리 이번 디비전2의 민병대는 플레이어의 확실한 도움이 될 정도로 높은 전투 수준을 보여준다. 여기에 맞서는 적 역시도 은엄폐 및 드론, 저격병을 동원하고 EMP까지 활용하는 등 다양화된 전투 패턴을 실시간으로 선보였다.

그렇다면 이번 디비전2에서 NPC들의 전투 AI와 시퀀스를 어떤 식으로 구축했을까? 이번 GDC 2019에서 매시브 엔터테인먼트의 드류 레크너 수석 AI 디자이너, 필립 던스탠 수석 AI 프로그래머의 강연을 통해서 확인할 수 있었다.






▲ '디비전'의 AI 설계에서 부족한 부분을 먼저 확인하는 작업이 필요했다

드류 레크너 수석 디자이너는 '디비전2'에 대해서 언급하기에 앞서서, 전작 '디비전'에 대해서 짚어갔다. '디비전'의 AI는 괜찮은 부분도 있지만, 부정적인 면이 더 많았다고 레크너 디자이너는 회고했다. 그 이유로 단순히 체력만 높아서 총알만 소모하게끔 하는 적 디자인, 유기적이지 못하고 전투의 흐름이 잘 이어지지 못한 AI 디자인을 꼽았다. 아포칼립스 느낌이 드는 분위기나, 전략 TPS로서의 외향 그리고 이에 어울리는 애니메이션 등은 구축했지만, 게임플레이에 연관된 디자인 부분이 유기적으로 설계되지 못했던 것이다.

그렇기 때문에 '디비전2'를 만들 때는 우선 시퀄과 리스트를 정리하는 작업부터 진행했다. 특히 AI를 설계할 때 이 부분을 좀 더 집중했는데, 이는 게임플레이에서 AI 레벨 디자인이 좀 더 보완이 필요하다고 느꼈기 때문이었다.

(내용 수정) 3월 21일 12:34 = '팩션' 단어 해석에 대한 실수가 있었습니다. 내용을 아래와 같이 바로 잡습니다.

가장 신경을 쓴 부분은 진영별 행동 패턴에 차이를 주는 것이었다. '디비전'을 되돌아보았을 때 진영별로 행동 패턴이 일정하다는 지적이 많았기 때문이다. 이 행동 패턴의 차이를 어떻게 둬야 할지 기준을 잡는 작업도 거쳐야 했다.



▲ '디비전'의 문제점 중 하나는 각 진영별로 패턴이 큰 차이가 없다는 점이었고, 이를 개선하고자 했다

그 기준점 중 하나는 공격성에 대한 부분이었다. 이를 크게 공세적, 수세적으로 나눈 뒤에 각자 어떤 행동 양식을 보이는지 설계했다. 공세적인 성향으로 설정하게 되면 타겟과의 거리를 좁히려고 하고, 기존보다 좀 더 자리를 빨리 옮기거나 전진하도록 트랜지션을 구축했다. 그리고 한 번 사격을 할 때 좀 더 오랜 시간 동안 사격을 가하도록 설계했다. 뿐만 아니라 피탄 반응을 줄여서 사격이 중간에 끊기는 일을 줄였다.

여기서 더 현실성을 구현하기 위해서 타겟에 접근할 때 단순히 직선으로 다가가는 것이 아니라, 원형으로 둘러싸는 동선이 되게끔 유도했다. 실제 전술에서도 적을 상대로 단순히 돌격하지 않고, 지원사격을 받으면서 적을 포위하는 형태로 동선을 짜는 경우가 많기 때문이다.

수세적인 성향을 가진 유닛은 타겟으로부터 최대한 거리를 벌리려고 하고, 자리를 되도록 이탈하지 않고 위치를 사수하려는 성향을 보이도록 설계했다. 여기에 좀 더 수비적인 모습을 연출하기 위해서 사격을 하는 시간을 좀 더 짧게 설계하고, 피탄시에 리액션을 바로바로 보이게끔 설계했다고 레크너 수석 디자이너는 덧붙였다. 수비적인 것이 꼭 수세에 몰린 것은 아니지만, 그렇게 함으로써 더 극적인 차이를 연출한 것이다.






▲ 공세적/수세적 성향은 단순히 행동양식뿐만 아니라, 피탄시 반응 차이로도 구현해냈다

진영의 AI 특성을 구성하는 또 다른 요소로는 조직력을 꼽았다. 조직력이 잘 갖춰진 성향과, 조직력이 잘 안 갖춰진 성향의 진영을 만났을 때 전투 방식이 달라지기 때문이다. 이를 어떤 식으로 구분해야 하는지가 개발진에게는 숙제였다. 특히 조직력이 안 갖춰져있을 때는 서로 소통이 원활히 일어나지 않거나 혹은 적들이 소통을 아예 안 하는 등 행동 패턴을 보여야 하는데, 이를 구현하는 과정이 특히 어려웠다고 고백했다.

여기에 훈련 받은 정도의 차이를 구현하는 것도 숙제였다고 레크너 수석 디자이너는 덧붙였다. 개발진에서 최종적으로 제시한 사항은 엄호 사격 실시 유무, 팀 단위로 타겟의 측면으로 이동하는지 여부, 사격의 정확도, 애니메이션 트랜지션의 속도 등 다양한 기준점을 만들었고, 이를 기준으로 각각 훈련받지 않은 적과 훈련받은 적, 잘 훈련받은 적의 레벨디자인을 설계한 것이다.

이러한 차이를 설계하고, 다양하게 조합하면서 생동감있는 전투씬을 연출하는 NPC를 만들어냈다고 레크너 디자이너는 설명했다. '디비전2'의 전투는 단순히 많은 적들이 사방에서 등장하고, 이를 제압하는 것에만 그치지 않는다. 더 현실적이고, 진짜로 전투를 하는 것 같은 몰입감을 주기 위해서는 상황에 맞는 다양한 조건, 그리고 적의 다양한 반응이 요구된다. 더 나아가서 유저가 마주하는 진영별로 차이가 느껴져야만 했다. 각기 다른 무기, 특성, 역사를 지닌 적들이 비슷한 패턴으로 공격해오면 유저들은 이질감을 느낄 수밖에 없기 때문이다. 다만 이를 진영에 일괄적으로 적용하기보다는 각 진영 속 유닛별로도 약간씩 차이를 줘서 좀 더 다양한 패턴을 만들어냈다고 덧붙였다.




진영별 개체에 적용될 전투 패턴의 분류가 끝난 뒤에는 각 진영별 아키타입 분류도 필요했다. 이전 '디비전'의 가장 큰 문제가 바로 각 진영별 아키타입 분류가 제대로 안 되서, 전체적으로 보면 비슷비슷한 상황이 계속 연출되는 것이었기 때문이다. 물론 각 진영별로 비슷한 역할을 하는 유닛도 있고, 그런 유닛의 조합에 따라서 때로는 비슷한 유형의 전황이 벌어질 수도 있다.

이런 점을 고려할 때 공통점은 어느 정도 주되, 진영별 아키타입 차이를 좀 더 많이 분류하고 강조한다는 식으로 귀결이 됐다. 즉 진영별 테크나 무장 정도, 소지한 무기의 특성 차이를 좀 더 크게 둔 것이다. 그렇게 함으로써 트루 썬이나 아웃캐스트 모두 다 저격수를 보유하고 있지만, 각자 갖고 있는 무기와 그에 할당된 차이가 더 커졌기 때문에 상대하는 방법이 조금 달라질 수밖에 없는 것이다.

각 진영별 AI 패턴에 차이를 주는 것은 구현했지만, 이것만으로 전투 AI 구성이 끝난 것은 아니다. NPC가 실제로 어떤 행동을 진행할 때, 조건에 따라서 반응한 이후에 다시 원래 하던 일로 돌아가끔 하는 과정도 필요하기 때문이다. 유비소프트에서는 이미 '디비전' 개발 당시에 각 조건에 따라서 특정 행동을 하고 다시금 돌아오도록 하는 행동 트리를 구축한 바 있다. 이 행동 트리는 각 조건과 트랜지션에 우선 순위가 정해져있고, 이 우선 순위를 따라서 NPC가 움직이게끔 설계가 되어있다.



▲ 통상 AI를 구축할 때는 행동 트리를 작성하고, 이는 '디비전'과 '디비전2'에서도 동일하다

'디비전 2' 개발 때는 기본 구조는 동일하지만 '사격'과 '이동'의 항목은 따로 빼서 추가로 작성했다. 특정 조건에 따라서 행동할 때 사격, 이동이 단순히 부연적으로 따라가는 것이 아니라, 또 다른 조건에 따라서 사격과 이동이 별개로 이루어지도록 한 것이다.






▲ 이동과 공격도 따로 항목을 두고, 트랜지션을 따로 주는 식으로 설계했다

여기에 '디비전'에서 다소 부족했던 적의 피격 리액션을 강화했다. 단순히 애니메이션만 더 입힌 것이 아니라, 게임플레이 과정에서도 영향이 있을 정도로 확장했다. 예를 들면 피탄될 때 단순히 몸이 들썩거리거나 움찔거리는 것에 그치지 않고, 비틀거리거나 때로는 바닥에 쓰러져서 피탄된 부위를 부여잡는 등 좀 더 다양한 동작을 취하도록 한 것이다.

또한 게임플레이를 한 층 더 입체적으로 하기 위해서 '에임 챌린지'라는 개념을 도입했다. 에임 챌린지는 유저가 에임을 쉽게 잡지 못하도록 하는 여러 장치들로, 가장 기본적인 것은 적이 사격을 받으면 머리와 몸을 조금씩 조준선에서 피해서 에임을 잡기 어렵게 한 것이다. 마치 복싱에서 상대 주먹을 더킹으로 피하듯, 적들이 아군 사격을 감지하면 몸을 잠시 숙이면서 고개를 조준선에서 좌우대각 방향으로 위치하게끔 한다거나, 때로는 고개만 좌우로 빼서 헤드를 노리는 조준선을 피하는 시도를 하게끔 한 것이다.



▲ 피격시 적 리액션을 좀 더 강조하고



▲ 사격을 받거나, 혹은 아군의 사격을 포착한 적이 탄을 피하기 위해 좀 더 적극적으로 움직이도록 설계했다

이런 세부적인 내용은 전작 '디비전'에서는 구현하지 않았다. 이 때문에 기존 '디비전'보다 더 적이 빨리 죽지 않을 것이라는 우려가 있었다. 이 때문에 약점을 공략한다는 전략성을 추가해야 했다. 각 적들은 타입과 무장에 따라서 약점이 있으며, 이를 유저가 공략하면 더 빠르게 적을 제압할 수 있도록 한 것이다.

레크너 수석 디자이너는 게임 디자인의 측면에서 볼 때 NPC의 AI는 단순히 어떤 조건에서 어떤 행동을 한다는 것에 그치지 않는다고 강조했다. 그러한 기본 사항을 좀 더 사실적으로 구현하기 위해서는 조건을 다시 한 번 더 해체해서 요소를 하나하나 살펴보고, 이를 재조립하는 과정이 필요하다고 덧붙였다.

필립 던스탠 수석 프로그래머는 그렇게 행동과 조건에 대해서 정립을 한 뒤에 이를 프로그래밍에서 어떤 식으로 구축할 것인지 고민해봐야 한다고 설명했다. 실제로 적이 어떤 상황에서 어떤 행동을 한다는 문항 하나를 만드는 것은 간단하다. 그렇지만 이것이 여러 개가 묶이면 이야기가 달라진다. 예를 들어서 네브메시를 활용해서 맵을 순찰하게끔 만든 NPC가, 특정 조건 때문에 타겟을 찾는 과정에서 이탈을 시도하는 경우도 있다. 이런 경우에는 충돌이나 버그가 발생한다.



▲ 필립 던스탠 매시브 엔터테인먼트 수석 AI 프로그래머

'디비전' 시리즈는 특히나 방대한 필드에서 다양한 NPC들이 있고, 이들이 돌아다니는 경로도 다양한 만큼 단순히 기존의 조건과 행동이라는 방식만으로 이를 효과적으로 구축하기는 어려웠다. 이런 문제를 해결하기 위해서 던스탠 수석 프로그래머는 '문맥화'라는 개념을 도입했다. NPC에게 특정 행동의 동기를 부여하고, 주변 환경으로부터 정보를 얻고, 이를 게임플레이에 맞춰서 행동을 하게끔 꾸려나가야 한다는 것이다.

이미 NPC들이 특정 행동을 취하도록 하는 동기는 '디비전' 때부터 구축이 되어있었다. 적을 사살하거나, 혹은 생존을 위한 행동을 하도록 설정이 되어있기 때문이다. 그렇다면 남은 것은 주변 환경으로부터 어떻게 NPC가 정보를 얻고, 이에 맞춰서 행동을 하도록 유도하는 방법이다.



▲ NPC가 어떤 상황에서 어떤 행동을 하게 해야 하는지, 맥락화 하는 과정이 필요하다

이를 좀 더 효율적으로 설계하기 위해서는 NPC들의 주된 행동 패턴을 분류해두어야 한다. 이미 NPC 제작 단계에서부터 수행할 역할을 부여한 만큼, 일반적인 게임이라면 이에 맞춰서 행동 패턴을 나누고 AI를 설계하는 것으로도 충분하다고 던스탠 수석 프로그래머는 답했다.

다만 이를 오픈 필드 단위에서 구현할 때는 조금 달라진다. 필드에서 벌어지는 일들은 다양한 만큼, 이 다양한 상황에 맞춰 NPC들이 그때그때 대응할 수 있도록 해야 하기 때문이다. 이를 '디비전2'에서는 NPC의 행동들을 시퀀스로 집어넣은 뒤, 어떤 상황에 처할 때마다 NPC들이 각각 자기 목적을 달성하도록 의무를 부여했다. 이것만으로는 충분하지 않았기 때문에 각자의 목적도 크게 두 분류로 나눠서 구분, 정리했다. 하나는 처음부터 특정 행동을 유발하는 목적으로, 일례로 자원을 수집하는 NPC를 보면 이해하기 쉽다. 다른 하나는 즉석에서 여러 이유로 발생하게 되는 것들이다. 지정사수나 위치 사수, 경계 등이 포함이 이에 해당하는 개념이다.



▲ 오픈필드에서 부딪힐 다양한 상황에 대한 시퀀스를 NPC에게 할당하고



▲ 어떤 식으로 유발이 되느냐에 따라서 구분을 한 뒤, 다르게 적용이 되도록 했다

이런 NPC의 각각의 행동을 좀 더 포괄적으로, 큰 단위로 묶어서 관리하려면 어떻게 해야 할까? 여기에 도입한 개념이 'NPC 포스트'라고 던스탠 수석 프로그래머는 설명했다. NPC 포스트는 NPC가 특정 목적을 실행할 수 있는 공간으로, 그 지정된 공간에서 특정 조건과 마주쳤을 때 NPC는 조건에 맞는 액션을 우선적으로 실행하도록 하는 것이다.

이 방식을 응용하면 NPC가 여러 활동을 비교적 자유롭게 변환하기가 쉬워진다. 예를 들면 패트롤하는 NPC가 자원을 모으는 역할을 수행하게 되거나, 경계를 서거나 하는 등 액션의 변환을 주기 위해서는 어려운 조건들이 필요하다. NPC의 수가 많아지면 이 문제는 더욱 더 어려워진다. 어떤 NPC에게 어떤 임무를 배당해야 하는지 로직을 짜야 하기 때문이다. 그렇지만 위치한 공간을 바탕으로 NPC의 역할을 할당하면 좀 더 쉽게 이 문제를 해결할 수 있다.



▲ 할당된 의무나 동기, 그리고 특정 공간과 오브젝트에 배당한 조건의 조합이 다양한 행위를 유발한다

이외에도 태그매칭을 활용한 방식도 있다. 행위자를 태그로 묶고, 각 환경과 영향을 주는 요인과 조건에도 태그를 매겨서 매칭이 되는 경우의 수를 구한 뒤에 역할과 행위를 할당하는 것이다. 그리고 특정 행동을 유발하는 자극들을 설정해둠으로써 어떤 일이 벌어졌을 때 환경에 따라서 각 NPC들이 다르게 행동하도록 지정하는 방식이다.

이와 같은 방법은 디버깅에도 용이하고, 좀 더 이해하기가 쉽다는 장점이 있다. 태그를 활용하는 기존의 개발 방식을 응용한 것이기 때문이다. 그리고 바로 태그로 호출하기 때문에 근본적으로 빠르다는 장점도 있다. 그러나 '가장 적절한 태그'라는 것은 그 자체로는 불완전하고 불충분한 것인 만큼, 좀 더 세부적인 보완이 필요하다. 뿐만 아니라 태그를 붙이다보면 호출문이 점차 길어지는 단점도 있다.




'디비전2'의 NPC AI는 이렇듯 한 가지의 방법으로만 구현된 것이 아닌, 다양한 방법을 응용해서 설계를 진행했다. 이전의 실패를 피드백해서 패턴을 다양화하기 위한 기준을 여러 개 갖췄으며, 이것들이 단순히 한 번 전투를 하고 끝이 아니라, 그 외의 행동과도 좀 더 자연스럽게 연결될 수 있도록 다양한 방식을 테스트하고 적용한 것이다. 레크너 수석 디자이너는 여기서 끝이 아니라, DLC 등을 통해서 앞으로도 더 몰입감 있는 전투 경험을 주기 위한 시도들을 볼 수 있을 것이라고 덧붙였다.


▲ 디비전2의 전투 AI를 더 개선하고, 좀 더 몰입감을 주기 위한 시도는 계속되고 있다





! GDC2019 최신 소식은 박태학, 정필권, 원동현, 윤서호 기자가 샌프란시스코 현지에서 직접 전달해드립니다. 전체 기사는 뉴스센터에서 확인하세요. ▶ GDC 뉴스센터: http://bit.ly/2O2Bi0z

댓글

새로고침
새로고침

기사 목록

1 2 3 4 5