[Unity3D로 다양한 인공지능 기술을 구현하는]
유니티 게임 AI 프로그래밍
- 원서명Unity 4.x Game AI Programming (ISBN 9781849693400)
- 지은이아웅 시투 키야우(Aung Sithu Kyaw), 뗏 네잉 세예(Thet Naing Swe), 클리포드 피터스(Clifford Peters)
- 옮긴이조경빈
- ISBN : 9788960774063
- 26,600원
- 2015년 03월 17일 펴냄
- 페이퍼백 | 260쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 게임 개발 프로그래밍
판매처
개정판책 소개
[2015. 8. 19. 편집팀 공지]
이 책의 p22 '준비사항' 절에서 설명하는 Behave는 애셋 버전 1.4를 마지막으로 무료 정책이 종료됐으며, Behave 2의 출시와 함께 애셋 개발사인 AngryAnt에서 유료로 정책을 변경하여 2015년 8월 현재 유료로 배포하고 있습니다. 따라서, 개발사의 정책 변경에 따른 부득이한 환경 변화로 인해, 이 책의 9장 내용은 원서가 출간될 당시와는 다르게 책에서 설명한 것과 동일하게 구현하기가 어려운 점, 양해해주시기 부탁드립니다.
요약
이 책은 유니티 개발 환경에서 인공지능을 다루는 방법을 기초부터 차근차근 알려준다. 게임에서 인공지능을 구현할 때 필수적으로 알아야 하는 유한 상태 기계(FSM)의 개념이라든가 랜덤과 확률의 활용 방법, 센싱 기술의 구현 방식, 길 찾기 알고리즘의 적용, 행동 트리의 활용 등을 어떻게 하면 유니티가 제공하는 기능을 활용해 쉽게 구현할 수 있는지를 쉽고도 명쾌하게 설명한다.
이 책에서 다루는 내용
■ 유한 상태 기계(FSM) 구성
■ 센서 시스템 구현
■ 비행 오브젝트를 위한 군집 행동 적용
■ 유니티3D에서 직접 구현한 A* 길 찾기 알고리즘 실행
■ 베팅 게임에서 난수와 확률 적용
■ 유니티3D Pro의 기능인 내비게이션 그래프를 길 찾기에 활용
■ 동작 트리 학습 및 Behave 플러그인 활용법
■ 인공지능 차량 전투 게임을 구현한 실전 프로젝트
이 책의 대상 독자
유니티3D에 대한 기본 지식은 갖춘 상태에서 게임에 인공지능 요소를 추가하고 싶은 프로그래머, 그리고 따라 하기 쉬운 예제 설명과 다양한 샘플 코드, 프로젝트를 원하는 프로그래머가 이 책의 주요 대상 독자다. 이 책은 C# 스크립트를 사용하므로 약간의 C# 언어에 대한 배경 지식이 필요하다. 하지만 설령 C# 언어를 잘 모른다고 해도 프로그래밍 언어를 하나 이상 알고 있다면 이 책에 나온 코드를 이해하는 데 별다른 어려움이 없을 것이다.
이 책의 구성
1장, ‘인공지능 소개’에서는 인공지능이란 무엇인가에 대해 살펴보고 게임에서 사용하는 형태를 알아본다. 또한 게임에서 인공지능을 구현할 때 사용하는 다양한 기술에 관해서도 이야기한다.
2장, ‘유한 상태 기계’에서는 인공지능에서 의사결정이 필요할 때 결정을 단순화하는 방법을 살펴본다. 인공지능이 특정 상태에서 어떻게 동작하는지, 그리고 다른 상태로 어떻게 넘어가는지를 정의하기 위해 유한 상태 기계(FSM)을 사용한다.
3장, ‘난수와 확률’에서는 확률의 기본에 대해 살펴보고 어떻게 하면 특정 결과의 확률을 변경할 수 있는지 살펴본다. 그리고 게임에 임의성을 추가해서 다소 예측하기 어려운 행동을 보이는 인공지능의 구현 방법을 살펴본다.
4장, ‘센서 구현’에서는 인공지능 캐릭터가 주변을 인지하게 하는 방법을 살펴본다. 캐릭터는 보고 들을 수 있으므로 적이 근처에 오면 알아채고 언제 공격을 해야 하는지 알 수 있다.
5장, ‘군집 처리’에서는 다수의 오브젝트가 함께 이동하는 상황에 대해 설명한다. 군집 처리를 구현하는 두 종류의 방법을 살펴보면서 다수의 오브젝트를 어떻게 동시에 이동시키는지 알아본다.
6장, ‘경로 따라가기와 조향 행동’에서는 인공지능 캐릭터가 어떻게 경로를 따라 목적지에 도달하는지 살펴본다. 그런 다음 인공지능 캐릭터가 주어진 경로 없이 목적지를 찾는 방법을 살펴보고, 장애물을 피해가며 목적지로 이동하는 방법도 알아본다.
7장, ‘A 경로 탐색’에서는 주어진 위치에서 목적 지점까지의 최적 경로를 찾는 유명한 알고리즘을 살펴본다. A(에이스타)를 사용하면 지형을 탐색하고 목적 지점까지의 최단거리를 찾을 수 있다.
8장, ‘내비게이션 메시’에서는 경로 탐색을 좀 더 쉽게 구현하기 위해 유니티가 제공하는 기능을 살펴본다. 내비게이션 메시(Navigation Mesh, 유니티 프로에서만 지원)를 생성하면 타일과 A* 알고리즘을 사용할 때보다 씬을 좀 더 잘 표현할 수 있다.
9장, ‘행동 트리’는 유한 상태 기계를 발전시킨 모델로, 아주 복잡한 게임에서도 사용할 수 있다. 유니티에서 행동 트리를 생성하고 관리하기 위해 이 책에서는 무료 플러그인 Behave를 사용할 예정이다.(※Behave는 애셋 버전 1.4를 마지막으로 무료 정책이 종료됐으며, Behave 2의 출시와 함께 애셋 개발사인 AngryAnt에서 유료로 정책을 변경하여 2015년 8월 현재 유료로 배포하고 있습니다. 따라서, 개발사의 정책 변경에 따른 부득이한 환경 변화로 인해, 이 책의 9장 내용은 원서가 출간될 당시와는 다르게 책에서 설명한 것과 동일하게 구현하기가 어려운 점, 양해해주시기 부탁드립니다.)
10장, ‘실전 프로젝트’에서는 이 책에서 다룬 다양한 주제를 모아 마지막 프로젝트를 구현한다. 이 프로젝트를 기반으로 지금까지 배운 다양한 인공지능 요소를 추가로 적용해 멋진 차량 전투 게임을 만들 수도 있다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
목차
목차
- 1 인공지능 소개
- 인공지능
- 게임 인공지능
- 인공지능 기술
- 유한 상태 기계
- 인공지능에서의 난수와 확률
- 센서 시스템
- 폴링
- 메시징 시스템
- 군집 처리
- 경로 따라가기와 조종하기
- A* 경로 탐색
- 내비게이션 메시
- 행동 트리
- 이동
- 다익스트라의 알고리즘
- 정리
- 2 유한 상태 기계
- 플레이어 탱크
- PlayerTankController 클래스
- 초기화
- 탄환 발사
- 탱크 조종
- 탄환 클래스
- 웨이포인트 설정
- 추상 FSM 클래스
- 적 탱크 인공지능
- 정찰 상태
- 추격 상태
- 공격 상태
- 죽은 상태
- 피해 처리
- FSM 프레임워크 사용
- AdvanceFSM 클래스
- FSMState 클래스
- 상태 클래스
- PatrolState 클래스
- NPCTankController 클래스
- 정리
- 플레이어 탱크
- 3 난수와 확률
- 난수
- Random 클래스
- 간단한 난수 주사위 게임
- Random 클래스
- 확률의 정의
- 독립 사건과 연관 사건
- 조건 확률
- 조작된 주사위
- 캐릭터 특성
- 확률을 적용한 유한 상태 기계
- 동적 인공지능
- 데모 슬롯머신
- 난수 슬롯머신
- 가중 확률
- 아까운 실패
- 정리
- 난수
- 4 센서 구현
- 기본 센서 시스템
- 씬 설정
- 플레이어 탱크와 종류
- 플레이어 탱크
- 종류
- 인공지능 캐릭터
- 감각
- 시각
- 촉각
- 테스트
- 정리
- 5 군집 처리
- 유니티의 Island 데모로 살펴보는 군집 처리
- 개별 행동
- 컨트롤러
- 대체 구현
- FlockController
- 정리
- 유니티의 Island 데모로 살펴보는 군집 처리
- 6 경로 따라가기와 조향 행동
- 경로 따라가기
- 경로 스크립트
- 경로 추종자
- 장애물 회피
- 커스텀 레이어 추가
- 장애물 회피
- 정리
- 경로 따라가기
- 7 A* 경로 탐색
- A* 알고리즘 재확인
- 구현
- Node
- PriorityQueue
- GridManager
- AStar
- TestCode 클래스
- 씬 설정
- 테스트
- 정리
- 8 내비게이션 메시
- 소개
- 맵 설정
- Navigation Static
- 내비게이션 메시 베이크
- Nav Mesh Agent
- 에이전트의 목적지 변경
- 경사가 있는 씬
- NavMeshLayers
- Off Mesh Links
- Off Mesh Links 생성
- Manual Off Mesh Links
- 정리
- 9 행동 트리
- Behave 플러그인
- 작업 순서
- 액션
- 스크립트 연동
- 데코레이터
- Behave 디버거
- 시퀀스
- Behave 결과 탐색
- 셀렉터
- 우선순위 셀렉터
- 패럴렐
- 레퍼런스
- 로봇 대 외계인 프로젝트
- 정리
- 10 실전 프로젝트
- 씬 설정
- 태그와 레이어
- 차량
- 플레이어 자동차 컨트롤러
- 인공지능 자동차 컨트롤러
- 유한 상태 기계
- 정찰 스테이트
- 추격 스테이트
- 공격 스테이트
- 무기
- 총
- 탄환
- 런처
- 미사일
- 정리
- 씬 설정