유니티 5 게임 제작 가이드 : 초보자를 위한

34

Post on 22-Jul-2016

417 views

Category:

Documents


22 download

DESCRIPTION

주동근 지음 | 게임 개발 시리즈 _ 015 | ISBN: 9791158390006 | 38,000원 | 2015년 06월 25일 발행 | 560쪽

TRANSCRIPT

초보자를 위한

유니티 5 게임 제작 가이드

책2.indb 1 2015-06-11 오전 11:18:37

| 저 | 자 | 서 | 문 |

누군가가 글을 쓰면 소설이 되고, 그 소설에 음악을 입히면 노래가 되고, 그 노래에 영상을 입히면 영화가 되고, 그 영화

를 조작까지 할 수 있다면 그것이 바로 게임이라고 필자는 생각한다. 이러한 종합 예술의 결정체인 게임은 어떻게 만드

는 것일까?

필자는 1992년 286 컴퓨터를 통해 게임을 처음으로 접하였다. 당시 흑백 모니터를 통해 접했던 페르시아 왕자, 젤리아

드 등의 다양한 컴퓨터 게임은 정말 환상적인 경험을 선사해 주었고, 언젠가는 꼭 한번 만들어 보고 싶다는 목표이기도

하였다.

이후 인터넷의 보급과 함께 웹 사이트 제작 및 그래픽 디자인, 3D 모델링, 영상편집, 프로그래밍 등 다양한 기술들을 두

루 다뤄왔으나 게임 제작에 대해서만큼은 전문적으로 배운다는 것이 그리 쉽지 않은 일이었다. 특히, 당시 게임엔진은

상당히 고가의 비용을 내야 했으며 개인 개발자나 소규모 개발사들이 만져보는 것은 거의 불가능에 가까운 일이었다.

하지만 유니티의 등장에 모든 것은 변했다. 유니티는 저렴한 가격에 누구나 쉽게 접하고 사용할 수 있었으며 간단한 사

용법으로 전 세계에 게임 제작 붐을 불러일으켰다. 더욱이 유니티5부터 제공되는 퍼스널 에디션은 대부분의 기능 제한

마저 풀린 상태로 제작부터 출시까지 비용부담 없이 누구나 진행할 수 있게 되었다.

하지만 유니티5만 학습한다면 바로 게임을 출시할 수 있을까? 안타깝지만 NO라는 대답을 먼저 해야겠다. 여러분이 전

문적인 게임 개발자로 살아가길 원한다면 앞으로의 제작과정과 그를 위한 준비과정, 그 무엇 하나 쉽지 않은 고난의 연

속일 것이다. 하지만 너무 걱정하지 말길 바란다. 필자는 그동안 개인 개발자로서 다양한 애플리케이션과 게임을 출시

하면서 유니티와 함께 게임을 개발하는 다양한 작업방법을 연구해왔다. 만약 여러분이 처음으로 게임을 출시하기 위해

준비하는 중이라면, 또는 유니티를 배웠지만 어디서부터 시작해야 할지 모르겠다면, 이 책이 분명한 나침판이 되어줄

것이다.

4

이 책에 설명된 대부분의 예제는 에셋스토어에서 에셋을 내려받아 연습해 볼 수 있다. 하지만 스토어의 특성상 책에서

사용된 에셋의 모습과 다르거나 링크가 작동하지 않을 경우도 있다. 이럴 때는 위키북스 홈페이지에서 책에서 사용된

에셋을 내려받을 수 있다.

http://www.wikibook.co.kr/unity-5-for-beginners

책2.indb 4 2015-06-11 오전 11:18:37

| 목 | 차 |

01장

게임 개발 준비하기

01 키워드 16

02 리소스 18

2D 18

3D 오브젝트 20

사운드 22

03 유니티 엔진 23

멀티 플랫폼 25

통합개발환경(IDE, Integrated Development Environment) 25

미들웨어 25

유니티 가격 및 라이선스 규정 26

에셋 스토어 27

국내 교육 자료 및 커뮤니티 28

유나이트(Unite) 29

04 개발 환경 설정 29

활용할 수 있는 프로그램 목록 30

유니티 설치 및 환경 설정 33

Part 1게임 개발 기초

5

책2.indb 5 2015-06-11 오전 11:18:38

| 목 | 차 |

02장

유니티 인터페이스

01 뷰(View) 44

02 프로젝트 뷰(Project View) 46

03 에셋 스토어(Asset Store) 48

04 툴바(Toolbar) 50

05 씬 뷰(Scene View) 51

화면 회전 52

오브젝트 조작 53

기즈모 56

아이소메트릭(Isometric)/퍼스펙티브(Perspective) 57

컨트롤 바 58

씬의 저장과 생성 66

유용한 키 69

06 하이어라키 뷰(Hierarchy View) 70

07 인스펙터 뷰(Inspector View) 70

08 게임 뷰(Game View) 72

09 콘솔 뷰(Console View) 73

6

책2.indb 6 2015-06-11 오전 11:18:38

| 목 | 차 |

03장

프로그래밍 기초

01 스크립트 생성하기 76

모노디벨롭 79

02 함수(Function) 81

03 변수(Variable) 88

변수의 활용 93

배열(Array) 98

04 클래스(Class)와 오브젝트(Object) 104

