SlideShare a Scribd company logo
1 of 19
Download to read offline
게임 인공지능 설계
이야기하려는 내용
• 인공지능(AI)이란?
• 게임에서의 인공지능
• 실습
• 좋은 인공지능을 만드는 요건
인공지능(AI)이란?
인공지능이란?
• 인공지능
➢ 인공적(Artificial)으로 만들어진 지적 능력(Intelligence)
➢ ‘기계가 인간과 같이 행동하거나 사고할 수 있을까?’ 원래는 심리학에서부터 시작한 이론
➢ 언어적 지능을 통해 “기계가 지능적 행동을 할 수 있을까?“에서 부터 시작 (튜링 테스트)
➢ 1940~50년에 이미 이론은 있었지만 처리 속도가 컴퓨터의 성능이 감당할 수 없었음
➢ 하지만 현대에 와서는 빅데이터를 기반으로 한 머신 러닝 기술 등이 현대 사회에 크게 기여 중
게임에서의 인공지능
게임에서의 인공지능
• 길 찾기 알고리즘
➢ A* 알고리즘
▪ 시작지에서 목적지까지의 최단거리를 찾는 휴리스틱 이론의 알고리즘
▪ 최단 거리를 찾기 위해 많은 경우의 수를 일일이 계산하기 때문에, 경우의 수가 많아지거나
길이 복잡할 수록 연산량이 폭발적으로 증가
▪ 맵 정보의 변경에 따라 실시간으로 대응 가능
➢ NavMesh AI
▪ 맵 내에서 갈 수 있는 곳과 없는 곳을 미리 설정해 놓고 그 안에서 최단거리를 찾는 알고리즘
▪ 맵 정보를 미리 알고있어야 하기 때문에 네비게이션 매쉬 데이터를 미리 Bake(굽다)해 가지
고 있어야 함
▪ 때문에 Bake 과정이 존재하며, 이 Bake된 NavMesh 데이터는 실시간 변경에 따른 대응이
힘듦
▪ 정해진 오브젝트의 이동에 대해서는 실시간 처리 가능
A* 알고리즘
NavMesh AI
• 명령 계통 구조 (Command Hierarchy)
➢ 각각의 AI에게 상위, 하위 등으로 수준을 나눠 서로 명령을 주거나 받을 수 있도록 하는 구조
▪ Ex.1
✓ 전략만을 구상해 판단하고 지시하는 상위 AI
✓ 지시 받은 명령 내에서 행동을 수행하는 하위 AI
➢ RTS나 각종 시뮬레이션 게임 등에서 주로 사용
StarCraft C&C Red Alert 2
게임에서의 인공지능
• 추측 항법 (Dead Reckoning)
➢ 개체의 현재 위치, 속도, 방향 등의 정보에 근거해 다음 위치를 예측하는 방법
➢ TPS, FPS 게임 등에서 NPC AI가 플레이어를 향해 공격해야 할 경우 사격 정확도 등을 조절 가능
➢ 스포츠 게임에서 각 캐릭터의 위치나 패스 위치 등을 계산해 패스 가로채기 등을 하는 경우에 사용
Uncharted 4 FIFA Online 4
게임에서의 인공지능
• 대형 (Formation)
➢ 집단 이동의 방법으로 특정한 대형을 유지하며 이동하는 방법
➢ RTS 게임이나 비행 시뮬레이션 게임에서 주로 사용
➢ LOL 라인 미니언들도 특정 대형을 유지하며 이동 중
비행 군집 예 보병 군집 예
게임에서의 인공지능
• 유한 상태 기계 (Finite-State Machine, FSM)
➢ 유한한 개수의 상태를 가질 수 있는 기계 모델
➢ 상태마다 정해진 행동이 가능하며, 동시에 하나의 상태만을 가질 수 있다
➢ 어떠한 Event에 의해 다른 상태로 전이될 수 있다
Monster FSM 예 1 Monster FSM 예 2
http://blog.naver.com/PostView.nhn?blogI
d=destiny9720&logNo=220914600833
https://www.slideshare.net/skyseer/120629
-fsm-in-unity3d-skyseer
게임에서의 인공지능
실습
실습
• 실습1 : 출근 길
➢ 자신이 출근하는 길을 집을 나온 후부터 도착까지의 흐름을 설계
➢ 내가 할 수 있는 행동의 종류는?
▪ 걷기
▪ 회전
▪ 타기? 내리기?
➢ 어떤 조건에서 행동이 변하는가?
➢ 순차적으로 흐름을 행동 순으로 표현
실습
• 실습2 : 간단한 몬스터 AI 모델 설계
➢ 위에서 나온 FSM 모델을 통해 설계
▪ 상태와 행동만으로 AI를 정의
▪ 해당 상태가 되면 어떤 행동이 가능한가?
▪ 각종 정보에 따라 상태가 변화하는 조건을 설정
➢ 몬스터는 어떻게 스스로 이동할까?
➢ 몬스터가 이동하기 위해 필요한 정보는?
➢ 몬스터는 언제 공격할까?
➢ 몬스터의 생애 주기 설계
➢ 이 몬스터 AI에게 컨셉을 부여해보자
➢ 영리하게 보이기 위해 어떤 보완을 할 수 있을까?
좋은 AI를 만드는 요건
좋은 AI를 만드는 요건
• 유저가 편법을 쓸 수 있게 만들어라
➢ 유저가 어느정도 눈치챌 수 있는 선에서 AI를 상대할 때 편법을 발견해 활용할 수 있게 만들어라
➢ 고전 중에서 시행착오로 개발자가 의도한 편법을 발견하고 이를 이용해 적을 물리쳤을 경우, 적 AI
가 멍청하다는 느낌보단 자신이 똑똑하다는 느낌을 더 받게 만든다
• AI의 사고를 표현하도록 하라
➢ 음성이나 대사, 시야 등의 각종 표현 방법으로 AI가 생각하고 있는 바를 전달하라
▪ Ex1. “방금 저기 누군가 있던 것 같은데…”. -> “내가 잘 못 봤나 보군”
➢ AI에게 개성을 부여해 모두 같은 AI가 아닌 것처럼 보이는 것도 좋은 방법
➢ AI가 아무리 복잡한 계산과 상황 판단 능력을 가지고 있어도 유저가 인지할 수 없다면 알 수 없다
좋은 AI를 만드는 요건
• 예측 가능한 AI를 만들어라
➢ AI는 플레이어의 특정 행동이나 상황에 대해 일관된 반응을 기대할 수 있도록 만들어야 한다
➢ 플레이어가 게임을 통해 패턴을 학습하고 이를 활용해 목표 달성을 위한 계획 설계가 가능해야 한다
▪ Ex1. 경비 NPC는 맵에 떨어진 총을 주워 상자에 반납 -> 발전기 전원이 내려가면 경비들이 일
제히 가장 가까운 상자로 총을 주으러 감 -> 발전기 전원을 강제로 내려 우회로가 생긴다면?
➢ 위 패턴이 일관된다면 플레이어는 계획을 짜고 실행에 옮겨 기대한 효과를 볼 수 있음
➢ 행동이 일관되지 않아 예측이 불가능하다면 계획을 짤 수 없고 게임 플레이에 차질이 생김
➢ 예측 가능하다고 해서 모두 쉬운 게임이 되는 것은 아님
• AI가 게임 시스템과 상호작용하게 하라
➢ 젤다의 전설 –야생의 숨결- 에서는 몬스터 AI가 환경적인 요소까지 접근해 다룰 수 있다
▪ Ex.1 근처에 무기가 있다면 주워서 싸움
▪ Ex.2 무기에 불을 붙여 불 공격 가능
➢ 이러한 행동이 플레이어에게 AI가 똑똑하다는 인식을 줌
➢ 위의 행동 패턴을 인지하고 있다면 이를 이용한 편법도 활용 가능
좋은 AI를 만드는 요건
• 성장하는 AI
➢ 플레이어의 행동에 따라 다르게 반응하는 AI를 만들어라
➢ 과거에 보았던 AI라 할지라도 새로운 능력을 얻어 성장한 것처럼 보이는 것도 좋은 방법이다
※ 실제로 강화학습을 통해 성장하지 않았다 하더라도
• AI가 자체적인 목표를 가지도록 하라
➢ 게임의 의도에 따라 AI의 목표는 “플레이어를 죽인다”가 아닌 그 이상의 목표를 가질 수 있다
▪ Ex.1 플레이어를 죽이려 하는 이유는? -> 내 영역에 침범했고 위협이 됐다고 판단했기 때문 ->
플레이어 이외의 위협이 되는 개체가 접근한다면? -> 그 개체와 전투 실시 (몬스터 헌터 월드)
▪ Ex.2 영역 내에서 새끼를 지키는 AI를 가진 몬스터에게 가장 위협적인 적은, 자신을 공격하는 적
이 아닌 새끼를 공격하는 적이 될 것
정리
정리
• 적들의 멍청한 행동 선택은 게임의 몰입을 방해하며, 그들을 상대해 일방적으로 때려 눕히
는 것은 결코 재미있는 경험이 되지 못한다
• AI는 게임 의도에 부합한 행동을 해야 하며, 행동마다 개성을 부여하면 더욱 흥미로워 진다
• AI는 유저를 죽이기 위해 만들어진 것이 아닌, 좋은 경험을 선사하기 위한 것이다

