유니티는 현재 가장 각광받고 있는 게임 개발 엔진이다. 국내외를 막론하고 출시되는 많은 모바일 게임은 물론 게임 분야가 아닌 VR/AR, 영화, 산업 전반에서 유니티를 도입하는 추세다. 이 책은 최신 버전 유니티 2021를 이용해 게임 개발에 필요한 기능을 먼저 학습한 후 진행하는 방식이 아닌, 게임을 만들어 나가면서 필요한 기능을 알아보고 직접 구현하는 방식으로 진행한다.
유니티 2021에서 변경된 내용에 맞춰 책의 소스 코드를 다시 작성했으며 유니티 기초부터 포톤 엔진(Photon Engine)을 활용한 네트워크 게임까지 다루고 있다. 유니티의 또다른 렌더링 방식인 유니버설 렌더 파이프라인(Universal Render Pipeline)과 포스트 프로세싱(Post Processing)을 활용해 시각적인 퀄리티를 높이는 기법과 다양한 입력 방식에 대응할 수 있는 새로운 Input System의 실전 예제를 제시한다. 『절대강좌! 유니티 2021』을 끝까지 읽고 따라 하다 보면 어느새 게임 개발에 필요한 각종 지식을 습득하게 될 것이다.
저자소개
SI 업계에서 13년간 프리랜서 개발자로 주로 반도체 분야와 금융권에서 일하다가, 2008년 아이폰 게임 개발에 첫발을 내디뎠다. 이후 유니티로 전향해 1인 개발자로서 다수의 게임을 앱 스토어에 출시했다. 유니티 관련 자료가 거의 없던 2011년에 국내 최초로?유니티 동영상 강좌 사이트(www.Unity3dStudy.com)를 개설해 많은 유니티 입문자에게 무료 강좌를 제공해 왔다.?현재 유니티코리아의 공인 마스터즈 2기로 활동 중이며, 오프라인에서도 유니티 기초와 VR/AR 강좌를 진행한다. 또한 1인 개발자로서 좋은 게임을 개발하고자 노력하고 있다.
목차
01장: 유니티 엔진의 소개 리얼타임 3D 플랫폼 유니티의 장점 ____멀티 플랫폼 지원 ____통합 개발환경 ____유니티 라이선스 정책 ____정보 공유를 위한 커뮤니티 활성화 ____에셋 스토어 유니티로 만들어진 게임 및 콘텐츠 유니티 설치 ____유니티 허브에서 로그인 또는 계정 생성 ____라이선스 활성화 ____유니티 에디터 설치 유니티 에디터 소개 ____유니티 에디터 구조 ____뷰 ____툴 바의 기능 ____단축키 설정 정리 02장: 게임 개발 준비 이 책에서 개발할 게임 소개 및 개발 순서 프로젝트 생성 유니티 에디터의 환경설정 ____레이아웃 ____프로젝트 뷰의 칼럼 프로젝트 뷰의 체계적인 관리 캐릭터 모델 임포트하기 ____유니티 패키지를 통한 리소스 설치 에셋 스토어 ____무료 리소스 내려받기 정리 03장: 게임 스테이지 제작 바닥 생성 및 배치 텍스처 ____텍스처의 해상도 조절 머티리얼 ____머티리얼의 자동 적용 ____머티리얼 생성 ____Albedo, Normal Map 적용 ____머티리얼 적용 방법 ____타일링 속성 ____프리뷰의 다양한 기능 셰이더 및 물리 기반 셰이딩 ____렌더링 모드 ____알베도 ____메탈릭 속성 ____노멀 맵 ____하이트 맵 ____오클루전 ____이미션 ____디테일 마스크 프리팹 ____네스티드 프리팹 ____벽 만들기 ____프리팹 생성 ____프리팹의 복제 및 네이밍 ____스내핑 기능 조명 ____Directional Light ____Point Light ____Spot Light ____Area Light 실시간 라이트매핑 기능 ____Lighting Settings 에셋 ____Auto Generate 옵션 하늘 표현 방식 ____6방면 스카이박스 ____스카이박스 적용 ____프로시저럴 스카이박스 ____큐브맵 스카이박스 정리 04장: 주인공 캐릭터 제작 3D 모델 불러오기 유니티 엔진의 개발 방식 ____컴포넌트 기반의 개발 방식 C# 스크립트 ____스크립트 코드 에디터 ____추천하는 코드 에디터 ____코드 에디터 변경 ____C# 스크립트 생성 ____유니티의 주요 이벤트 함수 ____이벤트 함수의 호출 순서 키보드 입력값 받아들이기 ____InputManager ____GetAxis 메서드 ____스크립트 적용 방식 ____GetAxisRaw 메서드 캐릭터의 이동 ____Vector3 구조체 ____정규화 벡터 ____컴포넌트 캐시 처리 ________Translate 함수 ____Time.deltaTime ____public, private 접근 제한자 ____인스펙터 뷰에 노출된 변수의 우선순위 ____private 변수의 인스펙터 뷰 노출 ____벡터의 덧셈 연산 캐릭터 회전 - Rotate ____씬 뷰에서 가상 카메라의 이동 애니메이션 ____애니메이션 클립 ____애니메이션 적용 ____애니메이션 블렌딩 무기 장착 그림자 ____실시간 그림자 ____메시를 이용한 그림자 Level Of Detail 설정 ____LOD Group 컴포넌트 Follow Camera 로직 ____Vector3.Lerp, Vector3.Slerp ____Vector3.SmoothDamp ____Target Offset 적용 정리 05장: 총 발사 로직 총알 모델 준비 Rigidbody 컴포넌트 물리 엔진 속성 설정 - Physics Manager Collider 컴포넌트 ____Box Collider ____Sphere Collider ____Capsule Collider ____Mesh Collider ____Wheel Collider ____Terrain Collider 충돌 감지 조건 충돌 이벤트 Tag 활용 ____OnCollisionEnter 콜백 함수 ____CompareTag 함수 ____Bullet의 프리팹 전환 총알 발사 로직 ____총알의 발사 위치 ____런 모드에서 수정한 속성 ____기즈모의 활용 ____스크립트 작성 방식 총알 발사 궤적 효과 만들기 - Trail Renderer ____Trail Renderer ____프리팹의 변경 내용 조회 및 저장 파티클 활용하기 ____충돌 지점과 법선 벡터 ____쿼터니언(Quaternion) 폭발 효과 및 폭발력 생성 ____Scale Factor ____하이러키 뷰의 간략화 텍스처 변경하기 - Mesh Renderer ____폭발력 적용하기 - AddExplosionForce ____OverlapSphereNonAlloc 오디오 ____AudioListener, AudioSource 컴포넌트 ____오디오 파일 임포트 및 설정 ____오디오 임포트 옵션 - Load Type ____오디오 임포트 옵션 - Compression Format ____총소리 구현 총구 화염 효과 - Muzzle Flash ____코루틴 함수 ____MuzzleFlash의 블링크 효과 ____MuzzleFlash의 텍스처 오프셋 변경 ____코루틴의 응용 - 임계치 정리 06장: 적 캐릭터 제작유한 상태 머신의 정의 메카님 ____적 캐릭터 3D 모델 임포트 ____메카님 애니메이션으로 전환 ____애니메이션 클립 속성 ____애니메이션 리타게팅 ____Animator 컴포넌트 애니메이터 컨트롤러 ____스테이트 전이와 파라미터 내비게이션 - 적 캐릭터의 순찰 및 추적 ____내비게이션 설정 - Navigation Static Flag ____내비메시 베이크 ____NavMeshAgent 컴포넌트 유한 상태 머신 구현 ____적 캐릭터의 상태 체크 ____적 캐릭터의 행동 구현 ____애니메이션 동기화 ____몬스터 공격 루틴 ____몬스터 피격 리액션 혈흔 효과 ____Resources 폴더 적 캐릭터의 공격 능력 ____OnTriggerEnter 콜백 함수 특정 레이어 간의 충돌 감지 본 구조의 최적화 몬스터 공격 중지 ____애니메이션의 재생 속도 조절 사용자 정의 이벤트 - Delegate ____델리게이트 ____주인공의 사망 이벤트 처리 몬스터의 사망 처리 ____Root Transform Position 정리 07장: 유니티 UI 시스템유니티 UI 구현 형태 ____IMGUI ____UI Toolkit ____Unity UI ____UI 리소스 준비 Canvas 객체 ____EventSystem 객체 ____Canvas 객체의 컴포넌트 Canvas 컴포넌트 ____Screen Space - Overlay ____Screen Space - Camera ____World Space Rect Transform 컴포넌트 앵커 프리셋 ____기본 앵커 프리셋 ____Alt 키 조합의 앵커 프리셋 ____Shift 키 조합의 앵커 프리셋 ____Alt + Shift 키 조합의 앵커 프리셋 ____anchoredPosition 속성 ____Anchors 속성 Image 컴포넌트 ____Simple ____Sliced ____Tiled ____텍스처의 Wrap Mode ____Filled RawImage 컴포넌트 Button 컴포넌트 ____Transition 속성 ____Navigation ____Button Event Text 컴포넌트 스크립트에서 버튼 이벤트 처리하기 ____람다식 TextMesh Pro ____TextMesh Pro의 필수 리소스 설치 ____Text - TextMesh Pro ____TextMesh Pro의 한글 처리 ____KS X 1001 규격의 한글 2350자 생명 게이지 구현 정리 08장: 게임 매니저적 캐릭터의 출현 로직 ____SpawnPointGroup 생성 ____GameManager 객체 생성 ____Invoke, InvokeRepeate 함수 싱글턴 디자인 패턴 오브젝트 풀링 스코어 UI 구현 ____PlayerPrefs를 활용한 스코어 저장 정리 09장: 레이캐스트 활용 레이캐스트 ____DrawRay ____Raycast, RaycastHit 정리 10장: 내비게이션 고급 기법 동적 장애물 ____NavMeshObstacle 컴포넌트 Off Mesh Link Generation 사용자 정의 Off Mesh Link 자연스러운 회전 처리 Area Mask의 활용 ____경로의 가중치 정리 11장: 라이트매핑 및 라이트 프로브 전역 조명 조명 모드 ____Realtime 모드 ____Mixed 모드 ____Baked 모드 라이트매핑 ____Generate Lightmap UVs 옵션 ____Lightmap Static 플래그 ____라이팅 뷰 ____Progressive 라이트매퍼 ____라이팅 뷰의 Environment ____Baked 라이트매핑 ____라이트맵 베이크 ____Area Light 라이트 프로브 ____Light Probe Group ____Anchor Override 정리 12장: 씬 관리 Scene 분리 Scene 병합 멀티 씬 에디트 기능 정리 13장: 오클루전 컬링컬링 방식 ____프러스텀 컬링 ____거리 비례에 의한 컬링 ____오클루전 컬링 오클루전 컬링 실습 ____Occluder Static, Occludee Static 정리 14장: Input System레거시 Input 클래스 새로운 Input System의 특징 ____Input System의 구조 ____Input System의 환경 설정 ____Input System 패키지 설치 ____Active Input Handling ____테스트 환경 제작 ____Input Action 에셋 ____Control Schemes ____Action Map 및 Action 생성 ____바인딩 속성 설정 ____이동 동작의 바인딩 추가 ____공격 동작의 액션과 바인딩 추가 Player Input 컴포넌트 ____Actions 속성 ____Behavior 속성 ____Behavior - Send Messages 옵션 ____Behavior - Invoke Unity Events 옵션 ____Behavior - Invoke C Sharp Events ____Direct Binding Input Debug 정리 15장: 포톤 클라우드를 활용한 네트워크 게임 ____포톤 리얼타임 vs. 포톤 클라우드 포톤 클라우드 환경 설정 ____계정 생성 ____포톤 클라우드 어플리케이션 생성 ____유니티 프로젝트 생성 및 리소스 추가 유니버설 렌더 파이프라인 ____URP 프로젝트 생성 방법 ____새 프로젝트 생성 ____Universal RP 패키지 설치 및 URP 설정 ____포스트 프로세싱 설정 ____포스트 프로세싱 효과 스테이지 생성 ____스테이지 설치와 라이트 매핑 ____Bloom, Tonemapping 효과 주인공 캐릭터 설정 ____주인공 캐릭터 이동 및 회전 ____시네머신을 활용한 카메라 컨트롤 포톤 프로젝트 설정 ____PUN 패키지 설치 포톤 서버 접속 주인공 캐릭터의 네트워크 기능 구현 ____PhotonView 컴포넌트 ____Photon Transform View, Photon Animator View ____네트워크 환경에서 생성하기 위한 준비 ____동시 접속을 위한 테스트 환경 ____OnPhotonSerializeView 콜백 함수 ____RPC를 활용한 총 발사 로직 ____피격 및 리스폰 로비 제작 ____로비 씬 제작 ____로그인 UI 제작 ____게임 룸 입장 ____룸 목록 UI 구현 ____룸 목록 받아오기 베틀 필드 세부기능 구현 ____접속 정보 및 룸 나가기 기능 구현 ____ActorNumber 활용 정리 책을 마치며