게임 엔진

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

게임 엔진(Game engine)은 컴퓨터·비디오 게임 같은 실시간 그래픽 표시 기능을 갖춘 상호 작용 응용 프로그램을 구현하는 핵심 소프트웨어 구성 요소를 말한다. 컴퓨터 게임 개발에 바탕이 되는 기술을 제공하여 개발 과정을 단축시켜 줄 뿐 아니라, 게임을 다양한 플랫폼에서 실행할 수 있게 해주기도 한다.[1] 특히 게임 엔진은 재사용을 염두에 두고 있기 때문에, 하나의 게임에 종속되지 않고 여러 종류의 게임에 쓰일 수 있도록 개발된다.

게임 엔진이 제공하는 주요 기능으로는 2차원 그래픽이나 3차원 그래픽을 출력하기 위한 렌더링 엔진('렌더러'), 물리 엔진, 충돌 검출과 충돌 반응, 사운드 출력, 스크립트 작성, 애니메이션, 인공 지능, 네트워크, 스트리밍, 메모리 관리, 쓰레딩, 씬 그래프 등이 있다.[출처 필요]

역사[편집]

게임 엔진이란 용어가 1990년대에 처음으로 사용되었지만[출처 필요], 1980년대에도 게임 엔진이라고 할 수 있는 시스템이 있었다. 시에라AGISCI 시스템, 루커스아츠SCUMM 시스템과 인센티브 소프트웨어프리스케이프 엔진이 그 예이다. 하지만, 그 엔진들은 최근의 게임 엔진들과 달리 다른 회사의 게임에 사용된 적이 없었다.

반면 게임 엔진이란 용어가 나타난 1990년대 중반은 달랐다.[출처 필요] ID 소프트웨어일인칭 슈팅 게임인 《》과 《퀘이크》가 인기를 끌었고, 다른 개발사들이 그 소프트웨어의 일부에 대한 사용 허락을 받아 그것에 자신들만의 그래픽, 사운드 캐릭터, 무기, 레벨을 추가해 게임을 만들기 시작했다.[출처 필요] 이후 같은 회사의 게임인 《퀘이크 3 아레나》나 에픽 게임즈일인칭 슈팅 게임1998년언리얼》은 처음부터 엔진과 내용을 따로 설계하여 개발되었다. 기술을 가진 개발사들은 기술에 대한 이용 허가를 내주어 보조 수익을 얻기도 했다.[출처 필요] 회사들은 라이선스 하나에 1만 달러에서 375만 달러를 받았고, 에픽 게임즈언리얼 엔진은 수십 개의 게임에 라이선스를 팔았다.[2] 엔진을 파는 개발자들이 아니라도, 많은 게임들이 재사용성을 염두에 두고 설계되어 개발공정을 효율적으로 만들었다.

오늘날의 게임 엔진들은 기술의 발전과 함께 가장 복잡한 응용 소프트웨어의 하나가 되었다. 플레이어의 사용자 경험을 잘 제어하려면 정교하게 조율된 시스템의 기능들을 상호 작용시켜야 하기 때문이다. 또한 게임 엔진의 지속적인 진보는 렌더링과 스크립트 작성, 원화, 그리고 레벨 디자인 같은 일들을 서로 분리되게 만들었다.[출처 필요] 오늘날 일반적인 게임 개발팀에서 프로그래머보다 몇 배는 많은 그래픽 스탭이 존재하는 것은 흔한 일이 되었다.[출처 필요]

게임 엔진을 주로 사용하는 장르는 그 기원이 그렇듯 일인칭 슈팅 게임이 대다수지만, 엔진들이 범용성을 갖추게 되고 다른 장르에 특화된 엔진도 등장하면서 다른 장르에서도 사용되고 있다. 롤플레잉 게임인 《엘더 스크롤 3: 모로윈드》와 MMORPG다크 에이지 오브 카멜롯》은 게임브리오 엔진을[3], MMORPG 리니지 2는 주로 일인칭 슈팅 게임에 사용되었던 언리얼 엔진 2를 기반으로 만들어졌다.[2] 게임 엔진은 물론 콘솔 게임에서도 사용되고 있다. 렌더웨어는 콘솔용 레이싱 게임 시리즈인 《번아웃》 시리즈에 꾸준히 사용되어 왔다.[4]

개요[편집]

게임 엔진은 게임 소프트웨어의 구성에 필요한 소프트웨어 구성 요소를 재사용할 수 있게 만든 것이다. 엔진은 개발에 필요한 기능을 즉시 사용할 수 있도록 제공하여 개발의 단가와 복잡도를 줄여주고, 제 일정에 복잡한 게임을 출시할 수 있게 해 준다. 이것은 게임 업계에서 매우 중요한 일이다.

