유니티 최신 버전과 더불어 한층 더 충실하게 보강된 내용으로 돌아온 절대강좌 유니티 5 !이 책은 유니티 5 최신 버전을 바탕으로 독자와 함께 3인칭 슈팅게임(TPS)을 제작하는 과정을 통해 게임 개발에 필수적인 기술과 기법을 자연스럽게 습득할 수 있게 구성돼 있다. 유니티 개발 경험이 없는 독자에게는 친절하고 자세한 설명으로 유니티 게임 개발의 큰 그림을 그릴 수 있게 안내하며, 이제 막 초급 개발자를 벗어난 독자에게는 실무 활용도가 높은 각종 이펙트와 게임 개발 기법을 제시함으로써 실전에서도 충분히 활용할 만한 내용을 다룬다.예제 스크립트는 C#으로 진행하며, 주인공 3D 모델의 임포트, 이동 로직, 총 발사 로직 및 충돌 판별과 같은 기초적인 내용부터 적 캐릭터(NPC)의 인공지능을 유한상태머신(FSM)으로 구현하고 오브젝트 풀링 기법을 통해 성능을 향상시키는 고급 개발 기법까지 소개한다. 또한 게임 개발에 반드시 필요한 추적 알고리즘은 내비게이션 메쉬를 사용해 구현하며, 실제 게임 개발에 자주 사용되는 기법이지만 좀처럼 자료를 찾기 힘든 총구 화염(Muzzle Flash), 혈흔 효과(Blood Effect), 래그돌(Ragdoll), 레이캐스트(Raycast), 터치 이동 로직 등과 같은 기법도 직접 게임을 만들면서 구현해본다.3인칭 슈팅 게임 제작 과정이 끝난 후에는 네트워크 게임을 개발하는 데 필요한 기법도 자세하게 소개하고 서드파티 네트워크 게임엔진인 포톤클라우드를 활용하여 온라인 탱크 대전게임(PvP)을 개발하는 과정을 다룬다. 마지막으로 유니티 5에 도입된 새로운 유니티 UI에 대해 소개하며, 새로 도입된 유니티 UI로 게임 개발을 진행하면서 다양한 UI를 활용해 볼 수 있게끔 구성하였다.
유니티 최신 버전과 더불어 한층 더 충실하게 보강된 내용으로 돌아온 절대강좌 유니티 5 !이 책은 유니티 5 최신 버전을 바탕으로 독자와 함께 3인칭 슈팅게임(TPS)을 제작하는 과정을 통해 게임 개발에 필수적인 기술과 기법을 자연스럽게 습득할 수 있게 구성돼 있다. 유니티 개발 경험이 없는 독자에게는 친절하고 자세한 설명으로 유니티 게임 개발의 큰 그림을 그릴 수 있게 안내하며, 이제 막 초급 개발자를 벗어난 독자에게는 실무 활용도가 높은 각종 이펙트와 게임 개발 기법을 제시함으로써 실전에서도 충분히 활용할 만한 내용을 다룬다.예제 스크립트는 C#으로 진행하며, 주인공 3D 모델의 임포트, 이동 로직, 총 발사 로직 및 충돌 판별과 같은 기초적인 내용부터 적 캐릭터(NPC)의 인공지능을 유한상태머신(FSM)으로 구현하고 오브젝트 풀링 기법을 통해 성능을 향상시키는 고급 개발 기법까지 소개한다. 또한 게임 개발에 반드시 필요한 추적 알고리즘은 내비게이션 메쉬를 사용해 구현하며, 실제 게임 개발에 자주 사용되는 기법이지만 좀처럼 자료를 찾기 힘든 총구 화염(Muzzle Flash), 혈흔 효과(Blood Effect), 래그돌(Ragdoll), 레이캐스트(Raycast), 터치 이동 로직 등과 같은 기법도 직접 게임을 만들면서 구현해본다.3인칭 슈팅 게임 제작 과정이 끝난 후에는 네트워크 게임을 개발하는 데 필요한 기법도 자세하게 소개하고 서드파티 네트워크 게임엔진인 포톤클라우드를 활용하여 온라인 탱크 대전게임(PvP)을 개발하는 과정을 다룬다. 마지막으로 유니티 5에 도입된 새로운 유니티 UI에 대해 소개하며, 새로 도입된 유니티 UI로 게임 개발을 진행하면서 다양한 UI를 활용해 볼 수 있게끔 구성하였다.
▣ 01장: 유니티 5 소개
유니티 게임 엔진의 탄생
유니티 5의 장점
- 멀티 플랫폼 지원
- 통합 개발 환경(IDE)
- 모든 기능의 무료화 정책
- 빌트인 미들웨어
- 정보 공유를 위한 커뮤니티 활성화
- 애셋스토어
유니티로 만들어진 게임
유니티 다운로드
- 유니티 설치
- 유니티 라이선스 옵션 선택
- 유니티 계정 생성 및 로그인
유니티 인터페이스
- 뷰
- 툴 바
- 단축키 설정
정리
▣ 02장: 게임 개발 준비
개발할 게임 소개 및 개발 순서
새 프로젝트 생성
통합 개발 환경 조정
Project 뷰의 체계적인 관리
캐릭터모델 임포트하기
애셋스토어 계정 생성
Project 뷰에서 애셋스토어 접속
애셋스토어에서 리소스 내려받기
정리
▣ 03장: 게임 스테이지 제작
3D 모델
텍스처
머티리얼
텍스처 적용
셰이더 및 물리 기반 셰이딩
- 렌더링 모드
- 알베도
- 메탈릭 속성
- 노멀 맵
- 하이트 맵
- 오클루전
- 이미션
- 디테일 마스크
바닥의 음영 표현 - 노멀 맵 적용
프리팹
프리팹을 이용한 벽 만들기
조명
- Directional Light
- Point Light
- Spot Light
- Area Light
하늘 표현 방식
- 6방면 스카이박스
- 프로시저럴 스카이박스
- 큐브맵 스카이박스
정리
▣ 04장: 주인공 캐릭터 제작
빈 게임오브젝트
3D 모델 임포트 및 옵션 설정
컴포넌트
스크립트 생성
키보드 입력값 받아들이기
캐릭터 이동
- 컴포넌트 캐시 처리
- 게임오브젝트의 이동
- Translate 함수
정규화 벡터
캐릭터 회전 - Rotate
카메라 추적 ? Follow Cam
레거시 애니메이션
애니메이션 클립
애니메이션 컨트롤
애니메이션 블렌딩
실시간 그림자
Projector를 이용한 그림자
Plane Mesh를 이용한 그림자
정리
▣ 05장: 발사체 제작 및 이펙트
총알 모델 준비
Rigidbody 컴포넌트
물리 엔진 속성 설정 - Physics Manager
Collider 컴포넌트
- Box Collider
- Sphere Collider
- Capsule Collider
- Mesh Collider
- Wheel Collider
- Terrain Collider
충돌 감지 조건
충돌 이벤트
Tag 활용
총알 발사 로직
총알 발사궤적 효과 만들기 ? Trail Renderer
파티클 활용하기
폭발 효과 및 폭발력 생성
무작위로 텍스처 적용하기
사운드 ? AudioSource, AudioListener
총구 화염 효과 ? Muzzle Flash
정리
▣ 06장: 적 캐릭터 제작
몬스터 3D 모델 임포트
메카님 애니메이션으로 전환
애니메이터 컨트롤러
- 애니메이션 스테이트 전이
내비게이션 - 몬스터 추적 루틴
- 내비게이션 설정 및 베이크
- Nav Mesh Agent
인공지능 구현
몬스터 공격 루틴
몬스터 피격 리액션
혈흔 효과
데칼 ? 바닥에 흩뿌려지는 혈흔 효과
몬스터 공격 능력 부여
특정 레이어 간의 충돌 감지
메카님 캐릭터의 본 구조 최적화
몬스터 공격 중지 - Tag
몬스터 공격 중지 ? Delegate, Event
몬스터 사망 처리
정리
▣ 07장: 유니티 UI
Canvas 객체
- EventSystem 객체
- Canvas 컴포넌트
Rect Transform 컴포넌트
- 앵커프리셋
anchoredPosition 속성
- 앵커 속성
Image 컴포넌트
- Simple
- Sliced
- Tiled
- Filed
RawImage 컴포넌트
Button 컴포넌트
- Transition 속성
Text 컴포넌트
- Text Effects
Scroll Rect 컴포넌트
- Content 속성
- Mask 컴포넌트
스코어 UI 구현
- PlayerPrefs를 활용한 스코어 저장
생명 게이지 구현
정리
▣ 08장: 게임 매니저
몬스터 출현 로직
게임 매니저에 접근하는 방법
싱글턴
오브젝트 풀
공용 함수 ? 사운드 처리
정리
▣ 09장: 레이캐스트 활용
레이캐스트
드럼통 폭발
레이저 빔 구현
▣ 10장: 내비게이션 고급 기법
동적 장애물
Off Mesh Link Generation
사용자 정의 Off Mesh Link
▣ 11장: 라이트매핑, 라이트 프로브
라이트매핑
- Generate Lightmap UVs 옵션
- Lightmap Static 플래그
- Lighting 뷰
- 라이트맵 베이킹 준비 과정
- Continuous Baking 옵션
- 라이트맵 빌드
- Area Light
라이트 프로브
- Light Probe Group
- Anchor Override
정리
▣ 12장: Scene 분리 및 병합
Scene 분리
Scene 병합
▣ 13장: 유니티 빌트인 네트워크
네트워크 게임의 정의
네트워크 게임의 물리적 구조
네트워크 통신 프로토콜
유니티 빌트인 네트워크
- 네트워크 뷰
- 상태 동기화
- 원격 프로시저 호출
유니티 네트워크 게임의 절차
- 게임 서버 초기화
- 피어의 게임 접속
- 피어 간의 통신
네트워크 버전 개발
- 프로젝트 생성 및 초기화
- 스테이지 제작
- 플레이어 제작
- Character Controller 이동 로직
- 네트워크 매니저 생성
- 실행 파일 빌드
- 접속 네트워크 사용자 수 확인
- 네트워크 플레이어 제작
- 카메라 추적 로직
- 부드러운 동기화 처리(OnSerializeNetworkView)
- 발사 루틴(RPC 호출)
- 애니메이션 동기화
- 총알의 충돌 체크
- 사망 및 리스폰 처리
- 접속종료 처리
정리
▣ 14장: 포톤 클라우드를 활용한 네트워크 게임
유니티 차세대 네트워크 게임 엔진 - UNET
서드파티 네트워크 게임 엔진
포톤네트워크 게임 엔진
- 포톤 서버 vs. 포톤 클라우드
- 회원가입
탱크 대전게임 제작
- 탱크 이동 로직
- 무한궤도 애니메이션
- 카메라 추적 로직 및 카메라 피봇 위치 설정
- 터렛 회전
- 포신 각도 조절
- 포탄 프리팹 생성 및 발사 로직
- 포탄 발사 효과음
Photon Unity Networking 플러그인 설치
탱크게임을 포톤 클라우드 버전으로 변경하기
- 포톤 클라우드 접속
- 랜덤 매치 메이킹
- 룸 만들기
- Photon View
- 탱크 동적 생성
- 빌드 및 접속 테스트
- 자신의 탱크 컨트롤
- 부드러운 이동 및 회전 처리
- 터렛과 포신의 동기화
- 포탄 발사
- 탱크 피격 및 리스폰
로비 제작
- 로비 씬 제작
- 로그인 UI 제작
- 게임 룸으로 입장
- 탱크 HUD 제작
- 룸 만들어 입장하기
- 룸 목록 UI 구현
- 룸 목록 받아오기
- 버튼 이벤트 동적 연결
베틀 필드 세부 기능
- 접속 플레이어 표시하기
- 룸 나가기
- 접속 로그 표시
- 이벤트 훅
스코어 판별 및 표시 기능
유니티에서 데이터베이스 연동하기
- JSON
- SimpleJSON
- 스코어 정보 데이터베이스 저장
- 랭킹 정보를 데이터베이스에서 수신
정리
▣ 15장: 실감 나는 게임 구현을 위한 유용한 기능
래그돌
- 프로젝트 생성 및 리소스 내려받기
- 스테이지 제작
- 3D 모델의 래그돌 생성
스크린 터치
- ScreenPointToRay 함수
- Touch 클래스
- 유니티 리모트 4
터치로 이동하기
정리
▣ 부록: 데이터베이스
데이터베이스
- 데이터베이스와 데이터베이스 관리 시스템(DBMS)
- 데이터베이스 서버
- SQL
- DBMS의 데이터 관리
- 테이블
- 칼럼과 로우
- SQL