New

유니티로 배우는 AI 프로그래밍 쿡북 2/e [게임 개발에서 자주 사용되는 인공지능 패턴]

  • 원서명Unity 2018 Artificial Intelligence Cookbook: Over 90 recipes to build and customize AI entities for your games with Unity, 2nd Edition (ISBN 9781788626170)
  • 지은이호르헤 팔라시오스(Jorge Palacios)
  • 옮긴이최동훈
  • ISBN : 9791161754512
  • 33,000원
  • 2020년 10월 21일 펴냄
  • 페이퍼백 | 412쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 게임 개발 프로그래밍

책 소개

요약

유니티로 게임을 개발하는데 필요한 거의 모든 인공지능 알고리즘들을 나열한 책이다. 게임을 개발하는 개발자라면 한번쯤은 고민해봤을 A* 알고리즘부터 게임에 적용할 수 있는 머신러닝 알고리즘까지 게임에서 쓰이는 다양한 인공지능 기술을 다룬다. 또한 각 주제마다 한 가지 이상의 예제를 유니티에서 사용하는 C# 형태로 제공하기 때문에, 실무에서 유니티로 게임을 제작하는 개발자에게 큰 도움이 될 것이다. 그리고 각 주제별로 이론적인 고찰도 다루므로, 게임 개발자가 아닌 일반 개발자도 여러 가지 인공지능 기술에 대한 교양을 쌓을 수 있을 것이다.

이 책에서 다루는 내용

■ A, Ambush와 같은 유명 AI 기술로 지능적인 경로를 탐색하는 에이전트 제작
■ 에이전트와 다양한 목적의 전략 알고리즘 사이에 협동 기능을 제공하는 알고리즘 구현
■ 에이전트가 환경을 고려하면서 더 나은 의사결정을 할 수 있도록 감각 흉내내기
■ 단순한 행동과 움직임을 넘어서는 의사결정 에이전트를 제작하는 데 사용하는 알고리즘 탐색
■ 그래프 자료구조나 지형지물을 다룰 때 에이전트 간의 협동 구현과 전략 조율
■ 수동 셀렉터를 만들면서 웨이포인트 구현

이 책의 대상 독자

유니티 기본 지식을 갖췄으며, AI와 게임플레이 관련 문제들을 해결하는 데 필요한 더 많은 도구를 얻고 싶은 사람들을 대상으로 한다.

이 책의 구성

1장, ‘행위 - 영리한 움직임’에서는 크레이그 레이놀즈(Craig Reynolds)와 랜 밀링톤(Ian Millington)이 함께 개발한 조작 행위(steering behavior) 원리를 기반으로 한 가장 흥미로운 움직임 알고리즘들의 일부를 탐험한다. 이 알고리즘들은 진보된 게임에서 사용하는 대부분의 AI와 길 찾기 알고리즘군 같이 움직임에 의존하는 다른 알고리즘의 근간을 이룬다.
2장, ‘내비게이션’에서는 복잡한 시나리오에서도 잘 수행되는 길 찾기 알고리즘을 소개한다. 각 목적에 맞는 그래프 구조를 사용해 세계를 표현하는 방법을 배우고, 여러 종류의 길 찾기 알고리즘을 배운다.
3장, ‘의사 결정’에서는 여러 장르에 적용할 수 있을 정도로 탄력적이고, 결정 시스템 모듈을 만들기 충분한 의사 결정 기술을 설명한다.
4장, ‘신규 NavMesh API’에서는 유니티 5.6에서 등장한 신규 NavMesh API의 내부 동작을 보여준다. 그리고 NavMesh 엔진의 파워에 대한 감을 잡을 수 있게 설명하고 NavMesh를 실시간으로 조작한다.
5장, ‘협동과 전략’에서는 그래픽은 웨이포인트와 인플루언스맵과 같은 그래프 기반 전략적 결정을 활용한 포메이션 및 기술을 다룬다. 다른 에이전트들을 전체 유기체처럼 조절하는 레시피를 다룬다.
6장, ‘에이전트 인지’에서는 에이전트의 감각 자극에 대한 시뮬레이션을 전개하는 방법을 살펴본다. 이미 알고 있는 도구(콜라이더, 그래프)를 활용해 이러한 시뮬레이션들을 만드는 방법을 알아본다.
7장, ‘보드게임과 응용 탐색 AI’에서는 턴 기반 게임 AI과 보드게임을 개발하는 데 필요한 알고리즘을 다룬다.
8장, ‘학습 기술’에서는 머신러닝을 알아본다. 머신러닝 기술을 배우고 적용하는 첫걸음이 될 것이다.
9장, ‘절차적 콘텐츠 생성’에서는 절차적으로 콘텐츠를 생성해 게임을 여러 번 플레이할 수 있도록 돕는 여러 가지 기술을 살펴본다. 다양한 종류의 콘텐츠를 생성하는 데 적합한 기준을 제시할 것이다.
10장, ‘기타 알고리즘’에서는 몇 가지 새로운 기술을 소개하고 명확한 범주에 딱 들어맞지 않는 새로운 행동을 생성하는 데 이전 장에서 배운 알고리즘을 사용한다.

