Top

Unity 3 Game Development Hotshot 한국어판 [기능별 집중 구현을 통한 유니티 게임 개발]

  • 원서명Unity 3 Game Development Hotshot (ISBN 9781849691123)
  • 지은이제이트 위타야번딧
  • 옮긴이조형재
  • ISBN : 9788960772588
  • 30,000원
  • 2012년 01월 02일 펴냄
  • 페이퍼백 | 400쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 게임 개발 프로그래밍

책 소개



중급 이상의 개발자를 위한 프로젝트 중심의 유니티 개발서다. 이 책은 2D 스프라이트 게임, 메뉴 UI, 셰이더 작성, 캐릭터 컨트롤러, 애니메이션 제어, 인공 지능, 물리, 파티클 시스템, 저장과 불러오기 같은 실제 개발에서 반드시 접하게 되는 주제를 수준 높은 맞춤 프로젝트를 통해 다룬다. 스크립팅을 중심으로 특정 기능의 구체적인 구현 방법을 설명하고, 개발 전반에서 적용할 수 있는 유니티 핵심 기능의 활용 방안을 소개한다.


[ 소개 ]

유니티의 다양한 기능과 가능성을 최대한 활용할 수 있는 8가지 게임 프로젝트

『Unity 3 Game Development Hotshot 한국어판』은 수준 높은 게임 경험을 만들기 위해 반드시 알아야 하는 유니티 엔진의 다양한 기능을 설명한다. 재미와 난이도를 함께 갖춘 8가지 프로젝트에 대한 단계별 설명과 다양한 도표와 그림으로 독자의 학습을 돕는다. 이 책은 유니티에 대한 독자의 이해와 기술을 한 단계 끌어올린다.

독특하고 흥미로운 프로젝트
■ 스프라이트 기반의 플랫폼 게임을 제작한다. 점프와 중력 같은 물리 효과를 추가하고, 2D 게임에서 3D 오브젝트를 활용하는 방법을 배운다.
■ RPG에 사용할 수 있는 수준의 완성도 있는 메뉴 UI를 만든다.
■ 3D 스튜디오 맥스에서 만든 모델을 유니티로 불러오고, 커스텀 셰이더를 만들어 적용한다.
■ 걷기, 뛰기, 쉬기, 점프하기, 떨어지기 같은 다양한 애니메이션 클립을 제어한다.
■ 로켓 론처를 구현하고, 불과 연기 파티클 효과를 추가한다.
■ 1인칭 슈팅 게임을 위한 인공 지능을 갖춘 몬스터를 만든다.
■ 파괴할 수 있는 대상으로 구성된 상호작용적 환경을 만든다.
■ 게임을 저장하거나 불러온다. 그리고 플레이어의 최고 점수를 온라인에 등록한다.

[부록 CD 수록]
■ 유니티 3.4.2 무료 버전
■ 2011 유니티 프로모션 영상


[ 이 책의 구성 ]

1장 2D 플랫폼 게임: 이 프로젝트는 스프라이트 애니메이션 기반의 2D 플랫폼 게임의 제작 방식을 소개한다. 카메라에서 Orthographic과 Perspective 간의 차이점, 배경 카메라와 캐릭터 카메라의 설정, mainTexture와 mainTextureOffset를 이용한 2D 스프라이트 제작, 스프라이트 시트 설정, 점프와 중력의 구현을 살펴본다.

2장 RPG 메뉴: 이 프로젝트는 1장의 프로젝트를 이용해 대부분의 RPG에 등장하는 화려하고 복잡한 UI를 구현한다. OnGUI()를 이용해 메뉴 윈도우를 만든다. 여기에는 다른 하위 메뉴로 이동할 수 있는 탭 버튼, 아이템 관리, 무기와 방어구 교체, 아이템과 스킬 선택 기능이 포함된다.

3장 캐릭터 모델과 셰이딩: 3D 맥스에서 만든 캐릭터를 FBX 파일을 통해 올바른 크기와 방향 유지하며 유니티로 불러오는 방법을 소개한다. 그 다음 유니티 3.0부터 지원하기 시작한 표면 셰이더를 이용해서 커스텀 셰이더를 작성한다.

