게임 내에서 AI는 어떻게 작동하나

1페이지
게임 AI 소개

일반적으로 토끼가 특별히 영리하다고 생각하지는 않을 것이다. 이들은 일반적으로 풀을 뜯고, 뛰어 다니며 굴을 판다. 이런 작은 동물이 얼마나 복잡할 수 있을까?

근데, 2008년 초, IBM은 Thomas J Watson Research Center 에서 작은 동물의 대뇌피질을 디지털로 시뮬레이트 하는 계획에 뛰어들었다. 이 테스트는 8192개의 프로세서와 2.8TB의 메모리를 가진 Blue Gene-L 슈퍼 컴퓨터로 토끼의 뇌에 있는 16㎠의 대뇌 피질표면에 2천 2백만개의 뉴런과 110억의 시냅스를 시뮬레이트 하려 했다.

심지어 이런 기초 지능 마저도 시뮬레이팅에 극도의 사양을 요구하는데, 그러면 기본적인 PC에서는 게임 내의 다수의 지능을 가진 사람을 시뮬레이팅 할까?

게임 상의 AI는 다방면으로 3D 래스터라이제이션과 흡사한데, 실제 같은 광원과 그림자를 보이기 위해 쉐이더와 텍스쳐를 이용한 복잡한 속임수를 쓰게 된다. 만약 CGI 영화 같이 게임에서 적절한 ray tracing 을 썼다면, 확실히 더 큰 연산력을 필요로 했으며, 이 것은 AI에도 영향을 끼치게 된다.

1.jpg
Empire : Total War 는 한 화면에 수천명을 보여준다. 게임 진행을 위해 이들 모두는 지능을 가져야 함은 물론이다.

Empire : Total war 의 AI 시스템의 주도자인, Creative Assembly 의 AI 프로그래머 Richard Bull 이 설명하기를, "AI 대학은 당신의 마법사이며, 우리는 당신의 마술사이다. - 게임 AI는 모두 연기와 거울 들이다.

"우리는 당신에게 현실같은 인상을 주려하며, 그리하여 우리는 때때로 대학에서 만드는 것보다 훨씬 더 인상적인 시스템을 얻을 수 있으며, 우리는 더 지능성을 만들지는 않는다. 사실, 대부분 그렇다. - 생각 하는 것만큼 우리는 AI를 더 영리하게 하지 않는다.

게임 F.E.A.R 에서 적에게 당신이 가까이 가면 공격하고, 창밖으로 뛰어 내려버리는데, 이것으로 하여금 진짜 인간 캐릭터가 당신을 죽이고 살아남고 싶어 하는 것 같다고 생각할 수 있으나, 이 것은 모두 컴퓨터 프로그램으로 인한 반응일 뿐이며 정확한 시간에 정확한 율동을 사용하는 것이다. 게임 상의 AI를 알아내는 것은 마치 Frank O가 MIss Piggy를 제어한다는 것을 알아내기 위해 카메라 Zoom out을 하는 것과 같다.; 처음에는 실망스럽겠지만, 파고들어 갈수록 복잡한 인형극을 보는 것 같은 느낌을 준다.

2페이지

State Machines

그럼 어떻게 게임 내 캐릭터에게 감동적인 지능을 줄까? 이것에 대해 대답하기 위해서는 AI의 기본지식이 바탕에 있어야 한다. 자 이제 지정된 영역을 돌아다니다 당신을 발견하면 공격하는 옛날 옛적 1인칭 게임을 보자. 이들 캐릭터들은 State Machine 을 이용하여 결정한다.

개개 NPC나 NPC 그룹은 몇몇개의 상태를 가지는데, '인간 공격' 이나 '적 탐색' 같은 것이 있으며 각각 이들 상태는 다양한 행동과 액션이 연관되어 있다. 예를들어, '인간 공격' 상태에 있는 캐릭터는 무기 발사와 재장전 같은 액션을 가지며, 캐릭터는 다른 변수와 부합 되면 다른 상태로 변경이 된다. 적이 시야 밖으로 사라지면, 캐릭터는 '적 탐색' 상태로 바뀌며 새로운 적을 게임 내에서 찾기 위해 주위를 둘러보는 행동이 포함 된 액션 세트를 사용하게 된다.

이런 개념은 참 쉽지만, State Machine을 이루는 결정 트리 구조는 당신이 캐릭터를 지능 있게 만들수록 엄청나게 훨씬 어려워진다. 이들 결정 트리는 행동의 위계 서열형태이며, 위계적 제한 State Machine 이라고 한다. (HFSMs, hierarchical finite state machines)

가족 트리같이, 이 것은 (충전같은) 1개 상태로 시작하는데, 이것이 응전이나 퇴각같은 행동 양식이라는 가지를 갖게 된다. 각각 이런 행동 양식은 퇴각이나 엄호 같은 부가 선택들로 나뉘게 되며, 이것 또한 더 많은 액션으로 가지를 칠 수 있게 된다. 이 부가 선택 사항은 각기 다른 실행 사항과 대결 구도로도 가며, 상위 행동 양식에 의해 승자가 결정되는데, 이 것에 대한 결정은 부가 선택 사항의 무게와 현재 상황의 관련성을 따진다.