게임 엔진은 유연하고 재사용 가능한 소프트웨어 환경을 제공해주는 점 때문에 '게임 미들웨어'라고 불리기도 한다. 게임 미들웨어라고 불리는 시스템들은 구성 요소(컴포넌트) 기반의 구조를 가지는 것이 많다. 그로 인해 게임의 특정 시스템을 더 전문적인 미들웨어 구성 요소로 대체하거나 확장할 수도 있다. 렌더웨어 같은 게임 엔진의 경우, 아예 일련의 미들웨어 구성 요소들을 느슨하게 연결하는 방식으로 설계되었다. 개발사가 그 중 적당한 것만 선택해 자신들이 사용하는 엔진과 결합할 수 있는 것이다.[4][5]

이름과는 달리 게임 엔진은 다른 분야에서도 사용된다. 홍보용 데모나 건축 시각화, 훈련 시뮬레이션, 모델링 환경 등 실시간으로 그래픽을 출력하는 상호작용 응용 프로그램들이 좋은 예이다.[출처 필요]

주요한 기능[편집]

각각의 게임 엔진은 저마다 특징을 가지고 있지만, 일반적인 엔진들이 제공하는 기능들이 있다.

렌더링 엔진[편집]

렌더링 엔진은 2D3D 그래픽의 표현을 담당한다. 이 기술은 컴퓨터·비디오 게임에 있어 가장 주목을 받는 기술인만큼, 거의 모든 게임 엔진이 반드시 제공하는 기능이다. 지금과 같은 게임 엔진이 3D일인칭 슈팅 게임 시대부터 시작되었지만, 아마추어 개발자나 2D 그래픽에 대한 요구로 인해 2D 게임 엔진도 다수 등장했다.[6]

1990년대 중후반에 폴리곤 객체를 묘화하는 게임들이 등장한 이래로 렌더링 엔진은 많은 발전을 거쳤다.[출처 필요] 2007년의 게임 엔진은 하이 다이내믹 레인지 렌더링, 픽셀 셰이더, 정점 셰이더, 법선 맵핑, 피사계 심도, 레벨 오브 디테일, 광산란 시뮬레이션, 소프트 섀도와 같은 기술이 지원되는 추세이다. 또한 오늘날의 게임 엔진은 3D 게임 세계를 객체 지향적으로 묘사하는 씬 그래프도 제공한다. 씬 그래프는 게임의 설계를 단순화시켜주고 거대한 가상 세계를 더욱 효율적으로 렌더링할 수 있게 해준다.[출처 필요]

어떤 엔진은 다른 필요한 기능을 모두 빼고 실시간 3D 그래픽스 렌더링 기능만을 제공하기도 한다. 이런 엔진은 게임 개발사가 나머지 기능을 스스로 작성하거나, 다른 미들웨어 구성 요소로와 조합해야만 한다. 이런 형식의 엔진은 보통 '그래픽스 엔진', '렌더링 엔진'으로 불린다. 그래픽스 엔진에는 렐를 포지, 오거, 크리스털 스페이스, 제네시스 3D 등이 있다.

시각적인 개발 도구[편집]

게임 엔진은 시각적인 GUI 개발 도구들이 통합 개발 환경으로 제공하고 데이터 주도 방식의 개발을 가능하게 하여 프로그래머가 아닌 사람도 프로그래밍 지식 없이 엔진의 기능을 활용할 수 있게 해준다. 엔진이 가장 흔히 제공하는 개발 도구는 레벨 에디터로 게임이 진행되는 장소인 레벨을 구성하고 편집하는 도구이다. 이 도구는 대체로 위지윅 방식을 지원하기 때문에 게임 디자이너그래픽 디자이너가 손쉽게 게임 로직과 연결된 레벨을 만들 수 있다. 이런 특징 때문에 레벨 에디터는 게임을 즐기는 최종 사용자에게 전달되어 플레이어 스스로 레벨을 만들 수 있게 해주기도 한다. 또한 레벨 에디터는 다른 개발 도구의 허브가 되거나 다른 도구와 통합되어 게임의 설계 과정을 전체적으로 관리할 수 있는 도구가 되기도 한다.

플랫폼 추상화[편집]

많은 게임 엔진은 다른 미들웨어 프로그램처럼 플랫폼 추상화를 제공하기 때문에, 비교적 손쉽게 같은 게임을 다양한 플랫폼에서 실행할 수 있게 해준다. 소스 코드에 아주 적은 혹은 어떤 수정도 없이 게임 콘솔개인용 컴퓨터 모두에서 실행 가능한 게임을 만들 수 있는 것이다.

