SlideShare une entreprise Scribd logo
1  sur  30
게임에서 사용하는 인공지능 기술

       남기룡(birdkr@gmail.com)
                  2006/09/16




                               DevRookie
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
Game AI
 • AI
   – 인간이나 지성을 갖춘 존재, 혹은 시스템에 의해 만들어진 지능,
     즉 인공적인 지능을 뜻함.
 • Game AI
   – 게임 내에서 플레이어의 상대적 역할을 수행하면서, 마치 플레이
     어가 다른 사람과 게임을 하고 있다는 착각을 유도하는 기술.
 • Game AI의 역사
   – 1970년대
        • 아주 간단한 규칙만 사용(Pong, Pac-Man, Space Invaders)
   – 1980년대 ~ 1990년대 초반
        • Game AI보다는 그래픽 기술과 하드웨어 요소에 초점을 둠.
   – 1990년대 중반 ~ 현재
        • 하드웨어 성능이 향상되어 게임에 Game AI 기술을 적용할 수 있는
          환경이 조성됨.


                                                     DevRookie
Finite State Machine(1)
 • 상태들 간의 “전이”에 의해 통제되는 그래프 내에 유한개
   의 “상태”들이 연결되어 있는 규칙 기반 시스템.




                               DevRookie
Finite State Machine(2)
 • 장점
   –   프로그램   하기 간단하면서 사용하기 편리하다.
   –   가독성이   뛰어나다.
   –   디버깅이   용이하다.
   –   유연성이   있다.


 • 구현
   – 샘플 참고




                                    DevRookie
Trigger System(1)
 • 트리거는 조건을 정의하는 객체로서 트리거 시스템은 ‘조
   건(Condition)을 평가하고 반응을 수행(Action)한다’라는
   한 가지 목적을 가진 중앙 집중화된 시스템이다.
 • 조건의 예
   –   플레이어가 지점(x,y,z)의 반경 R 이내에 존재
   –   적이 일정 거리 이상 근접함
   –   생명이 x 이하
   –   적이 공격함
 • 반응의 예
   –   임의의 음향을 재생
   –   공격한 적으로부터 도망감
   –   NPC X를 죽임
   –   위치 또는 플레이어/적에 특수효과를 적용


                                      DevRookie
Trigger System(2)
 • 트리거의 평가
   – 여러 조건이 부울 논리로 연결될 수 있음
     • ex) 적이 10미터 이내 AND 적의 HP가 50%이하 -> 공격
   – 이벤트 메시지로 처리하거나 주기적 점검으로 평가
 • 스크립트 언어와 비교
   – 장점
     •   전적으로 GUI만으로도 설정, 조작이 가능하다.
     •   문법 오류를 걱정할 필요가 없다.
     •   속도가 빠르다.
     •   디자이너가 편집하기 쉽다.
   – 단점
     • 규모가변성(scalability)이 좋지 않다.
     • 편집기를 따로 만들어야 한다.



                                               DevRookie
Trigger System(2)
 • 트리거 편집기 샘플 : 던전시즈2 에디터




                            DevRookie
Path Finding: A* 알고리즘(1)
 • 두 지점들 사이의 경로를 찾는데 일반적으로 가장 빠른
   목표 지향성(directed) 알고리즘.

 • 용어
   – 맵(map), 그래프(graph) : A*가 두 지점 사이의 경로를 찾고자
     할 때 사용하는 공간
   – 노드(node) : 맵 상의 위치를 표현하는 자료 구조
   – 거리(distance), 휴리스틱(heuristic) : 탐색되는 노드의 ‘적합성
     (suitability)’을 평가하는데 쓰임
   – 비용(cost) : 어떤 경로를 택할 것인가에 대한 것인가에 대한 비
     용. Ex) 시간, 에너지 등




                                              DevRookie
Path Finding: A* 알고리즘(2)
 • 알고리즘(1)
   – g(goal) : 시작 노드로부터 이 노드까지 오는데 드는 비용
   – h(heuristic) : 이 노드에서 목표까지 가는데 드는 ‘추정된’ 비용
   – f(fitness) : 이 노드를 거쳐가는 이 경로의 비용에 대한 최선의
     추측. f = g + h
   – 열린 목록(open list) : 아직 탐색하지 않은 노드들의 집합
   – 닫힌 목록(closed list) : 이미 탐색한 노드들로 구성




                                           DevRookie
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
Path Finding: A* 알고리즘(4)
 • 알고리즘(3)




             격자구조의 2차원 맵


                           DevRookie
