# 게임 엔진

### 위키백과 ― 우리 모두의 백과사전.

게임 엔진(Game engine)은 컴퓨터·비디오 게임이나 실시간 그래픽 표시 기능을 갖춘 다른 상호작용 어플리케이션을 구현하는 핵심 소프트웨어 구성 요소를 말한다. 게임 개발에 기본적인 기술을 제공해서 개발 과정을 단축시켜 주고, 작은 노력으로 여러 플랫폼에서 게임을 실행할 수 있게 해주기도 한다. 게임 엔진이 제공하는 핵심 기능은 주로 2D나 3D 그래픽 출력을 위한 렌더링 엔진('렌더러'), 물리 엔진이나 충돌 검출 (그리고 충돌 반응), 사운드, 스크립트 작성, 애니메이션, 인공 지능, 네트워크, 스트리밍, 메모리 관리, 쓰레딩, 씬 그래프 등이 있다. 게임 엔진은 한 번 만들어진 뒤에 다른 게임을 제작하는 데 사용되기도 해 개발 과정을 경제적으로 만들어 준다.

## [편집] 역사

비록 게임 엔진이란 용어가 1990년대에 처음으로 사용되었지만, 1980년대에도 게임 엔진이라고 할 수 있는 시스템이 있었다. 시에라의 AGI와 SCI 시스템, 루카스아츠의 SCUMM 시스템과 Incentive Software의 Freescape engine이 좋은 예이다. 하지만, 최근의 게임 엔진들과는 다르게 그 엔진들은 절대 다른 회사의 게임에 사용되지 않았다.

게임 엔진은 일인칭 슈팅 게임들로부터 시작되었으며, 지금도 많은 일인칭 슈팅 게임이 게임 엔진 기술의 선두주자를 달리고 있다.

반면 게임 엔진이란 용어가 나타난 1990년대 중반은 달랐다. 이드 소프트웨어의 일인칭 슈팅 게임인 《둠》과 《퀘이크》가 인기를 끌었고, 다른 개발사들이 그 소프트웨어의 일부에 대한 사용 허락을 받아 그것에 자신들만의 그래픽, 사운드 캐릭터, 무기, 레벨을 추가해 게임을 만들기 시작했다.

《퀘이크 3 아레나》나 에픽 게임즈의 일인칭 슈팅 게임인 1998년 《언리얼》은 처음부터 엔진과 내용을 따로 개발하여 설계되었다. 기술에 대한 이용 허가를 내주는 것은 기술을 가진 개발사들에게 유용한 보조 수익이 되었다. 라이선스 하나에 1만달러에서 375만달러를 받았고, 에픽 게임즈의 언리얼 엔진은 수십 개의 게임에 라이선스를 팔았다.[1] 엔진을 팔지 않는다고 해도, 소프트웨어를 재사용할 수 있게 설계하는 일은 개발 공정을 효율적으로 만들어주는 유익한 일이었다.

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

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

## [편집] 개요

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

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

게임 엔진이라는 특화된 목적을 나타내는 이름과는 달리, 게임 엔진은 다른 분야에도 사용된다. 주로 마케팅 데모나 건축 시각화, 훈련 시뮬레이션, 모델링 환경 등 실시간으로 그래픽을 출력하는 상호작용 어플리케이션들이 좋은 예이다.

## [편집] 주요한 기능

각각의 게임 엔진은 저마다 다른 특징을 가지고 있지만, 시장의 암묵적인 기준에 따라 거의 모든 게임이 기본적으로 제공하는 기능들이 있다.

### [편집] 렌더링 엔진

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

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

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

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

레벨 에디터는 흔히 제공되는 개발 도구의 하나이며, 간혹 게임의 최종 사용자에게 제공될 정도로 친숙하고 직관적인 도구이다.

게임 엔진은 자주 시각적인(그래픽 유저 인터페이스) 개발 도구들이 통합 개발 환경으로 제공되어 단순하고 민첩한 데이터 주도 방식의 개발을 가능하게 해준다.

이러한 개발 도구들은 프로그래머가 아닌 제작 팀의 다른 일원도 프로그래밍 지식 없이 엔진의 기능을 활용할 수 있게 해준다. 가장 흔히 제공되는 개발 도구는 레벨 에디터로 게임이 벌어지고 진행되는 장소인 레벨을 구성하는 도구이다. 이 도구는 대체로 위지윅 방식을 지원하기 때문에 게임 디자이너나 그래픽 디자이너가 손쉽게 게임 로직과 연결된 레벨을 세우고 변경할 수 있다. 또한 레벨 에디터는 간혹 다른 개발 도구의 허브가 되거나 다른 도구와 통합되어 게임의 설계 과정을 전체적으로 관장할 수 있는 도구가 되기도 한다. 간혹 레벨 에디터는 게임을 플레이하는 최종 사용자에게 전달되어 사용자들 스스로 자신만의 레벨을 만들 수 있게 해주기도 한다.

