게임 엔진이란?
컴퓨터 비디오 게임 같은 실시간 그래픽 표시 기능을 갖춘 상호작용 응용 프로그램을 구현하는 핵심 소프트웨어 구성 요소.
컴퓨터 게임 개발에 바탕이 되는 기술을 제공하여 개발 과정을 단축시켜 줄 뿐 아니라, 게임을 다양한 플랫폼에서 실행할 수 있게 해주기도 한다. 특히 게임 엔진은 재사용성을 염두에 두고 있기 때문에, 하나의 게임에 종속되지 않고 여러 종류의 게임에서 사용될 수 있도록 개발된다.
게임 엔진이 제공하는 주요 기능
2D그래픽이나 3D그래픽의 출력을 위한 렌더린 엔진(렌더러), 물리 엔진, 충돌 검출과 충돌 반응, 사운드 출력, 스크립트 작성, 애니메이션, 인공 지능, 네트워크, 스트리밍, 메모리 관리, 쓰레딩, 씬 그래프 등이 있다.
게임 엔진은 게임 소프트췌어의 구성에 필요하 소프트웨어 구성 요소를 재사용할 수 있게 만든 것이다. 엔진은 개발에 필요한 기능을 즉시 사용할 수 있도록 제공하여 개발의 단가와 복잡도를 줄여주고, 제 일정에 복잡한 게임을 출시할 수 있게 해준다.
게임 엔진은 유연하고 재사용 가능한 소프트웨어 환경을 제공해주는 점 때문에 '게임 미들웨어'라고 불리기도 한다. 게임 미들웨어라고 불리는 시스템들은 구성 요소 기반의 구조를 가지는 것이 많다. 그로 인해 게임의 특정 시스템을 더 전문적인 미들웨어 구성 요소로 대체하거나 확장할 수도 있다. 렌더웨어 같은 게임 엔진의 경우, 아예 일련의 미들웨어 구성 요소들을 느슨하게 연결하는 방식으로 설계되었다. 개발사가 그 중 적당한 것만 선택해 자신들이 사용하는 엔진과 결합할 수 있는 것이다.
이름과 달리 게임 엔진은 다른 분야에서도 사용된다. 홍보용 데모나 건축 시각화, 훈련 시뮬레이션, 모델링 환경 등 실시간으로 그래픽을 출력하는 상호작용 응용 프로그램들이 좋은 예이다.
주요한 기능
1) 렌더링 엔진
렌더링 엔진은 2D나 3D 그래픽의 표현을 담당한다. 이 기술은 컴퓨터 비디오 게임에 있어 가장 주목을 받는 기술인만큼, 거의 모든 게임 엔진이 반드시 제공하는 기능이다. 지금과 같은 게임 엔진이 3D와 일인칭 슈팅 게임 시대부터 시작되었지만, 아마추어 개발자나 2D그래필에 대한 요구로 인해 2D게임 엔진도 다수 등장했다.
1990년대 중후반에 폴리곤 객체를 묘화하는 게임들이 등장한 이래로 렌더링 엔진은 많은 발전을 거쳤다. 2007년의 게임 엔진은 하이 다이내믹 레인지 렌더링, 픽셀 셰이더, 정점 셰이더, 법선 맵핑, 피사계 심도, 레벨 오브 디테일, 광산란 시뮬레이션, 소프트 쉐어도 같은 기술이 지원되는 추세이다. 또한 오늘 날의 게임 엔진은 3D게임 세계를 객체 지향적으로 묘사하는 씬 그래프도 제공한다. 씬 그래프는 게임의 설계를 단순화시켜주고 거대한 가상 세계를 더욱 효율적으로 렌더링할 수 있게 해준다.
어떤 엔진은 다른 필요한 기능을 모두 빼고 실시간 3D그래픽스 렌더링 기능만을 제공하기도 한다. 이런 엔진은 게임 개발사가 나머지 기능을 스스로 작성하거나, 다른 미들웨어 구성 요소와 조합해야만 한다. 이런 형식의 엔진은 보통 '그래픽스 엔진','렌더링 엔진'으로 불린다. 그래픽스 엔진에는 렐를 포지, 오거, 크리스털 스페이스, 제네시스 3D 등이 있다.
2) 시각적인 개발 도구
게임 엔진은 시각적인 GUI개발 도구들이 통합 개발 환경으로 제공하고 데이터 주도 방식의 개발을 가능하게 하여 프로그래머가 아닌 다른 사람도 프로그래밍 지식 없이 엔진의 기능을 활용할 수 있게 해준다. 엔진이 가장 흔히 제공하는 개발 도구는 레벨 에디터로 게임이 진행되는 장소인 레벨을 구성하고 편집하는 도구이다. 이 도구는 대체로 위지윅 방식을 지원하기 때문에 게임 디자이너나 그래픽 디자이너가 손쉽게 게임 로직와 연결된 레벨을 만들 수 있다. 이런 특징 때문에 레벨 에디터는 게임을 플레이하는 최종 사용자에게 전달되어 플레이어 스스로 레벨을 만들 수 있게 해주기도 한다. 또한 레벨 에디터는 다른 개발 도구의 허브가 되거나 다른 도구와 통합되어 게임의 설계 과정을 전체적으로 관리할 수 있는 도구가 되기도 한다.
3) 플랫폼 추상화
많은 게임 엔진은 다른 미들웨어 프로그램처럼 플랫폼 추상화를 제공하기 때문에, 비교적 손쉽게 같은 게임을 다양한 플랫폼에서 실행할 수 있게 해준다. 소스 코드에 아주 적은 혹은 어떤 수정도 없이 게임 콘솔과 개인용 컴퓨터 모두에서 실행 가능한 게임을 만들 수 있는 것이다.
많은 3D엔진이나 게임 엔진의 렌더링 시스템은 그래픽 처리장치나 비디오 카드의 소프트웨어 추상화를 제공하는 다이렉트3D나 오픈 GL같은 그래픽스 API를 기초로 만들어진다. 또한 게임에 일반적으로 사용되는 다이렉트X나 SDL, 오픈 AL 같은 저수준 라이브러리는 입력 장치, 네트워크 카드, 사운드 카드 같은 컴퓨터 하드웨어에 접속하기 위해 하드웨어와 독립된 접속을 제공한다.
4) 물리 엔진
물리 엔진은 실제 세계의 물리 작용을 컴퓨터로 모사하여, 보다 사실적인 게임 환경을 제공해준다. 게임 엔진 초기에는 충돌을 감지하고 반응하는 것이 엔진이 제공하는 물리 기능의 대부분이었다. 그러다 현실과 가까운 물리 엔진이 크게 대두된 것은 소스 엔진에 탑재된 하복 물리 엔진의 물리 시뮬레이션 기능을 활용한 일인칭 슈팅 게임<하프라이프2>가 공개되고 나서였다.
물리 엔진이 지원하는 기능은 크게 차량, 강체, 액체, 랙돌, 직물과 연체 효과 등이다.
5) 쓰레딩
쓰레딩은 오늘날의 멀티 코어 시스템과 사실성에 대한 요구의 증가 때문에 게임 엔진에서 중요한 위치를 차지하게 되었다. 일반적인 쓰레드는 렌더링, 스트리밍, 사운드, 그리고 물리를 수반한다.
미들웨어
어떤 회사들은 전문적으로 '미들웨어'라 불리는 소프트웨어 묶음을 개발해서 다른 게임 개발사가 게임을 만드는 데 필요한 구성 요소들을 제공한다. 대부분의 미들웨어 소프트웨어는 그래픽, 사운드, 물리, AI등 특정 기능의 개발을 쉽게 해준다. DX 스튜디오, 게임브리오, 렌더웨어가 널리 사용되는 미들웨어 소프트웨어들의 예이다.
기능성있는 서브 시스템들을 제공하여 널리 사용되는 미들웨어는 하복 물리 엔진과 RAD게임 툴즈의 시스템들이 있다. 하복 물리 엔진은 사실적이 물리 시뮬레이션 시스템을 제공하며, RAD게임 툴즈는 비디오 렌더링, 오디어 녹음재생, 그리고 3D렌더링을 위한 시스템들을 개발하고 있다.
MMOG 미들웨어
대규모 다중 사용자 온라인 게임(MMOG)을 위한 미들웨어는 일인용 게임을 위한 것보다 더 복찹하다. 하지만, MMOG의 인기가 증가하면서 그러한 미들웨어 패키지의 개발도 늘어나고 있다.
개발과 이용
게임 엔진은 주로 게임과 함께 개발된다. 제작에 들어가기 전에 프로젝트 관리자와 프로그래머, 게임 디자이너 등이 함께 게임 프로그램의 설계 방향을 결정하는데, 엔진을 직접 개발할 것인지 개발된 것을 쓸 것인지도 이때 결정한다.
개발된 것을 사용할 경우 예산과 일정을 단축시킬 수 있지만, 개발할 게임과 상성이 맞지 않을 경우 역효과가 난다. 물론 아무리 범용적인 엔진이라도 모든 게임이 요구하는 바를 모두 총족하지는 못 하기 때문에, 게임 개발사가 자신들의 게임에 맞춰 최적화하거나 개조하는 경우가 많다. (상용 게임 개발사를 위한 상용 엔진은 대부분 구입자에게 소스를 공개한다.) 스프린터 셀 시리즈는 구입한 엔진을 개조한 대표적인 예이다. 처음에 언리얼 엔진 2.5를 구입했지만, 시리즈를 거듭할수록 자신들의 게임에 맞게 엔진을 개조해왔다.
직접 엔진을 개발하는 경우는 자신들의 게임에 맞는 엔진이 없는 경우이다. 일인칭 슈팅 게임 <헤이즈>의 개발팀은 자신들의게임이 가진 특징을 살리기 위해 스스로 엔진을 개발했다. 직접 개발하는 엔진도 사내의 다른 프로젝트나 후속 프로젝트를 고려해 범용성을 보장해야 하는 경우가 있다. 나아가 어떤 개발사들은 연구개발팀을 따로 두어 회사 프로젝트 전용의 게임을 개발하기도 한다. 일본의 게임 개발사인 캡콤은 회사의 자체 엔진인 MT프레임워크를 꾸준이 개발하고 있고, <로스트 플래닛>과 <데드 라이징>에 이 엔진이 쓰였다.
판매를 위해 개발되는 엔진은 그 범용성이 관건이 된다. 에픽 게임즈의 언리얼 엔진은 판매를 목적으로 개발된 엔진으로, 특히 언리얼 엔진 3는 기존의 일인칭 게임 중심 구조에서 벗어나 범용성을 더욱 강화했다. 그 외에 판매 목적으로 엔진을 개발하는 회사소는 크라이엔진의 크라이텍과 토크 게임 엔진의 게러지게임즈가 있다.
취미 개발
게임 엔진의 개발은 컴퓨터 과학도와 취미 개발자 모두에게 인기있는 프로젝트이다. 엔진 개발은 기하학, 색상 이론, 전산학에 대한 학제적 이해가 강력하게 요구되는 일이지만, 시각적인 겨로가가 나오는 프로젝트이기 때문에 그런 개발자들은 그것을 재미와 보상으로 받아들인다. 그 중 크리스털 스페이스는 유명한 오픈 소스 멀티플랫폼 게임 엔진이다.
주요한 게임 엔진들
언리얼 엔진 시리즈 - 에픽 게임즈가 개발, 초기 때부터 범용성이 좋아 널리 쓰였으며 언리얼 엔진3부터는 더욱 범용성이 강화되어 가장 널리 사용되는 상용 엔진이다.
소스 엔진 - 밸프 코퍼레이션이 개발
이드 테크 시리즈 - 이드 소프트웨어가 개발
크라이엔진 시리즈 - 크라이텍이 개발
게임브리오
토크 게임 엔진 - 저렴한 엔진으로 독립 개발자들이 주로 사용하는 게임 엔진이다.
소스 엔진(Source Engine)
미국의 밸브 코퍼레이션에서 개발한 3차원 게임 엔진이다. 셰이더에 기초를 둔 렌더러, 정확한 립싱크, 표정 기술, 그리고 실사 같은 그래픽을 제공하면서도 낮은 요구 사양, 뛰어난 사양 최적화 능력, 네트워크 엔진을 내장하며 물리 엔진인 하복 엔진을 포함한다. 현재 소스 엔진 중 최신 버전인 에피소드 2소스 엔진은 하프라이프2: 에피소드2, 팀 포트리스2, 포털, 데이 오브 디피티드:소스 등에 쓰였으며 렌더링 엔진의 성능이 개선되고 멀티코어에도 최적화가 되었으며 실시간 광원 효과, 모션블러 등의 그래픽 효과를 지원한다.
소스 엔진을 사용한 게임들
마비노기 영웅전, 하프라이프 2시리즈, 카운터 스트라이크:소스, 카운터 스트라이크 컨디션 제로:소스, 데이 오브 디피트:소스, 팀 포트리스 2, 다크메시아: 마이트&매직, 좀비 패닉:소스, 스팅, 포털





최근 덧글