게임 엔진

게임 엔진(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] 이 때문에 현대의 게임 엔진은 게임 전용 도구이면서 동시에 범용 실시간 콘텐츠 제작 플랫폼의 성격을 가진다.

역사

초기 게임과 전용 실행 코드

재사용 가능한 기반 기술의 등장

2차원 제작 시스템과 장르별 엔진

3차원 그래픽과 엔진의 독립

엔진 라이선스와 미들웨어 시장

통합 편집기와 범용 엔진

오픈 소스 엔진의 성장

실시간 콘텐츠 플랫폼으로의 확장

기본 구조와 실행 모델

엔진 런타임

게임 루프

프레임과 시간 관리

초기화와 종료

객체 수명 주기

작업 시스템과 병렬 실행

결정적 실행과 재현성

월드와 게임 객체

장면과 월드

게임 객체와 컴포넌트

엔티티 컴포넌트 시스템

노드와 계층 구조

프리팹과 장면 인스턴스

공간 분할과 월드 스트리밍

상태 저장과 직렬화

렌더링

렌더링 파이프라인

2차원 렌더링

3차원 렌더링

재질과 셰이더

조명과 그림자

카메라와 가시성 판정

후처리

실시간 전역 조명

레이 트레이싱과 경로 추적

렌더링 성능 최적화

물리와 충돌

충돌 감지

강체 시뮬레이션

캐릭터 제어

제약 조건과 관절

차량과 파괴 시뮬레이션

연속 충돌 감지

고정 시간 간격과 보간

물리 엔진 미들웨어

애니메이션

골격 애니메이션

애니메이션 상태 기계

애니메이션 혼합

역운동학

모션 매칭

절차적 애니메이션

물리 기반 애니메이션

오디오

음원과 청취자

공간 음향

믹싱과 오디오 버스

효과음과 음악 재생

스트리밍 오디오

물리 기반 음향

오디오 미들웨어

입력과 사용자 인터페이스

입력 장치 추상화

입력 동작과 매핑

터치와 동작 입력

사용자 인터페이스 시스템

레이아웃과 위젯

접근성과 현지화

스크립팅과 게임 로직

네이티브 코드

스크립트 언어

시각적 스크립팅

엔진 API와 반영 시스템

핫 리로드와 라이브 편집

플러그인과 모듈

샌드박스와 코드 격리

인공지능과 게임플레이 시스템

상태 기계

행동 트리

경로 탐색

환경 질의

군중 시뮬레이션

절차 생성

게임플레이 프레임워크

네트워크와 멀티플레이어

클라이언트와 서버

상태 복제

원격 프로시저 호출

지연 보상

예측과 보정

네트워크 물리

전용 서버

온라인 서비스 연동

자원과 에셋 파이프라인

에셋 가져오기

내부 자원 형식

의존 관계와 자원 데이터베이스

셰이더와 콘텐츠 빌드

압축과 패키징

비동기 로딩

메모리 관리

다운로드 콘텐츠와 패치

편집기와 개발 도구

장면과 월드 편집기

속성 검사기

에셋 브라우저

시각적 제작 도구

디버거

프로파일러

자동화와 명령줄 도구

협업과 버전 관리

확장 가능한 편집기

플랫폼과 배포

플랫폼 추상화 계층

그래픽스 API

데스크톱 운영체제

비디오 게임 콘솔

모바일 기기

웹 플랫폼

가상 현실과 증강 현실

빌드와 크로스 컴파일

플랫폼 인증과 배포

엔진의 종류

자체 개발 엔진

상용 범용 엔진

오픈 소스 엔진

장르 특화 엔진

2차원 게임 엔진

3차원 게임 엔진

프레임워크와 라이브러리 기반 엔진

브라우저 기반 엔진

대표적인 게임 엔진

Unreal Engine

Unity

Godot

CryEngine

Source

id Tech

Cocos2d-x

GameMaker

RPG Maker

자체 개발 엔진

게임 엔진과 미들웨어

렌더링 엔진

물리 엔진

오디오 미들웨어

네트워크 미들웨어

지형과 식생 시스템

게임 엔진과 게임 프레임워크의 차이

디지털 콘텐츠 제작 도구와의 관계

게임 엔진 개발

요구 사항과 대상 게임

하위 시스템 분리

데이터 중심 설계

성능과 확장성

도구와 런타임의 분리

테스트와 자동화

호환성과 장기 유지보수

자체 개발과 기존 엔진 채택

활용 분야

비디오 게임

가상 제작과 영상

건축과 제품 시각화

시뮬레이션과 훈련

교육과 연구

가상 현실과 확장 현실

디지털 트윈

대화형 전시와 공연

장점과 한계

영향

관련 문서

  1. SyDRA: An Approach to Understand Game Engine Architecture
  2. Godot Engine: Architecture overview
  3. Unreal Engine 공식 사이트
  4. Unity Engine 공식 소개