4장 캐릭터 컨트롤러와 애니메이션: 걷기, 뛰기, 쉬기, 점프하기, 떨어지기 애니메이션을 설정하고, 내장된 3인칭 컨트롤러를 수정해서 커스텀 컨트롤러를 만든다. 또한 캐릭터 컨트롤러(Character Controller)와 애니메이션 교차 페이드(Cross Fade)를 사용하고, 캐릭터를 따라다니는 카메라를 구현한다.

5장 커스텀 컨트롤러와 무기 구현: 레지던트 이블 스타일의 1인칭 컨트롤러를 구현한다. 그리고 로켓 론처와 로켓을 만들고, 프리팹(Prefab)과 Instantiate를 통해 오브젝트의 인스턴스를 만드는 방법을 설명한다.

6장 인공 지능: 5장의 프로젝트가 계속된다. 인공지능을 구현해서 캐릭터를 추적하고, 공격하고, 특정 경로를 따라 이동하는 똑똑한 몬스터를 만든다. 또한 Gizmo 클래스를 이용해서 몬스터의 이동 방향을 시각화하는 방법도 소개한다.

7장 변형 가능한 게임 월드: 씬에 물리가 적용되는 오브젝트를 배치해서 캐릭터가 근처를 이동하거나, 오브젝트를 공격할 경우에 반응하게 한다.

8장 저장과 불러오기: playerPref을 이용해서 점수를 저장하고, 불러오고, 서버에 올리는 방법을 설명한다.

부록 A 주요 함수: 유니티 스크립팅 레퍼런스(Unity scripting reference) 내용을 토대로 Awake()나 Start() 같은 주요 함수에 대해 상세히 설명한다.

부록 B 코루틴과 Yield: 유니티 스크립팅 레퍼런스의 내용을 토대로 코루틴과 Yield의 개념과 사용법을 소개한다.

부록 C C#과 자바스크립트의 차이점: 유니티 스크립팅 레퍼런스와 유니티 문답 포럼(Unity answer)의 내용을 통해 두 스크립트 언어 간의 차이점을 설명한다.

부록 D 셰이더와 Cg/HLSL 프로그래밍: 셰이더 구조, Cg/HLSL 언어, Cg/HLSL의 기본 함수에 대한 설명과 함께 유니티 스크립팅 레퍼런스와 엔비디아(NVIDIA) 사이트의 관련 내용을 소개한다.


[ 부록 CD 설명 ]

이 책에 포함된 부록 CD에는 유니티 코리아에서 제공하는 유니티 3.4.2 무료 버전이 들어있다. 무료 버전은 30일간 유니티 프로 기능을 맛볼 수 있는 체험판으로도 활용 가능하다. 또한 부록 CD에는 유니티로 만든 게임을 볼 수 있는 2분 30초짜리 ‘2011 유니티 프로모션 영상’도 수록돼있다.

저자/역자 소개

[ 저자 서문 ]

별도의 비용 없이 완전한 3D 게임을 만들 수 있는 엔진, 거기에 커뮤니티의 놀라운 지원까지 더해진 엔진은 유니티밖에 없을 것이다. 이 책은 유니티를 통해 별도 비용을 들이지 않고 전문적 수준의 게임을 만드는 방법을 설명한다.

『Unity 3 Game Development Hotshot 한국어판』은 흥미롭지만 간단하지 않은 8가지 게임 프로젝트를 다룬다. 이를 통해 유저에게 수준 높은 게임 경험을 제공하기 위해 필요한 유니티의 다양한 기능을 설명하고, 상세하고 친절한 단계별 해설, 도표, 그림으로 독자의 학습을 돕는다.