More Related Content

What's hot

임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트
kgun86
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
 
드래곤 네스트 인벤토리 시스템 역 기획서 Ver1.1.A
드래곤 네스트 인벤토리 시스템 역 기획서 Ver1.1.A드래곤 네스트 인벤토리 시스템 역 기획서 Ver1.1.A
드래곤 네스트 인벤토리 시스템 역 기획서 Ver1.1.A
ganmaru
 
UE4 Garbage Collection
UE4 Garbage CollectionUE4 Garbage Collection
UE4 Garbage Collection
QooJuice
 

What's hot (20)

임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
드래곤 네스트 인벤토리 시스템 역 기획서 Ver1.1.A
드래곤 네스트 인벤토리 시스템 역 기획서 Ver1.1.A드래곤 네스트 인벤토리 시스템 역 기획서 Ver1.1.A
드래곤 네스트 인벤토리 시스템 역 기획서 Ver1.1.A
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱
 
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.
 
UE4 Garbage Collection
UE4 Garbage CollectionUE4 Garbage Collection
UE4 Garbage Collection
 
전리품 분배 시스템 기획 배상욱
전리품 분배 시스템 기획 배상욱전리품 분배 시스템 기획 배상욱
전리품 분배 시스템 기획 배상욱
 
기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까
 