저자/역자 소개

지은이의 말

인공지능(AI)을 생각하면 플레이어에게서 탈출하거나 플레이어를 따라가는 것과 같은 간단한 행동부터 전통 AI 체스라이벌, 머신러닝의 상태를 다루는(state-of-the-art) 기술 혹은 절차적 콘텐츠 제작까지 많은 주제가 떠오른다.
유니티에 대해 이야기하는 것은 게임 개발의 민주화에 대해 이야기하는 것을 의미한다. 손쉬운 사용법, 빠른 신기술 대응, 개발자 커뮤니티의 지속적인 성장과 새로운 클라우드 서비스 덕분에 유니티는 게임 산업에서 가장 중요한 소프트웨어 중 하나가 됐다.
이 책을 쓴 주요 목표는 최상의 예제와 규약을 통해 여러분에게 유니티에 대한 기술적 통찰력과 AI 개념과 기술 파악을 위한 이론적 지식을 제공하는 것이다. 그렇게 함으로써 개인과 프로 개발 무대에서 최고의 실력을 갖출 수 있을 것이다.
이 책은 훌륭한 AI를 만드는 데 필요한 도구를 소개한다. 그 도구는 더 나은 적을 만들거나 최종 보스를 빛나게 하거나 심지어 자신만의 AI 엔진을 제작하기 위한 것이다. 이 책의 목표는 유니티로 AI 기술을 개발하기 위한 최고의 참고 자료(one-stop reference)가 되는 것이다.
신나는 여정에 온 것을 환영한다. 이 여정은 프로게이머이자 인간으로서 나에게 많은 의미가 있는 것들이 조합돼 있다. 프로그래밍, 게임 개발, AI, 다른 개발자들과 함께 공유하는 여러 가지를 의미한다. 여러분이 이 책을 읽어준다는 기쁨을 어떻게 억눌러야 할지 모르겠다. 이 책이 유니티와 AI 기술 향상에 도움을 주는 것뿐만 아니라, 여러분이 만든 게임 안에서 플레이어들에게 새로운 경험을 전달하는 데 도움을 주길 희망한다.

지은이 소개

호르헤 팔라시오스(Jorge Palacios)

소프트웨어 개발자이자 게임 개발자다. 컴퓨터 과학을 전공했으며 8년의 실무 경력이 있다. 5년 동안 개발 도구 개발부터 리드 프로그래머에 이르기까지 다양한 역할을 수행하며 게임을 개발했다. 주로 인공지능 개발과 게임 플레이 프로그래밍에 집중했다. 현재는 유니티와 HTML5 관련된 작업을 진행 중이며, 게임 프로그래밍 강사, 연사, 게임잼(game-jam) 창시자이기도 하다.

옮긴이의 말

『유니티로 배우는 AI 프로그래밍 쿡북 2/e』이 출간됐습니다. 1판 번역에 이어 2판까지 번역하게 돼 큰 영광입니다.
1판이 나온 지 4년이 돼갑니다. 1판 옮긴이의 말에서 알파고에 대한 이야기를 했었는데, 그동안 IT계에도 많은 일들이 있었습니다. 이제 더이상 딥러닝은 대기업의 전유물이 아닙니다. 누구나 딥러닝과 관련된 지식을 습득하고, 실제 데이터셋을 구해서 직접 딥러닝을 본인의 애플리케이션에 이식할 수 있는 세상이 됐습니다. 앞으로의 세상은 또 어떻게 변해 갈지 궁금합니다.
이 책의 형식은 1판에서 크게 바뀌지 않고, 몇 가지 레시피가 추가되고 빠졌습니다. 전체적으로 보면 더 실무에 적합한 레시피들로 구성됐습니다. 각 레시피별 상세 설명이 부족하다고 느끼는 분들이 있을 수도 있습니다. 사실 각 레시피마다 나오는 이론을 제대로 다룬다면, 챕터 하나 이상을 할애해야 할 정도의 양이 나올 수 있습니다. 이 책은 레시피 위주의 책으로 잘 이해가 되지 않는 부분이 있거나 더 알고 싶은 내용이 있는 경우, 참고 사항에 나온 자료를 참고하거나 별도의 이론 서적을 참고하면 이해하는 데 도움이 될 것입니다. 모쪼록 이 책이 여러모로 여러분에게 도움이 됐으면 합니다.

옮긴이 소개

최동훈