2.jpg
Relic의 Dawn of War 2의 AI는 20상태 정도의 State machine을 가진다.

Relic의 수석 프로그래머 Chris Jurney는, 그들의 DoW2 RTS 내 에서의 State machine 에 대한 몇가지 예시를 제시하였다. "Dawn of War 2의 AI는 대략 3개의 주 레이어가 있다.  컴퓨터 플레이어, 분대와 대원들이 그것이다." 라고 Jurney는 말한다. "분대와 대원들은 둘 다 위계 한계 state machine 을 사용하며, 우리는 분대 단계에서 20개 정도의 상태를 가지고 있으며, 대원 등급에서도 20개 정도를 가지고 있다. 분대 등급에서의 상태는 사용자가 내놓은 명령이 바로 전달될 수 있다.

"예를들어, 분대에 캡쳐 명령을 내렸을 경우, 분대는 분대 state-capture 상태로 진입하게 된다. 이 state는 거점 캡쳐에는 충분히 가깝지 않다는 것을 찾아내고, 부가 상태인 squadstatemove 상태가 될 것이다. 이 상태에서, 대열 이동 시스템은 개개 분대원들에게 이동 명령을 내리기 시작하며, 대원들은 이들 명령을 받아 statemove 상태로 전환된다.

자세히 보면, 길을 찾고, 활동이 적용되고 일반적으로, 개개 대원들은 그들의 명령을 가장 똑똑하게 수행할 수 있는 형태로 수행한다." 몇몇 state는 관련성 있는 다수 캐릭터 사이에서 공유되며, 대부분의 캐릭터는 극소수의 표준 state로 그들의 시간을 소비하며, 다른 윙맨들은 다른 특이사항이 나오기 전까지 기다리게 된다.

Crytek의 Mattew Jack은 Crysis의 북한군의 예제를 제공하는데, 선택 사항은 25가지 정도가 있다고 하지만, "핵심 행동양식을 결정하는 것은 몇개 되지 않는다." 라고 한다. Jack 이 추산하기를 "거의 90%의 시간을 그들은 단지 5개 상태만으로 지낸다." 고 하며 "사용이나 차량에 반응, 특수무기 사용 같은 특이상태"가 다른 상태라고 한다.

State machine이 몇세기 동안 게임 AI에서의 주요 형태였지만, 그래봤자 행동양식이 부처님 손바닥 안이었다. NPC는 스크립트 화 되거나 부분적으로 무작위 행동양식을 가질 수 있지만, state machine 을 사용한다는 것은 특정 각도에서 어느 정도 예상이 가능하다는 것을 의미한다. 캐릭터를 좀 더 어렵게 만들고 싶다면, 그것의 state machine을 훨씬 더 크게 만들어야 한다. - 그들이 통제 불가능해질 정도의 영역이 될 만큼의.

Creative Assembly의 스튜디오 통신 매니져 Kieran Brigden 이 설명하기를, "끝없이 팽창하는 상태를 얘기 한다면 문제에 봉착하게 될 것이다. 예를들어, Empire : Total War 에서 엄청난 수의 state를 가진 인간이 있다면, 그래서 부대에 160명, 20부대의 군대를 가진다면, 화면상의 모든 개인들에게 얼마나 많은 결정트리가 있는 지를 생각해야 한다. 여기서 한 화면에 수천명이 있는 경우를 생각 해보자.; 이들 모두 엄청난 양의 state 기반 논리 트리 구조가 있으니, 2% 의 오버헤드가 중요한게 아니다." 라고 한다.

Crytek의 Mattew Jack이 동의하면서 말하기를, "state machine의 문제는 상태간 전이를 정의하는 데 있다. ; AI 캐릭터에게는 이것이 그리 크지 않은 숫자지만, 상태 모두를 책임져서 관리해야 하는 개발자에게는 어려울 수 있으며, 이것이 통용되는 곳이 있을 수 있다." 세부사항을 일단 뒤로하고, Jack 또한 덧붙이기를, "Crysis 부터, 복잡성을 관리하기 위해 다른 행동양식을 발전시켰다." 고 한다.

3페이지

Planning System

그럼 게임 상 AI에서 state machine을 대체하는 것은 없나? 그건 아니다. - state machine 들은 여전히 게임 캐릭터들 내에서는 간단한 행동 양식을 정의하는 것을 요구하며, 그들은 그들의 임무에 충실하고, 그래서 그렇게 변경해야 할 필요성은 느끼지 않게 된다. 예를들어 Creative Assembly 에서는, 여전히 state machine을 '적 사격' 같은 많은 상태에 사용하곤 한다.