Similar to 게임 인공지능 설계

홍길동제안서
홍길동제안서홍길동제안서
홍길동제안서
JP Lee
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
영준 박
 
게임 기획자의 생존 전략
게임 기획자의 생존 전략게임 기획자의 생존 전략
게임 기획자의 생존 전략
태성 이
 
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
ChangHyun Won
 

Similar to 게임 인공지능 설계 (20)

게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해
 
지대리 프로젝트
지대리 프로젝트지대리 프로젝트
지대리 프로젝트
 
레벨디자인 특강 이동훈
레벨디자인 특강 이동훈레벨디자인 특강 이동훈
레벨디자인 특강 이동훈
 
레벨디자인 특강 이동훈
레벨디자인 특강 이동훈레벨디자인 특강 이동훈
레벨디자인 특강 이동훈
 
POSCAT AI seminar 01 완전탐색과 스코어링
POSCAT AI seminar 01 완전탐색과 스코어링POSCAT AI seminar 01 완전탐색과 스코어링
POSCAT AI seminar 01 완전탐색과 스코어링
 
All That Puzzle Games
All That Puzzle GamesAll That Puzzle Games
All That Puzzle Games
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개
 
홍길동제안서
홍길동제안서홍길동제안서
홍길동제안서
 
홍길동제안서
홍길동제안서홍길동제안서
홍길동제안서
 
