게임 엔진
게임 엔진(Game Engine)은 비디오 게임과 실시간 대화형 콘텐츠를 개발하고 실행하는 데 필요한 공통 기능을 제공하는 소프트웨어 기반이다. 그래픽 렌더링, 입력 처리, 물리 시뮬레이션, 오디오 재생, 애니메이션, 자원 관리와 같은 기능을 재사용 가능한 하위 시스템으로 제공하여 개발...
| 분류 | 게임 개발 소프트웨어, 소프트웨어 프레임워크, 실시간 실행 환경 |
|---|---|
| 주요 기능 | 렌더링, 물리 시뮬레이션, 오디오, 입력 처리, 애니메이션, 스크립팅, 자원 관리 |
| 제작 도구 | 월드 편집기, 장면 편집기, 에셋 가져오기, 디버거, 프로파일러 |
| 주요 실행 대상 | 개인용 컴퓨터, 비디오 게임 콘솔, 모바일 기기, 웹, 가상 현실, 증강 현실 |
| 대표적인 엔진 | Unreal Engine, Unity, Godot, CryEngine, Cocos2d-x |
| 관련 분야 | 컴퓨터 그래픽스, 물리 엔진, 인공지능, 컴퓨터 네트워크, 소프트웨어 공학 |
게임 엔진(Game Engine)은 비디오 게임과 실시간 대화형 콘텐츠를 개발하고 실행하는 데 필요한 공통 기능을 제공하는 소프트웨어 기반이다. 그래픽 렌더링, 입력 처리, 물리 시뮬레이션, 오디오 재생, 애니메이션, 자원 관리와 같은 기능을 재사용 가능한 하위 시스템으로 제공하여 개발자가 게임마다 동일한 기반 기술을 처음부터 다시 구현하지 않고 게임 규칙과 콘텐츠 제작에 집중할 수 있게 한다.[1]
게임 엔진은 하나의 라이브러리만을 뜻하지 않는다. 일반적으로 게임의 실행을 담당하는 런타임, 게임 객체와 월드를 표현하는 구조, 여러 하드웨어와 운영체제를 다루는 플랫폼 계층, 이미지·모델·음향 등의 자원을 처리하는 에셋 파이프라인, 그리고 장면과 콘텐츠를 제작하는 편집기와 개발 도구를 함께 포함한다. 엔진에 따라 이 구성 요소들은 하나의 통합 제품으로 제공되거나 독립된 라이브러리와 외부 도구의 조합으로 구성된다.
엔진의 핵심 런타임은 일정한 실행 주기에 따라 입력을 수집하고 게임 상태를 갱신한 뒤 결과 화면과 소리를 생성한다. 이 과정에서는 게임 로직, 물리 계산, 애니메이션, 인공지능, 네트워크 상태, 렌더링 명령과 오디오 처리가 서로 연동된다. 대부분의 엔진은 이러한 기능을 별도의 하위 시스템으로 분리하지만, 각 시스템 사이의 의존 관계와 갱신 순서는 엔진의 성능과 확장성, 개발 방식에 큰 영향을 준다.
현대의 게임 엔진은 게임 세계를 구성하는 상위 모델도 제공한다. 객체와 컴포넌트, 엔티티와 컴포넌트, 노드와 장면 등의 구조를 사용하여 캐릭터, 조명, 카메라, 충돌체와 사용자 인터페이스를 조합한다. 예를 들어 Godot은 노드의 계층으로 장면을 구성하고, 장면 계층 아래에서 렌더링·물리·오디오 서버를 제공한다.[2] 이러한 월드 모델은 데이터 저장 방식뿐 아니라 편집기 인터페이스, 스크립트 연결, 객체 수명 주기와 실행 순서까지 결정한다.
게임 엔진과 게임 자체의 경계는 항상 고정되어 있지 않다. 특정 게임을 위해 작성된 기반 코드가 후속 작품에서 재사용되면서 엔진으로 발전하기도 하며, 범용 엔진도 프로젝트별 플러그인과 자체 시스템을 결합하면서 특정 게임에 맞게 확장된다. 게임 코드와 엔진 코드의 구분은 재사용 범위, 도구 지원, 플랫폼 추상화와 콘텐츠로부터의 독립성을 기준으로 이해할 수 있다.
초기의 비디오 게임은 제한된 하드웨어에 맞추어 게임 코드와 렌더링·입력·규칙을 하나의 프로그램으로 직접 구현하는 경우가 많았다. 하드웨어 성능이 높아지고 게임의 규모가 커지면서 여러 작품에서 공통으로 사용할 수 있는 렌더러, 월드 표현, 충돌 검사와 제작 도구가 분리되기 시작했다. 특히 1990년대의 3차원 게임 개발에서는 기반 기술을 다른 게임이나 개발사에 제공하고 수정 도구를 공개하는 방식이 확산되면서 게임 엔진이 독립된 소프트웨어 제품과 개발 플랫폼으로 자리 잡았다.
오늘날에는 자체 개발 엔진, 상용 범용 엔진, 오픈 소스 엔진과 특정 장르에 특화된 엔진이 함께 사용된다. Unreal Engine과 Unity 같은 범용 엔진은 여러 플랫폼을 대상으로 통합 제작 환경을 제공하며, Godot과 같은 오픈 소스 엔진은 소스 코드 수정과 자체 배포를 허용한다. 한편 대형 개발사는 제작 중인 게임과 내부 작업 흐름에 맞춘 자체 엔진을 개발하기도 하고, 소규모 프로젝트는 렌더링·물리·오디오 라이브러리를 직접 조합하여 필요한 범위의 엔진을 구성하기도 한다.
게임 엔진의 활용 범위는 비디오 게임을 넘어 실시간 시각화, 영화와 방송의 가상 제작, 건축 시각화, 시뮬레이션, 교육, 디지털 트윈, 가상 현실과 대화형 전시로 확장되었다. Unreal Engine은 게임뿐 아니라 영화·애니메이션, 제품 시각화와 실시간 경험 제작을 지원하며, Unity 역시 데스크톱·모바일·콘솔·웹과 확장 현실을 포함한 여러 실행 환경을 대상으로 한다.[3][4] 이 때문에 현대의 게임 엔진은 게임 전용 도구이면서 동시에 범용 실시간 콘텐츠 제작 플랫폼의 성격을 가진다.