둠에서 Dunia까지: 3D 게임 엔진의 역사 (3)
공백 기간이 너무 길었던것 같습니다. 매일의 생활과 블로깅, 둘 모두에 정성을 기울여 볼 수 있게끔 균형을 잘 잡아야 겠군요. 혹시라도 이후 글을 기다린 분이 계시다면 감사의 마음과 함께 사과의 말을 전하고 싶습니다. 오래 기다리게 해서 죄송합니다 ~_~;; 블로깅의 생활화에 대해 다시 한번 생각해 봐야 겠군요. ^_^
이번 글에선 지난번 글인 둠에서 Dunia까지: 3D 게임 엔진의 역사 (2)에 이어 계속해서 3D 게임 엔진이 어떻게 변화해 나갔는지 정리해 보려합니다. 이전글의 듀크뉴겜 3D, 스타워즈에 이어 이번 포스팅에선 id Software사의 퀘이크 시리즈에 사용된 게임 엔진의 모습을 살펴보겠습니다.
id 소프트웨어 하면 역시나 전 울펜슈타인이 제일 먼저 떠오릅니다. 이곳 저곳을 조준하면서 속도감 있게 플레이 하고난뒤 도스 환경으로 빠져 나갔을때 아스키 아트로 화면에 표시된 id 소프트웨어란 글자가 인상 깊었기 때문인데, 확실히는 기억이 안나는군요. ^_^;;
CPU 가해지는 부하를 더욱 줄이기 위해, 퀘이크 엔진은 Z-버퍼링이라고 불리는 방법도 사용했습니다. Z-버퍼링이란 간단하게 말해서 맵의 어떤 부분이 보이고 어떤 부분이 화면에 안보이는 부분인지 판단해서 플레이어 시야에서 보일만한 부분만 렌더링 하는 방법입니다.
엔진 출시일: 1996년
엔진을 사용한 주목할만한 게임: CIA Operative: Solo Missions, HeXen II, Laser Arena, Quake, Silver Wings, Urban Mercenary
Renderware 게임 엔진은 200여개가 넘는 게임에 사용된 것으로 알려진 게임 엔진 입니다. 게임의 대부분이 플레이 스테이션 2 콘솔용이긴 했지만 상당수의 게임이 PC에서 플레이 가능한 게임인걸 감안해 보면 PC용 엔진이라고 봐도 되겠지요. ^_^ 이외에도 게임큐브, Wii, Xbox, Xbox 360, 플레이 스테이션 3, PSP에서도 사용되었기 때문에 멀티플랫폼 게임 엔진으로도 손색이 없었습니다.
원래 PC 기반 미들웨어 솔루션을 중심으로 1998년에 개발된 Renderware는 이 시점에 이르기까지의 다른 엔진들처럼 GPU를 사용하지 못하는 게임 엔진 이었습니다. 이점은 결국 시장을 선도하는 API로서의 Renderware의 지위에 하락세로 작용하게 됩니다. 게임 잡지 Gamastura의 William "Bing" Gordon과의 인터뷰를 보면 이를 잘 알 수 있습니다. EA (Electronic Arts)의 COO로서 Renderware 엔진의 개발사인 Criterion을 2004년 인수했던 "Bing" Gordon은 당시 이렇게 한탄했습니다.
Epic의 언리얼(Unreal) 엔진이 Renderware에 그림자를 드리우기 전까지, Renderware는 개발자들이 멀티미디어적 요소와 게임 처리를 실시간으로 컨트롤할 수 있게 해주었기에 인기를 끌 수 있었습니다. 예를들면, 개발자는 내부 코드를 수정하거나 씬을 모두 다 한번 더 렌더링 할 필요없이 손쉽게 캐릭터 옷의 색상을 변경할 수 있었습니다.이점은 기초적인 물리 엔진에도 동일하게 적용되었습니다. 점프나 이동같은 동작 말이지요. 움직임에 문제가 있을 경우, 개발자는 계속 실행중인 상태에서 물리 엔진에 해당하는 부분을 바꾼다음 변경 사항을 실시간으로 볼 수 있었습니다.
엔진 출시일: 1996년
엔진을 사용한 주목할 만한 게임: Airport Tycoon, Apache Air Assault, Bratz: Rock Angelz, Broken Sword: The Sleeping Dragon, Burnout Paradise, Chinese Paladin 4, Cold Fear, Commandos: Strike Force, Dream of Mirror Online, Evolution GT, Frank Herbert's Dune, G-Nome, kill.switch, Madagascar, Manhunt, Red Jets, Startdon 3, Super-Bikes Riding Challenge, Tony Hawk's Pro Skater 3, 4, and Underground, Trickstyle
오리지널 Quake 게임 엔진이 하드웨어 그래픽 가속을 제공했던 반면, Quake II는 처음 설계될 때부터 자체적으로 OpenGL 지원을 제공했습니다. 지금은 id Tech 2로도 알려진 Quake II 엔진의 다른 기능에는 색상이 적용된 광원 효과와, C 언어로 작성되어 DLL(Dynamic Link Library)로부터 로드되는 새로운 게임 모델이 포함되어 있었습니다. 이 방식은 오리지널 Quake 엔진의 QuakeC 스크립팅 언어와는 상당히 다른것 이었습니다. 스크립트 언어 (일반적인 텍스트 형태로 코드가 작성되고 바로 실행됨. 해당 코드를 실행할 수 있는 환경이 갖춰져야함.)를 통한 접근과는 달리 바이너리화된 라이브러리 (텍스트 형태로 작성된 코드를 바로 실행하지 않고 컴퓨터가 이해할 수 있는 2진 코드로 기타 필요한 요소와 함께 묶어서 패키징함.)를 통해 동작되었기 때문에 소프트웨어 방식의 렌더링과 OpenGL 렌더링이 모두 가능했습니다. 둘 중 어느 하나만 선택해서 지원해야 하는 불편함이 사라진 셈이지요. 덕분에 당시 부두(Voodoo) 그래픽 카드를 사용하고 있지 않은 개발자도 어느 정도 개발이 가능할 수 있었습니다.
Quake II는 모드가 가능한 게임으로도 꽤 알려져 있었습니다. FPS 게임에서 모드란 일반적으로 원래 게임의 캐릭터나 무기, 기타 요소를 그대로 가져오면서도 내용이나 진행 방식, 구성이 다른 미니 게임 형태의 게임을 말합니다. DLL들이 게임 로직(논리적인 내부 처리 구조나 부분)에도 사용되었기 때문에, id 소프트웨어는 엔진의 나머지 부분을 비공개로 유지하면서 소스 코드를 모드 커뮤니티에 공개할 수 있었습니다. 모드 개발에 필요한 부분만 소스를 공개하고 나머지 부분은 블랙박스처럼 묶여진 DLL에서 가져다 쓰게끔 한것이지요. 엔진 자체가 믿을 수 없을만큼 튼튼했기 때문에, 숙련된 개발자들은 이 엔진을 사용해서 짜임새 있는 완결성을 갖춘 Role-playing game (RPG)을 개발하는데 사용하거나 (Anachronox가 대표적인 예에 해당) 실감나는 장면을 연출할 수 있었습니다.
엔진 출시일: 1997년
엔진을 사용한 주목할 만한 게임: Anachronox, CodeRED: Alien Arena, Daikatana, Heretic II, Kingpin: Life of Crime, SiN, Soldier of Fortune, UFO: Alien Invasion, Warsow
이름을 들어서 익숙하긴 한데 자세히는 잘 모르거나, 혹은 '아, 그때 플레이했던 이게 거기에 사용된 엔진이었구나' 싶은 엔진이 눈에 들어오지 않으시나요. 궁금하거나 반가운 느낌이 드신다면, 지금이라도 한 번 엔진 이름이나 게임 이름으로 검색해 보세요. 당시 게임이 어떤 모습이었는지 기억을 떠올리거나 살펴보면서, 무더운 여름 게임의 새로운 재미를 발견하실 수 있을겁니다. 게임 자체에 대해 알아나가는 재미를 말이지요.
이번 글에선 지난번 글인 둠에서 Dunia까지: 3D 게임 엔진의 역사 (2)에 이어 계속해서 3D 게임 엔진이 어떻게 변화해 나갔는지 정리해 보려합니다. 이전글의 듀크뉴겜 3D, 스타워즈에 이어 이번 포스팅에선 id Software사의 퀘이크 시리즈에 사용된 게임 엔진의 모습을 살펴보겠습니다.
id 소프트웨어 하면 역시나 전 울펜슈타인이 제일 먼저 떠오릅니다. 이곳 저곳을 조준하면서 속도감 있게 플레이 하고난뒤 도스 환경으로 빠져 나갔을때 아스키 아트로 화면에 표시된 id 소프트웨어란 글자가 인상 깊었기 때문인데, 확실히는 기억이 안나는군요. ^_^;;
Quake 엔진
퀘이크 엔진은 id 소프트웨어 사에서 만들어진 최초의 진정한 3D 엔진이라고 할 수 있습니다. 3D처럼 보이는 2D가 아닌 실제 3D 환경을 구성할 수 있었기 때문입니다. CPU 성능이 낮은 컴퓨터에서도 부드럽게 동작할 수 있도록 하기위해 개발팀이 상당히 많은 고생을 했다고 하는군요. 이걸 가능하게 하기위해 사용한 방법중 하나가 플레이어가 볼 수 없는 특정 영역을 처리에서 제외한 다음 맵을 렌더링(표시) 하는 것이었습니다. 우선 브러쉬라고도 불리는 객체들이 맵의 바깥 경계를 형성한 다음 하나의 폐쇄 공간을 생성해 냅니다. 그런 다음, 렌더링 전처리기를 통과시켜 경계 안팎의 빈 공간을 구분해 냅니다. 이제 마지막 단계에서 경계밖의 불필요한 공간을 버리면 처리는 완료되게 됩니다. 이 방법은 효율이 꽤나 높았기 때문에 대개는 절반, 경우에 따라선 그 이상의 객체수를 줄일 수 있었다는군요. 1
CPU 가해지는 부하를 더욱 줄이기 위해, 퀘이크 엔진은 Z-버퍼링이라고 불리는 방법도 사용했습니다. Z-버퍼링이란 간단하게 말해서 맵의 어떤 부분이 보이고 어떤 부분이 화면에 안보이는 부분인지 판단해서 플레이어 시야에서 보일만한 부분만 렌더링 하는 방법입니다.
퀘이크 엔진은 CPU에 의해 실시간으로 처리되는게 아닌 전처리기의 2번째 과정에서 처리되는 3D 광원, 3D 하드웨어 가속에 대한 지원까지 포함하고 있었습니다. 3D 하드웨어 가속을 지원한 덕분에 이후 id 소프트웨어의 기술 감독이었던 John Carmac씨가 이후 앤티앨리어싱을 포함한 Vérité 1000 그래픽 칩셋의 하드웨어 기능을 활용할 수 있도록 퀘이크 엔진의 네이티브 포팅(Vérité 1000 칩셋에서 자연스럽게 동작될 수 있도록 수정된) 버전인 VQuake 엔진을 출시할 수 있었습니다. OpenGL에 대한 지원도 추가된 덕분에 Voodoo와 PowerVR 그래픽 카드를 구입한 여러 사용자가 좀 더 편하게 화려한 그래픽을 즐길 수 있었습니다.
엔진 출시일: 1996년
엔진을 사용한 주목할만한 게임: CIA Operative: Solo Missions, HeXen II, Laser Arena, Quake, Silver Wings, Urban Mercenary
Renderware
Renderware 게임 엔진은 200여개가 넘는 게임에 사용된 것으로 알려진 게임 엔진 입니다. 게임의 대부분이 플레이 스테이션 2 콘솔용이긴 했지만 상당수의 게임이 PC에서 플레이 가능한 게임인걸 감안해 보면 PC용 엔진이라고 봐도 되겠지요. ^_^ 이외에도 게임큐브, Wii, Xbox, Xbox 360, 플레이 스테이션 3, PSP에서도 사용되었기 때문에 멀티플랫폼 게임 엔진으로도 손색이 없었습니다.
원래 PC 기반 미들웨어 솔루션을 중심으로 1998년에 개발된 Renderware는 이 시점에 이르기까지의 다른 엔진들처럼 GPU를 사용하지 못하는 게임 엔진 이었습니다. 이점은 결국 시장을 선도하는 API로서의 Renderware의 지위에 하락세로 작용하게 됩니다. 게임 잡지 Gamastura의 William "Bing" Gordon과의 인터뷰를 보면 이를 잘 알 수 있습니다. EA (Electronic Arts)의 COO로서 Renderware 엔진의 개발사인 Criterion을 2004년 인수했던 "Bing" Gordon은 당시 이렇게 한탄했습니다.
"Renderware didn't get the next-gen parts that we needed. We actually underestimated Epic early on. They told us, 'We're going to do this, this, and this,' and we thought, 'Eh, it's going to be kind of hard.' We also underestimated our team, then we looked up three months, six months, and nine months later and said, 'Whoops, we underestimated Epic.'"
"Renderware는 우리가 필요로 하는 다음 세대를 위한 (이후 세대의 게임을 위한) 부분을 가지고 있지 않았습니다. 우린 사실 초기 Epic을 과소평가 했었습니다. 그들은 우리에게 이렇게 말했죠. '이걸 한뒤에, 이걸 하고, 그리고 이걸 하겠습니다.' 그래서 우린 이렇게 생각했습니다. '음, 아마 그렇게 하긴 어려울꺼야.' 우린 우리팀도 과소평가 했었습니다. 그리고 나서 3개월, 6개월, 9개월 이후 살펴본뒤 우린 이렇게 말했죠. '이런, 우리가 Epic을 과소평가 했었구나'라고 말이지요."
Epic의 언리얼(Unreal) 엔진이 Renderware에 그림자를 드리우기 전까지, Renderware는 개발자들이 멀티미디어적 요소와 게임 처리를 실시간으로 컨트롤할 수 있게 해주었기에 인기를 끌 수 있었습니다. 예를들면, 개발자는 내부 코드를 수정하거나 씬을 모두 다 한번 더 렌더링 할 필요없이 손쉽게 캐릭터 옷의 색상을 변경할 수 있었습니다.이점은 기초적인 물리 엔진에도 동일하게 적용되었습니다. 점프나 이동같은 동작 말이지요. 움직임에 문제가 있을 경우, 개발자는 계속 실행중인 상태에서 물리 엔진에 해당하는 부분을 바꾼다음 변경 사항을 실시간으로 볼 수 있었습니다.
엔진 출시일: 1996년
엔진을 사용한 주목할 만한 게임: Airport Tycoon, Apache Air Assault, Bratz: Rock Angelz, Broken Sword: The Sleeping Dragon, Burnout Paradise, Chinese Paladin 4, Cold Fear, Commandos: Strike Force, Dream of Mirror Online, Evolution GT, Frank Herbert's Dune, G-Nome, kill.switch, Madagascar, Manhunt, Red Jets, Startdon 3, Super-Bikes Riding Challenge, Tony Hawk's Pro Skater 3, 4, and Underground, Trickstyle
Quake II / id Tech 2
오리지널 Quake 게임 엔진이 하드웨어 그래픽 가속을 제공했던 반면, Quake II는 처음 설계될 때부터 자체적으로 OpenGL 지원을 제공했습니다. 지금은 id Tech 2로도 알려진 Quake II 엔진의 다른 기능에는 색상이 적용된 광원 효과와, C 언어로 작성되어 DLL(Dynamic Link Library)로부터 로드되는 새로운 게임 모델이 포함되어 있었습니다. 이 방식은 오리지널 Quake 엔진의 QuakeC 스크립팅 언어와는 상당히 다른것 이었습니다. 스크립트 언어 (일반적인 텍스트 형태로 코드가 작성되고 바로 실행됨. 해당 코드를 실행할 수 있는 환경이 갖춰져야함.)를 통한 접근과는 달리 바이너리화된 라이브러리 (텍스트 형태로 작성된 코드를 바로 실행하지 않고 컴퓨터가 이해할 수 있는 2진 코드로 기타 필요한 요소와 함께 묶어서 패키징함.)를 통해 동작되었기 때문에 소프트웨어 방식의 렌더링과 OpenGL 렌더링이 모두 가능했습니다. 둘 중 어느 하나만 선택해서 지원해야 하는 불편함이 사라진 셈이지요. 덕분에 당시 부두(Voodoo) 그래픽 카드를 사용하고 있지 않은 개발자도 어느 정도 개발이 가능할 수 있었습니다.
Quake II는 모드가 가능한 게임으로도 꽤 알려져 있었습니다. FPS 게임에서 모드란 일반적으로 원래 게임의 캐릭터나 무기, 기타 요소를 그대로 가져오면서도 내용이나 진행 방식, 구성이 다른 미니 게임 형태의 게임을 말합니다. DLL들이 게임 로직(논리적인 내부 처리 구조나 부분)에도 사용되었기 때문에, id 소프트웨어는 엔진의 나머지 부분을 비공개로 유지하면서 소스 코드를 모드 커뮤니티에 공개할 수 있었습니다. 모드 개발에 필요한 부분만 소스를 공개하고 나머지 부분은 블랙박스처럼 묶여진 DLL에서 가져다 쓰게끔 한것이지요. 엔진 자체가 믿을 수 없을만큼 튼튼했기 때문에, 숙련된 개발자들은 이 엔진을 사용해서 짜임새 있는 완결성을 갖춘 Role-playing game (RPG)을 개발하는데 사용하거나 (Anachronox가 대표적인 예에 해당) 실감나는 장면을 연출할 수 있었습니다.
엔진 출시일: 1997년
엔진을 사용한 주목할 만한 게임: Anachronox, CodeRED: Alien Arena, Daikatana, Heretic II, Kingpin: Life of Crime, SiN, Soldier of Fortune, UFO: Alien Invasion, Warsow
이름을 들어서 익숙하긴 한데 자세히는 잘 모르거나, 혹은 '아, 그때 플레이했던 이게 거기에 사용된 엔진이었구나' 싶은 엔진이 눈에 들어오지 않으시나요. 궁금하거나 반가운 느낌이 드신다면, 지금이라도 한 번 엔진 이름이나 게임 이름으로 검색해 보세요. 당시 게임이 어떤 모습이었는지 기억을 떠올리거나 살펴보면서, 무더운 여름 게임의 새로운 재미를 발견하실 수 있을겁니다. 게임 자체에 대해 알아나가는 재미를 말이지요.
이어지는 내용과 글은 이후 연재될 4편에 계속해서 이어집니다. 기대해 주세요. ^_^V
- 화면에 렌더(표시)하기 전에 필요한 사전 작업을 처리하는 처리기를 말합니다. 복잡한 연산의 경우, 화면에 표시될때 실시간으로 실행하면 성능에 악영향을 미칠 수 있습니다. 이런 작업들을 미리, 사전에 처리해 두기 위해 전처리기가 사용됩니다. [본문으로]