유니티 고급 과정 -1-

45
유니티 고급 과정 1. 컴퓨터란? 2. 게임 프로그램이란? 2. 게임 엔진의 종류 Morph Interactive, Inc. Kiyoung Moon(문기영)

Upload: kiyoung-moon

Post on 17-Jul-2015

383 views

Category:

Education


5 download

TRANSCRIPT

Page 1: 유니티 고급 과정 -1-

유니티고급과정1. 컴퓨터란?

2. 게임프로그램이란?

2. 게임엔진의종류

Morph Interactive, Inc.

Kiyoung Moon(문기영)

Page 2: 유니티 고급 과정 -1-

1. 컴퓨터란?

컴퓨터(computer)는수식이나논리적언어로표현된계산을수행하거나작업을통제하는기계다.

컴퓨터(computer)라는명칭의유래는 ‘계산하다’라는뜻의라틴어 ‘Computare’

에서시작되었다. 컴퓨터는태생자체가계산을위해서태어났고그렇기때문에수학과밀접한관련이있다.

Page 3: 유니티 고급 과정 -1-

컴퓨터는어디에서시작했는가?

자연(Nature)

원래존재했고우리는측정을통해이러한존재가있다는것을알수있다. 예를들어전압이존재하고이것들을측정하는것.

물리학법칙(Physics Law)

측정을통해추상화를시도하고그로인해서어떠한법칙을발견한다. 예를들어 V = RI (전압 = 저항 * 전류)

Page 4: 유니티 고급 과정 -1-

집중회로추상화(Lumped Circuit Abstraction)

추상화를통해다이어그램으로표현.

Page 5: 유니티 고급 과정 -1-

증폭기 (Amplifier)

Page 6: 유니티 고급 과정 -1-

아날로그, 디지털세계디지털세계인버터, AND, OR Gate 등등

아날로그세계는생략.

Page 7: 유니티 고급 과정 -1-

조합논리논리회로들의조합으로얻을수있는논리회로.

한개이상의입력, 논리회로들의조합으로결과(output)을얻는다.

예를들어 4bit adder

Page 8: 유니티 고급 과정 -1-

조합논리실제 4비트전가산기의모습

Page 9: 유니티 고급 과정 -1-

시간

Page 10: 유니티 고급 과정 -1-

명령어집합(Instruction Set)

x86, i4004

Page 11: 유니티 고급 과정 -1-

언어(Language)

프로그래밍언어.

C

C++

Java

Basic

C#

등등...

Page 12: 유니티 고급 과정 -1-

소프트웨어시스템(Software System)

운영체제(윈도우즈, 리눅스), 그리고?

게임

Page 13: 유니티 고급 과정 -1-

정리

자연(Nature)

물리학법칙

(Physics

Law)

회로추상화

디지털세계

아날로그세계

조합논리

명령어집합

언어소프트웨어시스템

Page 14: 유니티 고급 과정 -1-

우리는어디에있는가?

자연(Nature)

물리학법칙

(Physics

Law)

회로추상화

디지털세계

아날로그세계

조합논리

명령어집합

언어소프트웨어시스템

Page 15: 유니티 고급 과정 -1-

게임프로그램이란?

게임은컴퓨터에서돌아가는응용프로그램의한종류다.

Page 16: 유니티 고급 과정 -1-

소프트웨어하드웨어

무엇이필요한가?

컴퓨터디스플레이

장치

입력장치사운드출력

장치

게임로직미디어데이

Page 17: 유니티 고급 과정 -1-

게임프로그래머는어느영역에서일하는가?

소프트웨어하드웨어

컴퓨터디스플레이

장치

입력장치사운드출력

장치

게임로직미디어데이

Page 18: 유니티 고급 과정 -1-

2. 게임프로그래밍이란?

1. 화면에무언가를그려주는하드웨어는무엇인가?

- 화면에무언가를그려주는하드웨어에게어떤명령을내려주면될까?

- 그러한명령어를작성하면화면에어떤결과가나올까?

Page 19: 유니티 고급 과정 -1-