여기서 문제는, 당신의 캐릭터를 CPU 자원을 잡아먹지 않으면서도 더욱 지능있게 만들려면, 프로그래머에게는 말 그대로 엄청나게 거대한 복잡한 부하로 다가온다. 이 것에 대한 대안이 바로 게임 내 AI에 거의 최근에 도입된 결과- 유래 Planning System이다.

Monolith의 F.E.A.R. 는 2005년 말 발매 때 처음으로 게임에 Planning System 을 도입한 게임 중 하나였으며, 이것은 다수 캐릭터가, 어느 때는 매우 인간에 가깝게 특이한 행동을 화면상에서 하는 것을 볼 수 있었다. Gone은 직접 사격이나 그 주변을 맴돌면서, 그 적들로 하여금 더욱 향상된 지능을 가지고 장애물을 뛰어 넘거나, 사격을 피해 숨거나 근접전에서 발길질을 하기도 한다.

3.jpg
간단히 말해, Planning system은 게임 캐릭터들로 하여금 목표를 완벽히 완수하기 위해 무엇이든지 한다는 것이다. 주위를 끌기 위해 state-machine 내의 행동 양식을 줄줄이 비엔나처럼 집어 넣는 것 보다는, 목표나 임무가 주어져 있어, 캐릭터가 이 것들을 완수하기 위해 현재 상황에 걸맞는 몇가지 방법을 가지고 있게 될 것이다. (위에 보이는) 이 다이어그램은 MIT Media Lab의 jeff Orkin 에 의해 창시된 것으로, 그는 또한 F.E.A.R. 에서 수석 소프트웨어 엔지니어로 일한 경력이 있으며, 또 목표-유래 Planning System 을 사용하여 어떻게 AI 캐릭터들이 계획을 짜는지를 보여주었다.

Empire : Total War 에서, 보통 목표는 '부대의 측면을 사수' 하거나 '이 요새를 효율적으로 다루라' 정도가 될 것인데, 이것들은 상황에 따라 언제나 우선적이 될 것이다. 목표 달성을 위해, 컴퓨터는 자기가 원하는 상황을 보고, 원하는 결과를 성취하기 위한 최상의 방법을 계산할 것이다.

Creative Assembly는 Empire : Total war 에서 그들 고유의 Planning System 을 소개하였는데, 이것은 이전의 Total war 게임과 비교해 훨씬 더 AI를 예측 불가능하게 만드는 것이었다. 게임 내에서 전투 중 AI를 작업한 Richard Bull은, Planning System 을 묘사 하기를 "자가 재기록을 하는 state machine" 이라면서, "그러나 이것이 그들이 스스로 그들 고유의 목표나 일거리를 만들어 낼 정도의 능력을 가진 마술같은 시스템은 아니다.; 우리는 AI을 저장할 수 있는 창고와, AI가 원할 만한 저장고를 가지고 있을 뿐이다." 라고 덧붙였다.

Planning System 을 사용할 때, AI는 인간당 목표 기반에서 작업하며, 상황 분석 후 어떤 목표가 우선 순위인지를 판단하게 된다. Empire : Total war 에서, Bull은 AI의 예제를 주었는데, "기마병들이 측면 돌파를 강행하고, 포대가 넓게 포진하여 그들의 사정거리에 들어올 때까지 기다리고 있는 모양" 을 주었다. Bull 이 설명 하기를 " '사실, 난 이 애들 여기까지 보내고 싶어' 라고 생각하는 것은 Planning System 에서는 꽤 위험한데, 이렇게 하면 전체적인 군대 계획에 해를 입을 수 있기 때문에,  AI는 현재 활동과 행동 상태, 거기다 적의 위협과 지형을 보고 여러번 셈하게 된다."

Bethesda 또한 Fallout3에 planning system을 도입하였다. 게임 내 AI 작업을 했었던 Bethesda 의 프로그래머 Jean-Sylvere Simonet이 설명하기를, "(작은 state machine같이) 간단한 행동을 혼합시켜 전체적인 계획 내로 들인다. 우리는 이 계획자를 다른 대체 사항으로 시도해본 후 도입하였다. 마침내, 전투 상의 NPC는 그들이 성공할 기회를 그대화 할 방법과 행동 우선순위를 찾게 할 수 있었다."

4.jpg
만약 Fallout3에서 이런 괴물들을 죽이고 싶다면, 그의 현재 목표를 성취하는 데 있어 가장 효율적인 방법이라면 바로 그의 죽은 형제의 무기를 드는 것이 최고이다.

Fallout 3의 최종 결과는 NPC가 그들의 목표를 이루는 데 있어 가장 효율적인 방법을 선택한다는 것인데, 자신이 생각하더라도 이것은 필연적인 것이다. 보면 참 감동 먹을 것이다. 예를 들어, 두마리 괴물이 당신 앞에 있고, 당신은 그들 중 하나를 죽일 것이며, 나머지 한마리는 총알이 다 닳았다고 치자. 남은 괴물은 새로운 무기를 찾는 방법을 찾을 것이며, 그래서 Planning System 이 무기를 얻기 위한 가장 효율적인 방법을 찾을 것이다.; 만약 최 근거리 무기가 죽은 그의 형제의 몸에 있다면, 그는 그 것을 집을 것이다. : 이런 등급의 예측 불가능한 행동을 state machine 에서는 아주 복잡해졌지만, Planning System 은 NPC가 스스로 이것을 자동으로 처리한다. Planning System 들은 모두에게 만병통치약이 아니다.

