개드립

즐겨찾기
최근 방문 게시판

당신이 보는 게임 화면은 진짜가 아니다...gif

1610848311.jpg

게임 개발은 쉽지 않다.

 

 

실제로 개발자가 의도한 모든 것을 있는 그대로 재현하려면 시간과 예산이 잔뜩 들 뿐더러, 게임이 무거워져 사양을 많이 잡아먹게 된다.

 

 

 

 

 

1610848311.jpg

 

 

 

그래서 게임 개발자들은 언제나 꼼수를 쓴다.

 

쇼벨 나이트​는 사실 2D 도트 그래픽으로 진행되는 게임이 아니라, 3D로 진행되는 게임이다. 눈속임을 썼을 뿐.



 

삽질기사가 정말 있는 그대로의 2D 도트 게임이었다면 엄청난 도트노가다와 물리법칙 적용에 훨씬 긴 개발기간이 필요했을 것이다.


 

 

1610848311.jpg

 

 

이처럼 2D 게임처럼 보였던 게 알고보니 3D 게임이라는 경우는 꽤 흔하다. ​엔터 더 건전​도 이런 경우다.


 

3차원이라 해도 시점을 고정한다면 화면상에는 2차원으로 보이니 꽤 그럴듯하다.





 

그럼 반대의 경우는 어떨까?

 

​3D 게임으로 보였던 게 사실 2D 게임​이었다면?

 

 

1610848312.jpg

1610848312.jpg

 

 

말이 안될 것 같지만 놀랍게도 있다.


 

초창기 FPS의 대표격 게임들인 ​이드 소프트웨어​의 ​울펜슈타인 3D​(1992)와 ​(1993)은 사실 3D 게임이 아니다.

 

 

 

 

 

 

 

"아니, 명백히 3D 공간을 걸어다니는데 이게 3D 게임이 아니라고? 지랄하고 자빠졌네"


 

라는 생각이 들 테지만 정말로 3D가 아니다!

전부 교묘한 눈속임이다.




 

울펜슈타인과 둠이 출시될 당시의 가정용 게임기들은 실시간으로 삼차원 게임환경을 렌더링할 정도로 성능이 좋지 못했다.


 

그래서 실제 Z축을 게임에 집어넣을 수 없으니 당시의 게임들은 모두 꼼수를 썼다.

 

 

 

 

 

 

 

 

비슷한 시기에 ​슈퍼패미콤​으로 나온 ​젤다의 전설: 신들의 트라이포스(1991)​를 예로 들어 설명해보자.



 

짤에서 링크는 절벽에서 뛰어내려 우물 속으로 빨려들어간다.

 

하지만 실제 작동하는 게임 메모리 상에서 절벽은 없다.

 

 

 

 

1610848313.jpg

 

 

 

절벽에서 뛰어내리는 모션도 있고, 진짜 절벽처럼 보이게 음영도 져있지만 모두 같은 높이에 있는 타일이다.

 

절벽 부분이 ​아래로만 내려갈 수 있게 프로그래밍 된 타일​일 뿐.





 

링크가 절벽 '아래'에서 절벽 타일로 걸어올라가려 하면 게임은 링크를 막고,

 

절벽 '위'에서 아래로 내려가려 하면 뛰어내리는 모션을 재생하면서 아래로 내려보내는 것이다.






 

따라서 플레이어는 '절벽 위에서 뛰어내렸다'라고 생각하는 상황이

 

사실 게임기 내부에서는 '평면상에서 아래쪽 위치로 이동했다'고 처리된다.





 

이러한 눈속임으로 플레이어는 실제 높낮이가 있는 공간으로 착각하게 되지만,

 

 

 

 

1610848317.jpg

 

 

게임 속 공간은 전부 평면일 뿐이다.


 

슈퍼패미콤 성능의 한계를 고려한 현명한 최적화인 셈이다.

 

 

 

 

1610848322.jpg

 

똑같이 ​슈퍼패미콤​으로 출시된 ​울펜슈타인 3D​도 마찬가지다.

 

게임기의 메모리 내에서 게임의 모든 공간은 평면으로 처리된다.



 

그리고 이 평면 공간에 입체감을 부여하고자 꼼수를 쓰는데,

 

 

 

 

1610848322.jpg

 