게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소
 
게임디자인 게임시스템
게임디자인   게임시스템게임디자인   게임시스템
게임디자인 게임시스템
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
 
재미이론의 시사점과 게임 플레이 개선에 적용방안
재미이론의 시사점과 게임 플레이 개선에 적용방안재미이론의 시사점과 게임 플레이 개선에 적용방안
재미이론의 시사점과 게임 플레이 개선에 적용방안
 
게임 기획자의 생존 전략
게임 기획자의 생존 전략게임 기획자의 생존 전략
게임 기획자의 생존 전략
 
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
 
[IGC2015] 디앤씨게임즈 이윤환-탐정의 왕과 범죄의 왕 그 3년의 기억
[IGC2015] 디앤씨게임즈 이윤환-탐정의 왕과 범죄의 왕 그 3년의 기억[IGC2015] 디앤씨게임즈 이윤환-탐정의 왕과 범죄의 왕 그 3년의 기억
[IGC2015] 디앤씨게임즈 이윤환-탐정의 왕과 범죄의 왕 그 3년의 기억
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)
 
03사람과컴퓨터
03사람과컴퓨터03사람과컴퓨터
03사람과컴퓨터
 
[IGC2015] 아라소판단 김성욱-게임 기획을 변경하게 되는 요인
[IGC2015] 아라소판단 김성욱-게임 기획을 변경하게 되는 요인[IGC2015] 아라소판단 김성욱-게임 기획을 변경하게 되는 요인
[IGC2015] 아라소판단 김성욱-게임 기획을 변경하게 되는 요인
 
[PandoraCube] 게임 프로그래머로 성장하기
[PandoraCube] 게임 프로그래머로 성장하기[PandoraCube] 게임 프로그래머로 성장하기
[PandoraCube] 게임 프로그래머로 성장하기
 

Recently uploaded

Recently uploaded (6)

이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
 
TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111
 
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
 