예를들어, Relic은 여전히 state machine 을 Dawn of War 2 의 AI로 사용하는데, 개발자는 AI 등급을 특정 등급에서 예측 가능하기를 원했다. Chris Jurney가 지적하기를 플레이어가 분대에게 명령을 내리면, "그는 그가 원하는 최대한으로 유닛을 움직이게 하고 싶을 것이다. 이것 때문에, 유닛이 일관성있게 움직이는 것이 아주 중요하며 유저는 그가 클릭을 할 때 어떠한 일이 일어날 지 기대를 하게 된다."

"그 결과, AI의 목적이란, 예측성에서는 영리함이 우선되고, 그래서 학습이나 재기록 같은 결정 트리는 배제된다. 정확히 가장 최상의 행동 모델을 얻는 기대는 RTS 게임에서 가장 높은데, 왜냐면 플레이어는 그가 제어하는 유닛과 맞서는 유닛들의 모든 액션을 볼 수 있기 때문이다."

4페이지

All terrain

그럼 이제 당신이 캐릭터를 가지고 있고, 그들이 그들 스스로 생각 하는 것처럼 보이겠지만, 그들이 어디 있는지를 어떻게 알고, 그들의 환경이 어떤지를 어떻게 알아 그들이 가장 효율적인 방법으로 당신의 맘에 들게 움직일까?

NPC들은 당신의 관점으로 게임 세계를 보지 못한다. - 이게 된다면 정말 막대한 연산력을 필요로 하게 될 것이다. 대신 그들은 그들이 갈 수 있는 곳에 대한 길잡이가 필요한 것이다. 이것은 가끔씩 격자 무늬의 네비게이션 형태를 띄며 장애물을 보여주고 지형의 형태를 보여주지만, 개발자들 또한 네비게이션 그물망 (navmesh라고 부름) 을 사용하는데 이것이 3D 화면의 로컬이다.

navmesh는 기본적으로 저해상도 3D 그물망을 사용하여 3D 화면의 최고 상위에 자리잡으며 AI 캐릭터로 하여금 그것이 움직일 수 있는 영역을 보여주고, 디자이너에 의해 놓여진 특징 태그나 힌트를 AI에 부여하게 된다. F.E.A.R 2 : Project Origin의 AI 개발자 블로그 상에서, Monolith의 수석 소프트웨어 엔지니어인 matt Rice가 설명하기를 "AI 캐릭터가 움직여갈 수 있는 곳에, 디자이너는 그가 원하는 영역에 이 보이지 않는 mesh를 만든다." 라고 한다.
5.jpg6.jpg
F.E.A.R 2 내의 navmesh 특징 태그는 AI로 하여금 무조건 특정 행동을 하도록 하게하는데, 영역을 가로지르기 위한 dive 가 바로 그것이다.

Rice는 NPC가 게임 내에서 보호막 사이에서 솜씨 좋게 움직이고, 사격받는 친구를 엄호 하기 위해 열린 창문을 통해 다이빙 하는 것을 예로 들었다. Rice가 설명 하기를 "이것은 팬시 애니메이터가 어떠한 주어진 영역에라도 디자이너들이 쓸 수 있도록 애니메이션 양식을 만들기에 가능하다. 디자이너는 navmesh에 이름표를 붙여 AI가 영역을 가로지르기 위해 (다이빙 같은) 특정 애니메이션을 하도록 하게 한다.

스크립트 화 같은 소리와 비슷하지만, NPC는 게임의 Planning System을 사용하여 창문 밖으로 뛰어 내리는 것이 최상의 행동양식인가를 결정하게 된다. 창문 밖으로 뛰어내려야 한다면, navmesh는 이 것을 수행하기 위해 어떤 애니메이션을 필요로 하는지 말해준다. 놀랍게도, Rice가 추가 하기를 "만약 결과 경로가 영화 같고 놀랍다면, 아주 기분 좋을 것이다. ; 나라도 돈주고라도 살 것이다. 그렇지 않다면, 다시 작전 판으로 돌아가 디자이너, 또는 애니메이터, 또는 이 둘과 같이 회의를 할 것이다."

7.jpg

navmesh는 표준 네비에기션 격자보다 더욱 유연함을 제공해주며, 애니메이션 힌트만을 주는 것이 아니다. Bethesda의 Jean-Sylvere Simonet이 지적하기를 Fallout3에서 로컬 경로 탐색에 사용되는 navmesh(오른쪽 이미지) 가 "NPC가 필요로 하는 커버 정보 저장에 최고의 지원이라는 것을 찾았으며, 이것은 또한 우리에게 환경 주위의 크고 작은 생물체 경로를 만드는 데 통합 파이프라인 화를 할 수 있게 해준다. (네비게이션 격자 같은) 우리의 이전 시스템은 표준 캐릭터 크기를 추정 해주고, navmesh는 bloatfly 들과 behemoth 들 모두로 하여금 같은 데이터를 가지고 회랑 지대나 골목길 주위를 찾도록 한다.

