Top

유니티 게임 AI 프로그래밍 2/e [유니티 5로 구현하는 게임 제작에 필요한 인공지능 기술]

  • 원서명Unity AI Game Programming Second Edition (ISBN 9781785288272)
  • 지은이레이 바레라(Ray Barrera), 아웅 시투 키야우(Aung Sithu Kyaw), 클리포드 피터스(Clifford Peters), 뗏 네잉 세예(Thet Naing Swe)
  • 옮긴이조경빈
  • ISBN : 9788960778627
  • 26,000원
  • 2016년 05월 27일 펴냄
  • 페이퍼백 | 240쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 게임 개발 프로그래밍

책 소개

요약

이 책은 유니티 개발 환경에서 인공지능을 다루는 방법을 기초부터 차근차근 설명한다. 게임에서 인공지능을 구현할 때 필수적으로 알아야 하는 유한 상태 기계의 개념이라든지 랜덤과 확률의 활용 방법, 센싱 기술의 구현 방식, 길 찾기 알고리즘의 적용, 행동 트리의 활용, 퍼지 로직 등을 어떻게 하면 유니티가 제공하는 기능을 활용해 쉽게 구현할 수 있는지를 명쾌하게 설명한다.

이 책에서 다루는 내용

■ 게임 인공지능과 관련한 기본적인 용어와 개념 이해
■ 유니티 5의 상태 기계 행동을 사용한 간단한 유한 상태 기계 구현
■ 가장 일반적으로 사용되는 기술을 활용한 센서 시스템 구현
■ 가장 일반적인 형태의 길 찾기 시스템과 유니티 5 NavMesh 기능을 사용한 내비게이션 메시 구현
■ 높은 신뢰도와 효율성을 갖는 인공지능 군집 처리 구현
■ 캐릭터의 행동을 유도하는 간단한 행동 트리 생성
■ 인공지능 의사 결정에 퍼지 로직 개념을 구현해 좀 더 매력적인 캐릭터 생성
■ 배운 내용을 종합해 실전 예제 생성

이 책의 대상 독자

이 책은 C#과 유니티 편집기의 기본적인 내용을 이해하고 있는 유니티 개발자를 대상으로 한다. 게임을 처음 만들거나 게임 프로그래머로서의 지식을 넓히려고 한다면 게임 인공지능 관련 개념과 예제 구현을 통해 다양하고 흥미로운 정보를 얻을 수 있다. 이 책은 게임 인공지능과 관련한 특별한 사전 지식은 요구하지 않는다.

이 책의 구성

1장, ‘게임에서의 인공지능 기초’에서는 매우 방대하고 어려운 주제인 인공지능의 가장 기본적인 개념을 명확하게 알아본다.

2장, ‘유한 상태 기계’에서는 인공지능에서 가장 널리 사용되는 유한 상태 기계에 대한 개념을 설명한다.

3장, ‘센서 구현’에서는 게임 인공지능 에이전트가 주변 환경을 인지하는 데 있어 가장 중요한 방법이 무엇인지 알아본다. 인공지능 에이전트의 현실성은 주변 환경에 어떻게 반응하느냐에 따라 크게 달라진다.

4장, ‘길 찾기’에서는 인공지능 에이전트가 길을 찾아갈 때 가장 널리 사용되는 패턴을 설명한다. 게임 내의 에이전트는 장애물을 피해가며 게임에서 제공하는 지형을 탐색할 수 있어야 한다.

5장, ‘군집 처리’에서는 군집 처리 시뮬레이션 알고리즘에 대해 살펴보며, 이를 통해 개별 에이전트의 로직보다는 전체 군집의 이동과 관련된 로직을 처리하는 방법을 알아본다.

6장, ‘행동 트리’에서는 복잡한 인공지능 행동을 구현할 때 가장 널리 사용되는 방식인 행동 트리를 직접 구현해본다.

7장, ‘퍼지 로직을 사용한 인공지능 개선’에서는 바이너리 방식을 사용하지 않고 다양한 요소를 고려한 인공지능 에이전트의 의사결정 방법을 알아본다. 퍼지 로직은 사람이 의사 결정을 내리는 방식을 흉내낸다.

8장, ‘통합’에서는 다양한 시스템을 사용해서 하나의 간단한 게임 템블릿을 만들어 본다. 이를 확장할 수도 있다.

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

저자/역자 소개

지은이의 말

