본문으로 이동

게임 엔진

카노위키

게임 엔진은 컴퓨터 게임, 비디오 게임 등을 제작하기 위해 디자인된 시스템을 말한다. 전형적인 게임 엔진은 2D, 3D 그래픽을 위한 렌더링 엔진(렌더러), 물리 엔진 혹은 충돌 검출 (과 충돌 해결), 사운드, 스크립팅, 애니메이션, 인공지능 (AI), 스트리밍, 메모리 관리, 쓰레딩, 로컬라이징, 장면 그래프 등의 기능을 제공한다. 동일한 엔진이라도 전혀 다른 게임 제작을 위해 사용될 수 있으며, 같은 게임을 다양한 종류의 플랫폼으로 배포하는데도 사용될 수 있다.

역사

게임 엔진이라는 개념이 확립되기 전의 게임은 보통 하나의 게임을 위해 게임 전체의 코드를 작성하는것이 보통이었다.

일반적인 요구사항 및 구성요소

게임 엔진은 복잡한 게임 애플리케이션을 효율적으로 개발하고 실행하기 위해 다양한 기능과 도구를 제공해야 한다. 제이슨 그레고리(Jason Gregory)의 저서 Game Engine Architecture에 따르면, 현대적인 게임 엔진은 일반적으로 다음과 같은 계층과 구성요소로 이루어진다.

기반 시스템 (Foundations)

엔진의 가장 밑바닥에는 하드웨어와 운영체제의 차이를 추상화하고, 상위 계층이 효율적으로 작동할 수 있도록 돕는 기반 시스템들이 존재한다.

  • 플랫폼 추상화 계층: 다양한 하드웨어(PC, 콘솔, 모바일)와 운영체제에서 동일한 코드로 작동할 수 있도록 돕는다.
  • 기반 유틸리티: 메모리 관리, 수학 라이브러리(벡터, 행렬, 쿼터니언), 자료구조(컨테이너), 알고리즘 등.

저수준 엔진 시스템 (Low-Level Engine Systems)

게임의 실행과 자원 관리를 담당하는 핵심 시스템이다.

  • 자원 관리 시스템: 텍스처, 모델, 사운드 등 게임 에셋의 로딩, 캐싱, 메모리 해제를 담당한다.
  • 게임 루프: 사용자 입력 처리, 게임 상태 업데이트, 화면 렌더링을 주기적으로 반복하는 핵심 루프.
  • 디버깅 및 개발 도구: 로깅, 프로파일링, 인게임 콘솔 등 개발 편의를 위한 도구들.
  • HID(휴먼 인터페이스 장치): 키보드, 마우스, 게임패드 등 다양한 입력 장치 처리.

그래픽, 동작 및 사운드 (Graphics, Motion and Sound)

사용자에게 보여지고 들리는 시청각적 요소를 처리한다.

  • 렌더링 엔진: 2D/3D 그래픽을 화면에 그리는 시스템. 래스터라이징, 셰이딩, 조명, 시각 효과 등을 포함한다.
  • 애니메이션 시스템: 캐릭터의 뼈대(Skeleton)와 클립(Clip)을 제어하여 움직임을 만들어낸다. 스키닝, 블렌딩 기술 등이 포함된다.
  • 물리 엔진: 충돌 감지(Collision Detection)와 강체 역학(Rigid Body Dynamics)을 시뮬레이션하여 현실적인 물리 반응을 구현한다.
  • 오디오 엔진: 배경 음악, 효과음 재생 및 3D 공간 음향 처리를 담당한다.

게임플레이 시스템 (Gameplay)

실제 게임의 규칙과 논리를 구현하는 계층이다.

  • 게임 월드 및 객체 모델: 게임 속 세계를 구성하는 객체(Actor, GameObject)들의 계층 구조와 생명주기를 관리한다.
  • 스크립팅 시스템: C++ 등 저수준 언어 대신 Lua, C#, Python 등 고수준 언어로 게임 로직을 작성할 수 있게 한다.
  • AI 시스템: 길찾기(Pathfinding), 행동 트리(Behavior Tree) 등 NPC의 지능적인 행동을 제어한다.

도구 및 에셋 파이프라인 (Tools and Asset Pipeline)

  • 월드 에디터: 게임 월드를 시각적으로 구성하고 객체를 배치하는 도구.
  • 에셋 파이프라인: 외부 도구(Maya, Photoshop 등)에서 제작된 리소스를 엔진에서 사용할 수 있는 포맷으로 변환하고 가져오는 과정.

주요 게임 엔진들

자유, 오픈소스 엔진들

이름 작성 언어 스크립팅 언어 크로스플랫폼 2D / 3D 대표적인 게임 라이센스 비고
Godot Engine C++ GDScript, C#, C++ 2D / 3D Sonic Colors: Ultimate (일부) MIT 가볍고 강력한 기능을 제공하며 급성장 중인 엔진
Cocos2d-x C++ Lua, JavaScript, C++ 2D 쿠키런: 킹덤, 모두의마블 MIT 2D 모바일 게임 개발에 널리 사용됨
O3DE (Open 3D Engine) C++ Lua, Python 3D Deadhaus Sonata Apache 2.0 Amazon Lumberyard의 후신, 리눅스 재단 관리
Bevy Rust Rust 2D / 3D MIT / Apache 2.0 데이터 지향적(ECS) 아키텍처를 채택한 Rust 기반 엔진
OGRE C++ 3D Torchlight MIT 엄밀히는 렌더링 엔진이나, 게임 엔진으로도 자주 사용됨
id Tech 시리즈 C/C++ 2D / 3D DOOM, Quake 시리즈 GPL FPS 장르를 개척한 역사적인 엔진들

사유 엔진들

이름 스크립팅 언어 크로스플랫폼 2D / 3D 대표적인 게임 비고
Unreal Engine C++, Blueprint (비주얼) 3D / 2D 포트나이트, 철권 8, 배틀그라운드 고퀄리티 그래픽과 강력한 성능, AAA 게임의 표준
Unity C# 2D / 3D 원신, 하스스톤, 포켓몬 GO 높은 범용성과 방대한 에셋 스토어, 모바일 및 인디 게임 강자
CryEngine C++, FlowGraph (비주얼) 3D 크라이시스 시리즈, 헌트: 쇼다운 뛰어난 그래픽과 자연 환경 묘사에 강점
GameMaker GML (GameMaker Language) 2D 언더테일, 카타나 제로 2D 게임 제작에 특화, 입문자에게 적합