스크립트의 클래스 연동 111

제네릭스(Generics) 117

오브젝트 컨트롤하기 119

05 제어문 121

if 문 121

switch 문 125

while 문 127

for 문 128

06 API 129

7

책2.indb 7 2015-06-11 오전 11:18:38

| 목 | 차 |

04장

유니티 활용 기술

01 물리 엔진 137

리지드바디(Rigidbody) 138

콜라이더 충돌체(Collider) 139

조인트(Joint) 163

래그돌(Ragdoll) 169

02 미들웨어 173

터레인 엔진(Terrain engine) 173

내비게이션 메쉬(Navigation Mesh) 187

오클루전 컬링(Occlusions Culling - Umbra) 200

f.mod 204

03 유니티 지원 기능 216

오디오 믹서(Audio Mixer) 216

프리팹(Prefab) 226

메카님(Mecanim) 231

유니티 2D 257

UI 297

Part 2유니티 활용 기법

8

책2.indb 8 2015-06-11 오전 11:18:38

| 목 | 차 |

05장

프로그래밍 활용

01 프로그래밍 활용 316

벡터(Vector) 316

포커스 모드(ForceMode) 318

룩엣(LootAt) 319

레이 캐스트 320

데이터 저장하기(Playerprefs) 323

코루틴(Coroutine) 325

안드로이드 API 활용 330

02 네트워크 347

통신 프로토콜 347

네트워크 뷰(Network View) 349

원격 프로시저 호출(RPC, Remote Procedure Calls) 358

03 그래픽(Graphics) 362

라이트(Light) 362

머티리얼과 물리 기반 셰이딩

(PBS : Physically Based Shading) 370

셰이더(Shader) 372

카메라 381

셰이더 랩(Shader Lab) 383

스카이 박스(SkyBox) 392

라이트 맵핑(Light Mapping) 398

프로브(Probe) 402

이펙트(Effect) 414

9

책2.indb 9 2015-06-11 오전 11:18:38

| 목 | 차 |

06장

게임 기획

아이디어와 브레인스토밍 428

01 프로토타입의 제작 431

장르와 시점 432

메카닉 구현 435

우선순위 기획(레벨 단위 기획) 444

02 최적화를 위한 준비 448

타겟 디바이스의 선정 448

셋 패스 콜(Set Pass Calls) 450

카메라 프러스텀 451

배칭(Batching) 452

스테이지 제작 454

텍스쳐 아틀라스와 크기 458

텍스쳐 제작 461

버텍스 예산잡기 463

프로파일러와 프레임 디버거 470

03 UI 분석 및 제작 472

UI 분석 472

UI 제작 476

04 게임 제작 - 나이트메어 479

Part 3게임 제작 및 등록

10

책2.indb 10 2015-06-11 오전 11:18:38

| 목 | 차 |

07장

퍼블리싱을 위한 준비

01 구글 개발자 등록 533

02 애드몹(AdMob) 계정 등록 및 광고 생성 540

03 게임 출시하기 550

11

책2.indb 11 2015-06-11 오전 11:18:38

게임 개발 기초01

PART

1장 게임 개발 준비하기

2장 유니티 인터페이스

3장 프로그래밍 기초

책2.indb 12 2015-06-11 오전 11:18:38

책2.indb 13 2015-06-11 오전 11:18:38

1. 키워드

2. 리소스

3. 유니티 엔진

4. 개발 환경 설정

게임 개발 준비하기01 장

책2.indb 14 2015-06-11 오전 11:18:38

1장 게임 개발 준비하기 15

세상에 게임만큼 재미있는 것이 또 있을까? 그런 게임을 직접 제작한다는 건 정말 즐거운 일일 것이다.

하지만 모든 작업이 그렇게 달콤하게 즐겁지만은 않을 것이다. 끊임없이 창작의 고통과 싸워야 하며 다양

한 에러와 새로운 이벤트, 그리고 최적화와의 끝없는 전쟁은 절대 만만치 않은 마라톤이 될 것이다.

게임 제작을 배우고 싶어 하는 학생들과 투자자들을 만나다 보면 이런 이야기를 많이 한다. “간단한 게임

하나 만들고 싶다”. 하지만 간단한 게임이라는 것은 플레이어의 입장에서 간단한 게임이지 개발자 입장에

서 간단한 게임은 절대로 없다. 더군다나 여러분이 직접 해봤을 정도로 명성 있는 게임이라면 더욱더 그

렇다.

게임은 IT의 꽃이다. 모든 장르를 통합해 하나로 묶어 놓은 종합 예술이다. 글이 있고, 음악이 있고, 영

상이 있으며 컨트롤까지 할 수 있다. 이런 종합적인 예술이 하루 아침에 완성될 일은 없다. 더욱이 그렇

게 어렵게 세상에 나온 게임이 홍수처럼 쏟아지는 시대다. 이런 시대에 다른 게임들 속에서 여러분이 만

든 게임이 빛을 보기란 더욱더 어렵다. 하지만 실망하지는 말기 바란다. 애당초 무언가를 창조한다는 일

은 남들이 가보지 못한 길을 가는 것이므로 지독히 외롭고 힘들어도 결국 끝까지 가는 놈이 이기기 마련

이다.

