• Save
Game AI Overview
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Game AI Overview

on

  • 4,972 views

 

Statistics

Views

Total Views
4,972
Views on SlideShare
4,786
Embed Views
186

Actions

Likes
10
Downloads
0
Comments
0

4 Embeds 186

http://mypage.sarang.net 133
http://cafe.naver.com 44
http://www.slideshare.net 5
http://www.slideee.com 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Game AI Overview Presentation Transcript

  • 1. 게임에서 사용하는 인공지능 기술 남기룡(birdkr@gmail.com) 2006/09/16 DevRookie
  • 2. Introduction • Game AI? • 게임 인공지능 기술 – Finite State Machine – Trigger System – Path Finding : A* – Scripting – Flocking – Evolutionary Algorithm – Neural Network – Fuzzy Logic – 기타 • 인공지능 기법을 사용한 게임 – The Sim’s, Black & White, Oblivion DevRookie
  • 3. Game AI • AI – 인간이나 지성을 갖춘 존재, 혹은 시스템에 의해 만들어진 지능, 즉 인공적인 지능을 뜻함. • Game AI – 게임 내에서 플레이어의 상대적 역할을 수행하면서, 마치 플레이 어가 다른 사람과 게임을 하고 있다는 착각을 유도하는 기술. • Game AI의 역사 – 1970년대 • 아주 간단한 규칙만 사용(Pong, Pac-Man, Space Invaders) – 1980년대 ~ 1990년대 초반 • Game AI보다는 그래픽 기술과 하드웨어 요소에 초점을 둠. – 1990년대 중반 ~ 현재 • 하드웨어 성능이 향상되어 게임에 Game AI 기술을 적용할 수 있는 환경이 조성됨. DevRookie
  • 4. Finite State Machine(1) • 상태들 간의 “전이”에 의해 통제되는 그래프 내에 유한개 의 “상태”들이 연결되어 있는 규칙 기반 시스템. DevRookie
  • 5. Finite State Machine(2) • 장점 – 프로그램 하기 간단하면서 사용하기 편리하다. – 가독성이 뛰어나다. – 디버깅이 용이하다. – 유연성이 있다. • 구현 – 샘플 참고 DevRookie
  • 6. Trigger System(1) • 트리거는 조건을 정의하는 객체로서 트리거 시스템은 ‘조 건(Condition)을 평가하고 반응을 수행(Action)한다’라는 한 가지 목적을 가진 중앙 집중화된 시스템이다. • 조건의 예 – 플레이어가 지점(x,y,z)의 반경 R 이내에 존재 – 적이 일정 거리 이상 근접함 – 생명이 x 이하 – 적이 공격함 • 반응의 예 – 임의의 음향을 재생 – 공격한 적으로부터 도망감 – NPC X를 죽임 – 위치 또는 플레이어/적에 특수효과를 적용 DevRookie
  • 7. Trigger System(2) • 트리거의 평가 – 여러 조건이 부울 논리로 연결될 수 있음 • ex) 적이 10미터 이내 AND 적의 HP가 50%이하 -> 공격 – 이벤트 메시지로 처리하거나 주기적 점검으로 평가 • 스크립트 언어와 비교 – 장점 • 전적으로 GUI만으로도 설정, 조작이 가능하다. • 문법 오류를 걱정할 필요가 없다. • 속도가 빠르다. • 디자이너가 편집하기 쉽다. – 단점 • 규모가변성(scalability)이 좋지 않다. • 편집기를 따로 만들어야 한다. DevRookie
  • 8. Trigger System(2) • 트리거 편집기 샘플 : 던전시즈2 에디터 DevRookie
  • 9. Path Finding: A* 알고리즘(1) • 두 지점들 사이의 경로를 찾는데 일반적으로 가장 빠른 목표 지향성(directed) 알고리즘. • 용어 – 맵(map), 그래프(graph) : A*가 두 지점 사이의 경로를 찾고자 할 때 사용하는 공간 – 노드(node) : 맵 상의 위치를 표현하는 자료 구조 – 거리(distance), 휴리스틱(heuristic) : 탐색되는 노드의 ‘적합성 (suitability)’을 평가하는데 쓰임 – 비용(cost) : 어떤 경로를 택할 것인가에 대한 것인가에 대한 비 용. Ex) 시간, 에너지 등 DevRookie
  • 10. Path Finding: A* 알고리즘(2) • 알고리즘(1) – g(goal) : 시작 노드로부터 이 노드까지 오는데 드는 비용 – h(heuristic) : 이 노드에서 목표까지 가는데 드는 ‘추정된’ 비용 – f(fitness) : 이 노드를 거쳐가는 이 경로의 비용에 대한 최선의 추측. f = g + h – 열린 목록(open list) : 아직 탐색하지 않은 노드들의 집합 – 닫힌 목록(closed list) : 이미 탐색한 노드들로 구성 DevRookie
  • 11. Path Finding: A* 알고리즘(3) • 알고리즘(2) 1. 시작 지점을 노드 P로 둔다. 2. P에 f, g, h 값들을 배정한다. 3. P를 열린 목록에 추가한다. 이 시점에서, 열린 목록에는 P밖에 없다. 4. 열린 목록의 노드들 중 최선의 노드(최선의 노드란 f값이 가장 작은 노 드)를 B로 둔다. a. B가 목표 노드이면 경로를 찾은 것이므로 알고리즘을 끝낸다. b. 열린 목록이 비었다면 경로를 찾을 수 없는 것이므로 역시 알고리즘을 끝낸 다. 5. B에 연결된 유효한 노드를 C로 둔다. a. C에 f, g, h 값들을 배정한다. b. C가 열린 목록이나 닫힌 목록에 들어 있는지 점검한다. a. 만일 들어있다면, 새 경로가 더 효율적인지(즉 f 값이 더 작은지) 점검 한다. a. 만일 그렇다면 경로를 갱신한다. b. 들어있지 않다면 C를 열린 목록에 추가한다. c. 단계 5를 B에 연결된 모든 유효한 자식 노드들에 대해 반복한다. 6. 4부터 다시 반복한다. DevRookie
  • 12. Path Finding: A* 알고리즘(4) • 알고리즘(3) 격자구조의 2차원 맵 DevRookie
  • 13. Path Finding: A* 알고리즘(5) • 알고리즘(4) 가장자리에 있는 자식 노드들이 중앙에 있는 부모 노드를 가리키고 있다 DevRookie
  • 14. Path Finding: A* 알고리즘(6) • 알고리즘(5) 초기 단계에서 A*알고리즘을 한번 수행하고 난 후의 모습 DevRookie
  • 15. Path Finding: A* 알고리즘(7) • 알고리즘(6) A*알고리즘을 한번 더 수행하고 난 후의 모습 DevRookie
  • 16. Path Finding: A* 알고리즘(8) • 알고리즘(7) 왼쪽에 있는 시작노드에서 오른쪽에 있는 목표 노드로 길찾기를 수행한 모습 DevRookie
  • 17. Path Finding: A* 알고리즘(9) • 데모 • 단점 – 맵의 크기가 크면 ‘열린’ 목록이나 ‘닫힌’ 목록에 수백, 수천의 노 드들이 들어갈 수 있기 때문에 시스템의 메모리를 굉장히 많이 사용할 수 있으며, 이렇게 되면 상당히 많은 CPU 시간을 노드를 검색하는데 사용할 수도 있다. – 시작 위치에서 목표 위치까지의 경로가 없는 경우에 모든 노드를 검색하게 되므로 굉장히 비효율적인 작업을 수행하게 된다. • 발전 – 속도 최적화 – 미학적 최적화 – 전술적 길찾기 – 집단 이동 DevRookie
  • 18. Scripting(1) • 게임의 자료나 로직을 게임의 원본 코드 외부에서 지정 하는 기법으로 옛날에는 스크립팅 언어를 개발팀이 직접 만들 때가 많았지만, 요즘은 Python이나 Lua 같은 기존 언어를 사용하는 경우가 많아지고 있다. • 스크립트 언어 종류 – Lua : C++ 코드와 접착이 가능하며 문법이 간단하고 속도가 빨 라 근래 가장 인기있는 스크립트 언어. – Python : C++ 코드와 접착이 가능하며 문법이 간단하고 많은 라 이브러리를 지원한다. – XML : 확장 가능한 마크업 언어. – 기타 : Unreal Script, GameMonkey, AngelScript DevRookie
  • 19. Scripting(2) • 스크립팅의 장점 – 코드를 다시 컴파일하지 않고도 게임 로직을 변경하거나 테스트 할 수 있다. – 프로그래머 자원을 낭비하지 않으면서 디자이너에게 게임 변경 능력을 부여할 수 있다. – 플레이어에게 스크립트 기능을 제공함으로써 플레이어로 하여금 직접 게임을 다듬고 확장하게 할 수 있다. • 스크립팅의 단점 – 디버깅이 힘들다. – 비 프로그래머들도 프로그래밍을 해야 한다. – 스크립팅 언어의 구현이나 도입, 그리고 보조 디버깅 도구들의 개발에 시간을 들여야 한다. DevRookie
  • 20. Flocking(1) • 새 떼나 물고기 떼, 곤충 떼 등과 같은 생물들의 집단 행동을 자연스럽고 유 기적인 방식으로 흉내내어 묘사하는 방법. 집단의 각 생물은 오직 세가지 이 동 규칙만을 따르지만, 전체적으로는 매우 복잡한 집단 행동이 나타난다. • 플로킹 규칙 – 분리(separation) : 주변 다른 개체들과 너무 가까워지지 않도록 한다. – 정렬(alignment) : 주변 다른 개체들과 평균적으로 같은 방향으로 이동한다. – 응집(cohesion) : 주변 다른 개체들과 평균적인 거리의 위치로 이동한다. – 회피(avoidance) : 장애물이나 다른 개체들에 부딪히지 않도록 방향을 조정한다. DevRookie
  • 21. Flocking(2) • 게임에 적용 – 주로 배경의 생물들(물고기 떼, 곤충 떼 등)을 제어하는 용도로 사용. – 캐릭터 무리의 행동을 자연스럽게 표현하기 위하여 사용. (Unreal Tournament, Half-Life) • 데모 DevRookie
  • 22. Evolutionary Algorithm • 진화와 자연 선택에 근거를 둔 여러 최적화 및 검색 알고리즘들을 통 틀어서 일컫는 용어로, 유전 알고리즘, 진화 컴퓨테이션, 진화 전략 등 이 진화 알고리즘에 속한다. 진화 알고리즘은 크고 복잡한, 또는 제대 로 이해되지 못한 검색공간과 비선형 문제들에 대한 최적의 해를 찾는 다. • 진화 알고리즘 군집초기화 해들을 평가 부모 선택 교배&돌연변이 군집 교체 반복 • 게임에 적용 – RTS에서 사람 플레이어의 약점을 대상으로 하는 AI 전략을 조율 – NPC의 다변성 DevRookie
  • 23. Neural Network • 인간의 두뇌 자체에서 영감을 얻어 모델화한 정보처리 시스템. 외부로부터 받아들이는 입력에 대하여 동적 반 응을 일으킴으로써 필요한 출력을 생성한다. 뉴런 인공 뉴런 DevRookie
  • 24. Fuzzy Logic • 기존의 “참/거짓” 또는 “온/오프”, “예/아니오”, “부정/긍 정”이라는 기존의 이분법적인 개념이 아닌 “어느 정도”라 던가 “얼마나” 같은 애매함을 기반으로 한다. • 퍼지 집합(fuzzy set) : 전통적인 집합이론에서 주어진 개체는 그 집 합에 속하거나 속하지 않았지만 퍼지 집합 이론에서는 주어진 개체 가 퍼지 집합에 속하는 정도가 연속적이다. 예를 들어 한 생물이 아 주 약간 배가 고프다고 할 때, 그 생물은 소속도 0.1로 배고픈 집합 에 속한다. 반면 많이 배가 고프다면 소속도 0.9로 배고픈 집합에 속 한다. • 게임에 적용 – NPC의 감정 – 플로킹 알고리즘 – 퍼지기반 FSM DevRookie
  • 25. 기타 • Team AI • LOD(Level-of-detail) AI • 특화된 AI : 스포츠, 레이싱, FPS, RTS 등 • 결정 트리 • 학습 • 칠판 아키텍처 • 자연어 처리 DevRookie
  • 26. Game AI Example : The Sim’s • 인공생명 기법 • 캐릭터의 욕구에 기반한 인공지능 기법 • 똑똑한 지형(smart terrain) • Fuzzy Logic DevRookie
  • 27. Game AI Example : Black & White • 학습 • 퍼셉트론(perceptron) : 크리처의 욕망 • 동적으로 결정 트리 생성 : 크리처의 견해 • 신경망 : 제스처 인식 DevRookie
  • 28. Game AI Example : Oblivion • Radiant AI – NPC들에게 배고픔처럼 충족해야 할 Needs를 주거나 일련의 목표를 주 어 NPC 각자의 스탯에 기반해 자신의 목표를 어떻게 달성할지 방법을 결정한다. – 적은 스크립트로 사실적인 세상을 구현할 수 있지만 NPC가 디자이너의 의도와 다른 행동을 할 수 있으므로 디버깅하기는 힘들다. DevRookie
  • 29. Conclusions • 게임의 인공지능 기술은 점점 더 발전하고 있고, 그 필요 성도 더 중요시되고 있음. • 온라인 게임이 발전한 우리나라 개발사들은 상대적으로 인공지능 기술이 취약함. • 온라인 게임에도 인공지능 기술을 적용할 곳은 많다. – 사람처럼 느껴지는 NPC – 분대 전술로 공격하는 NPC – 학습이 가능한 PET – 대전 게임에서 나를 도와주는 동료 • 뛰어난 인공지능이 바로 게임의 경쟁력! DevRookie
  • 30. 질문/의견 DevRookie