플레이어가 서 있는 위치(초록 화살표)를 기준으로,

 

 

 

 

1610848322.jpg

 

 

매 순간 순간 게임은 직선으로 플레이어의 시야 내에 보이는 타일들과 플레이어의 거리를 스캔한다.

 

 

 

 

 

그리고 그 거리의 길고 짧음에 따라, 플레이어의 화면에 비춰지는 타일들의 크고 작음을 결정한다.

 

 

 

 

1610848322.jpg

 

 

이 과정이 순식간에 이루어져,

 

그 결과물로 플레이어의 눈에는 깊이감 있는 화면이 보이게 되는 것이다.



 

일명 ​레이캐스팅(Raycasting)​이라 불리는 렌더링 기법이다.

 

 

 

 

1610848322.jpg

 

매 순간순간 플레이어를 기준으로 쏜 직선이 닿는 부분만을 화면에 나타냄으로써, 렌더링 하는 데 드는 메모리를 획기적으로 줄일 수 있다.


 

지금처럼 주변의 모든 공간을 3차원 렌더링 하려고 했다가는 슈퍼패미콤이 버티지 못했을 것이다.

 

 

 

 

1610848322.jpg

 

 

 

결국 플레이어가 깊이감이 있는 삼차원 공간을 탐험한다고 생각할 때,

 

실제 게임기의 메모리상에서는 화면과는 상관 없이 ​평면 상의 공간을 프로세싱​하고 있는 것이다.




 

3차원 공간처럼 보여도 ​Z축이 없는 2차원 공간​이기에, 모든 벽들의 높이가 같고 게임 상의 높낮이 변화가 전혀 없다.

 

계단도, 2층도 없다.

 

 

 

 

 

 

 

 

그렇다면 ​둠​은?

 

둠은 울펜슈타인 3D보다 훨씬 진보된 모습을 보여준다.



 

적들이 높은 곳, 낮은 곳에서 보이고 계단도 있다!

아무리 봐도 3차원 공간으로 보인다.




 

하지만 이것도 3차원이 아니다.

 

 

 

 

플레이어가 분명히 적의 머리 너머를 쏘고 있는데,

 

 

아무 문제 없이 총알이 적에게 맞는 것이 보이는가?

 

 

 

 

 

이것 역시 실제 높낮이의 구분 없이 눈속임을 이용하기에 벌어지는 현상이다.

 

 

 

 

 

둠은 울펜슈타인의 레이캐스팅보다 진보된 렌더링 기법으로 ​이진 공간 분할법​(Binary Space Partitioning)을 사용한다.

 

 

 

 

 

 

 

1610848322.jpg

 

개발자가 2차원 맵을 디자인하면

 

 

 

1610848322.jpg

 

둠 엔진은 이 공간을 잘게 잘게 쪼개서

 

 

1610848322.jpg

 

데이터 트리를 형성한다.




 

간단한 작은 공간을 예로 설명해보자.

 

 

 

 

1610848322.jpg

 

이런 네모난 공간을 디자인했다고 해보자.

 

 

 

1610848322.jpg

 

 

게임 엔진은 이 공간을 둘로 나누고,

 

 

1610848322.jpg

 

 

또 그 둘을 다시 둘로 나누고, 계속 나눠서 게임 엔진이 수용할 수 있는 작은 공간들의 집합으로 만든다.

 

 

 

1610848322.jpg

 

 

그리고 이 각각의 공간들을 데이터 트리로 만든다.

 

공간을 둘로 나누고 그 둘을 또 둘로 나눈다고 했던 것에서 볼 수 있듯, 이렇게 하면 서로 제일 가까운 공간들이 자연히 제일 가까운 가지에 배열된다.

 

 

 

 

1610848322.jpg

 

 

플레이어가 이 공간에 들어섰을 때, 프로세서는 그 공간만큼을 렌더링하고 저장한다.

 

 

1610848322.jpg

 

 

그리고 트리의 가장 가까운 다음 가지로 이동해서, 또 그 공간만큼을 렌더링하고 저장한다.

 

 

 

1610848322.jpg

 

 

이렇게 렌더링하고 저장하기를 반복하다가,

 

한 가지가 차지하는 공간이 앞에 가로막혀 화면상에 보이지 않으면 그 공간은 렌더링하지 않고 넘어간다.

 

 