앞으로 할 일은 이렇다. 여러분의 컴퓨터에 게임을 개발할 수 있는 환경을 조성할 것이다. 그다음 유니티

라는 게임엔진의 사용법을 배운다. 그리고 프로그래밍을 간단히 학습하고 이를 유니티로 활용해보는 연

습을 한다. 이후 게임을 제작하는 순서대로 브레인스토밍(창의적인 아이디어를 생산하기 위한 학습 도구

이자 회의 기법)부터 시작할 것이다. 그리고 기획, 리소스라고 불리는 게임의 재료 제작, 개발, 테스트,

퍼블리싱 단계로 진행할 것이다.

하지만 이 책 한 권으로 여러분의 모든 갈증을 해소할 수는 없다. 앞으로 더욱 많은 정보와 자료가 필요하

게 될 것이며 이를 위한 개발자에게 가장 기본적인 소양인 구글링(검색)부터 개발자를 위한 다양한 사이

트 등을 소개하면서 인터넷에 공유돼 있는 많은 자료를 직접 내려받아 활용하며 개발자로 살아가는 법을

설명하려 한다.

책2.indb 15 2015-06-11 오전 11:18:39

Part 01 게임 개발 기초16

01 키워드

필자는 앞으로 특정 키워드를 계속해서 이야기할 것이다. 하지만 그 키워드에 대한 이해가 부족하다면 우

리는 아무 의미 없이 시간을 낭비하게 될 것이다. 그런 불상사를 방지하기 위해 기본적인 키워드를 이해

하고 넘어가자.

플랫폼(Platform)

플랫폼은 단순히 이야기한다면 하나의 운영체제 또는 컴퓨터의 아키텍처라고 할 수 있다. PC, 모바일, 콘

솔 등 그 위에 설치된 운영체제 또한 각자 다르다. 그렇기에 그 위에 돌아가는 소프트웨어 또한 다르다.

예를 들어 모바일 환경에서는 안드로이드와 애플의 iOS로 나뉜다. 이를 안드로이드 플랫폼, iOS 플랫폼

이라고 이야기할 수 있다.

툴(Tool )

툴은 말 그대로 도구, 연장이다. 맨손으로 바위에 조각할 수 없듯이 우리도 게임을 만들기 위한 각종 재료

를 제작하기 위해 다양한 툴을 사용해야 할 것이다. 이런 툴로는 2D 이미지를 편집하는 포토샵과 일러스

트, 3D 모델을 제작하기 위한 3D 맥스, 마야, 블렌더, 스케치업 등의 모델링 툴이 있다.

에디터(Editor )

에디터는 기본적으로 무엇인가 편집하고 수정한다는 의미에서 툴과 비슷하다. 하지만 문서를 편집하는

워드나 한글 프로그램을 문서 툴이라고 부르지는 않는다. 특정 숫자와 글씨 등을 수정하는 경우라면 에디

터라는 단어가 더욱 적합할 것이다.

리소스(resource)

게임을 제작할 때 사용되는 이미지, 사운드, 스크립트 등 다양한 재료를 의미한다. 추후 메모리 등을 이야기

할 때 활용할 수 있는 자원을 의미하기도 하지만 본질적인 의미에서 활용할 수 있는 재료라는 의미는 같다.

에셋(Asset )

에셋은 기본적으로 자산이라는 의미다. 리소스라는 단어와 같은 맥락이지만 앞으로 사용할 에셋은 앞서

언급한 3D 모델, 사운드의 몇 가지 리소스를 활용하기 좋게 묶어 놓은 것이라고 이해하길 바란다.

책2.indb 16 2015-06-11 오전 11:18:39

1장 게임 개발 준비하기 17

플러그인(Plugin )

플러그인은 기본적으로 소프트웨어가 제공하지 않는 별도의 기능을 제공하는 역할을 한다. 이러한 플러

그인을 이용해 기존에 없던 새로운 기능을 확장해 사용할 수 있다.

SDK(Software Development Kit )

SDK는 소프트웨어 개발 키트의 약자로 개발자가 무언가를 제작하고 싶을 때 사용할 수 있는 특정한 소

프트웨어 꾸러미라고 볼 수 있다. 유능한 개발자는 꾸러미 안에 있는 다양한 도구들의 위치와 활용법을

아주 잘 알고 있으며 다른 이들이 만들어 놓은 SDK를 잘 활용하면 여러분이 그 기능을 직접 일일이 만들

필요 없이 가져다 쓰기만 하면 된다.

API (Application Programming Interface)

SDK에서 아무리 훌륭한 기능을 제공한다 하더라도 사용할 줄 모른다면 아무런 소용이 없다. API는 운영

체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 친절한(?) 설명서라고 할 수 있다. 누군

가 만들어 놓은 SDK를 사용할 수 있게 그에 따른 설명과 사용 방법 등을 제시해 준다.

IDE (Integrated Development Environment )

IDE란 통합 개발 환경을 의미한다. 하나의 프로그램에서 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에

관련된 모든 작업을 처리할 수 있는 환경을 제공하는 프로그램을 말한다.

빌드(Build )

소스코드 파일을 해당 플랫폼에서 실행할 수 있게 컴파일 과정을 거친 뒤 독립적인 소프트웨어로 변환하

는 과정을 말한다. .exe 파일과 .apk 파일을 만들어 내는 것으로 생각하면 이해하기 쉽다.