Path Finding: A* 알고리즘(5)
 • 알고리즘(4)




  가장자리에 있는 자식 노드들이 중앙에 있는 부모 노드를 가리키고 있다


                                     DevRookie
Path Finding: A* 알고리즘(6)
 • 알고리즘(5)




      초기 단계에서 A*알고리즘을 한번 수행하고 난 후의 모습


                                        DevRookie
Path Finding: A* 알고리즘(7)
 • 알고리즘(6)




        A*알고리즘을 한번 더 수행하고 난 후의 모습


                                    DevRookie
Path Finding: A* 알고리즘(8)
 • 알고리즘(7)




 왼쪽에 있는 시작노드에서 오른쪽에 있는 목표 노드로 길찾기를 수행한 모습

                                     DevRookie
Path Finding: A* 알고리즘(9)
 • 데모
 • 단점
   – 맵의 크기가 크면 ‘열린’ 목록이나 ‘닫힌’ 목록에 수백, 수천의 노
     드들이 들어갈 수 있기 때문에 시스템의 메모리를 굉장히 많이
     사용할 수 있으며, 이렇게 되면 상당히 많은 CPU 시간을 노드를
     검색하는데 사용할 수도 있다.
   – 시작 위치에서 목표 위치까지의 경로가 없는 경우에 모든 노드를
     검색하게 되므로 굉장히 비효율적인 작업을 수행하게 된다.
 • 발전
   –   속도 최적화
   –   미학적 최적화
   –   전술적 길찾기
   –   집단 이동



                                       DevRookie
Scripting(1)
 • 게임의 자료나 로직을 게임의 원본 코드 외부에서 지정
   하는 기법으로 옛날에는 스크립팅 언어를 개발팀이 직접
   만들 때가 많았지만, 요즘은 Python이나 Lua 같은 기존
   언어를 사용하는 경우가 많아지고 있다.

 • 스크립트 언어 종류
   – Lua : C++ 코드와 접착이 가능하며 문법이 간단하고 속도가 빨
     라 근래 가장 인기있는 스크립트 언어.
   – Python : C++ 코드와 접착이 가능하며 문법이 간단하고 많은 라
     이브러리를 지원한다.
   – XML : 확장 가능한 마크업 언어.
   – 기타 : Unreal Script, GameMonkey, AngelScript




                                           DevRookie
Scripting(2)
 • 스크립팅의 장점
   – 코드를 다시 컴파일하지 않고도 게임 로직을 변경하거나 테스트
     할 수 있다.
   – 프로그래머 자원을 낭비하지 않으면서 디자이너에게 게임 변경
     능력을 부여할 수 있다.
   – 플레이어에게 스크립트 기능을 제공함으로써 플레이어로 하여금
     직접 게임을 다듬고 확장하게 할 수 있다.


 • 스크립팅의 단점
   – 디버깅이 힘들다.
   – 비 프로그래머들도 프로그래밍을 해야 한다.
   – 스크립팅 언어의 구현이나 도입, 그리고 보조 디버깅 도구들의
     개발에 시간을 들여야 한다.



                                   DevRookie
Flocking(1)
 •   새 떼나 물고기 떼, 곤충 떼 등과 같은 생물들의 집단 행동을 자연스럽고 유
     기적인 방식으로 흉내내어 묘사하는 방법. 집단의 각 생물은 오직 세가지 이
     동 규칙만을 따르지만, 전체적으로는 매우 복잡한 집단 행동이 나타난다.
 •   플로킹 규칙
     – 분리(separation) :
       주변 다른 개체들과 너무 가까워지지 않도록 한다.
     – 정렬(alignment) :
       주변 다른 개체들과 평균적으로 같은 방향으로 이동한다.
     – 응집(cohesion) :
       주변 다른 개체들과 평균적인 거리의 위치로 이동한다.
     – 회피(avoidance) :
       장애물이나 다른 개체들에 부딪히지 않도록 방향을 조정한다.




                                          DevRookie
Flocking(2)
 •   게임에 적용
     – 주로 배경의 생물들(물고기 떼, 곤충 떼 등)을 제어하는 용도로 사용.
     – 캐릭터 무리의 행동을 자연스럽게 표현하기 위하여 사용. (Unreal
       Tournament, Half-Life)
 •   데모




                                           DevRookie