Simonet은 또한 navmesh가 AI를 도와 경로 탐색을 더 잘할 수 있다고 지적한다. "물려받은 부분 정보를 저장하기 때문이라면서, 우리는 '생각대로의' 공간 크기를 알고리즘화 할 수 있었다. 예를들어, 탐색같은 행동은, NPC가 조사를 빠르고 효율적으로 하도록 navmesh 데이터로 영역 밖에 대한 참고로 활용하며, 결론적으로 목표가 어디였는지를 알 수 있게 한다.

5페이지

대지의 거짓말

Fallout 3와 F.E.A.R. 2와 같이, Crysis 내의 대지 분석의 첫번째 과정은 대지를 삼각화 하는 것이었다. ; 이것으로 말미암아, AI는 삼각화로 길 찾기 격자를 파생시킬 수 있다.

Crytek의 Pavel Mores는 이 격자를 설명하기를, "여러 종류의 유닛들이 사용하게 하려는 의도로 통합하였다. 이것은 결정을 위해 노드와 링크라는 추가적인 데이터 저장으로 완성되는데, (힌트는 게임 디자이너에 의해 만들어짐) 예를들면 유닛이 링크를 통해 지나갈 정도로 작거나, 링크를 통해 물 깊이 등을 조절할 수 있는 정도의 영역을 들 수 있다."

지형 삼각화 시스템과 같이, Crysis는 표면 상의 경도와 위도를 정의 하려 전통적인 웨이포인트 그래프를 사용하였는데, 그러나 이 것은 "3D 영역을 통한 특화된 길 찾기 지원" 으로도 알려져 있다.

그가 설명하기를, "이것의 한 부분은 비행 길 찾기라고 부르는 것인데, 이것은 부피가 있어, 중력이라 부르는 up-vector 가 잘 정의 할 수 있는 곳에서 사용 하는 것이 효율적이다. 또 다른 것은 부피 네비게이션으로, 이것은 영역에서 자유 이동을 도와주기에, 이 것은 더 복잡한 전처리보다 훨씬 단가적으로 이익이다.

3D 부피 내에서의 길 찾기는 AI의 핵심 과제 이기 때문에, 이것은 갈수록 중요해지고 있다. 우리는 이제 바닥에서만 발붙이고 있는 것이 적이 아니다. ; F.E.A.R. 2나, Bio shock 까지도, 벽을 기어오르고 천장을 돌아다니는, 그리고 암벽을 타고 공중에서 떨어지는 괴물들과도 맞서야 한다. Monolith는 F.E.A.R. 2 에서 'segment' 라고 부르는 것을 사용하여 주소 지정을 하는 인상적인 방법을 쓴다.

8.jpg9.jpg
F.E.A.R. 2 에서의 segment는 프로그래머에게는 빡세지만, 이것으로 게임 캐릭터들로 하여금 대지 뿐만 아니라 어느 곳으로도 갈 수 있는 능력을 준다.

Monolith의 Matt Rice가 설명하기를 "segment 들은 점과 연결 선의 연속이며, navmesh에 적용될 수도 있고 적용되지 않을 수도 있다. AI는 일반적인 navmesh 에서와 같이 이들 segment를 이용하여 자유롭게 경로를 만들어 나갈 수 있다." 그러나, navmesh 에서의 폴리곤과는 다르게, navmesh에서는 AI 캐릭터가 폴리곤 안에서 움직이지만, segment 는 화면에서 제한적인 구역에만 위치하고, 이들 지점들을 환경 내 어느곳이라도 들여보낼 수 있다. 이것은, Rice가 말하기로는, "AI 캐릭터에게 환경을 지배할 수 있게 하고, 편한 곳으로만 가지 않게 하는 능력" 을 부여 하였다고도 한다.

Planning system 으로 segment 들을 혼합한다면, 당신을 향해 괴물들이 어디서든 달려드는 환장하는 화면을 보게 될 것이며, 예측 불가능한 양상을 보게 된다. 예를들어, Rice 는 "플레이어가 앞에 있는 반라의 Abomination에 신경 쓸 때, 그의 동료는 마루에서 천장으로 뛰어올라 다가오고, 다시 벽으로 뛰어 우측에서 오다가, 마지막에는 플레이어를 잡을 수 있는 뒤에 오게 될 것이다." 라고 설명한다.

Segment 들은 도입하기에는 엄청나게 까다로운 기능이다. Rice가 설명하기를 "디자이너들에게는 모든 segment와 링크들을 관리하는 것은 기를 죽이는 것이다." 라고 설명한다. 그러나, 그는 자신있게 "F.E.A.R. 2의 Abomination과 싸워본 사람이라면, 팀이 소비하는 acetaminophen을 애용할 것이다. " 라고 하였다.