모든 프로젝트는 유니티의 특정 기술을 최대한 활용하도록 설계됐다. RPG(롤플레잉게임)에 사용될 주인공을 만들고, 업그레이드 아이템과 방어구와 무기로 캐릭터를 커스터마이징 할 수 있는 RPG 메뉴를 제작한다. 뿐만 아니라 캐릭터 셰이딩(shading), 모델링, 리깅(rigging), 애니메이션 과정을 모두 거치면서, 단순한 스프라이트 캐릭터를 넘어 파이널 판타지(Final Fantasy) 속의 캐릭터 같은 모습으로 발전시켜 나간다.
대부분의 FPS 게임에서 가장 강력한 무기라고 할 수 있는 로켓 론처(rocket launcher)도 제작하고 화염과 연기 파티클 효과를 추가한다. 한편 인공지능(AI)으로 제어되는 몬스터를 만들어서 앞서 만든 캐릭터가 로켓 론처로 공격할 수 있는 대상을 제공한다. 또한 상호작용할 수 있는 게임 월드를 구현해서 로켓이 표적을 빗나갈 경우에 주변 환경에 영향을 미치게 만든다. 그 다음에는 화장실에 다녀올 경우처럼 불가피하게 게임을 중간에 멈춰야 할 경우에 대비하기 위해서 저장과 불러오기 기능을 구현한다. 마지막으로는 플레이 결과를 모두에게 알릴 수 있도록, 점수를 온라인에 올리는 방법을 살펴본다.


[ 저자 소개 ]

제이트 위타야번딧 (Jate Wittayabundit)
1980년 태국 방콕에서 출생했다. 예술과 수학에 관심이 많았던 제이트는 2003년 건축학 학사학위를 취득했고, 몇몇 회사에서 인테리어 디자이너로 근무했다. 2005년 캐나다 오타와로 건너와 2008년 알공퀸(Algonquin) 칼리지에서 게임 개발 프로그램 과정을 수료했다.
칼리지를 마친 뒤에는 론치파이어 인터랙티브(www.launchfire.com)에서 플래쉬 액션스크립트 프로그래머로 근무하면서 (델컴퓨터나 알라스카항공 같은 고객을 대상으로 한) 다양한 게임과 인터랙티브 컨텐츠를 개발했다. 본격적으로 게임 업계에서 일을 하고자 했던 그는 2009년 토론토로 이주한다. 그리고 스플래쉬워크닷컴(Splashworks.com)이란 회사에서 게임 개발자이자 3D 아티스트로 새로운 경력을 시작하게 된다. 이 회사에서는 쇼크웨이브(Shockwave)나 스위스 샬레(Swiss Chalet) 같은 고객을 대상으로 게임을 제작한 제이트는 이 과정에서 유니티를 처음 접하고 작업에 적극 활용하게 된다.
제이트는 수퍼 마리오 브라더스(Super Mario Bros) 이후로 게임 플레이의 재미에 푹 빠졌다. 그리고 건축가로서의 자신의 경력이 개발자로서의 장점이라고 믿고 있다. 실제 세계를 가상 세계로 변모시키는 방식에 대한 컨셉과 아이디어에 도움이 되기 때문이다.
여가 시간에는 지브러쉬(Zbrush)나 맥스(3D Studio Max) 같은 3D소프트웨어를 가지고 놀거나, 회화나 드로잉을 즐긴다. 최근에는 자신의 건축 지식과 3D 기술을 통해 혁신적인 게임을 개발하기 위해 노력하는 중이다.
www.jatewit.com을 방문하면 그의 작업을 직접 확인할 수 있다.


[ 옮긴이의 말 ]

게임 개발 과정에서 특정 문제를 다룰 때, 개발자는 효과(effectiveness)와 효율(efficiency)을 함께 고려해야 한다. 여기서 효과란 게임 디자인이 정한 범주 안에서 게임 시스템과 플레이어의 상호작용이 야기하는 다양한 문제에 얼마나 포괄적이고, 체계적으로 대비하느냐에 관한 것이다. 이에 비해 효율은 그러한 문제를 얼마나 적은 비용으로 간단하게 해결하느냐에 관한 것이다. 예를 들어, 게임에서 캐릭터가 점프하는 기능을 효율적으로 구현하는 것은 비교적 어렵지 않다. 그러나 체공 시간 조절, 이중 점프, 점프 상태에서의 이동, 상승과 체공과 하강에 따른 애니메이션 적용, 하강과 추락의 구분 등의 상황을 포괄하는 효과적인 점프의 구현은 어려운 문제다. 특히 효과적이면서도 동시에 효율적인 해결 방법을 찾는 것은 더욱 어렵다. 게임 개발은 일련의 문제에 대해 효과와 효율을 함께 충족시킬 수 있는 해결 방법을 찾는 과정이라고 할 수 있다.