Evolutionary Algorithm
 •   진화와 자연 선택에 근거를 둔 여러 최적화 및 검색 알고리즘들을 통
     틀어서 일컫는 용어로, 유전 알고리즘, 진화 컴퓨테이션, 진화 전략 등
     이 진화 알고리즘에 속한다. 진화 알고리즘은 크고 복잡한, 또는 제대
     로 이해되지 못한 검색공간과 비선형 문제들에 대한 최적의 해를 찾는
     다.
 •   진화 알고리즘

     군집초기화    해들을 평가   부모 선택   교배&돌연변이    군집 교체

                 반복


 •   게임에 적용
     – RTS에서 사람 플레이어의 약점을 대상으로 하는 AI 전략을 조율
     – NPC의 다변성




                                              DevRookie
Neural Network
 • 인간의 두뇌 자체에서 영감을 얻어 모델화한 정보처리
   시스템. 외부로부터 받아들이는 입력에 대하여 동적 반
   응을 일으킴으로써 필요한 출력을 생성한다.




         뉴런             인공 뉴런

                                DevRookie
Fuzzy Logic
 • 기존의 “참/거짓” 또는 “온/오프”, “예/아니오”, “부정/긍
   정”이라는 기존의 이분법적인 개념이 아닌 “어느 정도”라
   던가 “얼마나” 같은 애매함을 기반으로 한다.
 •   퍼지 집합(fuzzy set) : 전통적인 집합이론에서 주어진 개체는 그 집
     합에 속하거나 속하지 않았지만 퍼지 집합 이론에서는 주어진 개체
     가 퍼지 집합에 속하는 정도가 연속적이다. 예를 들어 한 생물이 아
     주 약간 배가 고프다고 할 때, 그 생물은 소속도 0.1로 배고픈 집합
     에 속한다. 반면 많이 배가 고프다면 소속도 0.9로 배고픈 집합에 속
     한다.
 • 게임에 적용
     – NPC의 감정
     – 플로킹 알고리즘
     – 퍼지기반 FSM



                                           DevRookie
기타
•   Team AI
•   LOD(Level-of-detail) AI
•   특화된 AI : 스포츠, 레이싱, FPS, RTS 등
•   결정 트리
•   학습
•   칠판 아키텍처
•   자연어 처리




                                    DevRookie
Game AI Example : The Sim’s
 •   인공생명 기법
 •   캐릭터의 욕구에 기반한 인공지능 기법
 •   똑똑한 지형(smart terrain)
 •   Fuzzy Logic




                              DevRookie
Game AI Example : Black & White
 •   학습
 •   퍼셉트론(perceptron) : 크리처의 욕망
 •   동적으로 결정 트리 생성 : 크리처의 견해
 •   신경망 : 제스처 인식




                                  DevRookie
Game AI Example : Oblivion
 • Radiant AI
    – NPC들에게 배고픔처럼 충족해야 할 Needs를 주거나 일련의 목표를 주
      어 NPC 각자의 스탯에 기반해 자신의 목표를 어떻게 달성할지 방법을
      결정한다.
    – 적은 스크립트로 사실적인 세상을 구현할 수 있지만 NPC가 디자이너의
      의도와 다른 행동을 할 수 있으므로 디버깅하기는 힘들다.




                                         DevRookie
Conclusions
 • 게임의 인공지능 기술은 점점 더 발전하고 있고, 그 필요
   성도 더 중요시되고 있음.
 • 온라인 게임이 발전한 우리나라 개발사들은 상대적으로
   인공지능 기술이 취약함.
 • 온라인 게임에도 인공지능 기술을 적용할 곳은 많다.
   –   사람처럼 느껴지는 NPC
   –   분대 전술로 공격하는 NPC
   –   학습이 가능한 PET
   –   대전 게임에서 나를 도와주는 동료


 • 뛰어난 인공지능이 바로 게임의 경쟁력!



                               DevRookie
질문/의견




        DevRookie

Contenu connexe

Tendances

경영과정보기술 M-commerce, telemetry, 상황인식기술
경영과정보기술 M-commerce, telemetry, 상황인식기술경영과정보기술 M-commerce, telemetry, 상황인식기술
경영과정보기술 M-commerce, telemetry, 상황인식기술gokisung
 