메카닉(Mechanic )

메카닉은 게임이 실제로 어떻게 작동하는가에 관한 것이다. 게임 방식이라고도 이야기할 수 있으며 테트

리스를 예로 들면 떨어지고 있는 블록을 움직이거나 회전시키면서 다른 블록들과 한 개 이상의 직선을 만

드는 것을 메카닉이라 한다. 이처럼 메카닉은 게임의 핵심적인 기능에 대한 프로세스를 의미한다.

책2.indb 17 2015-06-11 오전 11:18:40

Part 01 게임 개발 기초18

스킨(Skin )

스킨은 게임이 어떻게 보이고 들리는지에 관한 것이다. A 버튼을 누르면 똑같이 칼을 휘두르는 RPG 게

임이라고 할지라도 그에 따른 세계관, 스토리, 뛰어다니는 캐릭터와 주제에 따라 다른 게임이 된다. 이처

럼 게임의 방식과는 상관없이 게임이 보여주는 주제를 의미한다.

02 리소스

리소스는 게임을 제작하는 데 있어서 필요한 이미지, 모델, 사운드 등 각종 재료를 의미한다. 앞으로 게임

제작을 위해 이러한 리소스를 활용해야 하므로 리소스에 대한 기본적인 이해가 필요하다.

2D

그림, 사진 등과 같은 이미지를 일반적으로 2D 분야로 구분한다. 이런 2D 분야의 이미지를 제작, 저장하

는 방식은 크게 비트맵 방식과 벡터 방식이 있다.

확대한 비트맵 이미지

확대한 벡터 이미지

[그림 1.1] 비트맵 이미지와 벡터 이미지의 차이

책2.indb 18 2015-06-11 오전 11:18:41

1장 게임 개발 준비하기 19

비트맵 방식은 직사각형의 픽셀에 각 색에 대한 정보를 가지고 있다. 그러므로 크게 확대하면 [그림 1.1]

의 오른쪽 아래에 있는 이미지처럼 깨져 보이는 현상(계단 현상)이 발생한다. 반대로 벡터 방식은 특정

포인트와 포인트를 연결하는 방식으로 아무리 확대해도 계단 현상이 발생하지 않으므로 원본 이미지, 로

고 등을 제작할 때 주로 사용한다. 비트맵 방식 이미지의 대표적인 편집/제작 툴로는 포토샵, 김프 등이

있고, 벡터 방식의 이미지 제작 툴로는 일러스트레이터, 플래시 등이 있다.

2D 애니메이션

애니메이션이란 기본적으로 여러 장의 이미지를 연속적으로 재생해 이미지가 움직이는 듯한 효과를 주는

기법을 말한다. 이러한 각 이미지를 프레임(Frame )이라 하며, 이런 이미지가 1초당 30장 이상, 즉 30프

레임 이상이 돼야 우리 눈에 자연스럽게 움직이는 것처럼 보인다. 물론 좀 더 부드럽게 움직이게 하려면

초당 60프레임 이상이 필요하다.

일반적으로 애니메이션은 영화, 만화, 드라마 등 영상 매체에서 활용되는 영상을 이야기하지만, 앞으로

게임을 제작하면서 이야기하는 애니메이션은 걷는 애니메이션, 뛰는 애니메이션 등 공격, 점프와 같은 동

작을 이야기하기도 한다.

2D 방식의 애니메이션을 제작할 때 크게 스프라이트 방식과 스켈레톤 방식으로 구분하며, 3D 방식은 모

션 캡처 등의 장비로 연기자가 직접 연출해 제작할 수 있다.

스프라이트 이미지

[그림 1.2] 스프라이트 이미지

책2.indb 19 2015-06-11 오전 11:18:41

Part 01 게임 개발 기초20

스프라이트 이미지란 2D 게임 제작에 들어가는 각종 캐릭터 및 사물 등의 애니메이션을 제작하기 위해

컷 단위로 각 동작을 저장해 놓은 이미지를 말한다.

스켈레톤 방식

[그림 1.3] 스켈레톤 방식

스프라이트 이미지는 더욱 부드러운 동작을 위해 더 많은 이미지 리소스가 필요하다는 단점이 있다. 스켈

레톤 방식은 이러한 단점을 보완하기 위해 관절별로 잘라서 그린 이미지를 이용해 움직임이 필요한 부분

의 이미지만 회전시켜 애니메이션처럼 보이게 한다.

3D 오브젝트

3D 오브젝트가 표현되는 방식은 2D보다 조금 더 복잡하다. 우선 간단히 다음 그림을 살펴보자.

Y축

X축X0, Y0

Y2

X3

X7, Y5

X3, Y2

[그림 1.4] 2차원 그래프

책2.indb 20 2015-06-11 오전 11:18:43

1장 게임 개발 준비하기 21

[그림 1.4]와 같이 좌, 우의 X축과 위, 아래의 Y축이 있는 그래프에 간단한 선을 그릴 수 있다. 이는 벡터

방식의 이미지가 그려지는 형태이기도 하다. 3D는 여기에 앞, 뒤를 나타내는 Z축이 포함된다.

Y축

X축

Z축

X, Y, Z(3, 8, 4)

X, Y, Z(10, 10, 10)