유니티의 인기를 반영하듯 최근 해외에서 다양한 유니티 입문서가 속속 출간되고 있다. 대다수 책은 쉽고 친절한 설명을 통해 초보자가 유니티에 편하게 적응하게 하고, 빠른 시간 안에 가시적 결과를 만들어 유니티와 게임 개발에 대한 흥미와 관심을 고취한다는 점에서 분명히 의의가 있다. 그러나 입문서로서의 역할에 충실하기 위해, 개발상의 문제를 단순화하고, 효율적 측면을 중심으로 문제에 접근한다. 그 결과, 실무에서 접하는 복합적 문제에 대한 효과적 해결 방법은 입문서 이후의 과정으로 남게 된다. 상대적으로 오랜 역사를 가진 개발 도구의 경우에는 입문서와 실제 개발을 좀 더 매끄럽게 연결해 주는 중급 이상의 개발서가 존재한다. 그러나 유니티의 경우에는 안타깝게도 효과와 효율이 균형을 이루는 중급 이상의 개발서를 찾기 힘들었다. 따라서 개발서를 통해 유니티를 학습하는 독자는 입문서의 종착점과 실제 개발의 출발점 사이에 넓은 간격을 스스로 메워야 했다.

『Unity 3 Game Development Hotshot 한국어판』은 중급 수준 이상의 독자를 위한 유니티 개발서다. 앞에서 언급한 입문서에서 다루는 내용과 실제 개발 과정에서 일어나는 문제 간의 간격을 메워주는 책이라고 할 수 있다. 이 책은 입문서에서는 다루기 어렵지만, 개발에서 자주 접하게 되는 다양한 주제를 수준 높은 맞춤 프로젝트를 예로 들어가며 설명한다. 또한 문제를 단순화해서 쉽고 간단한 해법을 제시하기보다는, 체계적인 접근과 다양한 유니티 기능의 활용을 통해 복잡한 문제에 대한 효과적인 해결 방법을 소개한다. 이 과정에서 독자는 유니티 에디터와 스크립팅의 심도 있는 기능과 활용 방안을 자연스럽게 익힌다.

이 책은 입문서처럼 모든 부분을 하나하나 설명하지는 않는다. 또한 일부에서는 외부 자료를 직접 인용하면서 다소 매끄럽지 못한 연결을 보이기도 한다. 그러나 중급 수준의 독자라면 스스로 관련된 정보를 확인하면서 행간의 의미를 파악하는 과정이 더 큰 실익을 가져오리라 확신한다. 특히 중급 이상의 개발서가 부족했던 상황을 감안하면, 유니티를 공부하는 독자에게 매우 유익한 경험이 될 것이라 믿는다. 이 책의 번역이 독자 제현의 유니티 활용과 게임 개발에 작은 도움이 될 수 있기를 희망한다.


[ 옮긴이 소개 ]

조형재
서울대학교 미술대학에서 금속공예를 전공했고, 이후 3D 애니메이션 스튜디오를 거쳐 주로 게임 개발사에서 근무했다. 구체적인 약력은 개인 홈페이지(www.zorotoss.com)에서 확인할 수 있다. 2011년 현재, 한국과학기술원 문화기술대학원에서 게임 네러티브에 관한 연구로 석사 과정을 밟고 있으며, 경원대학교에서 유니티 엔진 강의를 맡고 있다. 역서로는 에이콘출판사의 『Unity 3D Game Development by Example 한국어판』, 『유니티 3D 모바일 게임 아트』, 『Unity 3 Blueprint 한국어판』이 있다.