한편, Relic은 Dawn of War 2의 AI에 지형 데이터를 저장하기 위해 1 메가 픽셀의 길 찾기 격자를 사용하였다. RTS 베테랑들은 알겠지만, Company of Heroes 에서는 여러가지 방어벽들을 게임 상 오브젝트와 지형으로 넣은 개념을 소개하였으며, 그리고 이것은 Dawn of War 2 에서도 계속된다. 이 것을 하기 위해, 게임은 엄호물을 위해 두 가지 격자가 요구된다. - 한가지는 지형에, 나머지 한가지는 오브젝트와 장애물에 쓸 것이다.

게다가, 게임은 개임 내 가장 큰 캐릭터가 각기 셀로 갈 수 있는 가장 큰 단위를 격자로 쓰며, 여기에 더해 그들이 이동할 때 그들의 목적지를 예약할 수 있는 용도로 쓰기에, 그들은 같은 영역에 자기가 들어가겠다고 다투지는 않는다. 앞에 말한 것 때문에, 근 미래에는 유닛들이 도착해야 할 곳을 그리는 또다른 격자가 필요할 것이다. - 파편을 피하기 위한 것. '위계적 영역지도' 라고 불리우며 동일한 속성을 가지는 셀은 같이 합쳐지는 것으로 기술되는 것도 있는데, 이것은 장거리 탐색의 속도를 올려준다. 지능적인 방법으로 NPC를 A에서 B로 옮기려면 전부 6개의 지도가 필요하다는 것을 의미한다.

Relic 은 래스터라이제이션을 이용하여 지도를 동적으로 그리는데, 당신이 마치 3D 세상에 들어온 것 같이 그린다. Relic의 Chris Jurney가 설명하기를 "화면에 삼각형을 그릴 때 그래픽 카드가 하는 과정과 같다. 세계에 새로운 건물을 놓으면, 이들을 갱신하기 위해 다양한 맵 격자로 가릴 박스를 그리는데, 정확히 머리 위 시점에서 (4개 픽셀의 그룹인) Quad 를 렌더링 하는 것과 같다." 라고 설명한다.

6페이지

파괴 가능 환경

래스터라이즈 된 디자이너 힌트가 들어간 지도라는 Relic 시스템의 장점은 환경 내 변화점을 유지하기에 쉽다는 것이다. 점점 복잡해지는 물리알고리즘에서, 게임 개발자들은 가능한 한 반응이 현실성 있도록 보이려 하려고 골머리를 썩힐 것이다.

이런 와중 나온 것이 파괴 가능 환경으로써, 나무나 건물들을 파괴하거나 손상을 줄 수 있는 것으로, 그 결과가 게임 진행에 영향을 주는 것이다. Dawn of War 2 는 파괴 가능한 전장을 만들 것이라 하지만 Jurney가 말하기로는 아주 쉬울 것이라 한다.

"우리는 모든 지도와 세계의 구조물들을 갱신할 것인데, 세계는 건축/파괴에 따라 변경되기 때문이다. 그래서 AI가 내리는 결정이 맞다면, 그들은 바로 변화를 줄 것이다. 우리의 AI들은 (거의 0.5~1초마다) 그들의 환경을 계속적으로 분석하기에; 세계가 바뀌면 그들의 행동 양식도 바뀐다."

10.jpg
Crysis와 Crysis:Warhead 모두 뛰어난 파괴 가능 환경을 가진다.

파괴 가능 호나경을 가진 게임에서 특히 눈에 띄는 것은 Crysis로, 여기서 당신은 Jeep 로 정글을 뚫거나 당신 앞의 나무를 쓰러트릴 수 있다. Crytek의 Pavel Mores가 설명하기를, 동적이고 예측 불가능하게 바뀔 수 있는 환경을 만들 수 있는 여러 방법이 개발자에게 필요하다고 말한다. 그는 AI가 길찾기 격자 상에서의 길 찾기 탐색을 수행하는 것을 보여주었는데, 현재로써는 이렇다 할 장애물이 없는 곳이었는데, 그 후 그 곳이 교전 지역 이라면, 결과 경로 주변의 동적 장애물로 회귀하고 그에 따라 행동하였다.

풍부한 navmesh는 또한 파괴 가능 환경에서도 빛을 발하는데, Bethesda는 이것을 Fallout 3에서 사용하였다. 크고 단단한 신체가 제거되면 navmesh는 그에 따라 동적으로 갱신된다. 이것은 물론, 보통 일정량의 연산력을 필요로 하지만, bethesda는 mesh 상에 단단한 신체를 나타내려고 간단한 네모 상자를 두는 것으로 해결하였다.

