2015.08.06 22:27

3D 게임과 2D 게임이 다른 점은 무엇일까? 

 

우리는 머릿속으로 2D게임과 3D게임이 무엇인지 알고있다.

그러나 두 개의 차이를 말로 정의하자면 뭐라고 정의를 내려야 할까?

 

2D 게임은 평면적으로 보이는 것이고, 3D 게임은 입체적으로 보이는 것?

그렇다면 메이플스토리같이 배경에 그림을 원근감있게 넣어 입체적으로 보이면 3D 게임인 것일까?

 

나는 게임 프로그래머를 지망하는 학생이니 만큼

개발자 입장에서 생각해 보아야겠다.

 

일단 2D 게임의 구조를 생각해보자.

게임은 일반적으로

커다란 무한 루프 속에서 실시간으로 사용자의 입력을 받고, 그것을 처리하는 프로그램의 반복이다.

 

 

 

 

그림과 같이 게임루프는

1. 사용자 입력

2. 게임 로직

3. 그리기


이렇게 크게 3가지로 나눌 수 있는데

각각의 경우에 대해 2D와 3D 게임의 차이점을 생각해보면 3D 게임의 정의를 내리는데에

한 발 더 다가갈 수 있을 것 같다.


먼저 1. 사용자 입력에 대해서 살펴보자

PC 게임만을 생각하였을때

2D 게임은 키보드와 마우스를 통해 사용자로부터 입력을 받는다.

3D 게임도 마찬가지로 키보드와 마우스를 통해 사용자로부터 입력을 받는다.


둘 다 사용자로부터 입력을 받는 방식에 있어서는 다른 점이 없는 것 같다.

그럼 1. 사용자 입력에 있어서는 2D 게임과 3D 게임이 비슷해 보이니 다음 경우에 대해 생각해보자.


2. 게임로직

게임 로직은 사용자로부터 키보드와 마우스를 통해 입력받은 정보를 가지고

게임 내의 모든 현상들을 처리하는 단계이다.

캐릭터는 움직일 것이고, 몬스터는 인공지능에 따라 행동할 것이다.

2D 게임에서 모든 물체들의 움직임은 (x,y) 좌표를 통해 표현할 수 있다.


3D 게임은 어떨까?

3D 게임에서는 실제 우리가 살아가는 현실 세계와 같이 (x,y,z) 좌표가 존재하는 3차원 세상이다.

그렇다면 게임내의 물체를 현실세계처럼 움직이기 위해서는 x,y,z 좌표가 각각 필요할 것이다.


여기서 2D 게임과의 다른 점을 한 가지 찾은 것 같다.

3D 게임은 2D 게임과는 달리 구현하는데 3차원 좌표계가 필요하다.


 

고등학교 수학시간을 떠올려 보니 

2D 좌표들의 움직임을 표현하기 위한 도구로

x,y평면상의 점과 곡선의 이동을 위한 여러가지 방정식과, 약간의 기하학이 필요했었다.

 

3D 좌표들을의 움직임을 표현하기 위해서는

3차원 벡터, 공간도형, 선형대수학 등이 머릿속에 떠오른다.

 

조금 불길한 예감이 들지만 대부분 나의 불길한 예감은 적중한다.

3D 게임을 만들기 위해서는 3차원벡터, 공간에서의 기하학, 

그것들을 표현하기 위한 선형대수학등이 필요해 보인다.

3D프로그래밍 관련 서적을 들쳐보니 실제로 그러한 수학적 도구들이 굉장히 많이 사용되고 있었다.

즉 슬프지만 3D 프로그래밍을 하기 위해서는 수학을 열심히 공부해야 한다.

슬픈 현실을 마주했지만 세상에 쉬운게 어디 있겠는가? 다음으로 넘어가 그리기 부분을 살펴보자.

 

3.그리기

2D 게임을 만들 때 기억을 되살려보면

사실 게임을 만드는데 필요한 그리기 기술은

화면에 그림 이미지(bmp,jpg,png 등등...)를 띄우고,

프레임마다 그것을 지우고 새로 그려서 움직이는 것처럼 보이게 하는 것이 2D 게임을 표현하기 위한 전부였다.


3D 아마 마찬가지일 것이다.

다만 실사 같은 생생한 사람이나 몬스터, 물에 비친 굴절된 캐릭터의 모습, 그림자 등등을

모두 이미지 형태로 불러와서 지우고 새로 그린다고는 생각이 되지 않는다.


게임을 하면서 지형이 부셔지기도 하고, 캐릭터 표정이 움직이기도 하고

여러가지 모습이 보여지는데 이걸 모두 이미지로 불러온다고?

게임 용량을 둘째 치더라도, 이 이미지를 제작한다면

게임 아티스트들은 모두 레오나르도 다 빈치 뺨치는 실력일 것이다.

게임제작비가 수천,수조억 원이 될 것이다.


아마 이미지는 기본적인 형태만 제공을 하고, 컴퓨터 계산을 이용하여 그것을 다양한 형태로 변화시킬 것이다.

전공책의 목차를 살짝 살펴보자...ㅋ


조명,텍스처,블랜딩,스텐실, 셰이더, 테셀레이션, 매핑, 렌더링,메시, 주변광 ...

그래픽카드 드라이버 설치할때에나 볼법한 용어들이 잔득 나열되어 있다.


각각의 내용을 살짝 훑어보니 모두 그래픽을 표현하는데 관련된 내용들이다.

아...

 

여기서 귀납적 추론을 내릴 수 있다.

 

1. 3D 게임 프로그래밍 관련 책을 보았다.

2. 첫 번째 내용도 그래픽 출력에 관한 내용이다.

3. 두 번째 내용도 그래픽 출력에 관한 내용이다.

4. 세 번째 내용도 그래픽 출력에 관한 내용이다.

...

n-1. n 번째 내용도 그래픽 출력에 관한 내용이다.

 

추론: 3D 게임 프로그래밍 책의 내용은 모두 그래픽 출력에 관한 내용이다.

 

2D 게임을 만들때에는 고작 그림파일 띄우기에 불과했었는데

3D 게임을 만들때에는 그리는과정이 엄청나게 중요한가보다.


물론 귀납적 추론이란 것은 연역적 추론과 다르게 추론의 결과가 100% 참이 아니다.

과연 내 추론이 맞을지 틀릴지는 이제 3D 게임 프로그래밍을 공부하면서 차차 증명될 것이다.



자 지금까지 1,2,3 항목을 살펴보면서 간략하게 2D 게임과 3D 게임을 비교해 보았다.

지금까지 비교한 내용들을 가지고 3D 게임의 정의를 내려보겠다.

 

3D 게임이란 

 

벡터, 공간기하, 선형대수와 같은 수학적 도구들을 이용해 (x,y,z)-평면으로 이루어진 3차원 세상을 표현하고,

게임의 그리기 과정에서

수많은 그래픽 처리 기술들이 필요한 게임

 

이라고 정의 내릴 수 있겠다.

 

물론 나는 아직 3D 게임의 입문조차 하지 않았기 때문에

이 정의는 틀릴 수도 맞을 수도 있다.


그렇기 때문에 앞으로 공부하며 포스팅을 써 나갈 때마다

3D 게임에 대한 정의를 새롭게 내릴 것이다.


http://blog.naver.com/jidon333http://blog.naver.com/jidon333

출[출처] 3D 게임은 2D 게임과 무엇이 다를까?|작성자 jidon333


출처 : http://blog.naver.com/jidon333

신고
Posted by 우엉 여왕님!! ghostkyow

티스토리 툴바