목차

목차
  • 1장. 2D 플랫폼 게임
    • 프로젝트 소개
    • 카메라와 레벨 제작
    • 2D 캐릭터 제작
    • 캐릭터 컨트롤과 스프라이트 매니저
    • 점프와 물리
    • 열쇠와 문 제작
    • 사운드 추가와 재시작 버튼
    • 프로젝트 완료 - 정리
    • 도전 과제
  • 2장. RPG 메뉴
    • 프로젝트 소개
    • GUI Skin
    • 메뉴 오브젝트 제작
    • 상태 탭 제작
    • 인벤토리 탭 제작
    • 장착 탭 제작
    • 프로젝트 완료 - 정리
    • 도전 과제
  • 3장. 캐릭터 모델과 셰이딩
    • 프로젝트 소개
    • 맥스에서 FBX 파일 내보내기
    • 셰이더 프로그래밍 - 디퓨즈와 범프(노멀) 맵
    • 셰이더 프로그래밍 - 엠비언트와 스페큘러 라이트
    • 셰이더 프로그래밍 - 림 라이트와 툰 램프
    • 프로젝트 완료 - 정리
    • 도전 과제
  • 4장. 캐릭터 컨트롤러와 애니메이션
    • 프로젝트 소개
    • 캐릭터 애니메이션과 레벨 준비
    • 캐릭터 컨트롤러와 기본 스크립트
    • 커스텀 캐릭터 컨트롤 스크립트
    • 애니메이션 교차 페이드
    • 3인칭 카메라 제작
    • 프로젝트 완료 - 정리
    • 도전 과제
  • 5장. 커스텀 컨트롤러와 무기 구현
    • 프로젝트 소개
    • 1인칭 컨트롤러 프리팹
    • 3인칭 컨트롤러와 마우스룩 스크립트
    • 로켓 론처와 크로스 헤어
    • 로켓과 파티클
    • 잔여 로켓 UI
    • 프로젝트 완료 - 정리
    • 도전 과제
  • 6장. 인공 지능
    • 프로젝트 소개
    • 웨이포인트와 기즈모
    • 몬스터 인공지능
    • AIController 스크립트와 몬스터 애니메이션 제어
    • HP 게이지
    • 프로젝트 완료 - 정리
    • 도전 과제
  • 7장. 변형 가능한 게임 월드
    • 프로젝트 소개
    • AIController 스크립트 최적화
    • 레그돌 제작
    • 파괴되는 벽
    • 무너지는 암석과 트리거 영역
    • 프로젝트 완료 - 요약
    • 도전 과제
  • 8장. 저장과 불러오기
    • 프로젝트 소개
    • 점수 메뉴
    • 로컬 장비 점수 저장하고 불러오기
    • 서버에서 XML 데이터 불러오기
    • 서버에 점수 올리기
    • 프로젝트 완료 - 정리
    • 도전 과제
  • 부록 A. 주요 함수
    • Awake
    • Start
    • Update
    • Fixed Update
    • LateUpdate
    • OnGUI
    • OnDrawGizmos
  • 부록 B. 코루틴과 Yield
    • Yield 선언문
    • WaitForSeconds
    • WaitForFixedUpdate
    • 코루틴
    • StartCoroutine
    • StopCoroutine
    • StopAllCoroutines
  • 부록 C. C#과 자바스크립트의 차이점
    • 유니티 스크립트 지시자
    • 타입명
    • 변수 선언
    • 동적 타이핑과 변수
    • 다차원 배열 선언
    • 문자 리터럴 지원
    • 클래스 선언
    • 인터페이스 지원
    • 제너릭
    • foreach 키워드
    • new 키워드
    • YieldInstruction과 코루틴
    • 캐스팅
    • Getter와 Setter
    • 구조체 속성
    • 함수/메소드 정의
    • 참조
  • 부록 D. 셰이더와 Cg/HLSL 프로그래밍 385
    • ShaderLab 속성
    • 표면 셰이더
    • Cg/HLSL 프로그래밍

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안