《유니티 게임 프로그래밍 바이블》은 이제 막 유니티 초보자의 길을 졸업한 개발자에게 한 단계 올라설 수 있는 실력을 갖추도록 도와주는 정보를 제공한다. 계속 진화하는 유니티 개발 환경의 최신 기능 활용법을 설명함으로써 게임 개발의 효율화와 새로운 게임에 대한 도전에 두려움 없이 나아갈 수 있도록 돕는다.
가능한 한 많은 장르나 테마를 수록하여 당장 실전에서 필요한 정보뿐만 아니라 앞으로 알아 두면 게임 제작에 도움이 될 만한 정보를 총망라해서 설명하고 있어 실질적인 게임 개발에 대한 아이디어와 노하우를 익히는 데 많은 도움이 될 것이다.
★ 이 책에서 다루는 내용 ★
- 개발 중인 게임이나 앞으로 개발할 게임에 즉시 사용할 수 있는 기술을 익힌다.
- 전문가로 가는 유니티 고급 기술을 활용한 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)의 특징
- 유니티 애즈 대시보드의 편리한 기능
- 유니티 애즈로 동영상 광고 출간
- 마무리