1610848322.jpg

 

 

 

이 절차를 플레이어의 시야 안에 들어오는 공간을 완벽하게 렌더링할 때까지 반복한다.



 

이것도 게임에 들어가는 연산을 최대한 줄여 최적화하기 위한 수단이었다.

 

따로 물체의 위치를 삼차원 정렬하거나 하는 추가적 연산 과정 없이, 데이터 트리를 올바른 순서로 지나는 것 만으로 공간을 정확하게 렌더링할 수 있다.




 

뭔소린지 모르겠으면 그냥 꼼수 써서 효율적으로 화면을 그렸구나 하고 생각하면 된다.

 

 

 

 

 

1610848322.jpg

 

 

레이캐스팅​ 기법을 쓰던 울펜슈타인은 단순한 2차원 게임 시스템을 벗어날 수 없었다.



 

화면은 말 그대로 단순한 2D 타일들을 이어붙인 것 뿐이었기에

 

모든 벽들의 크기가 똑같아야 했으며, 어색한 네모를 기워붙인 형상에서 벗어날 수 없었고, 벽들의 각도가 일정해야만 했다.



 

다른 각도로 배치된 벽을 렌더링하려면 훨씬 많은 연산이 필요했을 것이기 때문이다.

 

 

 

 

 

 

 

 

이와 달리, 둠의 ​이진 공간 분할법​, 일명 ​BSP 기법​은 이러한 제약으로부터 게임을 해방시켜주었다.


 

레이캐스팅처럼 벽의 픽셀들을 일일이 따라 계산하는 대신, 작게 분할된 각각의 공간들을 데이터 트리를 따라 렌더링함으로써

 

프로세서에게 무리를 주지 않고도 벽의 크기와 각도 등을 자유롭게 만들 수 있게 되었고,

 

 

 

1610848322.jpg

 

바닥과 천장을 각기 다른 높이에 배치해 더 다양하고 몰입감 있는 경험을 제공할 수 있게 되었다.



 

혁신적이지만, 아직 3차원에는 도달하지 못했다.

 

 

1610848322.jpg

 

 

깊이감 있는 천장과 바닥으로 보이는 것은 사실 플레이어 시점에서 깊이감 있어보이도록

 

프로세서에게 평소보다 더 멀리 있는 것처럼 렌더링하라고 지정된 타일들일 뿐이고,

 

 

1610848322.jpg

 

실제 메모리 상에서는 전부 2차원 평면이다.



 

둠이 정말 게임을 3차원 공간으로 연산하고 있었다면 공간을 공간 위에 올릴 수 있었을 것이다.

 

 

 

1610848322.jpg

 

하지만 둠을 처음부터 끝까지 플레이해봐도, ​플레이어가 그 아래 설 수 있는 2층 공간​ 같은 건 없다.

 

2층 공간같은 게 있었다면 연산이 꼬였을테니까 말이다.

 

 

 

 

 

 

 

이것이 둠가이가 높낮이에 상관없이 적을 맞출 수 있는 이유다. 적들이 실제로 높은 곳에 있는 게 아니라, 그렇게 보이도록 만들어졌을 뿐이기 때문이다.



 

그리고 시점을 위아래로 올리거나 내릴 수 없는 이유이기도 하다. 진짜 3차원 게임이 아니라 3차원으로 보이도록 만들어진 2차원 게임이기 때문이다.

1610848322.png

 

 

 

우리가 알고 있는 지금 형태의 완전한 3D 게임은 ​퀘이크(1996)​가 나올 때 쯤에야 구현되었다.

 

 

둠에서 최초로 적용된 ​BSP 기법​은 둠 이후에도 수많은 게임들에 활용되었으며, 아직까지도 가끔 활용되고 있다.


 

지금 와서 보면 어설픈 가짜 3D 그래픽이지만, 당시에는 조악한 하드웨어로 3차원의 화면을 구현해낸 혁신 그 자체였다.



 

아마 둠이 없었다면 지금 중붕이들이 즐기는 3D 게임들이 수 년 뒤에나 나왔을 것이다.

 

 

 

 

1610848322.jpg

 

 

그리고 이 혁신의 뒷편에는 조금이라도 더 재밌는 게임을 만들고자 머리를 싸매 가면서 수없이 고민하던 개발자들의 노고가 있었으리라.



 