이 책에서 우리는 게임 개발과 관련한 인공지능에 대해 살펴볼 것이다. 어떤 장르의 게임을 개발하느냐는 크게 상관없으며 다양한 활용 사례를 찾을 수 있을 것이다.
이 책의 목적은 여러분을 전문가로 만드는 것이 아니다. 전문가가 되기 위해서는 훨씬 더 오랜 기간 동안 많은 양의 자료를 학습해야 한다. 이 책은 인공지능을 배우기 시작하는 독자에게 길잡이가 되어 줄 것이다. 인공지능과 관련된 가장 기본적인 요소를 다루고 있으며, 이 책을 마칠 때쯤이면 자신만의 게임에 인공지능을 구현하는 데 필요한 지식을 갖추게 된다. 책에서 제공하는 게임 예제를 확장해도 좋고 직접 새롭고 흥미로운 것을 만들어 봐도 좋다.
이 책에서 제공하는 예제를 따라 해보고 코드를 고쳐가면서 연습하면 학습에 많은 도움이 될 것이다. 각 장은 개념적인 배경과 약간의 예제를 제공하며 여러분은 이를 각자 개발 중인 게임에 어떻게 적용할지 고민해보면 좋다.

지은이 소개

레이 바레라(Ray Barrera)

어린 시절에 뭐든 만들고 고치는 것을 좋아했다. <스타크래프트(StarCraft)>나 <언리얼>의 변형이나 커스텀 맵 등을 만드는 것부터 RPG 메이커를 사용해 오픈소스 롤플레잉 게임을 개발하는 것까지 항상 게임 개발에 열정을 가지고 있다. 열정을 취미 생활로 승화하며 몇 년을 지낸 후 전문 개발자로서의 삶을 살기로 결정했다.
초기에 방위 산업에서 메이저 계약자로서 교육과 연구 프로젝트에서 충분한 경험을 쌓았고, 이를 통해 원래부터 하고 싶었던 게임으로 열정을 이어갔다. 이때부터는 엔터테인먼트와 교육 사이를 넘나들면서 활약했다. 유니티는 게임과 애플리케이션 개발을 유연하고 빠르게 도와주는 좋은 무기가 됐다. 로스앤젤리스 유니티(Los Angeles Unity) 미팅의 원년 멤버로 지역 교육기관과 고등학교에서 진행된 유니티 워크숍을 도와가며 유니티 커뮤니티에서 매우 활발하게 활동했다. 트위터 계정은 @ray_barrera다.

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

십 년 이상 기술 분야에서 일해 왔다. 그래픽 프로그래밍에 특히 열정적이며 비디오 게임을 개발하거나 글을 쓰고 이 지식을 다른 사람과 나누는 것을 즐긴다. 싱가포르 난양 기술 대학(NTU, Nanyang Technological University)에서 디지털 미디어 기술 석사학위를 수여했다. 지난 몇 년간 연구 프로그래머, 시니어 게임 프로그래머 등 다양한 역할을 수행했으며, 마지막으로 언리얼 개발 키트(Unreal Development Kit)를 사용한 센서 기반 실시간 무비 시스템 구현 연구원으로 일했다. 2011년 기술 기반 스타트업을 설립했으며 인터랙티브 미디어 생산과 백엔드 서버 측 기술에 집중했다. 현재는 미얀마에 머물면서 최근 자신의 회사 제품인 미얀마용 게임화 소셜 오피니언 네트워크 개발에 힘쓰고 있다.
트위터는 @aungsithu이며 링크드인은 http://linkedin.com/in/aungsithu다.

