이미 소장하고 있다면 판매해 보세요.
|
소개
__유니티 소개 ____유니티의 다운로드와 설치 __프로젝트 위자드 ____Open Project 탭 ____Create New Project 탭 ____패키지 __프로젝트 설정 ____프로젝트 구조 ____폴더 구조화 ____파일 이름 규약 1장 유니티 개발 환경 구축 __Welcome Screen __유니티 인터페이스 ____메뉴 ____툴바 ____Hierarchy ____Inspector ____Project 브라우저 ____Scene 뷰 ____Game 뷰 __요약 __연습 문제 2장 애셋 구축 __파일 포맷 ____3D 포맷 ____2D 파일 포맷 __애셋 임포트 ____유니티 내부 애셋 임포트 ____이미 제작된 애셋을 파일 브라우저에서 임포트하기 ____애셋 생성 __임포트 패키지 ____유니티 패키지 ____사용자 패키지 __게임오브젝트 ____첫 번째 게임오브젝트 ____게임오브젝트 생성 __컴포넌트 ____컴포넌트 생성 ____컴포넌트 지정 ____프리팹 __요약 __연습 문제 3장 스프라이트 제작 __2D 작업하기 ____2D 행동 ____2D 작업 공간 __스프라이트 빌드 ____임포트 세팅 ____Pixels To Units ____스프라이트 에디터 __스프라이트 패킹 ____패킹 태그 ____스프라이트 패커 ____추가적인 스프라이트 리소스 패킹 __요약 __연습 문제 4장 게임 월드 제작 __레벨 디자인 101 ____씬 설정 ____로드맵 만들기 ____세부 사항 추가 __씬 둘러보기 ____씬 기즈모 ____원근법과 등거리법의 비교 ____카메라 조작 __유니티에서 오브젝트 조작 ____트랜스폼 툴 ____Z 깊이 ____세팅 __첫 번째 레벨 ____게임오브젝트 수동으로 위치시키기 ____게임오브젝트 배치를 위한 스냅 세팅의 사용 ____그리드 스내핑을 통한 게임오브젝트 위치 잡기 ____효율적인 레벨 디자인 ____정렬 요소 추가 __계속하기 __요약 __연습 문제 5장 기본 이동, 플레이어 컨트롤 __유니티3D 코딩 ____세 언어 __ __ ‘올바른’ 언어 선택하기 __플레이어를 ‘움직이게’ 만들자 ____이동 처리를 위한 방법 ____PlayerController의 생성과 연결 __추적 카메라 세팅 __인풋 매니저 소개 __에러 처리 및 디버깅 ____예외 처리 ____Try-Catch-Finally: 우아한 예외 처리법 ____여러분의 친구 Debug.Log( ) ____브레이크 포인트를 이용한 게임 중단 __요약 __연습 문제 6장 씬에 애니메이션 추가 __애니메이션을 위한 몇 가지 룰 ____애니메이션 원리들 ____2D 애니메이션과 3D 애니메이션의 비교 ____트랜스폼과 프레임 애니메이션의 비교 ____스크립트 애니메이션 ____애니메이션 임포트 __애니메이션 생성 ____애니메이션 컴포넌트 ____애니메이션 클립 ____애니메이션 윈도우 ____애니메이션 이벤트 __애니메이션 상태 ____애니메이터 컨트롤러 ____애니메이터 컴포넌트 ____Animator 윈도우 ____플레이어 컨트롤러 편집하기 __상태 기계 작업하기 ____전이 ____Any State ____블렌드 트리 __요약 __연습 문제 7장 플레이어 물리, 충돌체 설정 __물리의 이해 ____질량 ____중력 ____ __2D와 3D의 차이 ____6DoF ____Z-깊이 ____회전 __2D 물리 세팅 ____일반 물리 세팅 ____레이어 컬리전 매트릭스 __강체 __충돌체 ____원 충돌체 ____박스 충돌체 ____모서리 충돌체 ____다각형 충돌체 __피직스 메터리얼 __콘스트레인트 __요약 __연습 문제 8장 게임 플레이 시스템 제작, 적용 __유니티의 트리거 볼륨 ____Trigger2D 함수 ____게임오브젝트에 트리거 컴포넌트 추가하기 __체크 포인트 만들기 ____Checkpoint 컴포넌트 스크립트 ____체크 포인트 트리거의 크기 조절과 배치 __리스폰과 함께 체크 포인트 사용하기 ____구덩이 트리거 볼륨 준비하기 ____Pit Trigger 컴포넌트 스크립트 __수집품 만들기 ____수집을 위한 공중에 있는 코인 준비 ____CoinPickup 컴포넌트 스크립트 ____수집을 위한 뻥! 터지는 코인 준비하기 ____코인 박스 프리팹 준비하기 ____Coin Box 컴포넌트 스크립트 ____CoinSpawner 컴포넌트 스크립트 ____모든 것을 합치기 ____다듬기 __플레이어 상태 추적 __요약 __연습 문제 9장 적 만들기와 난이도 조절 __적 만들기 ____슬라임 게임오브젝트 준비하기 ____상속과 EnemyController 컴포넌트 ____Enemy Slime 컴포넌트 스크립트 ____레벨에 벽 추가하기 ____슬라임들끼리 충돌 처리하기 ____슬라임에 애니메이션 추가하기 __데미지 입히기 ____PlayerStats 컴포넌트에 데미지 처리 기능 추가하기 ____데미지 트리거 만들기 ____플레이어 통과하기 ____구덩이에 데미지 기능 추가하기 ____무적 기능 추가하기 ____고전적인 방법으로 무적을 표현하기 __플레이어 죽음 처리 __플랫포밍의 확장 ____움직이는 플랫폼 프리팹 준비하기 ____Flight Point 컴포넌트 스크립트 __두 번째 적 만들기 ____Fly Enemy 게임오브젝트 준비하기 ____Fly Enemy에 애니메이션 추가하기 ____FlyController 컴포넌트 스크립트 ____FlightPoints 스크립트 수정하기 __적 배치하기 유지하기 ____스폰 트리거 준비하기 ____SpawnTrigger 컴포넌트 스크립트 __도전에 대한 몇 마디 __요약 __연습 문제 10장 메뉴 제작과 인터페이스 다루기 __UI 디자인 ____다이어제틱 ____비다이어제틱 ____메타 ____스페이셜 __유니티 네이티브 GUI ____GUI 스타일 ____GUI 스킨 ____GUI 컨트롤 ____조합 컨트롤 ____GUI 클래스 ____GUI 레이아웃 ____GUI 텍스트 ____GUI 텍스처 __스플레시 스크린 만들기 __타이틀 스크린 __게임 오버 스크린 __게임 승리 스크린 __HUD ____외관 만들기 ____스크립트 만들기 __요약 __연습 문제 11장 게임오브젝트에 이펙트 적용 __슈리켄 파티클 시스템 도입 ____알아야 할 용어들 ____파티클 시스템 만들기 __파티클 시스템의 모듈, 속성 ____기본 파티클 시스템 속성 ____다른 파티클 시스템 모듈들 ____파티클 시스템 커브 __게임에 파티클 이펙트 추가하기 ____코인 박스를 위한 파티클 이펙트 만들기 ____코인 박스 파티클 이펙트 사용하기 ____데미지를 위한 파티클 이펙트 만들기 ____코드로 데미지 파티클 시스템 호출하기 ____파티클을 가지고 놀아 보자 __유니티의 오디오 시스템 ____오디오 소스 컴포넌트 ____오디오 리스너 컴포넌트 ____오디오 리버브 존 컴포넌트 __플레이어에 사운드 추가하기 ____걷기 애니메이션에 사운드 추가하기 ____점프 이벤트에 사운드 추가하기 ____데미지 이벤트에 사운드 추가하기 __수집 아이템에 사운드 추가하기 ____코인 박스에 사운드 추가하기 ____코인 먹을 때 사운드 추가하기 __applying some extra polish ____카메라 로직 정리하기 ____죽음 처리 개선하기 __요약 __연습 문제 12장 프로젝트 구성, 최적화 __애셋 구성 ____프리팹 구성하기 ____라벨 ____계층 __스크립트와 코드 구성 ____스크립트 파일 관리하기 ____코드 관리하기 __최적화 ____프리팹 ____물리 ____드로우 콜 ____스프라이트 ____삼각형 개수 ____배칭 ____렌더링 통계 윈도우 __요약 __연습 문제 13장 모든 것을 합치기 __레벨 묶기 ____승리 트리거 프리팹 준비하기 ____승리 트리거 스크립트 만들기 ____코인 값 복구하기 __인트로 스크린 사용하기 __승리, 실패: 게임 재시작 ____게임 오버에서 게임으로 되돌아가기 ____게임 클리어에서 다시 시작하기 __게임 빌드, 배포하기 ____웹 플레이어를 위한 빌드 세팅 ____PC, 맥, 리눅스 스탠드 얼론 빌드 세팅 ____크로스플랫폼 플레이어 세팅 ____웹 플레이어의 플레이어 세팅 ____우리가 설정할 것들 ____웹 플레이어를 위한 게임 빌드 ____게임을 웹에 올리기 ____배포 후 처리 __앞으로 나아가기 ____고려할 만한 개선점 ____유료화 모델 __마지막으로 14장 UGUI __UGUI 컴포넌트들 __예제 인터페이스 만들기 ____Canvas 컴포넌트 ____Rect Transform ____UI Rect 도구 ____마스크 추가 ____이벤트 시스템, 이벤트 트리거 __요약 부록 자바스크립트 코드 예제 __Player 스크립트 __Collectible 스크립트 __Enemy 스크립트 __게임 시스템 스크립트 __GUI 스크립트 __위험 요소 스크립트 __시스템 스크립트 |
|
★ 이 책에서 다루는 내용 ★
■ 유니티 개발 환경 설정, 툴 사용법 ■ 애셋 제작과 임포트와 게임에 사용할 패키지 추가 ■ 게임 스프라이트 설정, 유니티 2D 툴을 사용한 아틀라스 제작 ■ 키프레임을 이용한 스프라이트 애니메이션, 애니메이션 컨트롤러, 스크립팅 ■ 2D 게임 월드 제작의 처음부터 끝까지 ■ 플레이어 컨트롤 설정 ■ 올바르게 동작하는 움직임 제작 ■ 플레이어 물리, 충돌체 설정 ■ 클래식 게임 플레이어 제작 및 적용 ■ 위험 요소 구현, 난이도 조절 ■ 게임에 오디오, 파티클 이펙트 적용 ■ 게임 인터페이스, 메뉴 제작 ■ 부드러운 에러 핸들링을 위한 디버그 코드 작성 ■ 게임 리소스 구성, 퍼포먼스 향상을 위한 최적화 ■ 웹에서 플레이 가능한 게임 배포 ★ 이 책의 대상 독자 ★ 이 책은 게임을 처음부터 끝까지 만들어보는 과정을 배우고 싶은 사람들을 위해 쓰여졌다. 가령 초기 게임 아이디어부터 시작해, 계획, 디자인, 게임 제작, 배포하는 과정을 모두 포함하고 있다. 또한 유니티를 처음 사용하거나 유니티의 2D 기능을 배우고자 하는 사람에게 도움이 될 것이다. 스프라이트를 만들고 이를 이용해 스프라이트 아틀라스, 2D 물리, 게임 스크립트, 오디오, 애니메이션 제작에 이르는 모든 과정을 배울 수 있다. 유니티의 거의 모든 부분에 대해 자세히 살펴본다. ★ 이 책의 구성 ★ 1장, 유니티 개발 환경 구축 유니티의 인터페이스, 프로젝트 계층 구조, 초기 프로젝트 설정을 다룬다. 2장, 애셋 구축 게임에서 사용할 게임 애셋들을 임포트하고 유니티 엔진이 어떻게 게임오브젝트(GameObject)를 사용하는지 이해한다. 게임 컴포넌트가 어떻게 동작하는지 기본 개념을 배우고, 복잡한 동작을 위해 어떻게 구성하는지 배운다. 마지막으로 서드파티 애셋, 패키지를 어떻게 임포트해서 게임 환경에 접목시키는지도 배운다. 3장, 2D 스프라이트 제작 2D 게임 플레이 제작을 위한 스프라이트 에디터, 유니티 프로에 있는 기능 몇 가지를 배운다. 4장, 게임 월드 제작 이미 만들어진 프리팹 게임오브젝트를 이용해 게임 플레이어가 돌아다닐 월드를 만든다. 게임오브젝트를 배치하려면 트랜스폼 툴을 어떻게 사용하는지, 레이어를 이용한 스프라이트 정렬은 어떻게 하는지를 알아본다. 마지막으로 스프라이트를 그룹화하고 부모-자식 관계의 설정, 씬 뷰, 계층 구조에서 이런 것을 관리하기 쉬운 이름 규칙을 배운다. 5장, 기본 이동, 플레이어 컨트롤 스크립트를 만드는 방법과 사용자 입력에 따라 게임오브젝트를 움직이는 함수, 게임에 필요한 메커니즘을 어떻게 스크립트로 제작하는지 배운다. 마지막으로 유니티에서 사용하는 프로그래밍 언어의 장, 단점을 간단히 알아보고 스크립트를 디버깅하는 방법에 대해 배운다. 6장, 씬에 애니메이션 추가 게임오브젝트와 스프라이트를 위해 애니메이션을 어떻게 설정하고 만드는지 배운다. 트랜스폼과 프레임 애니메이션의 차이점을 설명하고 애니메이터 상태 기계를 이용해 2D 스프라이트 행위를 어떻게 만드는지 배운다. 여기서 우리 게임에서 사용될 캐릭터의 메커니즘을 만든다. 7장, 플레이어 물리와 충돌체 설정 2D, 3D 게임오브젝트에 어떻게 물리를 추가하는지 배운다. 게임오브젝트에 충돌체를 설정하고 최고의 퍼포먼스를 내기 위해 어떤 작업을 해야 하는지 알아본다. 마지막으로 게임오브젝트에 힘을 반영해 어떻게 동적인 장면을 만들 수 있는지 배운다. 8장, 게임 플레이 시스템 제작과 적용 게임 플레이를 위한 요소, 예를 들어 집을 수 있는 아이템, 체크 포인트, 리스폰 같은 것을 어떻게 만드는지를 배운다. 유니티의 트리거 시스템을 어떻게 사용하는지 배우며, 게임 플레이에 관련된 게임 디자인 이론에 대해서도 간략하게 알아본다. 9장, 적 만들기와 난이도 조절 기본적인 적 만드는 방법과 어떻게 스크립트를 작성하는지 배운다. 데미지 처리를 위해 데미지 스크립트를 작성하고 스포닝(Spawning) 로직을 통해 적을 언제 생성하는지 배운다. 마지막으로 게임 플레이에 관련된 난이도 조절에 대한 이론을 배운다. 10장, 메뉴 제작과 인터페이스 다루기 게임에 필요한 가장 기본적인 메뉴와 더불어 게임 내 플레이어 HUD를 어떻게 만드는지 배운다. 메뉴에 따라 사용자 입력을 어떻게 처리하는지도 알아본다. 11장, 게임오브젝트에 이펙트 적용 애니메이션, 이펙트, 오디오와 같은 애셋들을 더 추가해서 어떻게 게임을 더 돋보이게 하는지를 배운다. 유니티 파티클 시스템에 대해 배우고, 오디오 리스너와 이펙트를 어떻게 게임 요소에 추가하는지 배운다. 12장, 프로젝트 구성과 최적화 다양한 플랫폼에 게임을 배포하려면 최적화가 필요한데 이를 위한 최적화 팁과 권고 사항들을 알아본다. 마지막으로 프로젝트를 구성하는 팁과 파일 처리에 대해 알아본다. 13장, 모든 것을 합치기 우리가 만든 게임을 유니티 웹 플레이어, 다른 플랫폼으로 어떻게 배포하는지를 배운다. 또한 성공적인 게임 출시와 수익을 위한 모범 사례들을 알아본다. 마지막으로 게임을 웹으로 어떻게 출시하는지 배운다. 14장, UGUI 14장은 보너스 장으로 유니티 4.6에 추가된 UGUI 시스템에 대해 배운다. UGUI 인터페이스와 관련된 컴포넌트, 마지막으로 새로운 Rect 트랜스폼 컴포넌트에 대해 배운다. ★ 지은이의 말 ★ 이미 시중에 유니티 엔진을 이용한 수많은 책들이 있음에도 불구하고 ‘왜 또 유니티 책이지?”라고 물음을 가질 수 있겠다. 이 물음의 답은 우리는 유니티 엔진을 이용해 2D 게임을 개발하는 책을 쓰고 싶었기 때문이었다. 3D 메시, 월드 표현, 게임 메커니즘을 다룬 유니티 책은 많았지만 2D 플랫포머 게임을 개발하는 책은 지금까지 없었다. 또한 게임을 만들기 위해 간단하고 구현하기 쉬운 방법을 제시하고 싶었다. 게임을 만드는 일은 오랜 시간과 노력이 필요한데, 이것은 제작비와 연관되므로 인디 개발자가 피하고 싶은 것이기도 하다. 이 책에서 만드는 게임에 필요한 애셋, 소프트웨어는 모두 공짜다! 마지막으로 게임 프로젝트를 최대한 작게 유지하려고 노력했다. 유니티를 처음 접하는 사람이라고 하더라도 애셋, 스크립트를 제작할 수 있도록 배려했고, 예제와 이미지를 최대한 많이 제공하려고 노력했다. ★ 옮긴이의 말 ★ 이 책은 게임 엔진 유니티를 사용해 2D 플랫포머 게임을 처음부터 끝까지 만드는 방법에 대한 책입니다. 개인적으로도 유니티를 사용해 다양한 장르의 게임을 개발했는데 항상 사용하면서 느끼지만 정말 편리하게 잘 만들었다는 느낌을 받습니다. 유니티는 게임 개발용으로 많이 사용하지만 실제로 게임 개발만 할 수 있는 도구가 아닙니다. 유니티는 건축 VR에도 사용되며 상호 작용 가능한 전자책과 같은 컨텐츠 개발에도 사용됩니다. 심지어는 노래방 기계에 사용되는 프로그램도 개발 가능합니다. 현재 유니티 게임 엔진은 매우 다양한 분야에서 사용되고 있으며 계속해서 사용자 편의성을 추가해 개선되고 있습니다. 이 책에서는 유니티 엔진을 이용해 2D 게임을 개발하는 방법을 다루고 있으며 특히 인디 게임 개발에서 가장 인기 있는 플랫포머라는 장르에 특화되어 처음부터 끝까지 개발하는 방법을 다루고 있습니다. 플랫포머 장르의 특징은 게임 월드가 존재하고 캐릭터를 움직여 점프나 타격 같은 액션을 취해 지정된 목표 지점이나 적들을 물리치는 것이 일반적입니다. 〈슈퍼 마리오〉, 〈록맨〉, 〈마계촌〉과 같은 게임을 생각하면 플랫포머라는 장르가 어떤 게임인지 짐작할 수 있습니다. 게임에 등장하는 적들의 인공 지능, 타이밍에 맞춰 플레이어에게 도전 거리를 제공하는 시스템, 사운드를 플레이 하는 방법, 움직이는 장애물 구현과 같은 플랫포머 게임 개발에 필요한 다양한 방법들을 다루고 있어 따라 해보면서 프로젝트를 진행하면 간단한 수준의 플랫포머 게임을 혼자서 만들어 볼 수 있습니다. 아무쪼록 이 책이 독자 여러분께 도움이 되길 바라며. |