Bethesda의 Jean- Sylvere Simonet 이 말하기를 이 작업 또한 좋다고 한다. "실제로, 대부분의 동적 오브젝트는 거의 사각 외곽선을 가지고 (자동차, 버스, 탁자 등) 있기에, 이 것이 먹힌다. 이 프로세스는 단단한 신체와 중첩되어 다시 테셀레이트 될 navmesh 의 영역을 찾아내고, 튕겨진 박스의 외곽선 만을 남기고 사라진다. 이 때 우리는 동시에 외곽선을 재 연산해야 하지만, 이것은 빠르게 진행되는데, 확인 할 것은 4개의 모서리가 다이기 때문이다. 이것으로 하여금 NPC 들이 동적 오브젝트를 엄호 물로 사용할 수 있게 한다."

7페이지

하드웨어 가속?

AI가 게임 내의 장애물이 되어 다음의 GPGPU 연산에 대한 문제가 될까? 요즘에도 하드웨어 가속기를 지원하지 않는 게임이 많다. GPU는 그래픽과 물리 가속을 하는데, 최근의 사운드 카드는 향상된 서라운드 효과만을 가속한다. AI는 게임 플레이에 있어 기본적인 부분인데, 이것도 하드웨어 적으로 가속되지 않을까?

2005년에, 이스라엘 회사 AIseek 는 intia 라는 분리된 AI 프로세서를 발표 하였고, 이것은 지형 분석과 길 찾기를 포함한 몇몇 AI 기능을 가속하기 위해 설계 되었다. 그러나, 우리는 이 기술 기반의 제품을 아직도 볼 수 없다. 이 분리된 하드웨어 종류에 대한 문제는 게임 진행의 기본적인 AI가 필수사항이라는 것이다.

이런 이유로, AI 프로세서는 표준 PC에 대한 부분으로 자리 잡을 것이다. 이것으로 인해 AI는 GPGPU 기술이 도래하면 농익을 것이다. 거의 모든 게이머가 그래픽 카드를 가지고 있고, 이것으로 Nvidia의 CUDA나 AMD의 스트림 기술(아니면 OpenCL 같은 교차 플랫폼 GPU API) 를 제공받기에, 이것은 특이한 AI 연산에서 CPU 부하를 덜어줄 것이다.

AMD의 개발분야 우두머리 Richard Huddy가 설명하기를, 대부분의 보통 AI 작업은 가독성 있는 쿼리와 길 찾기 쿼리에 관련된다. "우리의 최근 연구에서는 90% 이상의 시간을 AI가 이 두개의 간단한 질문에서 갈등하는 데 써버린다는 것을 알아냈다." 고 한다. 그가 덧붙이길 이들 두 개 쿼리들은 "GPU 도입에 거의 알맞은데, 이것들은 본래 병렬 아키텍쳐인 GPU를 엄청나게 유용하게 쓰며 보통 메모리에 구애받지 않기 때문이다." 라고 한다.

11.jpg
GPU가 게임 내에서 AI 가속을 할까?

Nvidia는 이것에 동의했다. PhysX의 제품 관리 과장 Nadeem Mohammad가 설명하기를, 길 찾기와 파편 검사와 관련된 "간단, 복잡한 연산" 들은 아주 특이하며, 그래서 길 찾기는 CUDA에서 잘 작동하는 알고리즘 중 하나" 라고 한다. Mohammad 가 추가 하기를 CUDA를 통한 빛 추적인 가독성 쿼리에서는 AI에게 유용하다고 하였다. 여기서 우리는 그래픽 적인 빛 추적을 말하는 것이 아니라, 봇들이 볼 수 있게 봇들의 관점에서 빛을 추적하는 것을 말한다. "당신은 빛이 무언가를 때린다면, 빛을 A에서 B로 쏴야 하는 것을 알 것이다. 우리는 파편 검색 같은 PhysX 연산으로 같은 조정을 한다."

"당신은 이상적으로 같은 데이터 세트에서, 그렇지만 다른 입력 변수로, 같은 명령어는 아니지만 같은 프로그램을 동작시키는데, CUDA를 쓰는 것을 꿈 꿀 것이다." 라고 Mohammad가 덧붙였다. "그러므로, AI의 정황 내에서는, 모든 게임 세상을 구성하는 데이터 세트와 변수들은 개개 봇들에게 들어가게 된다. - 이것이 문제를 깔끔하게 병렬화 시키는 방법 중 한가지이다. 당신이 이런 정황을 본다면, AI 프로그램이 가속될 것이다."

AMD와 Nvidia  모두 몇몇 AI 게임 개발자와 미들웨어 개발자와 협력하는 것에 이의를 제기할 것이다. Huddy에 따르면, "몇몇 미들웨어 제공자들은 게임에 대해 GPU AI 라이브러리를 넣는 것을 생각하고 있고, 다른 개발자들은 CPU에 있는 그들의 현존하는 AI 코드를 GPU로 가져다 쓸 생각을 한다." 고 한다.

