1. 유니티 고급 과정
1. 컴퓨터란?
2. 게임 프로그램이란?
2. 게임 엔진의 종류
Morph Interactive, Inc.
Kiyoung Moon(문기영)
2. 1. 컴퓨터란?
컴퓨터(computer)는 수식이나 논리적 언어로 표현된 계산을 수행하거나 작업
을 통제하는 기계다.
컴퓨터(computer)라는 명칭의 유래는 ‘계산하다’라는 뜻의 라틴어 ‘Computare’
에서 시작되었다. 컴퓨터는 태생 자체가 계산을 위해서 태어났고 그렇기 때
문에 수학과 밀접한 관련이 있다.
3. 컴퓨터는 어디에서 시작했는가?
자연(Nature)
원래 존재했고 우리는 측정을 통해 이러한 존재가 있다는 것을 알 수 있다. 예를
들어 전압이 존재하고 이것들을 측정하는 것.
물리학 법칙(Physics Law)
측정을 통해 추상화를 시도하고 그로 인해서 어떠한 법칙을 발견한다. 예를 들
어 V = RI (전압 = 저항 * 전류)
17. 게임 프로그래머는 어느 영역에서 일하는가?
소프트웨어하드웨어
컴퓨터
디스플레이
장치
입력 장치
사운드 출력
장치
게임 로직
미디어 데이
터
18. 2. 게임 프로그래밍이란?
1. 화면에 무언가를 그려주는 하드웨어는 무엇인가?
- 화면에 무언가를 그려주는 하드웨어에게 어떤 명령을 내려주면 될까?
- 그러한 명령어를 작성하면 화면에 어떤 결과가 나올까?
19. 모니터를 구현해 보자.
물론 여기서 하드웨어를 직접 만들 순 없기 때문에 소프트웨어를 이용해 보자.
강연자가 만들어본 간단한 5x4짜리 모니터를 보도록 하자.
강연자가 만들어본 모니터는 가로 5칸, 세로 4칸으로 이
루어져 있는 모니터이다. 색상은 검정색, 하얀색 2가지
만 존재한다. 왼쪽 그림보다 더 이해하기 쉽게 하기 위
해 픽셀 마다 여유 공간을 주면 더 쉽게 이해 할 수 있다.
20.
21. 모니터를 확장 해볼까?
물론 1280 x 768같은 사이즈는 힘들다. (컴퓨터가 느려서) 100 x 100은?
24. 결국은 점을 하나 찍는 작업
화면에 나타내기 위해 모니터에서 필요로 하는 데이터를 주고 모니터는 그 데
이터를 이용해서 화면에 그림을 그릴 뿐.
점만 찍을 수 있다면 무엇이든지 만들 수 있다.
25. 그림을 그릴 수 있다면 이제 움직일 차례
화면에 지속적으로 그려주는 것은 모니터가 하는 일이고 게임 프로그래머가 할
일은 모니터가 화면에 무언가를 그리기 위해 필요로 하는 데이터를 넘겨 주
는 일.
이전에 보았던 화면에서 하얀색 점이 바로 움직이는 공.
화면을 이리저리 돌아다니면서 튕긴다.
26. 게임 로직
게임 프로그래머는 게임 로직을 작성한다.
무언가를 움직여 주는 일, 충돌 검사, 반응, 사운드, 게임 프로그래머가
작성하는 거의 모든 코드.
27. 점 하나 찍기도 나름 어려운 작업
왜냐하면 옛날에는 하드웨어 별로 점찍는 방법이 달랐기 때문.
즉, 그래픽 카드마다 필요로 하는 데이터의 모양이 다름.
당시에는 게임 개발사에서 하드웨어 별로 코드를 다 작성.
28. 추상화
앞서 컴퓨터란? 에서 배웠듯이 추상화를 이용해서 인류가 얼마나 많은 진보를
이루어 왔는지 알 수 있음.
게임 엔진이라는 것도 추상화의 한 단계.
30. 게임 엔진
게임 프로그래머가 하드웨어 혹은 밑바닥 작업에 많은 시간을 들이지 않고 게임 로직 작성에 힘
을 쓸 수 있도록 해줌.
31. 3. 게임 엔진의 종류
게임 엔진이라는 것은 원래부터 있던 것이 아니라 게임의 규모가 커짐에 따라
제작하는데 시간이 오래 걸리고 난이도가 있는 경우 해결할 수 있는 사람이
많지 않았기 때문에 해당 게임 소스를 구매하는 방식으로 시작함.
32. 자체 엔진
보통의 게임 개발사는 대부분 자체 게임 엔진을 개발해서 제작.
제작하는 게임만을 위해서 로직을 작성하거나(확장성 없음) 도구를 제작함.
하지만 시대가 변하면서 하나 이상의 게임을 위해 로직을 확장성있게 작성하고
도구를 작성함에 따라 게임 개발사 고유의 엔진으로써 활용이 됨.
33. 퀘이크 엔진
퀘이크 엔진은 id software에서
1996년에 제작한 Quake를 위한
게임 엔진. 소스도 GPL 라이센스
로 공개 되어 있음.
34. 퀘이크 엔진 다운로드 및 형태
다운로드
ftp://ftp.idsoftware.com/idstuff/source/q1source.zip
전체적으로 C언어를 사용했고 AI를 위해서 QuakeC라는 언어를 개발해서 사용했다. 앞서 살펴본 그
림에서 알 수 있듯이 굉장히 많은 FPS게임들이 퀘이크에서 시작된 것을 알 수 있다. 이 대단한 업
적은 id software의 존 카멕이라는 프로그래머가 소스를 공개함으로써 이루어졌다.
그 이후에도 id software에서 출시된 여러 게임들의 소스가 공개되어 있다. 둠, 울펜스타인, 퀘이크2,
퀘이크3 등등.
3D게임 프로그래머라면 한번은 소스를 봐주어야 할 정도로 가치가 있는 자료다.
40. 언리얼 엔진 특징
보통 AAA타이틀이라고 부르는 대형 게임을 개발할 때 사용되는 엔진. 거의 모
든 장르 개발이 가능하다.
하지만 개발 언어를 언리얼 스크립트 혹은 네이티브 언어(C/C++)을 사용하기
때문에 진입 장벽이 높은 편.
자료가 많지 않은 편.
41. 렌더웨어
렌더웨어(RenderWare : RW)는 Criterion software에서 만든 렌더링 엔진.
렌더웨어를 사용해서 만든 게임들의 리스트
http://en.wikipedia.org/wiki/List_of_RenderWare_games
지원되는 플랫폼도 많았고 API가 사용하기 쉬웠기 때문에 많이 사용함.
도구라는 개념 보다는 라이브러리 개념으로 사용.
이후에 EA에 인수.
42. 게임 브리오
300여개의 게임 회사에서 사용된 게임 렌더링 엔진. David Eberly박사가 주축
이 되어 개발 되었음. (유명한 게임으로는 wow, 엘더스크롤에서 사용 되었음)
C++언어를 사용하며 요즘 게임 엔진과 같은 통합 툴을 제공하고 있진 않음. 렌
더링 엔진이기 때문에 게임 개발에 필요한 다른 시스템들은 존재하지 않음.
(가령 메모리 관리자)
렌더웨어와 마찬가지로 라이브러리 형태로써 사용됨. 현업 게임 개발자들의 공
통된 의견은 이 엔진의 작명법이 약간은 난해하기로 유명함.
45. 마지막으로 유니티
유니티는 최근에 들어서 인기가 급상승 하고 있는 엔진인데 사실 유니티는 꽤(?)
오래된 엔진이다. 유니티는 다른 게임 엔진과 다르게 웹 브라우저에서도 돌
아간다는 특징이 있었는데 플래시의 개발 편의성과 보급률 때문에 유니티의
장점이 드러나지 않았다. 하지만 스마트폰 시대가 열림과 동시에 크로스 플
랫폼 엔진의 장점, 유니티 엔진의 편리성 때문에 큰 인기를 얻었고 C#,
JavaScript라는 언어를 개발 언어로 채택함에 따라 누구나 쉽게 응용 프로그
램 개발이 가능했다.
유니티는 게임 개발이 가능한 언어이지만 게임을 제외한 일반 응용 프로그램도
제작이 용이한 엔진이다.