유니티 게임 프로그래밍 바이블

23가지 다양한 게임을 만들면서 배우는 유니티 게임 개발의 모든 것


  • 요시야 미키토, 후루카와 히데카즈, 이치죠 타카아키, 니시모리 타케토시, 무로호시 료타, 쿠루마타니 하야토, 미나토 신페이, 츠치야 츠카사, 쿠로카와 유스케, 나카무라 유이치, Garyu, 코포코포, 카세, Hataken, Monmoko 지음
  • 김은철, 유세라 옮김

  • 게임 개발 시리즈_024
  • ISBN: 9791158391362
  • 45,000원 | 2019년 03월 28일 발행 | 628쪽



《유니티 게임 프로그래밍 바이블》은 이제 막 유니티 초보자의 길을 졸업한 개발자에게 한 단계 올라설 수 있는 실력을 갖추도록 도와주는 정보를 제공한다. 계속 진화하는 유니티 개발 환경의 최신 기능 활용법을 설명함으로써 게임 개발의 효율화와 새로운 게임에 대한 도전에 두려움 없이 나아갈 수 있도록 돕는다.

가능한 한 많은 장르나 테마를 수록하여 당장 실전에서 필요한 정보뿐만 아니라 앞으로 알아 두면 게임 제작에 도움이 될 만한 정보를 총망라해서 설명하고 있어 실질적인 게임 개발에 대한 아이디어와 노하우를 익히는 데 많은 도움이 될 것이다.

★ 이 책에서 다루는 내용 ★

  • 개발 중인 게임이나 앞으로 개발할 게임에 즉시 사용할 수 있는 기술을 익힌다.
  • 전문가로 가는 유니티 고급 기술을 활용한 23개의 프로젝트를 만들면서 배운다.
  • 현업에서 활약 중인 저자들이 설명하는 완성도 높은 샘플 게임을 배우면서 소스코드나 에셋 등 모든 예제를 내려받아 실행할 수 있다.

 

도서 상세 이미지

  • 요시야 미키토 - 19장
  • 후루카와 히데카즈 - 13, 14, 15, 21장
  • 이치죠 타카아키 - 20장
  • 니시모리 타케토시 - 08, 18장
  • 무로호시 료타 - 10장
  • 쿠루마타니 하야토 - 16, 17장
  • 미나토 신페이 - 01, 02장
  • 츠치야 츠카사 - 07장
  • 쿠로카와 유스케 - 22장
  • 나카무라 유이치 - 23장
  • Garyu - 05, 06장
  • 코포코포 - 11, 12장
  • 카세 - 04장
  • Hataken - 09장
  • Monmoko - 03장

김은철([email protected])

㈜아이티에스 대표. AWS에 기반한 IoT 실시간 서비스를 개발했다. 일본 법인 ㈜아이티에스 대표 및 엘피에이캠퍼스 전임강사(C, C++, MFC, Network, Database)를 역임하고 한화S&C㈜에서 근무했다. 역서로 『유니티 5 교과서』 외 다수가 있다. 최근에는 앱, 인공지능, 블록체인 관련 사업을 하고 있다.

유세라([email protected])