Mohammad 는 GPGPU 기반 가속 AI를 곧 볼 수 있을 것이라고 추정한다. "1년은 아니지만 18개월 안에는 가능할 것이다." GPGPU 가속 AI는 또한 게임 개발자들에게도 매력적인데, 이들은 가치있는 CPU 자원을 쓰지 않고 그들의 체계를 영리하게 만들고 싶어한다. "내 생각으론, AI에 이들을 주기에는 GPU가 제격이라 본다. 모든 우리의 AI는 격자 기반이며, 우리의 맵 갱신을 위해 래스터라이제이션을 이미 사용하고 있으며, 가능성을 시험하기 위한 지도에 선 그리기도 하고 있으니, 이것이 안성맞춤이다." 라고 Dawn of War 2의 수석 프로그래머 Chris Jurney가 말하였다.

Crytek의 Markus Mohr 또한 GPGPU 가속 AI를 옹호하는데, "폭넓게 사용 가능한 병렬 설계로, 우리는 질과 양에 대한 새로운 국면을 맡게 된다. AI에 대해 분리된 하드웨어 개발은 말이 안된다. " 고 Intia chip을 겨냥했다. Creative Assembly의 Richard Bull 도 동의 하기를 "하드웨어 진보는 계획이나 예측 같은 것에 대해 더 뛰어난 연산력을 제공하여 우리가 원하는 것 이상을 할 수 있을 것이다." 그러나, 그가 지적하기를 Empire : Total war 의 전투 AI에 대해 "회로의 2% 정도만을 사용한다." 고 꼬집었다. (아래 이미지)

12.jpg

AI가 추가적인 연산을 필요로 한다는 것이 아니다. ; AI는 현재 제한된 가용 자원을 가지지만, 그래픽에 견주자면 아주 적은 량을 쓴다는 것을 뜻한다. Bull 은 절대 지지 않는 체스 컴퓨터에 빗대면서 "모든 말마다 모든 가능한 움직임을 예측하여 최종 상태를 얻는다. 현재도 체스의 문제가 이것인데, 최적의 솔루션을 얻으려면 몇 시간부터 몇 달까지 시간을 쓴다는 것이다." 기본적으로, AI에 대해서 더 연산력을 할애 할 여유는 있다.

"25%의 CPU 부하를 먹어, CPU를 느리게 한다면, GPU에선 효율적으로 동작할 수 있는데 GPU에서는 단지 1~2% 정도의 부하를 가지게 된다." 고 Richard Huddy가 지적한다. 몇몇 작업에서는 적은 GPU 작업량으로도 AI 연산력을 배가 시킬 수 있으며, 이것으로 인해 GPU 업체와 게임 개발자는 이런 작업을 할 것으로 예상된다.

그러나 모두가 GPGPU가 AI 연산에 있어 최고의 방법이라고 동의하는 것은 아니다. Bethesda의 Jean-Sylvere Simonet이 말하기를 "우리가 병렬 설계의 장점을 취할 수도 있겠지만, 모든 것이 좋은건 아니다. 결정 연산 중에 특이한 파트 하나, 그러니까 엄청난 GPU 연산으로 AI 탐색이나, 패턴 검색 알고리즘 같은 동작 들을 를 빠르게 해야 할 때가 해당된다." 그러나, Simonet은 또한 지적하기를 "대부분의 AI 연산은 아주 순차적이며 대략 많은 데이터를 요구 한다.

"NPC가 다음 행동을 하려고 결정하기 위해서는, 수많은 세계의 정보 쿼리를 가져야 되는 것이 일반적이며, 대부분의 정보는 이전 쿼리 결과의 상황이다. 이런 이유로 인해, 더 적은 프로세서들로 더욱 다용도로 사용할 수 있게 되는데, 이상적으로는 PS3의 Cell 칩에 들어가는 SPE 들이 그렇다."

또한 알아둘 만한 것은 AMD와 Nvidia 둘 모두 CUDA와 Stream에 대한 사용 방안에 대해 말하고 있다는 것인데, 이것으로 인해 게임 산업에 GPGPU 가속 AI 연산이 표준화가 되기는 힘들 듯 하다. "우리는 모든 PC 내의 모든 CPU 들이 멀티플레이어 작업에서 정확히 똑같은 결과를 만들어낼 것이라는 사실에 의존한다." 고 Relic의 Chris Jurney가 지적하였다. "우리는 플레이어 간의 입력과 명령을 전송할 뿐이며, 만약 두개의 GPU들이 AI의 결과에 있어 약간이라도 다른 결정을 내린다면, 다른 플레이어들은 각기 다른 세계에서 게임 진행을 하게 되는 결과를 낳을 것이다."

가끔씩 OpenCL이나 DirectX 11의 연산 쉐이더가 훨씬 큰 GPU의 배열에서 AI를 가속할 수 있는 방법을 제공할 수 있다. 하여간, 이것은 AI가 GPGPU 연산에 있어 주된 향상이 될 수 있다.


http://www.bit-tech.net/gaming/2009/03/05/how-ai-in-games-works/7

8페이지 번역 안했습니다. 간만에 하고 주변 환경이 그래서 그런지 막번역이 너무 많아요. -_-a; 하여간 다음에는 좀 더 노력해서 올리겠습니당.

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.