모니터를구현해보자.

물론여기서하드웨어를직접만들순없기때문에소프트웨어를이용해보자.

강연자가만들어본간단한 5x4짜리모니터를보도록하자.

강연자가만들어본모니터는가로 5칸, 세로 4칸으로이루어져있는모니터이다. 색상은검정색, 하얀색 2가지만존재한다. 왼쪽그림보다더이해하기쉽게하기위해픽셀마다여유공간을주면더쉽게이해할수있다.

Page 20: 유니티 고급 과정 -1-
Page 21: 유니티 고급 과정 -1-

모니터를확장해볼까?

물론 1280 x 768같은사이즈는힘들다. (컴퓨터가느려서) 100 x 100은?

Page 22: 유니티 고급 과정 -1-

더가까이?

Page 23: 유니티 고급 과정 -1-

자신있는사람이라면더를외쳐보자.

Page 24: 유니티 고급 과정 -1-

결국은점을하나찍는작업화면에나타내기위해모니터에서필요로하는데이터를주고모니터는그데이터를이용해서화면에그림을그릴뿐.

점만찍을수있다면무엇이든지만들수있다.

Page 25: 유니티 고급 과정 -1-

그림을그릴수있다면이제움직일차례

화면에지속적으로그려주는것은모니터가하는일이고게임프로그래머가할일은모니터가화면에무언가를그리기위해필요로하는데이터를넘겨주는일.

이전에보았던화면에서하얀색점이바로움직이는공.

화면을이리저리돌아다니면서튕긴다.

Page 26: 유니티 고급 과정 -1-

게임로직게임프로그래머는게임로직을작성한다.

무언가를움직여주는일, 충돌검사, 반응, 사운드, 게임프로그래머가작성하는거의모든코드.

Page 27: 유니티 고급 과정 -1-

점하나찍기도나름어려운작업

왜냐하면옛날에는하드웨어별로점찍는방법이달랐기때문.

즉, 그래픽카드마다필요로하는데이터의모양이다름.

당시에는게임개발사에서하드웨어별로코드를다작성.

Page 28: 유니티 고급 과정 -1-

추상화앞서컴퓨터란? 에서배웠듯이추상화를이용해서인류가얼마나많은진보를이루어왔는지알수있음.

게임엔진이라는것도추상화의한단계.

Page 29: 유니티 고급 과정 -1-

자연(Nature)

물리학법칙

(Physics

Law)

언어소프트웨어시스템

게임엔진...

Page 30: 유니티 고급 과정 -1-

게임엔진

게임프로그래머가하드웨어혹은밑바닥작업에많은시간을들이지않고게임로직작성에힘을쓸수있도록해줌.

Page 31: 유니티 고급 과정 -1-

3. 게임엔진의종류게임엔진이라는것은원래부터있던것이아니라게임의규모가커짐에따라제작하는데시간이오래걸리고난이도가있는경우해결할수있는사람이많지않았기때문에해당게임소스를구매하는방식으로시작함.

Page 32: 유니티 고급 과정 -1-

자체엔진보통의게임개발사는대부분자체게임엔진을개발해서제작.

제작하는게임만을위해서로직을작성하거나(확장성없음) 도구를제작함.

하지만시대가변하면서하나이상의게임을위해로직을확장성있게작성하고도구를작성함에따라게임개발사고유의엔진으로써활용이됨.

Page 33: 유니티 고급 과정 -1-

퀘이크엔진퀘이크엔진은 id software에서

1996년에제작한 Quake를위한게임엔진. 소스도 GPL 라이센스로공개되어있음.

Page 34: 유니티 고급 과정 -1-

퀘이크엔진다운로드및형태

다운로드ftp://ftp.idsoftware.com/idstuff/source/q1source.zip

전체적으로 C언어를사용했고 AI를위해서 QuakeC라는언어를개발해서사용했다. 앞서살펴본그림에서알수있듯이굉장히많은 FPS게임들이퀘이크에서시작된것을알수있다. 이대단한업적은 id software의존카멕이라는프로그래머가소스를공개함으로써이루어졌다.