클리포드 피터스(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』를 리뷰했다.

뗏 네잉 세예(Thet Naing Swe)

싱가포르에 있는 Joy Dash Pte Ltd의 창업자이자 CTO다. 센트롤 랭커셔 대학(University of Central Lancashire)에서 게임 디자인과 개발을 전공했으며, 영국에 기반을 둔 닌텐도 DS(Nintendo DS) 게임 개발 스튜디오에서 게임 프로그래머로서 첫 경력을 시작했다. 2010년 다시 싱가포르로 돌아와서 난양 기술 대학의 시네마틱 연구 프로젝트에서 그래픽 프로그래머로 일했다.
Joy Dash에서 인터랙티브 디지털 미디어 컨설팅 프로젝트를 담당하고 있으며, 특히 유니티 3D를 활용한 교육, 캐주얼 게임, 증강 현실 프로젝트를 맡고 있다. 이메일(thetnswe@gmail.com)로 연락할 수 있다.

옮긴이의 말

우리는 얼마 전 대한민국 땅에서 인공지능 역사에 한 획을 그은 사건을 생생하게 목격할 수 있었습니다. 온 대중매체가 연일 집중해 생중계와 보도를 쏟아내며 세기의 대결이라 칭했던 구글의 인공지능 알파고와 천재 바둑기사 이세돌 간의 대국이 바로 그 대상이었는데요. 바둑이라고는 아주 기초적인 규칙밖에 모르는 저도 넋을 놓고 지켜볼 만큼 인류 역사에 있어서 매우 흥미로운 인간과 인공지능 간의 대결이었습니다.
이미 출간을 마친 『유니티 게임 AI 프로그래밍』의 옮긴이의 말을 쓸 때 제가 초등학교 시절 8비트 컴퓨터를 가지고 인공지능 바둑 게임을 만들어서 대결을 펼치며 흥분과 환희를 느낀 이야기를 적었는데, 이젠 인공지능이 세계 최고의 천재 바둑 기사를 이기는 시대가 된 것입니다. 인류 역사를 돌이켜볼 때 인공지능 분야는 상대적으로 매우 짧은 시간에 비약적인 발전을 했습니다. 저뿐만 아니라 많은 분들이 알파고와 이세돌의 생중계를 지켜보면서 알파고가 단순한 소프트웨어를 넘어서서 마치 영혼마저 있는 것 같은 느낌을 받았다고 말합니다. 그만큼 인공지능은 앞으로 우리의 삶에 성큼성큼 다가올 것입니다.
이 책은 전작인 『유니티 게임 AI 프로그래밍』의 단순한 후속판으로 보기엔 너무 많은 내용이 변경됐습니다. 일단 가장 눈에 띄는 변화로 책의 모든 내용이 유니티 5를 기본으로 구성됐으며 인공지능에 대한 기본적인 소개부터 시작해 유한 상태 기계의 개념, 랜덤과 확률, 센싱 기술의 구현, 길 찾기 알고리즘, 행동 트리, 퍼지 로직 등 게임 제작에 필요한 인공지능 기법과 이를 유니티가 지원하는 환경에서 어떻게 구현할 수 있는지를 비교적 초보자의 시선에서 차근차근 상세히 설명하고 있습니다. 일부 장르를 제외하면 대부분의 게임은 수준과 정도의 차이는 있지만, 인공지능을 적용해야만 하는 상황이 발생하는데, 이때 이 책에서 다루는 내용만 제대로 익혀놔도 실전에서 별다른 부족함 없이 원하는 의도대로 만들어 낼 수 있을 것으로 생각합니다. 물론 이 책에서 다루고 있는 인공지능이 앞서 이야기한 인류의 삶을 근본적으로 변화시키는 기술과는 지향점이 다르다는 점은 이해해야 합니다. 게임 인공지능의 목표는 인류의 삶에 영향을 주는 것보다는 게임 자체에서 느낄 수 있는 재미를 늘리는 데 있으며 이 책은 그런 목표를 달성하는 데 필요한 기술에 집중하고 있기 때문입니다.
부디 이 책이 인공지능 프로그래밍의 기초를 다지는 데 큰 도움이 되기를 희망합니다.

옮긴이 소개

조경빈

인프라웨어에서 웹 브라우저 엔진 개발에 참여했으며 현재는 게임개발사 셀바스에서 신작 개발에 전념하고 있다. 형식에 얽매이기보다는 자유로움 속에서 효율을 찾는 과정에 관심이 많다. 대학시절부터 다수의 전시회 출품과 공모전 입상 경력이 있으며, SKT T스토어 제1회 공모전 스마트폰 게임 부문에서 입상을 하기도 했고, 개인 자격으로 애플 앱스토어에 10개 이상의 앱을 등록해 미국 앱스토어에서 카테고리 1위에 오르는 등 다양한 실험을 하기도 했다. 국내 최초의 유니티 관련 서적인 『유니티 게임 엔진 한글 메뉴얼』(2010)을 번역했으며, 에이콘출판사에서 출간한 『Flash Game Development by Example 한국어판』(2011)과 『모던 자바스크립트 Modern JavaScript』(2014), 『유니티 게임 AI 프로그래밍』(2015), 『RPG를 만들면서 배우는 유니티 2D 게임 개발』(2015), 『The Gourmet iOS Developer’s Cookbook』(2015)을 번역했다

목차

목차
  • 1. 게임에서의 인공지능 기초
    • 가상의 삶 구현
    • 인공지능을 사용한 게임성 강화
    • 유니티에서 인공지능 사용
    • 에이전트 정의
    • 유한 상태 기계
    • 에이전트의 눈으로 월드 바라보기
    • 길 찾기와 조향
      • A* 길 찾기
      • 내비게이션 메시 사용
    • 군집 처리
    • 행동 트리
    • 퍼지 로직
    • 요약

  • 2. 유한 상태 기계
    • FSM 활용
    • 상태 기계 행동 생성
      • AnimationController 애셋 생성
      • 레이어와 매개변수
      • 애니메이션 컨트롤러 인스펙터
      • 행동 적용
      • 첫 상태 생성
      • 상태 간 전이
    • 플레이어 탱크 설정
    • 탱크 생성
      • 상태 전이 선택
      • 기능 연결
        • 조건 설정
        • 코드로 매개변수 제어
        • 적 탱크 이동
        • 테스팅
    • 요약

  • 3. 센서 구현
    • 기본 센서 시스템
      • 콘 형태의 시야
      • 구를 사용해서 듣기, 느끼기, 냄새 맡기
      • 전지적 능력을 활용한 인공지능 확장
      • 센싱으로 창의력 개선
    • 씬 설정
    • 플레이어 탱크와 특성 설정
      • 플레이어 탱크 구현
      • Aspect 클래스 구현
    • 인공지능 캐릭터 생성
    • Sense 클래스 사용
    • 약간의 시각 부여
    • 촉각 활용
    • 결과 검사
    • 요약

  • 4. 길 찾기
    • 경로 따라가기
      • 경로 스크립트
      • 경로 추종자 사용
      • 장애물 회피
      • 커스텀 레이어 추가
      • 장애물 회피 로직 구현
    • A* 길 찾기
      • A* 알고리즘 재확인
      • 구현
        • 노드
        • 우선순위 큐 구성
        • 그리드 매니저 설정
        • A* 구현 심화
        • TestCode 클래스
        • 씬 설정
        • 모든 컴포넌트 테스팅
    • 내비게이션 메시
      • 맵 설정
      • Navigation Static
      • 내비게이션 메시 베이킹
      • NavMesh 에이전트 사용
      • 대상 설정
      • Target 클래스
      • 경사 테스트
      • 영역 탐색
      • Off Mesh Link 의미
      • 생성된 Off Mesh Link 사용
      • 수동 Off Mesh Link 설정
    • 요약

  • 5. 군집 처리
    • 군집 처리의 기원
    • 군집 처리 개념의 배경 이해
    • 유니티 예제를 사용한 군집 처리
      • 개별 행동 흉내내기
      • 컨트롤러
    • 대체 구현 사용
      • FlockController 구현
    • 군중 처리
      • 간단한 군중 시뮬레이션 구현
      • CrowdAgent 컴포넌트 사용
      • 재미있는 장애물 추가
    • 요약

  • 6. 행동 트리
    • 행동 트리의 기초
      • 다양한 노드 타입의 이해
        • 합성 노드 정의
        • 데코레이터 노드의 이해
        • 리프 노드 표현
    • 기존 솔루션 평가
    • 간단한 행동 트리 프레임워크 구현
      • 기반 Node 클래스 구현
      • 노드를 셀렉터로 확장
      • 시퀀스
      • 인버터 데코레이터 구현
      • 일반 액션 노드 생성
    • 프레임워크 테스트
      • 계획 수립
      • 씬 설정
      • MathTree 코드
      • 테스트 실행
    • 요약

  • 7. 퍼지 로직을 사용한 인공지능 개선
    • 퍼지 로직 정의
      • 바이너리 시스템 대신 퍼지 시스템 얻기
    • 퍼지 로직 사용
      • 간단한 퍼지 로직 시스템 구현
      • 세트 확장
      • 데이터 명확하게 하기
    • 최종 데이터 사용
      • 좀 더 간단한 접근법 사용
    • 퍼지 로직의 다른 사용 사례
      • 다른 개념과의 결합
      • 완전히 고유한 경험 생성
    • 요약

  • 8. 통합
    • 규칙 설정
    • 타워 생성
      • 타워 발사 처리
    • 탱크 설정
    • 환경 설정
    • 예제 테스트
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

2016. 10. 10 수정 사항

[p.173: 아래에서 3행]
시퀀스를 실패를 보고한다.
->
시퀀스는 실패를 보고한다.

[p.174: 아래에서 4행]
데코레이터(Repeater)
->
리피터(Repeater)

[p.195: 아래에서 4행]
퍼지 로직의 정미
->
퍼지 로직의 정의

[p.208: 11행]
오호지
->
오로지