많은 3D 엔진이나 게임 엔진의 렌더링 시스템은 그래픽 처리 장치나 비디오 카드의 소프트웨어 추상화를 제공하는 다이렉트3D오픈GL같은 그래픽스 API를 기초로 만들어진다. 또한 게임에 일반적으로 사용되는 다이렉트XSDL, 오픈AL 같은 저수준 라이브러리는 입력 장치, 네트워크 카드, 사운드 카드 같은 컴퓨터 하드웨어에 접속하기 위해 하드웨어와 독립된 접속을 제공한다.

물리 엔진[편집]

물리 엔진은 실제 세계의 물리 작용을 컴퓨터로 모사하여, 보다 사실적인 게임 환경을 제공해준다. 게임 엔진 초기에는 충돌을 감지하고 반응하는 것이 엔진이 제공하는 물리 기능의 대부분이었다. 그러다 현실과 가까운 물리 엔진이 크게 대두된 것은 게임 엔진 소스에 탑재된 하복 물리 엔진의 물리 시뮬레이션 기능을 활용한 일인칭 슈팅 게임하프라이프 2》가 공개되고 나서였다.[7]

물리 엔진이 지원하는 기능은 크게 차량, 강체, 액체, 레그돌, 직물과 연체 효과 등이다.

쓰레딩[편집]

쓰레딩은 오늘날의 멀티 코어 시스템과 사실성에 대한 요구의 증가 때문에 게임 엔진에서 중요한 위치를 차지하게 되었다. 일반적인 스레드는 렌더링, 스트리밍, 사운드, 그리고 물리를 수반한다.

미들웨어[편집]

어떤 회사들은 전문적으로 '미들웨어'라 불리는 소프트웨어 묶음을 개발해서 다른 게임 개발사가 게임을 만드는 데 필요한 구성 요소들을 제공한다. 대부분의 미들웨어 소프트웨어는 그래픽, 사운드, 물리, AI 등 특정 기능의 개발을 쉽게 해준다. 유니티3D, DX 스튜디오, 게임브리오, 렌더웨어(현재 개발과 마케팅을 모두 중단)가 널리 사용되는 미들웨어 소프트웨어들의 예이다.

어떤 미들웨어는 오직 특정한 기능만을 수행하기도 한다. 예를 들어 스피드트리는 오직 사실적인 나무와 식물을 렌더링하는 용도로만 사용되는 미들웨어다.[8]

기능성있는 서브 시스템들을 제공하여 널리 사용되는 미들웨어에는 하복 물리 엔진RAD 게임 툴즈의 시스템들이 있다. 하복 물리 엔진은 사실적인 물리 시뮬레이션 시스템을 제공하며, RAD 게임 툴즈는 비디오 렌더링, 오디오 녹음재생, 그리고 3D 렌더링을 위한 시스템들을 개발하고 있다.[출처 필요]

MMOG용 미들웨어[편집]

대규모 다중 사용자 온라인 게임(MMOG)을 위한 미들웨어는 일인용 게임을 위한 것보다 더 복잡하다. 하지만, MMOG의 인기가 증가하면서 그러한 미들웨어 패키지의 개발도 늘어나고 있다.[9]

개발과 이용[편집]

게임 엔진은 주로 게임과 함께 개발된다.[출처 필요] 제작에 들어가기 전에 프로젝트 관리자와 프로그래머, 게임 디자이너 등이 함께 게임 프로그램의 설계 방향을 결정하는데, 엔진을 직접 개발할 것인지 개발된 것을 쓸 것일지도 이때 결정한다.

개발된 것을 사용할 경우 예산과 일정을 단축시킬 수 있지만, 개발할 게임과 상성이 맞지 않을 경우 역효과가 난다. 물론 아무리 범용적인 엔진이라도 모든 게임이 요구하는 바를 모두 충족하지는 못 하기 때문에, 게임 개발사가 자신들의 게임에 맞춰 최적화하거나 개조하는 경우가 많다. (상용 게임 개발사를 위한 상용 엔진은 대부분 구입자에게 소스를 공개한다.) 스프린터 셀 시리즈는 구입한 엔진을 개조한 대표적인 예이다. 처음에 언리얼 엔진 2.5를 구입했지만, 시리즈를 거듭할수록 자신들의 게임에 맞게 엔진을 개조해왔다. (결국 《스프린터 셀: 컨빅션》에서는 개조된 엔진을 LEAD 엔진이라 이름붙였다.)[10]

직접 엔진을 개발하는 경우는 자신들의 게임에 맞는 엔진이 없는 경우이다. 일인칭 슈팅 게임헤이즈》의 개발팀은 자신들의 게임이 가진 특징을 살리기 위해 스스로 엔진을 개발했다.[11] 직접 개발하는 엔진도 사내의 다른 프로젝트나 후속 프로젝트를 고려해 범용성을 보장해야 하는 경우가 있다. 나아가 어떤 개발사들은 연구개발팀을 따로 두어 회사 프로젝트 전용의 게임 엔진을 개발하기도 한다. 일본의 게임 개발사인 캡콤은 회사의 자체 엔진인 MT 프레임워크를 꾸준히 개발하고 있고, 《로스트 플래닛》과 《데드 라이징》에 이 엔진이 쓰였다.[12]