그이후에도 id software에서출시된여러게임들의소스가공개되어있다. 둠, 울펜스타인, 퀘이크2,

퀘이크3 등등.

3D게임프로그래머라면한번은소스를봐주어야할정도로가치가있는자료다.

Page 35: 유니티 고급 과정 -1-

예>

Page 36: 유니티 고급 과정 -1-

퀘이크엔진? 소스?

퀘이크엔진은사실상게임전체소스.

이후에소개할언리얼엔진, 유니티와같은게임엔진형태는아니다.

Page 37: 유니티 고급 과정 -1-

언리얼엔진에픽 (Epic)에서만든게임엔진으로써언리얼시리즈에서사용되었던게임엔진. 기어즈오브워(Gears of war)에서도 사용됨.

한국에서리니지, 리니지2 모두언리얼엔진을사용함.

Page 38: 유니티 고급 과정 -1-

다운로드http://www.unrealengine.com/en/udk/

언리얼엔진과다르게 UDK(Unreal Development Kit)도존재하는데이것은언리얼엔진의부분집합정도로생각하면된다.

UDK를사용하기위해서는언리얼스크립트를사용해야한다. 이는에픽에서언리얼엔진을위해만든프로그래밍언어이다.

Page 39: 유니티 고급 과정 -1-
Page 40: 유니티 고급 과정 -1-

언리얼엔진특징보통 AAA타이틀이라고부르는대형게임을개발할때사용되는엔진. 거의모든장르개발이가능하다.

하지만개발언어를언리얼스크립트혹은네이티브언어(C/C++)을사용하기때문에진입장벽이높은편.

자료가많지않은편.

Page 41: 유니티 고급 과정 -1-

렌더웨어렌더웨어(RenderWare : RW)는 Criterion software에서 만든렌더링엔진.

렌더웨어를사용해서만든게임들의리스트http://en.wikipedia.org/wiki/List_of_RenderWare_games

지원되는플랫폼도많았고 API가사용하기쉬웠기때문에많이사용함.

도구라는개념보다는라이브러리개념으로사용.

이후에 EA에인수.

Page 42: 유니티 고급 과정 -1-

게임브리오300여개의게임회사에서사용된게임렌더링엔진. David Eberly박사가 주축이되어개발되었음. (유명한게임으로는 wow, 엘더스크롤에서사용되었음)

C++언어를사용하며요즘게임엔진과같은통합툴을제공하고있진않음. 렌더링엔진이기때문에게임개발에필요한다른시스템들은존재하지않음.

(가령메모리관리자)

렌더웨어와마찬가지로라이브러리형태로써사용됨. 현업게임개발자들의공통된의견은이엔진의작명법이약간은난해하기로유명함.

Page 43: 유니티 고급 과정 -1-

http://www.geometrictools.com/

에버리박사가만든사이트. 실제로게임브리오의초기버전의코드가그대로공개되어있으며책으로도설명을하고있음.

Page 44: 유니티 고급 과정 -1-

C4엔진http://www.terathon.com/

3D 게임프로그래밍 & 컴퓨터그래픽을위한수학의저자.

렌더링외에도게임개발을위한여러도구, 라이브러리를모두제공하고있음.

C4엔진을사용한유명한게임은없지만공부하기에좋은엔진.

Page 45: 유니티 고급 과정 -1-

마지막으로유니티유니티는최근에들어서인기가급상승하고있는엔진인데사실유니티는꽤(?)

오래된엔진이다. 유니티는다른게임엔진과다르게웹브라우저에서도돌아간다는특징이있었는데플래시의개발편의성과보급률때문에유니티의장점이드러나지않았다. 하지만스마트폰시대가열림과동시에크로스플랫폼엔진의장점, 유니티엔진의편리성때문에큰인기를얻었고 C#,

JavaScript라는언어를개발언어로채택함에따라누구나쉽게응용프로그램개발이가능했다.

유니티는게임개발이가능한언어이지만게임을제외한일반응용프로그램도제작이용이한엔진이다.