X, Y, Z(10, 0, 10)

X, Y, Z(0, 10, 10)

X, Y(3, 2)

X, Y, Z(10, 10, 0)X, Y, Z(0, 10, 0)

X, Y, Z(0, 0, 0) X, Y, Z(10, 0, 0)

X, Y, Z(8, 5, 3)X, Y, Z(2, 5, 3)

[그림 1.5] 지오메트리

간단한 예를 위해 다음과 같은 방식으로 하나씩 그려나가 보자.

1. X 축과 Y 축의 값이 10까지 있는 2차원 그래프를 그린다.

2. Z축을 추가해 3차원 그래프로 확장한다.

3. [그림 1.5]와 같은 큐브 모양의 공간이 완성된다(검은색 실선).

4. X, Y, Z(2, 5, 3) 위치에 점(Vertex)을 찍는다(노란색 화살표).

5. 점 (2, 5, 3)에서 점 (3, 8, 4)까지 선(Edge)을 그린다.

6. 점 (3, 8, 4)에서 점 (8, 5, 3)까지 선을 그린다.

7. 점 (8, 5, 3)에서 점 (2, 5, 3)까지 선을 그려 삼각형(Triangle)을 만든다.

[그림 1.5]와 같이 삼각형 모양이 완성된다. 좌표값 때문에 조금 복잡해 보일지 모르지만 중요한 건 점과

점을 연결해 선을 만들고 선과 선을 연결해 면을 만든다는 것이다.

[그림 1.6] 3차원 공간에서 그려지는 도형

3D도형

책2.indb 21 2015-06-11 오전 11:18:45

Part 01 게임 개발 기초22

[그림 1.6]에서는 3D 모델링 프로그램인 블렌더를 이용해 앞서 설명한 내용을 간단히 구현해봤다. 이 과

정을 다시 짚어보며 앞으로 사용할 작업과 용어를 확인하자

■ 3차원 공간에 하나의 버텍스(Vertex, 점)를 찍는다.

■ 2개의 버텍스가 연결되면서 하나의 엣지(Edge, 선)가 생성된다.

■ 3개의 엣지가 연결되면서 하나의 트라이앵글(Triangle, 삼각형)이 생성된다.

■ 2개의 트라이앵글은 하나의 페이스(Faces, 면)가 되며 이를 보통 1 메쉬(Mesh polygon)라 한다.

■ 3차원 공간에 페이스를 다양하게 이어붙여 하나의 3D 오브젝트를 생성한다. 이러한 과정을 모델링이라 한다.

■ 각 페이스에 머티리얼(Material, 재질)을 설정한다. 예를 들어 유리, 나무, 철, 피부 등.

■ 머티리얼이 설정된 페이스 위에 텍스쳐(Texture)라 불리는 2D 이미지를 덮어씌운다.

■ 텍스쳐를 입히는 작업을 맵핑이라 한다.

■ 맵핑까지 완료된 하나의 오브젝트에 다양한 라이트(Light, 조명)를 배치한다. 이러한 과정을 라이팅이라 한다.

■ 라이팅까지 완료되면 배치된 카메라를 기준으로 하나의 이미지 컷으로 추출한다. 이를 렌더링(Rendering)이라 한다.

■ 완성된 오브젝트를 다른 프로그램에서 사용하기 위해 파일로 추출한다. 이러한 과정을 익스포트(Export)라 한다.

■ FBX는 익스포트 시 선택할 수 있는 파일 확장자 중 하나이며 OBJ 등과 함께 가장 많이 사용되고 있다.

3D 모델링은 위와 같은 복잡한 작업을 거친다. 위 과정을 세 개로 압축하면 모델링, 맵핑, 라이팅으로 구

분할 수 있다. 이 책에서는 모델링, 맵핑 과정은 3D 맥스(3D MAX )나 블렌더 등의 외부 모델링 툴을 이

용하고, 오브젝트를 FBX 등으로 익스포트한 뒤 해당 리소스를 유니티로 불러오는 과정을 거쳐 사용할

것이다.

사운드

사운드는 게임에 생명을 불어넣는 생명수와도 같다. 하지만 대부분 개발사와 개인 개발자는 초창기에 게

임을 기획할 때 사운드에 대해 간과하고 넘어가는 경우가 상당히 많다. 게임 개발 시 들어가는 사운드는

크게 4가지로 분류된다.

■ 배경 음악(BGM, Back Ground Music): 배경 음악은 게임을 진행할 때 흘러나오게 되는 음악이다. 보통 루프로 제작돼

지속해서 반복된다.

■ 배경 소리(BGS, Back Ground Sound): 배경 소리는 특정 지형의 비, 천둥, 바람과 같은 배경의 환경을 표현할 수 있는

소리를 의미한다.

■ 사운드 이펙트(SE, Sound Effect): 보통 효과음이라고 묶어서 이야기한다. 공격, 점프, 타격 등 특정한 액션이 발생할 때

해당 이펙트를 표현하기 위한 소리를 의미한다.

책2.indb 22 2015-06-11 오전 11:18:46

1장 게임 개발 준비하기 23

■ 뮤지컬 이펙트(ME, Musical Effects): 뮤지컬 이펙트는 특정한 상황에 흘러나오는 음악으로 캐릭터가 퀘스트를 완료했