일본어 전문 번역가로 활동하고 있으며 현재 ㈜컴온히어 기업 대표로 앱과 인공지능 관련 일을 하고 있다. 한국에서 영상 처리와 게임 분야의 프로그래밍을 했고 일본에서 IT 엔지니어로 활동했다. 역서로는 『유니티 5 교과서』 외 다수가 있다.

  • ▣ 01장: 3D RUN 게임
    • 샘플에서 다루는 내용
    • 샘플 게임의 플레이 방식
    • 유니티 애니메이션의 기초 지식
      • 메카님이란
      • 애니메이터의 기능
      • 애니메이터 컨트롤러의 기본
      • 스테이트 머신에서 애니메이션 동작 연결
    • RUN 게임 프로그램의 설명
      • 프로그램의 개요
      • 애니메이터 컨트롤러 에셋의 구성
      • 애니메이션을 제어하는 스크립트
    • 정리
    •  
  • ▣ 02장: 3D RUN & 사격 게임
    • 샘플에서 다루는 내용
    • 샘플 게임의 플레이 방법
    • 캐릭터를 애니메이션하는 「아바타」의 기초 지식
      • 3D 애니메이션의 기초 기술
      • 유니티에서 3D 애니메이션 기술의 활용
    • 아바타 만들기
    • 애니메이션 레이어의 설정
      • 애니메이션 레이어를 이용한 애니메이션의 합성
      • 애니메이션 레이어의 기본 조작
      • 아바타 마스크
      • 애니메이션 레이어의 동기화
    • IK(Inverse Kinematics)를 이용한 캐릭터의 자세 제어
    • 블렌드 트리
      • BlendType(블렌드의 계산 방법) 지정
    • Animator Override Controller로 실행 시 애니메이션의 교환
    • 「3D RUN 게임」의 기능 확장
      • 사격 애니메이션 만들기
      • 새로운 캐릭터 추가
    • 정리
    •  
  • ▣ 03장: 안경 언니의 거리 산책
    • 샘플에서 다루는 내용
    • 샘플 앱의 개발 환경
    • 샘플 앱의 사용 방법
    • 캐릭터의 설정
      • Rig 설정
      • Animation 설정
      • 캐릭터의 배치
    • 환경 설정
      • 스카이박스와 Ambient 설정
      • 필드 설정
    • Input 설정
      • 키보드와 마우스 조작
      • 컨트롤러로 조작
      • Input Manager 설정
    • 스크립트 설정
    • 애니메이션 설정
      • Character Controller 컴포넌트
    • 애니메이터 설정
      • Animator Controller 작성
      • 애니메이션용 변수의 설정
      • 걷는다, 뛴다, 멈춘다 애니메이션 설정
      • 낙하 애니메이션 설정
    • Cloth 설정
      • 빈 게임 오브젝트 배치
      • 캡슐의 크기와 위치 맞추기
      • Cloth 컴포넌트 설정
    •  
  • ▣ 04장: 낮과 밤이 흐르는 오픈 월드
    • 샘플에서 다루는 내용
    • 샘플 게임의 개발 환경
    • 샘플 게임의 플레이 방법
    • 프로젝트 구성
    • 필드가 되는 「Terrain」을 만들고 설정하기
      • Terrain의 개요
      • 새로운 Terrain 생성
      • 지형 에디트로 지형 만들기
      • Paint Texture를 이용한 지면 칠하기
      • Paint Details를 이용한 풀 기르기
      • Terrain Settings에서 성능 조정
    • 플레이어와 포털 만들기
      • 플레이어 만들기
      • 포털 만들기
    • 낮과 밤의 흐름을 관리하는 「SkyboxController」
      • 스카이박스란
    • Procedural Skybox를 동적으로 조작하는 「SkyboxController」
      • 「SkyboxController」의 시간 경과 처리
    • 라이트를 항상 움직이기 위해 필요한 그리기 설정
    • 정리
    •  
  • ▣ 05장: 3D 미로
    • 샘플에서 다루는 내용
    • 샘플 게임 개발 환경
    • 샘플 게임의 플레이 방법
    • 프로젝트를 구성하는 오브젝트
    • 미로 자동 생성 스크립트 설정
    • 미로 자동 생성 알고리즘
    • 캐릭터 설정
    • Hit 스크립트에서의 각종 판정
    • 미로의 메인 처리
      • 버튼 이벤트 처리
    • 그래픽의 고속화 처리
      • 카메라링
      • 오클루전 컬링
      • 렌더링 순서의 최적화(다이나믹 배치)
      • 캐릭터 뼈대의 최적화
    • 이용할 셰이더의 용도에 따라 사용 구분
    • 기타 표준 셰이더의 소개
    •  
  • ▣ 06장: 3D 두더지 잡기
    • 샘플에서 다루는 내용
    • 샘플 게임의 개발 환경
    • 샘플 게임의 사용법
    • 프로젝트를 구성하는 오브젝트
    • UI 구축
    • 게임 화면 만들기
      • 두더지 구멍 만들기
      • 두더지 구멍의 포그 설정
      • 오브젝트를 그리는 순서 변경
    • 충돌 판정하기
    • 두더지를 표시한다
    • 두더지 그래픽
    • 셀 룩 셰이더를 이용해 두더지 그리기
      • 셀 룩의 그늘 표현
      • 아웃라인 그리기
    • 파티클 이펙트 만들기
      • 두더지를 탭했을 때의 파티클 이펙트
      • 새로운 파티클 만들기
    • 자주 사용되는 파티클의 기능
      • 파티클의 움직임에 노이즈나 난기류 더하기
      • 파티클의 트레일 사용하기
      • 파티클에 텍스처 시트 애니메이션 사용하기
    •  
  • ▣ 07장: 셰이더 언어
    • 샘플에서 다루는 내용
    • 셰이더 언어로 프로그래밍
    • 렌더링 파이프라인
    • 가장 간단한 셰이더 코드의 개요
    • 가장 간단한 셰이더 코드의 정점 셰이더
      • 입출력 시맨틱스
      • 좌표 변환
    • 가장 간단한 셰이더 코드의 프래그먼트 셰이더
    • 셰이더 코드의 개량(램버트 확산 반사)
    • 마무리
    •  
  • ▣ 08장: NavMesh Can Kickers
    • 샘플에서 다루는 내용
    • 샘플 게임 개발 환경
    • 샘플 게임의 실행 방법
    • 프로젝트 구성
    • 내비게이션 시스템(NavMesh)의 기초
      • 캐릭터를 놓는다
      • 배경 설정
      • 캐릭터에 에이전트를 추가해 움직여보기
      • 마우스로 특정 지점을 클릭해 캐릭터 움직이기
      • 에이전트 설정
    • 내비게이션 시스템(NavMesh) 구현
      • 캐릭터와 애니메이션
      • 캐릭터를 점프시키기 위한 경로 설정(오프 메시 링크)
      • Jumper 스크립트를 사용해 점프하기
      • 점프의 처리
      • Climber 스크립트를 사용해 사다리 오르기
    • 내비게이션 메시 만들기
      • 신규 씬의 작성과 Navigation 창 표시
      • 내비게이션 메시의 자동 생성
      • 자동 설정의 조정
      • 오프 메시 링크를 자동으로 생성
      • 오프 메시 링크를 수동으로 생성
      • 구역의 비용
    • 깡통과 나무 상자로 내비게이션 메시에 장애물 설정
    • 트러블 슈팅
    •  
  • ▣ 09장: 2D 본 애니메이션
    • 샘플에서 다루는 내용
    • 샘플 앱의 개발 환경
    • 샘플 앱 사용법
    • 프로젝트를 구성하는 오브젝트
    • 아틀라스를 준비한다
    • 애니메이션 제작 준비
    • 캐릭터를 쌓아 올리다
    • 캐릭터에 뼈대 추가하기
    • SpriteMesh에 Bone 설정
    • 캐릭터의 모션 설정
    • 포즈 추가하기
    • 애니메이터 컨트롤러로 모션을 제어
    • Animation 기능으로 모션을 붙인다
    • 스크립트를 사용해 캐릭터 움직이기
    •  
  • ▣ 10장: 타일맵 던전
    • 샘플에서 다루는 내용
    • 샘플 게임의 개발 환경
    • 샘플 게임의 플레이 방법
    • 프로젝트의 개요
    • 타일맵을 구성하는 요소
    • 타일맵의 작성 흐름
    • 스프라이트 설정
    • SpriteAtlas 만들기
    • TilePalette 만들기
    • Tile 에셋 만들기
    • 타일맵 관련 게임 오브젝트 만들기
    • Tile 그리기
    • Collider 설정
    • TerrainTile을 사용해 효율적으로 맵 작성하기
    • GameObjectBrush로 코인 배치
    • 게임의 마무리
    • 마무리
    •  
  • ▣ 11장: 노벨 게임
    • 샘플에서 다루는 내용
    • 샘플 게임의 개발 환경
    • 샘플 게임의 플레이 방법
    • TextMesh Pro의 개요
    • 샘플 프로젝트의 구성
      • TextMesh Pro의 기능
      • TextMesh Pro로 텍스트를 표시
    • TextMesh Pro의 인스펙터
    • 머터리얼에 대한 인스펙터의 자세한 내용
    • 텍스트 입력 시 사용할 수 있는 리치 텍스트 기능
      • 루비의 사용법
      • 스타일 시트 이용 방법
      • 스프라이트 에셋(이모티콘)의 작성 방법
      • 금칙 처리
    • 폰트 에셋의 작성 방법
      • Font Asset Creator의 기능
      • 영어의 폰트 에셋 작성 방법
      • 한국어 폰트 에셋 작성 방법
    • TextMesh Pro의 강점과 약점
    • 노벨 게임 제작의 개요
      • 노벨 게임에 필요한 것
    • 노벨 게임의 프로그램 설명
      • 노벨 데이터의 구조
      • 노벨 명령의 구현
      • 노벨 명령의 실행
      • 리치 텍스트 기능의 링크 구현
    • 마무리
    •  
  • ▣ 12장: 3D 액션
    • 샘플에서 다루는 내용
    • 샘플 게임의 개발 환경
    • 샘플 게임의 플레이 방법
    • 샘플 게임에서 설명하는 개요
    • 샘플 프로젝트 구성
    • 프로그램의 설명
      • TouchInputController 오브젝트의 자세한 내용
      • BothHandVirtualPadView 오브젝트의 자세한 내용
      • Fighter(FighterController) 오브젝트의 자세한 내용
      • CameraModeEvent(CameraModeEventReceiver) 오브젝트의 자세한 내용
      • Main Camera(CameraController) 오브젝트의 자세한 내용
    • 기타 처리의 프로그램 개요
    •  
  • ▣ 13장: AR 댄스 믹스 - ARKit 대응판 -
    • 샘플에서 다루는 내용
    • 샘플 앱의 개발 환경
    • 샘플 앱의 사용 방법
    • ARKit의 개요
    • 프로젝트의 설정
    • 샘플 씬의 실행
      • iOS 기기를 사용하는 씬의 실행
    • ARKitRemote에서 AR 앱의 동작 확인
    • 프로그램 설명
      • 현실 공간의 카메라 위치와 유니티의 카메라 위치 맞추기
      • 카메라 영상을 배경으로 표시
      • 현실 공간의 밝기와 유니티 씬 내의 밝기를 맞춘다
      • 평면 검지 처리의 구현
      • 히트 테스트의 구현
      • 그림자 추가
      • 캐릭터 추가
      • 라벨 추가
    • 「Unity ARKit Plugin」의 편리한 스크립트
      • UnityARGeneratePlane 스크립트
      • PointCloudParticleExample 스크립트
      • UnityARHitTestExample 스크립트
    • ARKit 1.5의 새로운 기능
    •  
  • ▣ 14장: AR 댄스 믹스 - ARCore 대응판 -
    • 샘플에서 다루는 내용
    • 샘플 앱의 개발 환경
    • 샘플 앱의 사용법
    • ARCore의 개요
    • 프로젝트 설정
    • 샘플 씬의 실행
      • 안드로이드 기기에서 샘플 씬 실행하기
    • 프로그램의 설명
      • 현실 공간의 카메라 위치와 유니티의 카메라 위치 맞추기
      • 현실 공간의 밝기와 유니티 씬 내의 밝기를 맞춘다
      • 프레임 정보의 취득
      • 세션 정보의 취득
      • 평면 검지 처리의 구현
      • 히트 테스트의 구현
      • 그림자 추가
      • 캐릭터 추가
      • 라벨 추가
    • ARCore SDK for Unity의 편리한 스크립트
      • PointcloudVisualizer
    •  
  • ▣ 15장: VR 레이싱
    • 샘플에서 다루는 내용
    • 샘플 게임의 개발 환경
    • 샘플 게임의 사용법
    • Google VR의 개요
    • 프로젝트 설정
    • 샘플 씬의 실행
      • 유니티 에디터에서 샘플 씬 실행
      • 안드로이드 기기에서 샘플 씬 실행
      • iOS 기기에서 샘플 씬 실행
    • Instant Preview에서 VR 앱의 동작 확인
    • 프로그램의 설명
      • 유니티 에디터에서 움직이는 레이싱 게임 작성
      • 유니티 에디터에서 VR 기기의 동작 시뮬레이트
      • 카메라의 VR 대응
      • 자동차 조작의 VR 대응
      • 시선 포인터의 추가
      • X 버튼 입력으로 게임 종료
    • 데이드림 컨트롤러로 조작
    •  
  • ▣ 16장: Web 카메라
    • 샘플에서 다루는 내용
    • 샘플 앱의 개발 환경
    • 샘플 앱의 사용법
    • 샘플 앱에서 샘플 씬 재생
    • 프로그램 설명
      • WebCamTexture의 구현
      • 캡처 이미지의 생성
      • 퍼즐의 생성
    • 샘플 앱으로 얼굴 인식
      • 윈도우 애저의 개요
      • Face API의 준비
    • 샘플 앱(얼굴 인식)에서 샘플 씬 실행
    • 얼굴 인식 씬 프로그램의 설명
      • 웹 카메라로 촬영한 이미지를 Face API에 전달
      • 눈을 하트 모양으로 교체하고 특정 정보 표시
    •  
  • ▣ 17장: GPS+ 지도 운동 앱
    • 샘플에서 다루는 내용
    • 샘플 앱의 개발 환경
    • 샘플 앱의 사용 방법
    • GPS, 전자 나침반의 개요
    • Google Maps API의 준비
      • 구글 계정 생성
      • Google Static Maps API의 키 취득
      • Google Places API Web Service 사용 설정
    • 샘플 씬의 실행
    • 프로그램의 설명
      • GPS 실행
      • 맵 그래픽 요청
      • 전자 나침반의 반영
      • 주변 정보를 요청
      • 장소 이미지 요청
      • 취득한 장소 이미지를 장소 위치에 표시
      • 주변 정보를 맵에 표시하고, 점수를 환산할 때까지의 흐름
    •  
  • ▣ 18장: AssetBundle Can Kickers
    • 샘플에서 다루는 내용
    • 샘플 게임의 개발 환경
    • 샘플 게임의 플레이 방법
    • 프로젝트 구성
    • 에셋 번들의 기초
      • 에셋 번들 파일 만들기
      • 에셋 번들로부터 에셋 로드
      • 에셋 번들의 언로드
      • 씬을 에셋 번들로 만들고 로드
      • 에셋 번들로 만들 수 있는 에셋과 만들 수 없는 에셋
    • 네트워크를 통해 에셋 번들 로드하기
      • 네트워크 환경의 준비
      • 웹으로부터 에셋 번들 내려받기
      • UnityWebRequest 캐싱
    • 여러 에셋 번들의 빌드와 의존성
      • 에셋 번들 간의 의존성 해결
      • 에셋 이름으로부터 로드하는 에셋 번들 파일을 특정
      • 각 에셋 번들 파일의 변경을 검지하고 다시 내려받기
      • 에셋 번들의 캐싱 동작
    • 에셋 증가를 사용하는 압축 설정
    • 에셋 번들 로드 방법의 차이
    • 에셋 번들 간의 에셋 중복
    • 에셋 번들을 사용하기 위한 툴
      • AssetBundle Browser
      • AssetBundle Manager
      • AssetBundleGraphTool
    •  
  • ▣ 19장: 마스터 데이터 퀘스트
    • 샘플에서 다루는 내용
    • 샘플 게임의 개발 환경
    • 샘플 게임의 플레이 방법
    • 게임에서 마스터 데이터의 사고 방식과 제작 도구
      • 마스터 데이터 분리의 중요성
      • 마스터 데이터의 형식과 입력 툴의 선택
    • Excel Importer의 이용
      • Excel Importer의 개요와 데이터 임포트의 흐름
      • 유니티에 Excel Importer 추가
      • Entity 스크립트 정의
      • Excel 파일의 작성과 유니티로의 임포트
      • Excel 에셋의 생성과 Entity 클래스의 연결
      • Excel 에셋의 반영과 이용
    • 샘플 게임의 마스터 데이터 구현
      • 샘플 게임에서의 마스터 데이터
      • 마스터 데이터의 배치와 로드
      • 마스터 데이터의 이용과 모델 클래스로의 변환
      • 모델 데이터의 이용과 표시
    • 마무리
    •  
  • ▣ 20장: 사운드 처리
    • 샘플에서 다루는 내용
    • 샘플 게임의 플레이 방법
    • 샘플 프로젝트의 사용법
    • 유니티의 사운드 재생의 기초
    • 가장 단순한 사운드 재생 스크립트
      • 사운드 재생 처리 구현의 핵심 4
    • 게임에서 재생되는 소리의 종류를 나눈다
    • 사운드 컴포넌트의 설정
      • AudioClip의 설정
      • AudioSource 컴포넌트의 설정
      • AudioListener의 설정
    • 사운드 연출의 구현
      • Play 함수의 확장
      • BGM의 페이드인
      • 재생 완료 통지의 구현
    • 샘플 게임 프로젝트의 개요
    • 발소리 구현
      • 3D 사운드의 설정
      • 애니메이션과 연동한 소리의 재생
    • Audio Mixer와 볼륨 설정의 구현
      • Audio Mixer란
      • Audio Mixer의 파라미터를 스크립트로 조작
    • 기타 사운드 제어 관련 Tips
    • 마무리
    •  
  • ▣ 21장: AI 파이터
    • 샘플에서 다루는 내용
    • 샘플 게임의 플레이 방법
    • 샘플 앱 개발 환경
    • 강화 학습의 학습순서
    • 유니티 ML-Agents의 개요
    • 프로젝트 설정
    • 샘플 씬의 실행
    • 학습 환경 만들기
    • 파이썬 스크립트에서 학습
    • TensorBoard를 이용한 학습 상황 확인
    • 유니티에서의 추론
    • 프로그램 설명
      • Academy의 구현
      • Brain 구현
      • Player 설정 항목 지정
      • Heuristic 스크립트 작성
      • Agent 구현
      • 배경과 캔버스
      • 학습과 추론
    •  
  • ▣ 22장: 스마트폰 게임 최적화
    • 샘플에서 다루는 내용
    • 샘플 게임 개발 환경
    • 샘플 게임의 진행 방식
    • 최적화 처리를 하기 전의 사전 지식
    • 프로파일링의 순서
      • 유니티의 프로파일러 창
      • iOS/안드로이드 실제 기기에서의 실행을 프로파일링
    • 샘플 프로젝트의 처리 최적화
      • Physics의 최적화 실시
      • 렌더링 최적화 실시
    • 프로파일링하지 않고 수정 작업을 할 때
    •  
  • ▣ 23장: 동영상 광고 넣기
    • 이 장에서 다루는 내용
    • 동영상 광고가 주목받는 이유
    • 스마트폰 앱의 동영상 광고 종류
    • 동영상 광고의 구현 방법
      • 동영상 광고로 확보해 두고 싶은 데이터
      • 동영상 광고 구현의 핵심
    • 유니티 애즈(Unity Ads)의 특징
      • 유니티 애즈 대시보드의 편리한 기능
    • 유니티 애즈로 동영상 광고 출간
    • 마무리