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는 유저를 죽이기 위해 만들어진 것이 아닌, 좋은 경험을 선사하기 위한 것이다