을 때나 임무를 완료했을 때 흘러나오는 팡파르 등이 이에 해당된다.

사운드를 활용할 때 사용되는 기본 명칭도 간단히 짚고 넘어가자.

■ 모노: 단일 채널 사운드로 하나의 음원을 좌, 우로 똑같이 내보낸다.

■ 스테레오: 2채널 사운드로 좌, 우 다른 소리를 낼 수 있다.

■ 노이즈: 음원 파일에 섞여 있는 잡음.

■ 피치: 음정(유니티5에서 피치 조정 시 음의 속도가 함께 조정된다).

■ 팬(Pan): 사운드를 내보낼 때 좌, 우에 대한 조정 키

03 유니티 엔진

게임을 제작하려면 가장 핵심이 되는 엔진에 대한 사용법을 충분히 숙지해야 한다. 그러기에 앞서 유니티

가 무엇인지 왜 사용해야 하는지에 대해 알아보자.

유니티란 기본적으로 게임을 제작할 때 사용할 수 있는 강력한 게임 엔진이지만, 교육, 건축, AR, VR 등

각종 분야에서 필요한 프로그램을 제작할 때에도 많이 이용되고 있다. 유니티 같은 엔진이 없었다면 좀

더 텍스트 에디터와 비슷한 IDE 에디터를 사용해 작업을 진행했어야 할 것이다. 유니티는 좀 더 시각적

으로 강화된 IDE 에디터로 한 화면에서 제작된 게임의 디자인까지 확인할 수 있으며 좀 더 효과적으로

작업할 수 있게 다양한 기능을 지원한다.

[그림 1.7] 유니티 엔진

책2.indb 23 2015-06-11 오전 11:18:46

Part 01 게임 개발 기초24

하지만 유니티가 있다고 모든 게 해결되는 것은 아니다. 앞서 이야기했듯이 각종 이미지, 사운드 등 활용

할 리소스가 있어야 그것으로 무엇이라도 만들 수 있지 않겠는가? 유니티를 이용해 작업하는 방법은 다

음과 같다.

[그림 1.8] 유니티 작업 과정 1

엔진만으로 굴러가는 자동차는 없듯이 유니티로 멋진 게임을 제작하려면 다양한 툴로 제작한 각종 리소

스가 필요하다. 이미지가 필요하다면 포토샵이나 일러스트를, 3D 모델이 필요하다면 마야, 맥스, 블렌더

등의 3D 모델링 툴을 활용해야 한다. 사운드 역시 마찬가지다.

[그림 1.9] 유니티 작업 과정 2

책2.indb 24 2015-06-11 오전 11:18:46

1장 게임 개발 준비하기 25

이미 숙련된 개발자라면 외부의 다른 IDE 에디터를 이용해 각종 플러그인을 제작할 수도 있으며, 개발자

가 원한다면 유니티로 제작된 게임을 소스 코드로 추출해 본인이 원하는 IDE로 불러와 원하는 내용을 좀

더 추가하거나 수정할 수 있다.

멀티 플랫폼

유니티를 이야기할 때 가장 먼저 나오는 장점 중 하나가 멀티 플랫폼이다. 유니티를 사용하지 않고 모바

일 환경을 지원하는 게임을 만든다고 가정해 보자. 일단 자바 언어를 이용해 안드로이드 전용 게임을 제

작하고, 오브젝티브-C 언어를 이용해 iOS 전용 게임을 새로 제작해야 한다. 만약 윈도폰이나 블랙베리

등 더 많은 기기를 지원하고 싶다면 해당 기기를 지원하는 환경에 맞춰 새로운 프로그램을 다시 제작해야

할 것이다. 하지만 유니티 엔진을 이용하면 한 번만 개발한 뒤 [스위치 플랫폼] 버튼을 누르고 원하는 플

랫폼에 맞춰 수정만 하면 된다.

[그림 1.10] 유니티가 지원하는 멀티 플랫폼

유니티가 지원하는 플랫폼은 웹부터 PC, 맥, 리눅스, iOS, 안드로이드, Xbox, PS4 등 다양하며 현재도

계속 늘어나고 있다.

통합개발환경(IDE, Integrated Development Environment)

유니티는 기본적으로 3D 스크린 뷰, 코딩을 위한 모노디벨롭 에디터(Mono Develop ), 최적화를 위한

프로파일러 등 다양한 환경을 제공한다. 무엇보다 다른 IDE 에디터와 다른 점이 시각화된 작업 환경이

다. 자세한 내용은 추후 인터페이스 부분에서 자세히 다루겠다.

미들웨어

유니티는 기본적으로 다양한 미들웨어를 별도로 설치하지 않고 바로 사용할 수 있게 포함하고 있다. 해당

내용 또한 추후 자세히 설명할 예정이니 우선은 어떤 것들이 포함돼 있는지만 확인하자.

책2.indb 25 2015-06-11 오전 11:18:47

Part 01 게임 개발 기초26

유니티에 포함된 미들웨어

■ Umbra software

■ OpenGL

■ Directx 11

■ PhysX by Nvidia

■ f.mod

■ Terrain Engine

■ Lightmapping – Beast

유니티는 해당 미들웨어 외에도 에셋 스토어에서 제공하는 다양한 에셋과 플러그인을 이용해 기능을 추