고려대학교 기계공학과, 컴퓨터학과(이중전공)를 졸업했으며 현재는 캄아일랜드에 근무하고 있다. 웹 기술과 데브옵스(DevOps) 기술에 관심이 많다. 현재 회사의 인프라를 쿠버네티스 클러스터로 전환/구축해 운영하고 있다.

목차

목차
  • 1장. 행동 - 영리한 움직임
    • 소개
    • 행위 템플릿 만들기
    • 추격과 회피
    • 물리적으로 올바르게 에이전트 조정하기
    • 도착하기 및 떠나기
    • 객체 마주보기
    • 주변 배회
    • 경로 추종
    • 에이전트 회피
    • 벽 피하기
    • 가중치를 통한 행위 섞기
    • 우선순위에 의한 행위 섞기
    • 발사체 쏘기
    • 발사체의 착륙 지점 예측
    • 발사체 목표 정하기
    • 점프 시스템 제작

  • 2장. 내비게이션
    • 소개
    • 격자를 통한 세상 표현
    • 가시점을 통한 세계 표현
    • 수제(self-made) 네비게이션 메쉬를 통한 세계 표현
    • DFS를 이용한 미로 탈출 경로 찾기
    • BFS를 이용한 격자 내 최단 경로 찾기
    • 다익스트라를 이용한 최단 경로 찾기
    • A*를 활용한 가장 유망한 경로 찾기
    • 메모리 사용을 개선한 A* : IDA*
    • 다중 프레임 네비게이션 전략: 시분할 탐색
    • 경로 부드럽게 하기

  • 3장. 의사 결정
    • 소개
    • 결정 트리를 통한 선택
    • 유한 상태 기계 구현
    • FSM 향상시키기: 계층 유한 상태 기계
    • 행위 트리 구현
    • 퍼지 논리 적용하기
    • 목표지향적 행위를 통한 결정
    • 블랙보드 아키텍처 구현
    • 유니티 애니메이션 상태 기계 실험

  • 4장. 신규 NavMash API
    • 소개
    • NavMesh 구성 요소 설정
    • 다양한 에이전트를 위한 NavMesh 생성 및 관리
    • 실시간 NavMesh 데이터 생성 및 갱신
    • NavMesh 인스턴스 생애 관리
    • 다중 NavMesh 인스턴스 연결하기
    • 장애물 관련 동적 NavMesh 생성
    • NavMesh API를 활용한 행동 구현

  • 5장. 협동과 전략
    • 소개
    • 대형 다루기
    • 협동을 위한 A* 확장: A*mbush
    • 높이를 통한 웨이포인트 분석
    • 커버와 가시성을 통한 웨이포인트 분석
    • 웨이포인트 자동으로 생성하기
    • 웨이포인트 의사 결정 예시
    • 영향력 분포도(Influence maps) 구현
    • 맵 플루딩으로 영향력 개선하기
    • 컨볼루션 필터를 활용한 영향력 향상시키기
    • 싸움 주기 만들기

  • 6장. 에이전트 인지
    • 소개
    • 콜라이더 기반 시스템을 활용한 시각 기능
    • 콜라이더 기반 시스템을 활용한 청각 기능
    • 콜라이더 기반 시스템을 활용한 후각 기능
    • 그래프 기반 시스템을 활용한 시각 기능
    • 그래프 기반 시스템을 활용한 청각 기능
    • 그래프 기반 시스템을 활용한 후각 기능
    • 스텔스 게임의 인지 제작하기

  • 7장. 보드게임과 응용 탐색 AI
    • 소개
    • 게임트리 클래스 활용
    • 최소최대 구현
    • 역최대 구현
    • AB 역최대 구현
    • 역스카우팅 구현
    • 틱택토 인공지능 상대 구현
    • 체커 인공지능 상대 구현
    • UCB1로 가위바위보 AI 구현
    • 리그렛 매칭 구현
    • 소개

  • 8장. 학습 기술
    • N-Gram 예언자를 활용한 행동 예측
    • 예언자 향상시키기: 계층적 N-Gram
    • 나이브 베이즈 분류기를 활용한 학습
    • 강화 학습 구현
    • 인공 신경망 구현

  • 9장. 절차적 콘텐츠 생성
    • 소개
    • 깊이 우선 탐색 활용 미로 생성
    • 던전 및 섬 건설 알고리즘 구현
    • 풍경 생성
    • N-Gram 활용 콘텐츠 생성
    • 진화 알고리즘을 활용한 적 생성
    • 소개

  • 10장. 기타 알고리즘
    • 스크립트 객체 생성 및 관리
    • 난수 세련되게 다루기
    • 에어하키 상대 만들기
    • 레이싱 게임 아키텍처 구현
    • 러버밴딩 시스템을 활용한 레이스 난이도 관리

도서 오류 신고

도서 오류 신고

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

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

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