Top

[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장, ‘실전 프로젝트’에서는 이 책에서 다룬 다양한 주제를 모아 마지막 프로젝트를 구현한다. 이 프로젝트를 기반으로 지금까지 배운 다양한 인공지능 요소를 추가로 적용해 멋진 차량 전투 게임을 만들 수도 있다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.

저자/역자 소개

저자 서문

이 책은 순수하게 인공지능 알고리즘을 설명하는 책과 기본적인 씬 설정 및 스크립트 등을 설명하는 일반적인 유니티3D 책이 동시에 다루지 못하는 둘 사이의 가교 역할을 수행한다.

이 책은 유니티3D로 다양한 인공지능 기술을 구현하는 방법을 다루고 있는데 C#을 사용해서 처음부터 직접 구현하는 방법부터 유니티3D가 제공하는 내장 기능을 활용하는 방법 또는 유니티 에셋 스토어(Unity Asset Store)에서 제공하는 스크립트와 플러그인을 활용하는 방법 등을 설명한다. 인공지능 기술을 본질적인 구현보다는 샘플 프로젝트를 통한 인공지능 기술의 적용과 활용 방법을 설명하는 데 좀 더 중점을 두고 있다. 다루는 기술은 유한 상태 기계(FSM)와 길 찾기, 조향, 내비게이션 그래프, 행동 트리 등이 있다.

저자 소개

아웅 시투 키야우(Aung Sithu Kyaw)

미얀마(버마) 태생으로 소프트웨어 산업에서 7년이 넘는 경력을 보유하고 있다. 주된 관심 분야는 게임플레이 프로그래밍과 스타트업, 기업가 정신, 글쓰기, 지식 공유 등이다. 싱가포르에 있는 난양 기술 대학교(NTU, Nanyang Technological University) 이학 석사학위를 보유하고 있으며, 디지털 미디어 기술을 전공했다. 지난 몇 년간 INSEAD에서 연구 프로그래머로 근무했으며, 싱가포르에 있는 플레이웨어 스튜디오스 아시아(Playware Studios Asia)에서 시니어 게임 프로그래머로 일했고, 최근에는 NTU에서 연구 부교수로 재직했다. 2011년에 싱가포르에서 라이벌 에지(Rival Edge)라는 인터랙티브 디지털 미디어 회사를 공동으로 설립해 기술적인 컨설팅을 수행했으며 소셜 모바일 게임도 개발했다. http://rivaledge.sg를 방문하면 더 많은 정보를 확인할 수 있다. 『Irrlicht 1.7 Realtime 3D Engine Beginner’s Guide』의 공동 저자이며, NTU의 방문 강사로 유니티 3D를 사용한 게임 설계와 개발에 대한 워크숍을 진행하기도 했다. 트위터는 @aungsithu이며, 링크드인(LinkedIn) 프로필은 linkedin.com/in/aungsithu다.

뗏 네잉 세예(Thet Naing Swe)

싱가포르의 라이벌 에지(Rival Edge) 유한회사의 공동 창업자이자 수석 크리에이티브 디렉터다. 센트럴 랭커셔(Central Lancashire) 대학교를 졸업했으며 게임 설계와 개발을 전공했고 영국에 기반을 둔 코드 멍키스(Code Monkeys) 스튜디오에서 게임 프로그래머로 첫 경력을 시작했다. 2010년 다시 싱가포르로 건너와 아웅(Aung)과 함께 난양 기술 대학교에서 시네마틱 연구 프로젝트의 그래픽 프로그래머로 일했다. 현재는 라이벌 에지에서 주로 유니티 3D를 활용한 인터랙티브 디지털 미디어 컨설팅 프로젝트를 책임지고 있으며, 캐주얼 유저를 대상으로 하는 소셜 모바일 게임도 개발 중이다. 이메일(thetnswe@rivaledge.sg)로 그에게 연락할 수 있다.

클리포드 피터스(Clifford Peters)

프로그래머이며 컴퓨터 과학자다. 그가 감수한 팩트 출판사의 책은 다음과 같다. 『Unity Game Development Essentials』, 『Unity 3D Game Development by Example Beginner’s Guide』, 『Unity 3 Game Development Hotshot』, 『Unity 3.x Game Development by Example Beginner’s Guide』, 『Unity iOS Game Development Beginner’s Guide』, 『Unity iOS Essentials』

옮긴이의 말

8비트 컴퓨터로 프로그래밍을 처음 공부하던 중학생 시절 구구단 프로그램을 만들거나 각종 도형을 그리는 연습 프로그래밍을 마쳤을 무렵, 가장 먼저 만들어 보고 싶던 주제가 바로 인공지능이었습니다. 누가 시킨 것도 아니고 딱히 어디에서 본 게 있는 것도 아니었지만, 본능적으로 컴퓨터가 마치 사람처럼 생각할 수 있다면 얼마나 신기하고 재미있겠느냐는 생각에 이르렀습니다. 당시 스스로 인공지능이라는 용어를 사용했는지는 잘 기억나지 않지만, 제법 그럴듯한 인공지능 알고리즘을 연습장에 설계해가면서 컴퓨터와 제가 대결하는 게임을 하나 만든 적이 있는데, 바로 사목이라는 게임이었습니다. 사목을 아직 접해보지 못한 분들도 계실 텐데, 오목과 달리 사목은 비교적 경우의 수가 적고 규칙이 제한적이어서 별다른 지식이 없는 상태였음에도 해볼 수 있지 않을까 하는 자신감에 무작정 개발을 시작했습니다.

오랜 시행착오를 거친 끝에 결국 사목 프로그램을 완성했는데, 처음으로 프로그램을 완성한 후 첫 대결에서 너무도 허무하게 컴퓨터에 졌던 기억이 납니다. 당시 가지고 있던 8비트 컴퓨터가 너무 느려서 제가 한 수를 두고 나면 한 5분쯤 후에 컴퓨터가 한 수를 두곤 했는데, 이 시간 동안 컴퓨터가 정말로 마치 사람처럼 열심히 생각하는 것 같은 착각이 들기도 했습니다. 어린 나이여서 더 그랬는지도 모르겠지만, 당시에는 마치 제가 조물주라도 된 양 기분이 들떴고, 아무런 능력도 없는 쇳덩어리가 사람과 대등하게 사목이라는 게임을 겨루는 능력을 갖췄다고 생각했을 때의 흥분은 아직도 잊을 수가 없습니다. 여러 가족을 컴퓨터 앞에 앉혀가면서 이겨보라고 도발하기도 했고 컴퓨터가 이길 때마다 마치 저의 분신이 이긴 것 같아 기분이 좋았던 기억이 납니다.

이후 컴퓨터 서적이 아니더라도 인공지능을 다루는 주제의 소설이나 과학 서적 등을 우연히 서점에서 만나면 그냥 지나치지 못하고 어쩔 수 없는 이끌림에 그 책을 사서 보곤 했던 기억이 날 정도로, 인공지능이라는 주제는 아직도 제 가슴을 설레게 하는 힘이 있는 분야입니다. 최근에 구글이나 애플에서 열심히 개발 중인 자동주행 자동차도 지능을 부여하여 스스로 운전을 하도록 만들었다는 점에서 인공지능의 좋은 사례라고 할 수 있을 텐데요, 이런 큰 프로젝트가 아니더라도 주위를 둘러보면 가전제품부터 다양한 분야와 접목된 전자기기 등 정말 다양한 분야에 인공지능이 적극적으로 활용되고 있음을 확인할 수 있습니다.

이 책은 유니티 환경에서 인공지능을 다루는 방법을 설명한 책으로 인공지능에 대한 기본적인 소개부터 시작해 유한 상태 기계의 개념, 랜덤과 확률, 센싱 기술의 구현, 길 찾기 알고리즘, 행동 트리 등 게임 제작에 필요한 인공지능 기법과 이를 유니티가 지원하는 환경에서 어떻게 구현할 수 있는지를 비교적 초보자의 시선에서 차근차근 상세히 설명하고 있습니다. 일부 장르를 제외하면 대부분의 게임은 수준과 정도의 차이는 있지만 인공지능을 적용해야만 하는 상황이 발생하는데 이때 이 책에서 다루는 내용만 제대로 익혀놔도 실전에서 별다른 부족함 없이 원하는 의도대로 만들어 낼 수 있을 거라 생각합니다.

인공지능이라는 흥미로운 주제를 유니티 환경에서 다룬 이 책의 번역을 맡은 일은 제겐 영광스러운 경험이었고 유니티 환경에서 게임을 개발하는 개발자에게 인공지능 프로그래밍의 기초를 탄탄하게 다져줄 수 있는 좋은 서적을 소개할 수 있어서 기분이 좋습니다. 부디 이 책이 인공지능 프로그래밍의 기초를 다지는 데 큰 도움이 되기를 희망합니다.

옮긴이 소개

조경빈

중학교 때 처음으로 8비트 컴퓨터를 만지면서 프로그래밍에 흥미를 느끼기 시작했고, 인프라웨어에서 웹 브라우저 엔진 개발에 참여했으며 현재는 게임개발사 셀바스에서 모바일 게임 개발에 전념하고 있다. 형식에 얽매이는 일을 싫어하며, 새롭고 흥미로운 세상 모든 일, 그리고 사람을 즐겁게 하는 일에 관심이 많다. 대학시절부터 다수의 전시회 출품과 공모전 입상 경력이 있으며, 가장 최근에는 SKT T스토어 제1회 공모전 스마트폰 게임 부문에서 입상하기도 했다. 에이콘출판사에서 출간한 『Flash Game Development by Example 한국어판』(2011)과 『모던 자바스크립트 Modern JavaScript』(2014)를 번역했다.

목차

목차
  • 1 인공지능 소개
    • 인공지능
    • 게임 인공지능
    • 인공지능 기술
      • 유한 상태 기계
      • 인공지능에서의 난수와 확률
      • 센서 시스템
        • 폴링
        • 메시징 시스템
      • 군집 처리
      • 경로 따라가기와 조종하기
      • A* 경로 탐색
      • 내비게이션 메시
      • 행동 트리
      • 이동
      • 다익스트라의 알고리즘
    • 정리

  • 2 유한 상태 기계
    • 플레이어 탱크
      • PlayerTankController 클래스
      • 초기화
        • 탄환 발사
        • 탱크 조종
    • 탄환 클래스
    • 웨이포인트 설정
    • 추상 FSM 클래스
    • 적 탱크 인공지능
      • 정찰 상태
      • 추격 상태
      • 공격 상태
      • 죽은 상태
        • 피해 처리
    • FSM 프레임워크 사용
      • AdvanceFSM 클래스
      • FSMState 클래스
      • 상태 클래스
        • PatrolState 클래스
      • NPCTankController 클래스
    • 정리

  • 3 난수와 확률
    • 난수
      • Random 클래스
        • 간단한 난수 주사위 게임
    • 확률의 정의
      • 독립 사건과 연관 사건
      • 조건 확률
        • 조작된 주사위
    • 캐릭터 특성
    • 확률을 적용한 유한 상태 기계
    • 동적 인공지능
    • 데모 슬롯머신
      • 난수 슬롯머신
      • 가중 확률
        • 아까운 실패
    • 정리

  • 4 센서 구현
    • 기본 센서 시스템
    • 씬 설정
    • 플레이어 탱크와 종류
      • 플레이어 탱크
      • 종류
    • 인공지능 캐릭터
      • 감각
      • 시각
      • 촉각
    • 테스트
    • 정리

  • 5 군집 처리
    • 유니티의 Island 데모로 살펴보는 군집 처리
      • 개별 행동
      • 컨트롤러
    • 대체 구현
      • FlockController
    • 정리

  • 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 실전 프로젝트
    • 씬 설정
      • 태그와 레이어
    • 차량
      • 플레이어 자동차 컨트롤러
      • 인공지능 자동차 컨트롤러
      • 유한 상태 기계
        • 정찰 스테이트
        • 추격 스테이트
        • 공격 스테이트
    • 무기
      • 탄환
      • 런처
      • 미사일
    • 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안