가 확장할 수 있으며 에브리플레이(Everyplay )와 클라우드(Cloud ) 및 애널리틱스(Analytics ) 등 다

양한 기능을 계속해서 확장하고 있다.

유니티 가격 및 라이선스 규정

[그림 1.11] 유니티 가격 정책

책2.indb 26 2015-06-11 오전 11:18:47

1장 게임 개발 준비하기 27

유니티 5부터 가격 정책이 크게 변경됐다. 기존에는 베이직 버전에서 비용을 내면 프로 버전의 기능까지

사용할 수 있는 셰어웨어 형식으로 배포됐지만, 유니티 5부터는 퍼스널 에디션(Personal edition )과 프

로페셔널 에디션(Professional edition )으로 나뉘면서 기능적인 부분에서 대부분의 제약이 풀렸다.

퍼스널 에디션은 웹사이트에서 누구나 무료로 내려받아 사용할 수 있지만 매출이 1억 이상 발생하면 프

로페셔널 에디션을 구입해야 한다. 프로페셔널 에디션은 매월 $75의 비용을 내는 서브스크립션을 이용할

수도 있고 $1,500에 라이선스를 구매할 수도 있다. 하지만 라이선스 구입 시 신규 버전이 출시되면 구버

전 라이선스는 신규 버전에서 작동하지 않는다(유니티 4의 라이선스는 유니티 5에서 작동하지 않는다.

하지만 4.0.1 ~ 4.6.3 등 해당 버전의 업그레이드는 모두 활용할 수 있다).

에셋 스토어

[그림 1.12] 에셋 스토어

책2.indb 27 2015-06-11 오전 11:18:47

Part 01 게임 개발 기초28

에셋 스토어에서는 게임 제작에 필요한 다양한 에셋을 구매하거나 판매할 수 있다. 3D 모델부터 텍스쳐

이미지, 사운드, 파티클, 유틸리티, 플러그인 등 게임 제작에 필요한 모든 재료를 구매할 수 있으며 이러

한 에셋의 공유는 개발 시간을 효율적으로 단축시켜 준다.

만약 사야 할 중요한 에셋이 많을 때는 에셋 스토어에서 제공하는 할인 프로그램인 [레벨11]을 이용해 많

은 유료 에셋을 무료나 할인된 가격으로 구매할 수 있다. 레벨 11은 월 $19에 이용할 수 있으며 유니티

프로페셔널 사용자는 추가 비용 없이 사용할 수 있다.

국내 교육 자료 및 커뮤니티

[그림 1.13] 다양한 국내, 국외 커뮤니티

막상 개발을 하다 보면 항상 예제와 교육 자료가 부족하기 마련이다. 더욱이 국내 개발자를 위한 한국어

로 된 예제는 더욱더 그렇다. 이러한 문제를 해소하기 위해 국내에도 다양한 교육 사이트와 커뮤니티 사

이트가 준비돼 있다. 오프라인 강의로는 유니티 러닝센터를 방문해 수강할 수도 있으며 여건이 되지 않으

