게임엔진(Game Engine)이란, 컴퓨터∙비디오 게임 개발에 바탕이 되는 기술을 제공하여 개발 과정을 단축시키고 다양한 플랫폼에서 실행할 수 있게 해주는 소프트웨어 구성 요소를 말하는 것으로, 그래픽의 출력을 위한 렌더링 엔진, 물리학적 연산의 수행으로 게임 내 등장하는 모든 객체를 사실적으로 묘사하는 물리 엔진, 충돌 검춢과 충돌 반응, 사운드 출력, 스크립트 작성, 애니메이션, 인공 지능, 네트워크 관리 등 게임 개발에 필수적인 기능들을 제공한다.
게임엔진은 이러한 기능들을 프로그래머가 필요로 할 때 바로 사용할 수 있도록 제공하기 때문에 개발에 들어가는 비용과 더불어 시간을 단축시키는 역할을 한다. 게임엔진이 꼭 게임 개발에만 사용되는 것은 아니다. 오늘날의 게임엔진은 기술의 발전으로 인해 홍보용 데모영상이나 건축물의 시각화, 훈련 시뮬레이션, 모델링 환경 등 실시간으로 그래픽을 출력해야 하는 과정에 사용되기도 한다.
▲ '게임엔진'의 역사

1980년대에 비슷한 개념의 시스템이 있긴 했지만 본격적인 게임엔진은 1990년대 일인칭 슈팅(FPS) 게임들로부터 시작되었다. 지금도 일인칭 슈팅 게임을 기반으로 한 게임엔진들이 기술을 주도하고 있는 상황이다.
처음부터 상용화를 목적으로 게임엔진이 개발된 것은 아니었는데, 1990년대 중반 이드 소프트웨어의 일인칭 슈팅 게임인 '둠'과 '퀘이크'가 인기를 끌자 다른 개발사들이 그 소프트웨어의 일부에 대한 사용 허락을 받아 그것에 자신들만의 그래픽, 사운드 캐릭터, 무기, 레벨을 추가해 게임을 만들기 시작했고 이후 게임엔진 기술을 가진 개발사들이 이러한 보조 수익에 대해 인식을 하면서 다른 개발사들이 이용하기 편하도록 처음부터 게임과 게임엔진을 따로 설계하여 개발하게 되었다. 에픽게임스의 '언리얼'엔진과 ID소프트웨어의 '퀘이크3 아레나'가 그 대표주자이다.
오늘날의 게임엔진들은 기술의 발전과 함께 가장 복잡한 응용 소프트웨어의 하나가 되었다. 게임을 이용하는 게이머의 만족을 위해서 각 기능들이 정교하게 작용해야 함은 물론 각각의 기능들을 상호 작용시켜야 하기 때문이다. 아무리 그래픽이 뛰어나다고 해도 사운드가 엉망이거나, 타격감이 좋지 않으면 게이머들에게 바로 외면을 당해버리기 십상이다.
기술의 발전은 게임엔진 내에서 각각의 기능들을 서로 분리되게 만들었다. 예전에는 프로그래머 한 명이 랜더링 작업과 스크립트 작성, 레벨 디자인 등을 모두 함께 했는데 이제는 각각의 기능에 맞는 별도의 전문가들이 업무를 수행한다. 오늘날 일반적인 게임개발팀에 프로그래머보다 그래픽 스텝이 몇 배는 많은 현상은 흔한 일이 되었다.
기원이 일인칭 슈팅 게임이다보니 게임엔진을 주로 사용하는 장르도 일인칭 슈팅 게임이었지만, 오늘날에는 엔진들이 범용성을 갖추게 되면서 다른 장르에서도 사용되고 있다. 우리나라의 3D 온라인 게임의 한 획을 그은 엔씨소프트의 ‘리니지2’는 '언리얼 엔진2'를 이용해 개발되었으며 같은 회사의 ‘아이온’은 크라이텍의 '크라이' 엔진을 기반으로 만들어졌다. 두 게임 모두 전형적인 MMORPG 게임이다. PC 온라인게임 뿐만 아니라 콘솔 게임에도 게임엔진은 사용되는데, '렌더웨어' 엔진은 콘솔용 레이싱 게임 ‘번아웃’ 시리즈에 꾸준히 사용되어 왔다.
▲ '게임엔진'의 주요 기능
게임엔진의 중요한 기능 몇 가지를 살펴보자면, 우선 렌더링 엔진은 앞서 설명했듯이 게임 내 그래픽의 표현을 담당한다. 이 기능은 게임에 있어 가장 중요한 부분이니 만큼 거의 모든 게임엔진이 제공하고 있다.
1990년대 후반 폴리곤 객체를 묘사하는 게임들이 등장한 이래로 렌더링 엔진은 많은 발전을 이루어, 현재의 게임엔진은 하이다이내믹 레인지 렌더링, 픽셀 셰이더, 정점 셰이더, 법선 맵핑, 피사계 심도, 레벨 오브 디테일 등과 같은 기술을 지원하고 있다. 또한 게임의 설계를 단순화시켜주고 거대한 가상 세계를 더욱 효율적으로 렌더링할 수 있게 해주는 씬 그래프 기능도 제공한다.
또한 많은 게임엔진들이 ‘플랫폼 추상화’를 제공하고 있다. 이를 통해 비교적 손쉽게 같은 게임을 PC와 콘솔 등 다양한 플랫폼에서 실행시킬 수 있다. 게임엔진 내 소스 코드에 아주 적은 혹은 어떤 수정도 없이 PC와 콘솔 모두에서 실행 가능한 게임을 만들 수 있는 것이다.
물리 엔진의 경우, 실제 세계의 물리 작용을 컴퓨터로 묘사하여 보다 사실적인 게임 환경을 제공해 준다. 초기의 게임엔진은 충돌을 감지하고 반응하는 정도의 물리 엔진을 제공하는 것이 전부였지만, '소스 엔진'을 이용한 ‘하프라이프2’가 출시되면서 물리 엔진의 개념이 달라 졌다. '소스 엔진'에는 ‘하복 물리 엔진’이 탑재되어 있었는데 이 ‘하복 물리 엔진’의 물리 시뮬레이션 기능이 거의 현실과 같은 물리 작용을 묘사할 수 있었던 것. 물리 엔진은 프로그래머들에게 차량과 액체, 직물과 연체 효과 등의 기능을 지원한다.
▲ '게임엔진'의 개발과 이용
게임의 개발에 앞서 게임엔진을 개발할 것인지 아니면 상용화된 게임엔진을 이용할 것인지를 결정하게 된다. 상용화된 엔진을 사용할 경우 예산과 일정을 단축시킬 수 있다는 장점이 있지만 개발할 게임과 상성이 맞지 않을 경우에는 낭패를 볼 수도 있다. 그렇기 때문에 어느 정도의 상성만 맞다면 엔진을 구매한 개발사에서 자신들의 게임에 맞춰 최적화하거나 개조해서 사용하기도 한다. ‘스프린터 셀’ 시리즈의 경우 '언리얼 엔진'을 기반으로 ‘스프린터 셀’에 맞게 엔진을 개조해서 사용다. 직접 게임엔진을 개발하는 경우는 자신들의 게임에 맞는 상용 엔진이 없는 경우가 대부분이다.
판매를 위해 개발되는 엔진은 그 엔진이 얼마만큼 범용성을 가지느냐가 관건이 된다. 대표적인 범용 엔진인 에픽게임스의 '언리얼 엔진'의 경우 '언리얼 엔진2.5' 버전과 '언리얼 엔진3'을 출시하면서 기존 일인칭 슈팅 게임 중심의 구조에서 벗어나 범용성을 더욱 강화했다. 크라이텍의 '크라이 엔진'과 게러지게임즈의 '토크 게임엔진'역시 판매를 목적으로 하는 게임엔진들이다.
scrapper@osen.co.kr
화보로 보는 뉴스, 스마트폰으로 즐기는 ‘OSEN 포토뉴스’ ☞ 앱 다운 바로가기