%Bc%Ba%B4ɰ%Fc%B8%Ae%Bdǹ%Ab%C1%F6ħ%Bc%Ad %C3ʾ%C8 %C0Ϻι%Df%C3%E9
%Bc%Ba%B4ɰ%Fc%B8%Ae%Bdǹ%Ab%C1%F6ħ%Bc%Ad %C3ʾ%C8 %C0Ϻι%Df%C3%E9%Bc%Ba%B4ɰ%Fc%B8%Ae%Bdǹ%Ab%C1%F6ħ%Bc%Ad %C3ʾ%C8 %C0Ϻι%Df%C3%E9
%Bc%Ba%B4ɰ%Fc%B8%Ae%Bdǹ%Ab%C1%F6ħ%Bc%Ad %C3ʾ%C8 %C0Ϻι%Df%C3%E9규동 최규동
 
Meconomy(4)
Meconomy(4)Meconomy(4)
Meconomy(4)Miri Kim
 
사이냅소프트 회사소개서
사이냅소프트 회사소개서사이냅소프트 회사소개서
사이냅소프트 회사소개서hukim
 
Brand Management through Social Media
Brand Management through Social MediaBrand Management through Social Media
Brand Management through Social MediaJuny Lee
 
learning ecosystem & extracurricular work in korea
learning ecosystem & extracurricular work in korea learning ecosystem & extracurricular work in korea
learning ecosystem & extracurricular work in korea woonjjang
 
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제jdo
 
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부jdo
 
