이미 소장하고 있다면 판매해 보세요.
|
1장 3D 세계로의 입문
___3D에 대한 기본적 이해 ______좌표계 ______로컬 공간과 월드 공간 ______벡터 ______카메라 _________프로젝션 모드: 3D 대 2D ______폴리곤, 에지, 버텍스, 메쉬 ______재질, 텍스처, 셰이더 ___리지드바디 다이나믹스 ______충돌 감지 ___유니티의 주요 개념 ______유니티적 방식 ______애셋 ______씬 ______게임오브젝트 ______컴포넌트 ______스크립트 ______프리팹 ___인터페이스 ______씬 뷰와 계층 패널 _________컨트롤 도구 _________비행모드 _________컨트롤 바 _________검색 상자 _________Create 버튼 ______인스펙터 ______프로젝트 패널 ______게임 뷰 ___요약 2장 프로토타이핑과 기본 스크립팅 ___첫 유니티 프로젝트 ___기본 프로토타이핑 환경 ______씬 세팅 ______라이팅 추가 ______벽 만들기 _________원본 벽돌 만들기 _________스냅 기능 _________빈 게임오브젝트를 이용한 그룹과 복사 ______벽돌 벽과 게임 메카닉 _________시점 설정 ___스크립팅 ______behavior 스크립트 또는 class ______C# 스크립트의 구조 _________기본 함수 _________C#에서의 변수 ______자바스크립트의 구조 _________자바스크립트에서의 변수 _________주석 ______공격 ______퍼블릭 변수 선언 _________스크립트 지정 _________카메라 이동 _________지역, 프라이빗, 퍼블릭 변수 ___Translate 의 이해 ______Translate 적용 ___게임 테스트 ______발사체 제작 _________발사체 프리팹 제작 _________재질의 생성과 적용 _________물리와 리지드바디 적용 ___프리팹으로 저장하기 ______발사체 발사 ___Instantiate()를 이용한 오브젝트 생성 ______리지드바디에 힘 추가 ___요약 3장 배경 제작 ___게임 디자인 ___지형 편집기 ______Terrain 메뉴 _________하이트맵 불러오기와 내보내기 _________Set Resolution _________Mass place trees _________Flatten Heightmap _________Refresh tree and detail prototypes ______지형 도구 _________Terrain (Script) _________Raise height _________Paint height _________Smooth Height _________Paint Texture _________Place Trees _________Paint Details _________Terrain Settings ______지형 제작: 태양, 바다, 모래 _________단계 1: 지형 설정 _________단계 2: 섬 형태 잡기 _________단계 3: 화산 _________단계 4: 텍스처 적용 _________단계 5: 나무 _________단계 6: 잔디 _________단계 7: 라이팅 _________단계 8: 사운드 _________단계 9: 스카이박스 _________단계 10: 바다 _________단계 11: 탐색 _________단계 12: 수정 ___요약 4장 플레이어 캐릭터와 스크립팅 ___인스펙터를 이용한 작업 ______태그 ______레이어 ______프리팹과 인스펙터 ___캐릭터의 구조 ___First Person Controller 오브젝트 분석 ______부모 자식 관계의 문제 ______First Person Controller 오브젝트 _________오브젝트 1 : First Person Controller (부모) _________오브젝트 2: Graphics (자식) _________오브젝트 3: Main Camera(자식) ___스크립팅 심화 ______커맨드 ______변수 _________변수 데이터 타입 _________변수 사용 ___예제 ______함수 _________Update() _________OnMouseDown() ______커스텀 함수 작성 _________반환 타입 _________인자 ______커스텀 함수 선언 _________커스텀 함수 호출 ______If else 선언문 ______다중 조건 _________For 루프 ___스크립트 간의 호출과 닷 문법 ______다른 오브젝트 접근 ______Find()와 FindWithTag() ______SendMessage ______GetComponent _________모바일 프로그래밍 _________닷 문법 ______주석 _________추가 자료 ___캐릭터 이동을 위한 스크립팅 ______스크립트 분석 _________전체 스크립트(자바스크립트) ______변수 선언 _________이동 정보 저장 _________캐릭터 이동 _________지면과의 접촉 확인 _________@script 커맨드 ___요약 5장 상호작용 ___외부 모델링 패키지 ______모델 불러오기 설정 ______메쉬 ______노멀과 탄젠트 ______재질 ______애니메이션 ______애니메이션 압축 ___초소 모델 설정 ___초소 모델 추가 ______위치 ______회전 ______충돌체 추가 ______리지드바디 추가 ______오디오 추가 ______자동 애니메이션 비활성화 ___충돌과 트리거 ___레이캐스팅 ______프레임 간의 계산 문제 ______충돌 예측 ___초소 문 열기 ______접근 1: 충돌 감지 _________새로운 애셋 제작 _________캐릭터 충돌 감지 스크립팅 ______접근 2: 레이캐스팅 _________주석 처리를 통한 충돌 감지 비활성화 _________코드 이동: DoorManager 스크립트 _________PlayerCollisions 스크립트 정리 _________가상선 그리기 _________충돌체 초기화 ______접근 3: 트리거 충돌체 감지 _________트리거 영역의 생성과 조정 _________트리거 충돌체 스크립팅 ___요약 6장 수집, 인벤토리, HUD ___전지 프리팹 제작 ______내려받기, 불러오기, 배치 ______전지 태그 작업 ______충돌체의 크기와 회전 _________전지 확대 _________트리거 충돌체 추가 _________충돌체 크기 ______리지드바디 추가 ______전지 스크립트 _________회전 효과 ______트리거 충돌체 감지 추가 ___전지 배치 ___플레이어 인벤토리 스크립트 ______충전 값 저장 _________변수 초기 값 설정 _________오디오 피드백 ______CellPickup() 함수 추가 _________플레이어에 인벤토리 추가 ___초소 접근 제한 ______전지 개수를 이용한 접근 제한 ___전지 HUD ______GUItexture 불러오기 설정 ______GUITexture 오브젝트 생성 ______PowerGUI 텍스처 배치 ______텍스처 교체 스크립팅 ______배열의 이해 _________HUD 배열 추가 _________HUD 배열에 텍스처 지정 _________HUD 비활성화 _________HUD의 런타임 활성화 _________발전기 추가 ______문 잠금 상태 표시 _________라이트 추가 _________라이트 색상 변경과 HUD 제거 ___플레이어를 위한 단서 ______GUIText를 이용한 텍스트 _________GUIText 스크립팅 _________진행 상황을 보여주는 단서 _________폰트의 사용 ___요약 7장 인스턴스 생성과 리지드바디 ___인스턴스 생성의 활용 ___리지드바디 ______포스 ______리지드바디 컴포넌트 ___미니 게임 제작 ______코코넛 프리팹 _________코코넛 텍스처 _________물리 효과 적용 _________프리팹으로 저장 ______발사 지점 ______코코넛 발사 스크립트 _________입력 확인 _________피드백 사운드 재생 _________코코넛 인스턴스 생성 _________인스턴스 이름 짓기 _________속도 지정 _________개발 안전장치 ______최종 점검 ______인스턴스 생성의 제한과 오브젝트 정리 _________코코넛 던지기 활성화 ______코코넛 던지기 훈련장 _________불러오기 설정 _________코코넛 제거 _________배치 _________자동 애니메이션 비활성화 _________움직이는 부분에 리지드바디 추가 _________코코넛 충돌 감지 스크립트 _________스크립트 지정 _________추가 표적 배치 ______승리 조건 _________변수 선언 _________승리 조건 확인 _________스크립트 지정. _________적중된 표적 개수 관리 ______마무리 _________크로스헤어 추가 _________메시지 전달 ___요약 8장 파티클 시스템 ___파티클 시스템 ______파티클 이미터 ______파티클 애니메이터 ______파티클 렌더러 ___퀘스트 제작 ______관련 애셋 ______모닥불 모델 추가 ______모닥불 파티클 시스템 _________불 효과 _________타원형 파티클 이미터 설정 _________연기 효과 _________음향 효과 추가 ______모닥불 지피기 _________성냥 추가 _________성냥 GUI _________성냥 수집 _________모닥불 지피기 ___테스트 ______문제점 _________추가 조건을 통한 안전 장치 ___요약 9장 메뉴 디자인 ___인터페이스와 메뉴 ______씬 생성 _________섬 복사 _________GUI를 위한 텍스처 설정 _________게임 타이틀 추가 ___GUITexture와 마우스 이벤트를 이용한 메뉴 제작 ______시작 버튼 추가 ______GUITexture 버튼 스크립트 ______씬 불러오기 ______퍼블릭 변수 지정 ______버튼 테스트 ______안내 버튼 추가 ______나가기 버튼 추가 ______Debug 커맨드 ___Unity GUI 클래스와 GUI 스킨을 이용한 메뉴 제작 ______게임오브젝트 비활성화 ______메뉴 제작 _________퍼블릭 변수 선언 _________OnGUI() 함수 _________GUI 요소 배치 _________GUI 스킨을 이용한 스타일링 _________GUI 버튼 배경 _________GUI 버튼의 폰트 크기 _________버튼 기능 스크립팅 _________안내 페이지 추가 ___요약 10장 애니메이션의 기초 ___승리 시퀀스 ______승리 시퀀스 제작 방식 ______승리 ______승리 메시지 제작 _________GUI 요소 배치 _________GUITexture 그룹화 ______Lerp를 이용한 애니메이션 _________애니메이션 수정 _________승리 시퀀스 저장 ______Win 오브젝트 생성 ______페이더와 애니메이션 창 _________다양한 해상도에 따른 크기 변경 _________페이더 애니메이션 _________애니메이션 패널 _________애니메이션 클립 생성 _________키프레임 만들기 _________애니메이션 커브 _________애니메이션 이벤트 추가 _________로딩 GUI _________애니메이션 이벤트로 씬 불러오기 _________로딩 GUI의 저장과 인스턴스 생성 ______승리 시퀀스 불러오기 ______GUITexture 레이어링 ______도전 과제: 페이드 인 ___요약 11장 최적화와 최종 다듬기 ___지형 다듬?와 플레이어 위치 ______지형 다듬기 _________나무 배치 ______언덕, 골짜기, 텍스처 블랜딩 _________해변 _________길 ___플레이어 배치 ___최적화 ______카메라 클리핑 플레인과 안개 ______라이트매핑 _________섬의 라이트매핑 _________라이트매핑 준비 _________라이트맵 굽기 _________동적 오브젝트 복구 ___최종 다듬기 ______화산! _________파티클 시스템 배치 _________연기 재질 _________파티클 시스템 설정 _________음향 효과 추가 _________화산 테스트 ______코코넛 트레일 _________프리팹 편집 _________트레일 렌러더 컴포넌트 _________프리팹 업데이트 ___요약 12장 게임 빌딩과 공유 ___빌드 옵션 ______웹 플레이어 _________웹 플레이어 스트림드 ______PC 또는 Mac 스탠드얼론 ______Mac OSX 대시보드 위젯 ___빌드 세팅 ___플레이어 세팅 _________크로스 플랫폼 세팅 _________플랫폼별 세팅 ___품질 세팅 ___플레이어 입력 세팅 ___게임 빌드 ______웹 빌드를 위한 수정 _________플랫폼에 따른 나가기 버튼 처리 _________스트리밍 준비 ______첫 빌드 _________스탠드얼론 빌드 _________무료 버전과 프로 버전 ______웹 빌드 _________웹 빌드의 임베딩 ___공유 ______Kongregate.com ___요약 13장 테스트와 향후 개발 ___경험을 통한 학습 ___테스트와 마무리 ______공개 테스트 _________프레임 레이트 피드백 _________성능 최적화 ___향후 학습을 위한 자세 ______가급적 많은 베이스를 커버하라. ______바퀴를 다시 발명할 필요는 없다. ______모르면 물어라! ___요약 |
|
게임 시장과 개발 환경의 변화, 그리고 무엇보다 개발의 민주화를 표방한 정책으로 인해, 유니티는 빠른 속도로 주요 게임 엔진의 하나로 자리 잡고 있다. 이에 맞춰 관련 서적이 연이어 출간되면서, 유니티를 다룬 서적도 입문서를 중심으로 수준별, 분야별, 플랫폼별로 다양성을 갖추기 시작했다. 이들 서적 대부분은 실무에서 유니티를 사용하는 개발자가 집필한 것이다. 개발자는 실무를 통해서 누구보다 심층적으로 유니티를 다루는 위치에 있다. 또한 유니티의 짧은 역사를 감안할 때, 개발자를 제외하고는 딱히 전문적 차원에서 유니티를 설명할 수 있는 사람이 없는 것도 사실이다. 이런 의미에서 개발자에 의한 유니티 개발서 집필은 당연하면서도 불가피하다.
그렇다면 개발자로서의 경험과 지식이 풍부할수록 더 좋은 책을 쓸 수 있을까? 이 질문은 단정적으로 답하기 어렵다. 냉정히 말하면 개발자로서의 역량은 필요 조건에 가깝다. 무엇을 아는 것과 다른 사람에게 그것을 전달하는 것은 별개의 일이기 때문이다. 스포츠에서 스타 선수가 반드시 명 감독이 되는 것은 아니듯이, 좋은 개발자가 좋은 선생님 또는 좋은 저자를 의미하지는 않는다. 자신만의 비밀스러운 노하우와 고급 기술을 일방적으로 전달한다고 해서 좋은 개발 서적이 되는 것은 아니다. 독자가 책을 통해 기존의 지식을 정리하고, 새로운 내용을 이해하며, 이를 통해 다음 단계로 올라설 수 없다면, 개발 서적으로서의 가치는 그리 높다고 할 수 없다. 특히 초보자를 위한 입문서의 경우는 독자의 수준과 관점을 고려해서 적절한 내용과 예시를 선별하고, 기본 원리와 활용을 연결하며, 향후 발전의 여지를 남겨 놓는 세심한 접근이 요구된다. 독자에 대한 이러한 배려는 개발에서의 경험과 지식으로는 충족될 수 없는 부분이다. 누군가에게 무엇을 설명하고 가르치겠다는 뚜렷한 목표를 갖고 접근할 때 얻을 수 있는 부분이다. 이 책을 쓴 윌 골드스톤이 얼마나 유능한 개발자인지는 알 수 없다. 그러나 경력을 보면, 그가 유니티를 가르치고 보급하는 데 뚜렷한 목표를 갖고 있었다는 사실을 알 수 있다. 일찍부터 대학에서 유니티를 강의했고, 관련된 책을 최초로 집필했으며, 유니티 테크놀로지 사 외부에서 최초로 비디오 튜토리얼을 만들어 공개했다. 그리고 현재는 이러한 경력을 바탕으로 유니티 테크놀로지사에서 교육 관련 업무를 담당하고 있다. 실제로 번역 과정에서 주고 받았던 서신을 통해서 이 책과 유니티 교육에 대한 그의 진지함과 열정을 엿볼 수 있었다. 이 책은 그가 유니티 3.x 버전에 맞게 새롭게 고쳐 쓴 초보자를 위한 유니티 입문서다. C#과 자바스크립트를 함께 다룰 정도로 철저히 초보자의 관점에서 유니티의 모든 기능에 접근한다. 그러면서도 3D의 기본 개념에서부터, 유니티 핵심 기능 활용과 실제 게임 메카닉의 구현, 나아가 게임 빌드와 배포에 관련된 내용까지를 포괄적이며 체계적으로 다룬다. 예제 코드나 완성된 프로젝트를 따로 제공하지 않는다는 점이 다소 불편할 수 있다. 그러나 이 역시 초보자의 집중을 유도하기 위한 저자의 의도라 생각한다. 한 권의 책으로 유니티를 완전히 설명할 수는 없다. 그러나 유니티를 시작하기 위해 한 권의 책을 골라야 한다면, 이 책을 추천하고 싶다. 이 책의 번역이 독자 제현과 유니티 간의 긴 인연의 좋은 시작이 될 수 있기를 희망한다. ---옮긴이의 말 중에서 |
|
게임 엔진은 우리가 익히 알고, 즐기는 게임들의 이면에서 그 게임을 돌아가게 만드는 도구다. 유니티는 가장 널리 사용되고, 사랑 받는 게임 개발 엔진이다. 게임뿐 아니라 웹, 데스크톱, 모바일, 콘솔에서의 인터랙티브한 경험을 만들기 위해 취미 개발자에서부터 대형 스튜디오에 이르기까지, 다양한 사람들이 유니티를 사용한다. 유니티가 제공하는 직관적이고 사용하기 쉬운 기능과 이 책을 통해, 이전과는 비교할 수 없을 정도로 손쉽게 게임 개발을 시작할 수 있다.
실질적인 접근을 취하는 이 책은 유니티를 이용한 개발에 들어가기 전에, 먼저 3D 게임 개발의 주요 개념을 소개한다. 그 다음 간단한 게임 디자인의 프로토타입을 거쳐, 본격적으로 더 큰 규모의 게임 개발로 들어간다. 이 과정에서 3D 월드 제작, 스크립팅, 게임 메카닉 구현과 같이 게임 개발의 필수 요소를 다룬다. [부록 CD 수록] ■ 유니티코리아 제공 유니티 3.5 무료 버전 ■ 유니티 프로모션 영상 ★ 이 책에서 다루는 내용 ★ ■ 유니티 3.X 이후 버전을 이용한 게임 개발과 C# 또는 자바스크립트를 이용한 스크립팅 ■ 게임 개발에 첫 발을 내딛고, 손쉽게 플레이 가능한 3D 게임 제작 ■ 스크립팅, 물리, 인스턴스 생성, 파티클 효과 등의 게임 개발의 주요 개념 이해 ■ 핵심적인 팁과 노하우를 통해 게임을 테스트하고 최적화 ■ 멋진 3D 섬을 만들고, 미니 게임을 추가 ■ 유니티에 내장된 지형과 외부에서 제작한 모델을 함께 사용하는 배경 제작 방식 ■ 플레이어 캐릭터의 상호작용 ■ 메뉴, HUD, 아이템 수집 기능 구현 ★ 이 책의 대상 독자 ★ 개임 개발과 프로토타이핑을 처음 경험하는 아티스트나 애니메이터, 또는 마음 한 구석에 게임 개발에 대한 꿈을 품고 몇 시간씩 게임을 플레이하는 사람이라면, 유니티와 이 책이 좋은 출발점이 될 수 있다. 게임 개발에 대한 사전 지식은 따로 필요치 않다. 게임 개발에 대한 열정만 있으면 된다. ★ 이 책의 구성 ★ 1장. 3D 세계로의 입문: 3D에서의 작업에 대한 기본 개념과 유니티를 이용한 게임 개발을 설명한다. 3D 개발에 대한 기본적 내용을 설명한 후에는 유니티 에디터를 구성하는 주요 인터페이스 요소를 살펴본다. 2장. 프로토타이핑과 기본 스크립팅: 실습을 통한 학습이라는 취지 하에, 간단한 게임 메카닉의 프로토타입을 만들면서 유니티에 대한 본격적인 설명을 시작한다. 유니티를 통한 첫 번째 상호작용을 구현하는 과정에서 C#과 자바스크립트를 만나게 된다. 3장. 배경 제작: 유니티를 다루기 위한 기본적인 사항을 익혔으므로 지형 도구를 이용해서 실제 배경 제작에 들어간다. 4장. 플레이어 캐릭터와 스크립팅: 배경이 일차적으로 완성됐기 때문에 여기서는 유니티에서 플레이어 캐릭터를 만드는 방법을 살펴본다. 캐릭터 스크립팅을 중심으로 유니티에서 다양한 상호작용을 구현하기 위해 필요한 주요 스크립팅 개념을 살펴본다. 5장. 상호작용: 유니티를 이용한 게임 개발에서 매우 중요한 세 가지 상호작용 방법을 설명하는 핵심적인 장이다. 충돌 감지, 레이캐스팅, 트리거 충돌 감지에 대해 살펴본다. 6장. 수집, 인벤토리, HUD: 다양한 상호작용 방법을 배웠다면, 여기서는 그 내용을 확장해서 플레이어의 인벤토리를 만들고, 수집된 아이템을 표시하는 HUD의 구현 방법을 살펴본다. 7장. 인스턴스 생성과 리지드바디: 다시 한 번 게임 속에서 상호작용을 만들기 위해서, 이번에는 유니티에 내장된 물리 엔진을 활용한다. 그리고 이를 애니메이션과 결합해서 미니 슈팅 게임을 만든다. 8장. 파티클 시스템: 스크립팅에서 잠시 벗어나 유니티의 시각 효과 부분을 살펴본다. 불과 연기 파티클 시스템을 이용해서 모닥불을 만든다. 9장. 메뉴 디자인: 모든 게임은 유저 인터페이스가 필요하다. 유니티에서 메뉴를 만들 수 있는 두 가지 방법, GUITexture와 GUI 스크립팅에 대해 각각 살펴본다. 10장. 애니메이션의 기초: 게임을 역동적으로 만들기 위해서는 애니메이션이 필수적이다. 게임의 종료 시퀀스를 만드는 과정을 통해서 스크립팅과 애니메이션 패널을 이용한 애니메이션 방법을 살펴본다. 11장. 최적화와 최종 다듬기: 게임플레이를 의도한 대로 구현하는 부분은 중요하다. 그러나 사람들에게 선보이기 전에 완성도 있는 모습을 갖추는 것 역시 중요하다. 게임의 시각적 완성도를 높이면서도 성능을 유지하기 위한 추가적 시각 효과와 최적화에 대해 살펴본다. 12장. 게임 빌딩과 공유: 개발자로 성장하기 위해서는 게임을 플레이어에게 공개하고 피드백을 받는 부분이 반드시 필요하다. 여기서는 게임을 독립 스탠드얼론 버전과 웹 버전으로 만드는 방법을 설명한다. 13장. 테스트와 향후 개발: 플레이어의 피드백을 받는 방법과 함께, 유니티를 이용한 개발을 이? 막 시작한 독자를 위한 몇 가지 조언을 소개한다. 또한 이 책을 끝내고 향후 유능한 개발자로 성장하는 과정에서 알아두면 좋을 자료도 소개한다. |