게임 인공지능 설계

  • 2. 이야기하려는 내용 • 인공지능(AI)이란? • 게임에서의 인공지능 • 실습 • 좋은 인공지능을 만드는 요건
  • 4. 인공지능이란? • 인공지능 ➢ 인공적(Artificial)으로 만들어진 지적 능력(Intelligence) ➢ ‘기계가 인간과 같이 행동하거나 사고할 수 있을까?’ 원래는 심리학에서부터 시작한 이론 ➢ 언어적 지능을 통해 “기계가 지능적 행동을 할 수 있을까?“에서 부터 시작 (튜링 테스트) ➢ 1940~50년에 이미 이론은 있었지만 처리 속도가 컴퓨터의 성능이 감당할 수 없었음 ➢ 하지만 현대에 와서는 빅데이터를 기반으로 한 머신 러닝 기술 등이 현대 사회에 크게 기여 중
  • 6. 게임에서의 인공지능 • 길 찾기 알고리즘 ➢ A* 알고리즘 ▪ 시작지에서 목적지까지의 최단거리를 찾는 휴리스틱 이론의 알고리즘 ▪ 최단 거리를 찾기 위해 많은 경우의 수를 일일이 계산하기 때문에, 경우의 수가 많아지거나 길이 복잡할 수록 연산량이 폭발적으로 증가 ▪ 맵 정보의 변경에 따라 실시간으로 대응 가능 ➢ NavMesh AI ▪ 맵 내에서 갈 수 있는 곳과 없는 곳을 미리 설정해 놓고 그 안에서 최단거리를 찾는 알고리즘 ▪ 맵 정보를 미리 알고있어야 하기 때문에 네비게이션 매쉬 데이터를 미리 Bake(굽다)해 가지 고 있어야 함 ▪ 때문에 Bake 과정이 존재하며, 이 Bake된 NavMesh 데이터는 실시간 변경에 따른 대응이 힘듦 ▪ 정해진 오브젝트의 이동에 대해서는 실시간 처리 가능 A* 알고리즘 NavMesh AI
  • 7. • 명령 계통 구조 (Command Hierarchy) ➢ 각각의 AI에게 상위, 하위 등으로 수준을 나눠 서로 명령을 주거나 받을 수 있도록 하는 구조 ▪ Ex.1 ✓ 전략만을 구상해 판단하고 지시하는 상위 AI ✓ 지시 받은 명령 내에서 행동을 수행하는 하위 AI ➢ RTS나 각종 시뮬레이션 게임 등에서 주로 사용 StarCraft C&C Red Alert 2 게임에서의 인공지능
  • 8. • 추측 항법 (Dead Reckoning) ➢ 개체의 현재 위치, 속도, 방향 등의 정보에 근거해 다음 위치를 예측하는 방법 ➢ TPS, FPS 게임 등에서 NPC AI가 플레이어를 향해 공격해야 할 경우 사격 정확도 등을 조절 가능 ➢ 스포츠 게임에서 각 캐릭터의 위치나 패스 위치 등을 계산해 패스 가로채기 등을 하는 경우에 사용 Uncharted 4 FIFA Online 4 게임에서의 인공지능
  • 9. • 대형 (Formation) ➢ 집단 이동의 방법으로 특정한 대형을 유지하며 이동하는 방법 ➢ RTS 게임이나 비행 시뮬레이션 게임에서 주로 사용 ➢ LOL 라인 미니언들도 특정 대형을 유지하며 이동 중 비행 군집 예 보병 군집 예 게임에서의 인공지능
  • 10. • 유한 상태 기계 (Finite-State Machine, FSM) ➢ 유한한 개수의 상태를 가질 수 있는 기계 모델 ➢ 상태마다 정해진 행동이 가능하며, 동시에 하나의 상태만을 가질 수 있다 ➢ 어떠한 Event에 의해 다른 상태로 전이될 수 있다 Monster FSM 예 1 Monster FSM 예 2 http://blog.naver.com/PostView.nhn?blogI d=destiny9720&logNo=220914600833 https://www.slideshare.net/skyseer/120629 -fsm-in-unity3d-skyseer 게임에서의 인공지능
  • 12. 실습 • 실습1 : 출근 길 ➢ 자신이 출근하는 길을 집을 나온 후부터 도착까지의 흐름을 설계 ➢ 내가 할 수 있는 행동의 종류는? ▪ 걷기 ▪ 회전 ▪ 타기? 내리기? ➢ 어떤 조건에서 행동이 변하는가? ➢ 순차적으로 흐름을 행동 순으로 표현
  • 13. 실습 • 실습2 : 간단한 몬스터 AI 모델 설계 ➢ 위에서 나온 FSM 모델을 통해 설계 ▪ 상태와 행동만으로 AI를 정의 ▪ 해당 상태가 되면 어떤 행동이 가능한가? ▪ 각종 정보에 따라 상태가 변화하는 조건을 설정 ➢ 몬스터는 어떻게 스스로 이동할까? ➢ 몬스터가 이동하기 위해 필요한 정보는? ➢ 몬스터는 언제 공격할까? ➢ 몬스터의 생애 주기 설계 ➢ 이 몬스터 AI에게 컨셉을 부여해보자 ➢ 영리하게 보이기 위해 어떤 보완을 할 수 있을까?
  • 15. 좋은 AI를 만드는 요건 • 유저가 편법을 쓸 수 있게 만들어라 ➢ 유저가 어느정도 눈치챌 수 있는 선에서 AI를 상대할 때 편법을 발견해 활용할 수 있게 만들어라 ➢ 고전 중에서 시행착오로 개발자가 의도한 편법을 발견하고 이를 이용해 적을 물리쳤을 경우, 적 AI 가 멍청하다는 느낌보단 자신이 똑똑하다는 느낌을 더 받게 만든다 • AI의 사고를 표현하도록 하라 ➢ 음성이나 대사, 시야 등의 각종 표현 방법으로 AI가 생각하고 있는 바를 전달하라 ▪ Ex1. “방금 저기 누군가 있던 것 같은데…”. -> “내가 잘 못 봤나 보군” ➢ AI에게 개성을 부여해 모두 같은 AI가 아닌 것처럼 보이는 것도 좋은 방법 ➢ AI가 아무리 복잡한 계산과 상황 판단 능력을 가지고 있어도 유저가 인지할 수 없다면 알 수 없다
  • 16. 좋은 AI를 만드는 요건 • 예측 가능한 AI를 만들어라 ➢ AI는 플레이어의 특정 행동이나 상황에 대해 일관된 반응을 기대할 수 있도록 만들어야 한다 ➢ 플레이어가 게임을 통해 패턴을 학습하고 이를 활용해 목표 달성을 위한 계획 설계가 가능해야 한다 ▪ Ex1. 경비 NPC는 맵에 떨어진 총을 주워 상자에 반납 -> 발전기 전원이 내려가면 경비들이 일 제히 가장 가까운 상자로 총을 주으러 감 -> 발전기 전원을 강제로 내려 우회로가 생긴다면? ➢ 위 패턴이 일관된다면 플레이어는 계획을 짜고 실행에 옮겨 기대한 효과를 볼 수 있음 ➢ 행동이 일관되지 않아 예측이 불가능하다면 계획을 짤 수 없고 게임 플레이에 차질이 생김 ➢ 예측 가능하다고 해서 모두 쉬운 게임이 되는 것은 아님 • AI가 게임 시스템과 상호작용하게 하라 ➢ 젤다의 전설 –야생의 숨결- 에서는 몬스터 AI가 환경적인 요소까지 접근해 다룰 수 있다 ▪ Ex.1 근처에 무기가 있다면 주워서 싸움 ▪ Ex.2 무기에 불을 붙여 불 공격 가능 ➢ 이러한 행동이 플레이어에게 AI가 똑똑하다는 인식을 줌 ➢ 위의 행동 패턴을 인지하고 있다면 이를 이용한 편법도 활용 가능
  • 17. 좋은 AI를 만드는 요건 • 성장하는 AI ➢ 플레이어의 행동에 따라 다르게 반응하는 AI를 만들어라 ➢ 과거에 보았던 AI라 할지라도 새로운 능력을 얻어 성장한 것처럼 보이는 것도 좋은 방법이다 ※ 실제로 강화학습을 통해 성장하지 않았다 하더라도 • AI가 자체적인 목표를 가지도록 하라 ➢ 게임의 의도에 따라 AI의 목표는 “플레이어를 죽인다”가 아닌 그 이상의 목표를 가질 수 있다 ▪ Ex.1 플레이어를 죽이려 하는 이유는? -> 내 영역에 침범했고 위협이 됐다고 판단했기 때문 -> 플레이어 이외의 위협이 되는 개체가 접근한다면? -> 그 개체와 전투 실시 (몬스터 헌터 월드) ▪ Ex.2 영역 내에서 새끼를 지키는 AI를 가진 몬스터에게 가장 위협적인 적은, 자신을 공격하는 적 이 아닌 새끼를 공격하는 적이 될 것
  • 19. 정리 • 적들의 멍청한 행동 선택은 게임의 몰입을 방해하며, 그들을 상대해 일방적으로 때려 눕히 는 것은 결코 재미있는 경험이 되지 못한다 • AI는 게임 의도에 부합한 행동을 해야 하며, 행동마다 개성을 부여하면 더욱 흥미로워 진다 • AI는 유저를 죽이기 위해 만들어진 것이 아닌, 좋은 경험을 선사하기 위한 것이다