[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화jdo
 
엔터프라이즈 2.0 의 이해
엔터프라이즈 2.0 의 이해엔터프라이즈 2.0 의 이해
엔터프라이즈 2.0 의 이해freehub
 
영화정보기술 권승환, 김윤성, 지현영5
영화정보기술 권승환, 김윤성, 지현영5영화정보기술 권승환, 김윤성, 지현영5
영화정보기술 권승환, 김윤성, 지현영5guest3b6f30d5
 
미코노미 2장
미코노미 2장미코노미 2장
미코노미 2장oganadang
 

Tendances (20)

경영과정보기술 M-commerce, telemetry, 상황인식기술
경영과정보기술 M-commerce, telemetry, 상황인식기술경영과정보기술 M-commerce, telemetry, 상황인식기술
경영과정보기술 M-commerce, telemetry, 상황인식기술
 
%Bc%Ba%B4ɰ%Fc%B8%Ae%Bdǹ%Ab%C1%F6ħ%Bc%Ad %C3ʾ%C8 %C0Ϻι%Df%C3%E9
%Bc%Ba%B4ɰ%Fc%B8%Ae%Bdǹ%Ab%C1%F6ħ%Bc%Ad %C3ʾ%C8 %C0Ϻι%Df%C3%E9%Bc%Ba%B4ɰ%Fc%B8%Ae%Bdǹ%Ab%C1%F6ħ%Bc%Ad %C3ʾ%C8 %C0Ϻι%Df%C3%E9
%Bc%Ba%B4ɰ%Fc%B8%Ae%Bdǹ%Ab%C1%F6ħ%Bc%Ad %C3ʾ%C8 %C0Ϻι%Df%C3%E9
 
Meconomy(4)
Meconomy(4)Meconomy(4)
Meconomy(4)
 
04 Video
04 Video04 Video
04 Video
 
사이냅소프트 회사소개서
사이냅소프트 회사소개서사이냅소프트 회사소개서
사이냅소프트 회사소개서
 
Brand Management through Social Media
Brand Management through Social MediaBrand Management through Social Media
Brand Management through Social Media
 
learning ecosystem & extracurricular work in korea
learning ecosystem & extracurricular work in korea learning ecosystem & extracurricular work in korea
learning ecosystem & extracurricular work in korea
 
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
[컴퓨터비전과 인공지능] 3. 선형 분류기 : 손실 함수와 규제
 
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
[컴퓨터비전과 인공지능] 3. 선형 분류 : 선형 분류기 일부
 
[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화[컴퓨터비전과 인공지능] 4. 최적화
[컴퓨터비전과 인공지능] 4. 최적화
 
Part2
Part2Part2
Part2
 
최종 Google3
최종 Google3최종 Google3
최종 Google3
 
2008년 4월 소식지
2008년 4월 소식지2008년 4월 소식지
2008년 4월 소식지
 
엔터프라이즈 2.0 의 이해
엔터프라이즈 2.0 의 이해엔터프라이즈 2.0 의 이해
엔터프라이즈 2.0 의 이해
 
앱스토어 Overview
앱스토어 Overview앱스토어 Overview
앱스토어 Overview
 
03 Image
03 Image03 Image
03 Image
 
2007년 11월 소식지
2007년 11월 소식지2007년 11월 소식지
2007년 11월 소식지
 
영화정보기술 권승환, 김윤성, 지현영5
영화정보기술 권승환, 김윤성, 지현영5영화정보기술 권승환, 김윤성, 지현영5
영화정보기술 권승환, 김윤성, 지현영5
 
영화정보기술
영화정보기술영화정보기술
영화정보기술
 
미코노미 2장
미코노미 2장미코노미 2장
미코노미 2장
 

En vedette

딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초Hyungsoo Ryoo
 
인공지능
인공지능인공지능
인공지능lsmgame
 
Introduce Deep learning & A.I. Applications
Introduce Deep learning & A.I. ApplicationsIntroduce Deep learning & A.I. Applications
Introduce Deep learning & A.I. ApplicationsMario Cho
 
의료에서의 인공지능 정리 파일 김치원 V5
의료에서의 인공지능 정리 파일 김치원 V5의료에서의 인공지능 정리 파일 김치원 V5
의료에서의 인공지능 정리 파일 김치원 V5Chiweon Kim
 
8월 24일 인공지능 사업화 세미나: IoT 스마트팩토리 솔루션 - 스태프프로젝트
8월 24일 인공지능 사업화 세미나: IoT 스마트팩토리 솔루션 - 스태프프로젝트8월 24일 인공지능 사업화 세미나: IoT 스마트팩토리 솔루션 - 스태프프로젝트
8월 24일 인공지능 사업화 세미나: IoT 스마트팩토리 솔루션 - 스태프프로젝트HELENA LEE
 
4차 산업혁명과 인공지능
4차 산업혁명과 인공지능4차 산업혁명과 인공지능
4차 산업혁명과 인공지능훈주 윤
 
AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약Jooyoul Lee
 
알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리Shane (Seungwhan) Moon
 
인공지능개론 (머신러닝 중심)
인공지능개론 (머신러닝 중심)인공지능개론 (머신러닝 중심)
인공지능개론 (머신러닝 중심)SK(주) C&C - 강병호
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가Yongha Kim
 

En vedette (10)

딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초
 
인공지능
인공지능인공지능
인공지능
 
Introduce Deep learning & A.I. Applications
Introduce Deep learning & A.I. ApplicationsIntroduce Deep learning & A.I. Applications
Introduce Deep learning & A.I. Applications
 
의료에서의 인공지능 정리 파일 김치원 V5
의료에서의 인공지능 정리 파일 김치원 V5의료에서의 인공지능 정리 파일 김치원 V5
의료에서의 인공지능 정리 파일 김치원 V5
 
8월 24일 인공지능 사업화 세미나: IoT 스마트팩토리 솔루션 - 스태프프로젝트
8월 24일 인공지능 사업화 세미나: IoT 스마트팩토리 솔루션 - 스태프프로젝트8월 24일 인공지능 사업화 세미나: IoT 스마트팩토리 솔루션 - 스태프프로젝트
8월 24일 인공지능 사업화 세미나: IoT 스마트팩토리 솔루션 - 스태프프로젝트
 
4차 산업혁명과 인공지능
4차 산업혁명과 인공지능4차 산업혁명과 인공지능
4차 산업혁명과 인공지능
 
AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약
 
알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리
 
인공지능개론 (머신러닝 중심)
인공지능개론 (머신러닝 중심)인공지능개론 (머신러닝 중심)
인공지능개론 (머신러닝 중심)
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가
 

Plus de 기룡 남

GAN을 이용한 캐릭터 리소스 제작 맛보기
GAN을 이용한 캐릭터 리소스 제작 맛보기GAN을 이용한 캐릭터 리소스 제작 맛보기
GAN을 이용한 캐릭터 리소스 제작 맛보기기룡 남
 
NDC 2015 게임 스타트업 시작하기
NDC 2015 게임 스타트업 시작하기NDC 2015 게임 스타트업 시작하기
NDC 2015 게임 스타트업 시작하기기룡 남
 
게임 스타트업 시작하기 두달 후
게임 스타트업 시작하기 두달 후게임 스타트업 시작하기 두달 후
게임 스타트업 시작하기 두달 후기룡 남
 
게임 스타트업 시작하기
게임 스타트업 시작하기게임 스타트업 시작하기
게임 스타트업 시작하기기룡 남
 
마쉬멜로우 첼린지
마쉬멜로우 첼린지마쉬멜로우 첼린지
마쉬멜로우 첼린지기룡 남
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례기룡 남
 
Ignite Maiet 14 마이에트야구단
Ignite Maiet 14 마이에트야구단Ignite Maiet 14 마이에트야구단
Ignite Maiet 14 마이에트야구단기룡 남
 
Ignite Maiet 12 누구나 쉽게 만드는 음악
Ignite Maiet 12 누구나 쉽게 만드는 음악Ignite Maiet 12 누구나 쉽게 만드는 음악
Ignite Maiet 12 누구나 쉽게 만드는 음악기룡 남
 
Ignite Maiet 10 두근두근사파리 제작후기2
Ignite Maiet 10 두근두근사파리 제작후기2Ignite Maiet 10 두근두근사파리 제작후기2
Ignite Maiet 10 두근두근사파리 제작후기2기룡 남
 
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기기룡 남
 
Ignite Maiet 03 순정만화를 게임으로 재현하기
Ignite Maiet 03 순정만화를 게임으로 재현하기Ignite Maiet 03 순정만화를 게임으로 재현하기
Ignite Maiet 03 순정만화를 게임으로 재현하기기룡 남
 
생산적인 개발을 위한 지속적인 테스트
생산적인 개발을 위한 지속적인 테스트생산적인 개발을 위한 지속적인 테스트
생산적인 개발을 위한 지속적인 테스트기룡 남
 
Rapid Development
Rapid DevelopmentRapid Development
Rapid Development기룡 남
 
refactoring database
refactoring databaserefactoring database
refactoring database기룡 남
 
Continuous Test
Continuous TestContinuous Test
Continuous Test기룡 남
 
KGC2007 Scrum And Xp
KGC2007 Scrum And XpKGC2007 Scrum And Xp
KGC2007 Scrum And Xp기룡 남
 
Responding to change
Responding to changeResponding to change
Responding to change기룡 남
 

Plus de 기룡 남 (18)

GAN을 이용한 캐릭터 리소스 제작 맛보기
GAN을 이용한 캐릭터 리소스 제작 맛보기GAN을 이용한 캐릭터 리소스 제작 맛보기
GAN을 이용한 캐릭터 리소스 제작 맛보기
 
NDC 2015 게임 스타트업 시작하기
NDC 2015 게임 스타트업 시작하기NDC 2015 게임 스타트업 시작하기
NDC 2015 게임 스타트업 시작하기
 
게임 스타트업 시작하기 두달 후
게임 스타트업 시작하기 두달 후게임 스타트업 시작하기 두달 후
게임 스타트업 시작하기 두달 후
 
게임 스타트업 시작하기
게임 스타트업 시작하기게임 스타트업 시작하기
게임 스타트업 시작하기
 
마쉬멜로우 첼린지
마쉬멜로우 첼린지마쉬멜로우 첼린지
마쉬멜로우 첼린지
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례
 
Pm
PmPm
Pm
 
Ignite Maiet 14 마이에트야구단
Ignite Maiet 14 마이에트야구단Ignite Maiet 14 마이에트야구단
Ignite Maiet 14 마이에트야구단
 
Ignite Maiet 12 누구나 쉽게 만드는 음악
Ignite Maiet 12 누구나 쉽게 만드는 음악Ignite Maiet 12 누구나 쉽게 만드는 음악
Ignite Maiet 12 누구나 쉽게 만드는 음악
 
Ignite Maiet 10 두근두근사파리 제작후기2
Ignite Maiet 10 두근두근사파리 제작후기2Ignite Maiet 10 두근두근사파리 제작후기2
Ignite Maiet 10 두근두근사파리 제작후기2
 
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
Ignite Maiet 07 칵테일과 함께 훈남훈녀 되기
 
Ignite Maiet 03 순정만화를 게임으로 재현하기
Ignite Maiet 03 순정만화를 게임으로 재현하기Ignite Maiet 03 순정만화를 게임으로 재현하기
Ignite Maiet 03 순정만화를 게임으로 재현하기
 
생산적인 개발을 위한 지속적인 테스트
생산적인 개발을 위한 지속적인 테스트생산적인 개발을 위한 지속적인 테스트
생산적인 개발을 위한 지속적인 테스트
 
Rapid Development
Rapid DevelopmentRapid Development
Rapid Development
 
refactoring database
refactoring databaserefactoring database
refactoring database
 
Continuous Test
Continuous TestContinuous Test
Continuous Test
 
KGC2007 Scrum And Xp
KGC2007 Scrum And XpKGC2007 Scrum And Xp
KGC2007 Scrum And Xp
 
Responding to change
Responding to changeResponding to change
Responding to change
 

Game AI Overview

  • 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