### [편집] 플랫폼 추상화

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

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

### [편집] 물리 엔진

  이 부분의 본문은 컴퓨터 물리 엔진입니다.

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

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

### [편집] 쓰레딩

쓰레딩은 오늘날의 멀티 코어 시스템과 사실성에 대한 요구의 증가 때문에 게임 엔진에서 중요한 위치를 차지하게 되었다. 일반적인 쓰레드는 렌더링, 스트리밍, 사운드, 그리고 물리를 수반한다. 특히 레이싱 게임은 별도의 쓰레드에서 실행되는 물리 엔진 때문에 쓰레딩의 중심에 서있는 장르라고 할 수 있다. 렌더링과 다른 작업은 30~60 Hz의 프로세스만을 필요로 하는 데 반해, 플레이스테이션용 《니드 포 스피드》는 그 물리를 100 Hz로, 그에 비해 엑스박스 360의 《포르자 모터스포츠 2》는 그 물리를 360 Hz로 실행한다.

## [편집] 미들웨어

스피드트리로 렌더링된 숲

어떤 회사들은 전문적으로 '미들웨어'라 불리는 소프트웨어 묶음을 개발해서 다른 게임 개발사가 게임을 만드는 데 필요한 많은 구성 요소들을 제공한다. 대부분의 미들웨어 소프트웨어는 그래픽, 사운드, 물리, AI 등 특정 기능의 개발을 쉽게 해주는 것들이다. DX 스튜디오, 게임브리오, 렌더웨어가 널리 사용되는 미들웨어 소프트웨어들이다.

어떤 미들웨어는 오직 한 가지 기능만을 충실하게 해내기도 한다. 예를 들어 스피드트리는 롤플레잉 게임 엘더 스크롤 4: 오블리비언에서 사실적인 나무와 식물을 렌더링하는 용도로 사용되었다.[4]

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

### [편집] MMOG 미들웨어

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

## [편집] 개발과 이용

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

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

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

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

### [편집] 취미 개발

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

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

- 언리얼 엔진 - 에픽 게임즈가 개발, 언리얼 엔진 3부터 범용성이 좋아졌고 가장 널리 사용되는 엔진이다
- 크라이엔진 - 크라이텍이 개발, 파크라이의 개발에 사용되었고 두번째 버전이 개발 중이다
- 소스 엔진 - 밸브 코퍼레이션이 개발, 하프라이프 2의 개발에 사용되었다
- 둠 3 엔진 - 이드 소프트웨어가 개발, 둠 3의 개발에 사용되었다
- 게임브리오 - 엘더 스크롤 시리즈의 3편과 4편, 문명 IV, 다크 에이지 오브 카멜롯 등에 사용되었다
- 토크 게임 엔진 - 저렴하면서 강력해 독립 개발자들이 좋아하는 게임 엔진이다

### [편집] 한국의 게임 엔진

한국에서는 아직 게임 엔진의 개발이나 판매보다는 해외의 게임 엔진을 구입하는 일이 많다. 잘 알려진 한국산 게임 엔진으로는 드림익스큐션이 《워록》을 만들 때 개발한 진도 엔진과 가이블에서 판매용으로 개발한 지블렌더가 있다.

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

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

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

NScripter와 키리키리는 비주얼 노벨에 특화된 엔진으로, 간단한 스크립트 언어로 프로그램을 작성할 수 있는 환경을 제공한다. 한국산 비주얼 노벨 엔진으로는 브이냅이 유명하다.

## [편집] 참조

1. ↑ 1.0 1.1 Unreal Powered
2. ↑ Gamebryo Powers DAOC Trials of Atlantis - GamersHell
3. ↑ Half-Life 2 Preview
4. ↑ We Could Plant a House, We Could Build a Tree
5. ↑ Splinter Cell: Conviction Q&A
6. ↑ "A Personal Chat with Free Radical's Derek Littlewood", 플레이스테이션매거진: p.22 - 26
7. ↑ 西川善司の3Dゲームファンのための「ロスト プラネット」グラフィックス講座

## [편집] 바깥 고리

- ((영어)) 3D 게임 엔진과 그래픽스 엔진 데이터 베이스 - 수시로 갱신되는 최대의 게임 엔진 데이터 베이스
- GPG 스터디 위키 - 무슨 게임 무슨 엔진

원본 주소 ‘http://ko.wikipedia.org../../../%EA%B2%8C/%EC%9E%84/_/%EA%B2%8C%EC%9E%84_%EC%97%94%EC%A7%84.html’

분류: 게임 엔진 | 컴퓨터·비디오 게임 제작

##### Views

- 문서
- 토론
- 현재 버전

##### 찾기

##### 다른 언어

- العربية
- Català
- Česky
- Dansk
- Deutsch
- English
- Español
- Suomi
- Français
- Magyar
- Italiano
- 日本語
- Polski
- Português
- Русский
- Svenska
- Türkçe
- 中文