게임 엔진

최근 편집: 2022년 12월 29일 (목) 01:24
인쇄용 판은 더 이상 지원되지 않으며 렌더링 오류가 있을 수 있습니다. 브라우저 북마크를 업데이트해 주시고 기본 브라우저 인쇄 기능을 대신 사용해 주십시오.

개요

게임 엔진은 게임의 심장부에 해당되는 미들웨어이다.

구성

아래 엔진 중 예시로 든 엔진들은 대중적으로 알려진 게임 엔진들이다.

렌더링 엔진

렌더링 엔진은 화면에 물체를 출력하는 기능을 가진다. 2D 렌더링 엔진과 3D 렌더링 엔진으로 나눌 수 있으며, 보통은 3D 렌더링 엔진에서 2D 렌더링도 지원한다.

비디오 디코딩 엔진

인코딩 된 동영상을 디코딩하여 화면에 표현하는 기능을 제공한다. 게임에만 사용되는 엔진은 아니지만 그렇다고 동영상 플레이어에서 사용되는 엔진도 아니다. 동영상 플레이어는 보통 대상 플랫폼의 API에 초점을 맞추며 사용자가 코덱을 따로 설치하면 그 코덱도 지원할 수 있게 개발되지만 게임용 비디오 디코딩 엔진은 크로스플랫폼 개발을 보장하면서 특정 코덱만 지원하는 경우가 많다.

사운드 엔진

인코딩 된 오디오를 디코딩하여 출력해주는 기능은 물론이고, 경우에 따라 출력 시 디지털 신호처리하여 에코나 고음 강화와 같은 여러 가지 효과를 주는 기능도 지원한다.

물리 엔진

물리 엔진이라고 하면 보통 역학 물리와 관련된 연산을 수행하는 엔진을 말한다. 보통은 게임용으로만 개발되지는 않기 때문에 게임 이외에도 영화, 애니메이션 등에도 사용되고 있다.

연산할 물체 양이 많아지면 CPU만으로는 연산 속도를 1/60초 내에 수행할 수 없는 경우도 있어서 PhysX나 Bullet Physics와 같은 엔진들은 GPGPU를 활용하기도 한다.

네트워크 엔진

네트워크 엔진은 서버 및 클라이언트의 통신에 사용되는 엔진이다. 위 엔진들과 달리 보통은 자체 엔진을 사용하지만 최근에는 상용 네트워크 엔진도 자주 사용된다. 보통은 통신과 관련된 기능만 제공을 해 왔으나, 최근에는 게임 서버 프로그램의 기반 코드도 제공해주는 경우가 많아 게임 서버 엔진이라고도 한다.

경로 엔진

게임 요소의 길찾기에 사용되는 엔진이다. 길찾기는 A* 알고리즘과 같은 공개된 알고리즘이 많아 엔진을 사용하는 경우는 드물다. 다만, 3D 게임의 길찾기는 평면 길찾기와 좀 달라 상용 엔진을 사용하는 경우도 종종 있다.

인공지능 엔진

게임 요소의 인공지능에 사용되는 엔진이다. IT 산업 전반적으로 이용되는 인공지능에는 신경망 기반 기계학습이 주로 사용되지만, 게임에 사용되는 인공지능은 패턴에 따른 동작만 가능하면 되므로 따로 엔진이 상용화 된 경우는 흔치 않으며, 통합형 엔진에 컴포넌트를 추가하는 정도로 그치는 경우가 많다.

통합형 엔진

거의 대부분의 게임 엔진은 위의 엔진 구성 요소 중 두 개 이상의 것을 포함하면서 게임 로직 작성에 도움이 되는 기능들을 포함하고 있다. 이런 엔진을 지칭하는 용어는 없지만 굳이 정한다면 통합형 엔진이라고 할 수 있을 것이다.

위 엔진들은 단독으로 사용할 수 없지만 통합형 엔진은 해당 엔진만 가지고 게임을 개발할 수 있도록 구성된다. 통합형 엔진의 대부분은 개발에 사용할 수 있는 맵 툴이나 스프라이트 툴과 같은 유틸리티 프로그램을 제공한다.