판매를 위해 개발되는 엔진은 그 범용성이 관건이 된다. 에픽 게임즈언리얼 엔진은 판매를 목적으로 개발된 엔진으로, 특히 언리얼 엔진 3는 기존의 일인칭 게임 중심 구조에서 벗어나 범용성을 더욱 강화했다. 그 외에 판매 목적으로 엔진을 개발하는 회사로는 크라이엔진크라이텍토크 게임 엔진게러지게임즈가 있다.[13][14]

취미 개발[편집]

게임 엔진의 개발은 컴퓨터 과학도와 취미 개발자 모두에게 인기있는 프로젝트이다. 엔진 개발은 기하학, 색상 이론, 전산학에 대한 학제적인 이해가 강력하게 요구되는 일이지만, 시각적인 결과가 나오는 프로젝트이기 때문에 그런 개발자들은 그것을 재미와 보상으로 받아들인다. 그 중 크리스털 스페이스는 유명한 오픈 소스 멀티플랫폼 게임 엔진이다.[출처 필요]

주요한 게임 엔진들[편집]


대한민국의 게임 엔진[편집]

대한민국에서는 아직까지도 게임 엔진의 개발이나 마케팅보다는 해외의 게임 엔진을 구입하는 일이 많다.[15][16]잘 알려진 국산 게임 엔진으로는 《화이트데이》와 《팡야》에 적용된 왕리얼 엔진드림익스큐션이 《워록》을 만들 때 개발한 진도 엔진넥슨산하의 데브캣 스튜디오에서 만든 게임에 사용되는 프라우드넷과 또한 데브캣 스튜디오에서 만든 마비노기의 기본 그래픽 처리 기법인 카툰 렌더링을 위한 플레이오네 엔진이 있고 가이블에서 판매용으로 개발한 지블렌더가 있다.[출처 필요] 네트워크 엔진으로는 프라우드넷엑스커넥터가 있다.

게임 제작 소프트웨어[편집]

엔터브레인RPG 만들기 같은 소프트웨어는 최종 사용자를 위해 만들어진 게임 엔진이라고 할 수 있다. 이러한 게임 제작 소프트웨어는 쉽고 빠르지만 제한된 범위의 게임을 만들 수 있게 해준다.

비주얼 노벨을 위한 스크립트 엔진[편집]

NScripter키리키리비주얼 노벨에 특화된 엔진으로, 간단한 스크립트 언어로 프로그램을 작성할 수 있는 환경을 제공한다.[출처 필요] 한국어로 제공되는 비주얼 노벨 엔진으로는 브이냅바실리어트가 있다.

주석[편집]

  1. *게임브리오 엔진이나 렌더웨어 엔진 등이 여러 플랫폼을 지원한다.
  2. Unreal Powered
  3. Gamebryo Powers DAOC Trials of Atlantis - GamersHell
  4. 경향게임즈. 랜더웨어 엔진, 가장 많이 사용되는 대표적인 미들웨어. 2008년 3월 14일에 확인.
  5. 디스이즈게임. 3D 게임엔진의 계보 ③ 게임브리오 엔진. 2008년 3월 14일에 확인.
  6. 대표적인 2D 엔진들은 다음과 같다.
  7. Half-Life 2 Preview
  8. 노아 베리(Noah Berry). We Could Plant a House, We Could Build a Tree. 베네스다 소프트웨어. 2010년 7월 17일에 확인.
  9. MMOG 미들웨어들은 다음과 같다.
  10. Splinter Cell: Conviction Q&A
  11. "A Personal Chat with Free Radical's Derek Littlewood", 플레이스테이션매거진: p.22 - 26
  12. 西川善司の3Dゲームファンのための「ロスト プラネット」グラフィックス講座
  13. 디스이즈게임. 3D 게임엔진의 계보 ④ 크라이 엔진 1, 2. 2008년 3월 14일에 확인.
  14. 토크 게임 엔진의 경우 http://www.garagegames.com/products/torque/tge/ 에서 판매되고 있음을 확인할 수 있다.
  15. 박성재 (2007년 10월 4일). 게임 경쟁력은 엔진기술서 나온다. 이티뉴스 전자신문. 2010년 7월 17일에 확인.
  16. 박명기. 게임도 10억 엔진 다니 ‘명품’일세. 일간스포츠. 2010년 7월 17일에 확인.

바깥 고리[편집]