앞으로 게임 할 때에는 중붕이들도 게임 개발자들에게 감사하는 마음을 갖도록 하자.

 

 

 

1610848322.jpg

 

이새끼는 말고

 

 

 

 

 

 

https://www.youtube.com/watch?v=zb6Eo1D6VW8

 

참고 영상: ​Doom WASN'T 3D! - Digressing and Sidequesting

 

 

퍼온곳: https://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=16490887&exception_mode=recommend&page=1

144개의 댓글

2021.01.17

이런거 보면 개발자들 머리가 보통 비상한게 아니라는 생각이드네

0

(음완벽히이해했어콘)

0
2021.01.17
[삭제 되었습니다]
@멀라

데다내~

0
2021.01.17

개쩐다; ㅊㅊ

0
2021.01.17

문과가 세상을 바꾼다!

0

닐 드럭만 볼때마다 애빈지 애민지 떠올라서 좃같음, 내 평생 겜하다가 빡쳐서 접은건 처음이였다. ㅋㅋㅋ 저새끼 볼때마다 똥꾸녕에 골프채 쑤셔넣고 싶다.

0
2021.01.17

나만 어려운게 아니네 ㅋㅋ

0
2021.01.17

음... 완벽히 이해했어

0
1
2021.01.17

서든어택이 2.5D 라는 소리를 어디서 들었는데 맞음?

0
2021.01.17

좋은글 고맙다

0
2021.01.17

아 하 ! (대충 이해하는 콘)

0
2021.01.17

그러니까 저당시 게임 개발자들이 존나게 똑똑했다 이거지 ?

0
2021.01.17
@참깨드레싱

저 당시는 제작과 개발이 동시에 가능했지만

지금은 동시에 하기가 불가능 할 정도로 기술이 향상됨.

과거엔 천재들이 게임 제작+개발을 했다면

지금 천재들은 개발 쪽으로 편중되어 있다고 봐야함.

그러니까 그때도 천재고 지금도 천재다 이거지.

3
@참깨드레싱

저땐 삽날 만들려면 형틀부터 자기들이 다 만들어야함

지금은 형틀의 형태를 짜는 프로그램이 만들어져있고

게임개발자는 형태와 색깔정도만 정하면 되는 수준이지(물론 여전히 같이 만드는곳도 많음)

0
2021.01.17

정성추!

0
2021.01.17

배경화면 하나하나 코드 노가다 하는거 생각하니 토나오네

0
2021.01.17
0
2021.01.17
@연골어류
0
0

난 둠3d는 진짜 3d인줄알았는데 2d 맵에다가 그냥 높이값만 부여했던거였네

0
2021.01.17

알쓸신잡추

0

그럼 완전 3D 게임은 뭐가 최초임?

0
2021.01.17
@북북춤할아버지

울펜슈타인3d, 본문에서 얘기하는거는 2d/3d에 대해서 왔다갔다 하는데 기본적으로 3d게임은 xyz축을 가진 플레이를 지원하는 게임임. 엔터더건전을 '사실3d다'라고 했지만, 그냥 3d엔진으로 만든거지 3d게임은 아님

1
2021.01.17
@북북춤할아버지

위에 본문에 나와있듯 퀘이크로 보는 경우가 많음

물론 위에 덧글에 병림픽 열린 이유처럼 3d겜을 어케 정의하느냐에 따라 다르게 주장할 수 있긴 함

3d겜의 정의를 가장 러프하게 하면 73년 3d 미로퍼즐인 메이즈워가 있고

울펜슈타인이나 퀘이크로 볼 수도 있지

퀘이크 이상으로 엄밀한 3d는 나온적 없음. 애초에 모니터가 2d니 홀로그램 게임이라도 나오지 않으면 vr이고 뭐고 2d라고 우길 수 있음.

0
2021.01.17

신기하다 결핍이 몸을 비틀 의지를 만들어주는건가

0
2021.01.17

요즘은 블루프린트같은걸로 비프로그래머도 게임만들기 쉬워졌는데 저때는 진짜 난이도 헬이었을듯

0
2021.01.17

 

수능 비문학 생각나네..

1
2021.01.17

게임계에 새로운 개념을 심어준의미에서 둠과 그 개발진들은 상징하는바가 크지

 