자체 엔진의 개발

게임 개발에 자체 엔진을 사용한다는 말은 곧 해당 게임 회사의 기술력이 높다는 것을 의미한다. 게임 엔진의 개발에만 규모에 따라 짧으면 몇 개월에서 길면 몇 년이 소요되며, 엔진에서 버그가 없어야 게임 로직 작성에 있어서 디버그에 들어가는 시간도 감소되기 때문에 테스트에 들어가는 시간도 많이 소요된다. 또한 엔진의 재사용을 위한 설계에만 해도 전체 개발 기간의 80% 이상이 소요되는 만큼 긴 기간 눈에 보이는 결과가 안 나오는 엔진 개발에 자금을 쏟는 회사는 찾기 드물다.

그러나 기술력이 높은 회사에서도 상용 엔진을 사용하는 경우가 대부분이며 보통은 개발 기간과 개발 비용을 이유로 한다. 엔진 개발 및 유지보수를 담당할 인원에게 들어가는 인건비와 테스트 비용이 상용 엔진의 라이선스 비용을 넘어설 수 밖에 없는 온라인 게임에서는 더더욱 상용 엔진을 사용하는 편이다. 마비노기검은사막과 같은 게임이 특수한 경우라고 할 수 있다.

자체 엔진을 자사 게임 개발에 사용하고 다른 회사에도 납품하는 경우도 종종 있는데, 크라이 엔진이나 언리얼 엔진이 그런 경우. 크라이 엔진은 파 크라이 시리즈크라이시스 시리즈 개발에 사용한 엔진을 라이선스하고 언리얼 엔진은 언리얼 토너먼트 개발에 사용한 엔진을 라이선스한다.

엔진의 교체

일부 구형 게임의 경우 플레이어들이 게임의 엔진을 최신 하드웨어 기능을 활용할 수 있게 교체해야 되는 것 아니냐는 말을 하는 경우가 종종 있다.

그러나 개발 중, 또는 개발 완료된 게임의 엔진 교체는 거의 불가능하다. 엔진이 곧 기반 코드이기 때문에 엔진을 교체한다는 것은 그에 기반된 모든 코드를 교체해야 한다는 말이므로 재개발한다는 말과 같다. 심지어 같은 엔진의 다른 버전으로의 교체도 불가능한 경우도 있다. 예를 들면 언리얼 엔진 3로 개발된 게임은 언리얼 엔진 4로 교체할 수 없다.

다만, 물리 엔진과 같은 부가 엔진 및 컴포넌트들은 리팩토링만으로 교체가 가능한 경우도 존재한다. 예를 들어, 디아블로 3는 물리 엔진을 하복에서 도미노로 교체하였다.

오픈 소스 엔진과 상용 엔진

상용 엔진의 경우 라이선스에 따라 제공되는 구성이 다른데, 보통은 이미 빌드된 엔진 라이브러리 및 유틸리티 정도만 제공하나 일부 제품은 비용을 더 지불하고 엔진의 소스코드까지 제공받을 수 있다.

언리얼 엔진 4의 경우 상용 엔진이기 때문에 한 달에 $19.99를 지불하는 엔진 구독자에게만 소스 코드를 공개했으나 현재는 엔진을 구독하지 않아도 무료로 사용할 수 있는 만큼 소스 코드도 일반에 공개되어 있다.

오픈 소스 엔진의 경우 지불해야 하는 금액은 없지만 오픈 소스 커미터로부터 아무런 지원을 받을 수 없다. 문제가 발생하면 보통은 당사자가 해결해야 하며, 해결한 내역은 다시 오픈 소스 커뮤니티에 기여할 수 있다. 만약 오픈 소스 프로젝트에서 적용한 라이선스가 GPL인 경우 해당 엔진을 사용한 게임의 소스 코드도 GPL을 적용해 오픈 소스로 공개해야 하는 문제도 있다.