면 유니티3D 스터디닷컴(http://unity3dstudy.com ) 등의 온라인 강의를 만나볼 수도 있다.

책2.indb 28 2015-06-11 오전 11:18:48

1장 게임 개발 준비하기 29

유나이트(Unite)

[그림 1.14] 유나이트 행사장에 참석한 유니티 CEO, 데이비드 헬가슨

유니티는 매년 개발자를 위한 기술 공유 컨퍼런스인 유나이트를 주최한다. 유나이트는 전 세계를 돌며 진

행되는 행사이며 한국에서도 매년 열리고 있다. 유니티 코리아 웹사이트에서 행사 일정 등 다양한 정보를

얻을 수 있다.

04 개발 환경 설정

개발 환경을 설정한다는 건 앞으로 게임을 제작하기 위해 운영체제와 각종 소프트웨어를 설치하고 준비

하는 과정을 의미한다. 이번 장에서는 함께 사용할 수 있는 다양한 프로그램을 소개하며 맥에서 개발 환

경을 설정하는 방법과 윈도에서 개발 환경을 설정하는 방법을 함께 진행하겠다.

운영체제

윈도 운영체제에서는 iOS 플랫폼으로 빌드할 수 없다. 그러므로 많은 유니티 개발자가 맥 환경을 좀 더 선호하지만, 안드

로이드 등 다른 플랫폼은 윈도에서도 충분히 개발할 수 있다.

TIP

책2.indb 29 2015-06-11 오전 11:18:48

Part 01 게임 개발 기초30

활용할 수 있는 프로그램 목록

앞으로 유니티 외에도 다양한 프로그램을 함께 사용해야 한다. 이러한 프로그램 중에는 무료 또는 유료로

사용할 수 있는 유용한 프로그램도 있다. 해당 프로그램과 프로그램을 내려받을 수 있는 정보를 확인해

보자.

엑스마인드(Xmind)

마인드맵은 마치 지도를 그리듯이, 자신이 머릿속에 생각하는 내용을 쉽게 정리할 수 있는 프로그램을 말

한다. 여기서 사용할 프로그램은 엑스마인드라는 프로그램으로 웹사이트에서 내려받을 수 있다.

엑스마인드 내려받기: http://xmindkorea.net

[그림 1.15] 엑스마인드 내려받기 [그림 1.16] 엑스마인드 실행 화면

MS오피스(MS Office ) / 구글 문서(Google Docs)

기획서나 문서 등을 작업하려면 문서 편집기가 필요하다. MS 오피스나 구글 문서는 이에 따른 유용한 기

능을 제공한다. 유료 프로그램인 MS 오피스와 달리 구글 문서는 구글 계정만 있다면 구글에 접속해 무료

로 사용할 수 있다. 팀원들의 이메일 주소를 추가해 공동 편집자로 설정하면 여러 명이 동시에 문서를 편

집할 수 있다는 장점도 있다.

책2.indb 30 2015-06-11 오전 11:18:50

1장 게임 개발 준비하기 31

[그림 1.17] 구글 문서 [그림 1.18] 구글 스프레드시트

포토샵(PhotoShop) / 일러스트레이터(illustrator )

어도비 사에서 제작한 그래픽 편집 프로그램인 포토샵은 유료 프로그램으로 가격대가 조금 비싸지만 강

력한 이미지 편집 프로그램이다. 포토샵은 비트맵 방식, 일러스트레이터는 벡터 방식의 이미지를 제작/

편집할 때 사용할 수 있다. 하지만 캐릭터 디자인이나 스케치 등에서는 사이툴, 김프 등 다른 툴을 이용하

는 디자이너도 많다.

[그림 1.19] 포토샵 [그림 1.20] 일러스트레이터

블렌더(Blender )

블렌더는 3D 오브젝트를 직접 모델링해 제작할 수 있는 프로그램이다. 기능도 강력하지만, 오픈소스로

제작된 무료 프로그램이어서 가격 부담도 없다. 국내에는 자료가 적은 편이지만 위키 등에 한글 매뉴얼이

준비되고 있으며 다음 주소에서 내려받을 수 있다.

책2.indb 31 2015-06-11 오전 11:18:53

Part 01 게임 개발 기초32

블렌더 내려받기: http://blender.org/download/

[그림 1.21] 블렌더 내려받기 [그림 1.22] 블렌더 실행 화면

개러지밴드(GarageBand) / 사운드포지(SoundForge)

개러지밴드는 맥 전용 무료 프로그램으로 사운드를 제작하는 데 사용할 수 있다. 하지만 사운드 등 예제

와 기능적인 측면에서는 유료 프로그램인 로직(Logic )이 더욱 많이 사용되고 있으며, 윈도용 프로그램

으로는 큐베이스 등을 이용할 수도 있다. 사운드의 편집만을 원할 때에는 소니에서 제작된 사운드포지를

이용해 편집할 수 있다.

[그림 1.23] 개러지밴드 [그림 1.24] 사운드포지

책2.indb 32 2015-06-11 오전 11:18:57

1장 게임 개발 준비하기 33

유니티 리모트(UnityRemote )

유니티 리모트는 모바일 게임을 개발할 때 편리한 작업 환경을 제공해준다. 특히 모바일 버튼과 터치 등

을 테스트할 때 컴퓨터에서는 어렵던 작업을 쉽게 할 수 있다. 컴퓨터와 모바일 기기를 케이블로 연결하

고 유니티 리모트를 실행하면 유니티의 화면과 모바일 기기의 화면을 연결해 준다. 모바일의 터치를 이용

해 유니티 화면을 조작할 수도 있다. 해당 앱은 구글 플레이에서 내려받을 수 있다.

구글 플레이에서 유니티 리모트 내려받기: https://play.google.com/store/apps/details?id=com.unity3d.androidremote

[그림 1.25] 구글 플레이에서 유니티 리모트 내려받기 [그림 1.26] 유니티 리모트 실행 화면

유니티 설치 및 환경 설정

유니티 설치 파일은 유니티 코리아 웹사이트에서 내려받을 수 있다. 버전이나 문구는 조금씩 다를 수 있

지만, 진행 과정은 대체로 다음과 같다.

유니티 내려받기: http://unity3d.com/kr/get-unity/download?ref=personal

플러그인 및 모바일 개발 환경 만들기

안드로이드 개발을 생각하고 있는 개발자라면 유니티 설치에 앞서 안드로이드 SDK를 우선 설치하는 것이 좋다. 안드로이

드 SDK는 구글에 방문해 내려받을 수 있다.

안드로이드 SDK 내려받기: http://developer.android.com/intl/ko/sdk/index.html#Other

TIP

책2.indb 33 2015-06-11 오전 11:18:59

Part 01 게임 개발 기초34

[그림 1.27] 유니티 내려받기

유니티 웹사이트에 접속해 유니티를 내려받자. 윈도 사용자라면 설치할 때 한 가지 주의할 점이 있다. 설

치 경로에 한글이 포함돼 있으면 실행할 때 오류가 발생한다. 설치하기 전에 관리자 계정이 영문으로 돼

있는지 확인하여, 설치 경로 중간에 한글 폴더가 포함되지 않도록 주의하자.

[그림 1.28] 유니티 설치 과정

유니티 웹 사이트에서 설치 프로그램을 내려받으면 Unity Download Assistant 파일이 내려받아진다.

해당 프로그램을 실행하고 유니티 로고를 클릭해 실행하자.

책2.indb 34 2015-06-11 오전 11:19:00