보니까 레이케스팅과 비슷한 개념의 기술이 현재에도 쓰이는게 레이트레이싱 같아보인다

 

레이트레이싱은 레이캐스팅과 달라보이지만 큰 뼈대개념에서 보면 비슷함

 

캐스팅은 플레이어의 시점에 따라 2D사물에 원근감을 부여하기 위해 크고작게 텍스처를 그리는거지만

 

트레이싱은 게임월드를 관통하는 조명 스포트라이트의 시점으로 빛의산란이나 반사를 표현하는걸로 바꾼다면 굵직한 개념은 비슷함

 

물론 실현기술은 전혀다른 차원의 기술을 요구하기 때문에 천지차이지만

 

 

0
2021.01.17

그래서 싸이버펑크 자동차들도 2차원인거구나

0
2021.01.17

사이버 공학자들이야

방법 개발해서 불가능을 가능으로 만드는 점에서

0
2021.01.17

게임공간 신기하네 ㅋㅋ

0
2021.01.17

그러니까 엔진 사서 쓰라고 개빡대가리색기들아

0
2021.01.17

와 저런방식이었구나 진짜똑똑하네;

1
2021.01.17

추천 누르려다가 ㅈ럭만 나와서 멈춤

0
2021.01.17

재밌네

0
2021.01.18
0

삽질기사 바이럴?

0
2021.01.20
@층입니다문희다칩니다

이미 성공할대로 성공한겜에 뭔 바이럴

0
@누구신교

읭? 대기업 바이럴 안하냐?

0
2021.01.20
@층입니다문희다칩니다

삽질기사가 대기업이어써???

0
@누구신교

뭔 개소리야? 대기업도 바이럴하는 세상에 삽질기사가 성공했다고 바이럴 안하는건 아니라는거지.

니 머리는 어깨 허전하지 말라고 올려놓은거 아니다. 생각하라고 올려져 있는거지.

0
2021.01.20
@층입니다문희다칩니다

애초에 펀딩으로 시작해서 성공한겜인데 펀딩자첼 바이럴로 보면 모를까 여기다 글쓰는식의 바이럴은 필요조차없을 정도로 성공한겜이야

0
무분별한 사용은 차단될 수 있습니다.
제목 글쓴이 추천 수 날짜
거울치료 레전드 2 아네싸매니아 15 방금 전
팬의 남자친구를 만난 연예인 8 침착한사람 15 방금 전
일주일동안 개사료만 먹으며 살아남기 17 lllIIIIlll 21 1 분 전
중국 주요 도시들 가라앉는중 68 므르므르므 43 9 분 전
카페 주인보고 고양이 문제를 해결하라 한 이유 27 일토준지 54 11 분 전
다크앤다커 모바일 근황 54 하하하하핫 44 12 분 전
오늘자 압구정 32 독거청년 59 17 분 전
개붕이들은 예비군일까 민방위일까 116 궤변론자 52 18 분 전
여초첩자 거르는 방법 64 맛춘뻡에통닭함 86 23 분 전
식품 위생법도 정도껏 해야죠 54 댓글배달 62 27 분 전
故장정진 성우 미호크 ai더빙 58 침착한사람 48 42 분 전
성심당이 대단한 점 101 잭다니엘 73 47 분 전
저출산 특단의 대책, 아기 1명당 현금 1억씩 지급 검토중인 정부 362 누가크래커 135 54 분 전
"어려운 말 몰라도 사는데 문제없어 ㅋㅋㅋ" 197 마법소년매지컬춘식 164 1 시간 전
속초의 성심당 123 춤추는무뚜 74 1 시간 전
대부업체에서 30일 무이자 대출을 해주는 이유 90 NewBloom 114 1 시간 전
150만 달러 vs 150만명의 친구 66 마법소년매지컬춘식 92 1 시간 전
ㅆㄷ) 후원대박으로 장모님 연애를 넣는 국산 미연시 70 하하하하핫 89 1 시간 전
여초 첩자 군필인척 레전드 ㅋㅋㅋㅋㅋㅋ.jpg 119 닉네임변경01 100 1 시간 전
'선감학원 사건' 아동 집단 암매장 확인…12∼15세 추정 35 등급추천요정여름이 82 1 시간 전