또 다른 세상을 창조하는 손, ‘게임 엔진’
상태바
또 다른 세상을 창조하는 손, ‘게임 엔진’
  • 이건한 기자
  • 승인 2019.11.14 00:00
  • 댓글 0
이 기사를 공유합니다

게임 엔진의 역사와 특징, 그리고 언리얼과 유니티 이야기

[테크월드=이건한 기자] 리지니2, 배틀그라운드, 로스트아크, 모탈컴뱃, 포트나이트, 인피니티 블레이드… 게임을 잘 모르는 사람이라도 오다가다 한 번씩은 들어봤을 이 게임들의 공통점은 무엇일까? 겉모습도 다르고 장르와 목표도 모두 제각각이다. 그러나 이들은 모두 ‘게임 엔진(Game Engine)’이라고 부르는 하나의 제작 플랫폼으로 만들어졌다는 공통점을 가진다.

게임 엔진은 그래픽 엔진, 사운드 엔진, 물리 엔진, 맵 에디터, UI 시스템 등 하나의 게임을 만들기 위해 필요한 각종 요소를 한데 모아 편리하게 쓸 수 있도록 집대성한 소프트웨어다. ‘엔진’이라고 하니 괜히 어려운 느낌도 들지만, 사실 우리에게 익숙한 ‘포토샵’처럼 결과물을 보다 더 쉽고 높은 품질로 만들기 위한 일종의 도구박스라고 볼 수 있다. 포토샵이 없어도 그림은 얼마든지 그릴 수 있지만 포토샵이 있으면 더 짧은 시간에 더 다양한 기법으로, 더 훌륭한 품질의 이미지를 만들 수 있는 것처럼 말이다.  

오픈소스 활동에서 탄생한 게임 엔진

뭐든 싸고 효율적으로 만들려는 노력은 인간의 본성이다. ‘한번 쓴 코드를 재활용해서 비슷한 게임을 만들 때 다시 쓰자’는 생각도 초기 비디오 게임이 대중에게 보급되던 1970년대 무렵부터 존재했다. 하지만 당시엔 코드를 공유하거나 라이센스한다는 인식이 약했고, 무엇보다 그것을 나누기 위한 매개나 동기도 충분하지 않은 환경이었다. 공유보단 보유한 코드를 어떻게 하면 더 많은 콘솔과 PC 등에서 재활용할 수 있을지에 대해 더 고민하던 시기였다. 

시간이 흘러 게임 엔진이란 개념이 본격적으로 등장한 시기는 1990년대 중반 이후다. 현대 1인칭 슈팅게임(FPS)의 시초격인 ‘울펜슈타인 3D’와 ‘둠’, ‘퀘이크’ 등의 유명 작품을 만든 개발자 존 카멕(John Carmack)이 1995년 울펜슈타인 3D의 소스를 공개하고 이후 둠과 퀘이크의 소스까지 오픈소스의 GPL 라이선스로 공개하면서 게임 제작에 필요한 코드 라이브러리와 엔진을 라이선스 형식으로 공개하거나 판매하는 초기 게임 엔진이라고 부를 만한 것들이 모습을 갖추기 시작했다. 

존 카멕(John Carmack) (사진=위키피디아)

이런 오픈소스 방식의 강점은 내가 무언가를 새롭게 만들지 않아도 이미 만들어진 코드를 가져다 새로운 기능을 덧대거나, 혹은 기존 코드를 수정하는 것만으로도 보다 나은 결과물을 빠르게 만들 수 있다는 집단지성에 기반을 둔다. 게임 엔진도 마찬가지로 게임 제작을 위한 코어(Core) 코드와 프레임워크가 공개되고, 여기에 제작사 별로 특화된 기능을 더하거나 개선하는 작업 등이 더해지며 작은 라이브러리 수준에서 하나의 완전한 게임 제작을 위한 기능이 한 프로그램에서 어우러져 지금의 모습으로 발전해왔다. 

울펜슈타인 3D 오리지널 버전
울펜슈타인 3D 오리지널 버전 게임 화면 中

게임 엔진의 핵심, 렌더링과 물리 영역

앞서 설명했듯 게임 엔진은 그래픽과 오디오를 포함한 여러 하위 엔진들이 혼합된 하나의 집합체다. 그중 렌더링/물리 엔진은 특정 엔진의 정체성을 가장 잘 나타내는 핵심 요소들이다. 

먼저 렌더링 엔진은 2D와 3D 그래픽 표현을 담당한다. 특히 단순하고 평면인 2D 렌더링과 달리 3D 렌더링의 경우 자연스러운 3차원 입체감과 현실성을 표현하기 위해 광원과 위치에 따른 색상, 명암, 노출 변화 등의 요소가 동시에 실시간으로 처리돼야 한다. 따라서 2D 렌더링과 비교해 훨씬 고차원적인 처리 기술과 연산력이 요구되며, 3D로 실사에 가까운 그래픽을 표현할수록 처리에 필요한 메모리와 오브젝트 연산량도 기하급수적으로 증가한다. 보통 ‘그래픽이 좋은 게임=고사양 게임’으로 연결되는 이유 중 하나다.

영상미가 돋보인 MMORPG ‘로스트아크’ 시나리오 中 (자료=로스트아크 공식 홈페이지)
영상미가 돋보인 MMORPG ‘로스트아크’ 시나리오 中 (자료=로스트아크 공식 홈페이지)

물론 엔진 최적화 수준에 따라 같은 그래픽을 표현하더라도 컴퓨터 자원을 훨씬 덜 소모할 수는 있다. 소위 ‘최적화가 잘 된 게임’이란 3D 그래픽 리소스를 얼마나 효율적으로 활용하는가에 대한 부분에서 판가름 나는 경우가 많다. 이와 함께 게임의 스타일을 담당하는 캐릭터나 배경 모델링, 예를 들면 아기자기한 만화 느낌의 3등신 캐릭터를 잘 표현할 수 있느냐, 극사실주의 캐릭터나 배경을 구현하는 데 특화돼 있느냐 같은 부분들 역시 렌더링 엔진의 특성에 좌우되는 요소들이다.

독특한 감성의 달빛조각사 모바일 시네마틱 영상 中
독특한 감성의 달빛조각사 모바일 시네마틱 영상 中

이어서 물리 엔진은 실 세계에서 일어나는 모든 물리적 상호작용(충돌, 낙하, 가속, 중력 등)을 게임 내에서 표현하기 위해 필요한 엔진이다. 캐릭터나 배경이 꼭 현실과 비슷하지 않아도 하늘에서 땅으로 추락한 캐릭터가 멀쩡하게 움직이거나, 바람이 불어도 휘날리지 않는 캐릭터의 머리칼을 상상해보라. 요즘 기준으로 생각해보면 다소 어색한 느낌이 들 것이다. 물리 엔진은 이런 현실과 게임의 괴리를 줄이고 자연스러운 움직임을 표현하기 위해 쓰인다. 

물리 엔진 중 가장 유명한 것은 아일랜드 하복닷컴의 ‘하복(Havoc)’과 엔비디아의 ‘피직스(PhysX)’다. 이 중 하복 엔진은 인텔이 인수했다가 이후 마이크로소프트가 다시 인수해 현재는 마이크로소프트의 다이렉트X 12와 통합돼 이후 DirectPhysics란 이름으로 새로 출시될 예정이라고 알려져 있다.

피직스는 본디 에이지아란 회사에서 만들었으나 2008년 엔비디아에서 에이지아를 인수하며 엔비디아의 소유가 됐다. 엔비디아의 주력 사업인 그래픽카드의 GPU를 활용한 3D 가속에 특화돼 있다. 현재 게임 업계에서 가장 보편적으로 사용되는 유명 엔진 다수가 피직스 물리 엔진을 사용한다.

추가로 물리 엔진을 적용해 만들 수 있는 상황에 대한 여러 시나리오를 가장 쉽고 재미있게 확인해 볼 수 있는 유튜브 채널을 하나 소개한다. ‘KM.Yukk’란 채널로, 최근 업로드는 없지만 무니무니 교수란 재생목록에서 ‘물리 엔진으로 1000m 높이의 미끄럼틀을 만들었다’, ‘건담을 물리 엔진으로 걷게 해봤다’, 같이 가볍고 흥미로운 주제로 물리 엔진의 역할을 잘 표현한 영상들을 확인해볼 수 있다.

 

게임 엔진의 종류

렌더링과 물리 표현을 편리하게 할 수 있다는 점 외에도 게임 엔진을 쓰는 이유는 매우 다양하다. 특히 게임 엔진은 운영체제와 응용프로그램 사이에 있는 ‘미들웨어’ 영역에 속하기 때문에 게임 엔진으로 만든 프로그램은 특정 운영체제에만 종속되는 문제를 피할 수 있어 하나의 코드를 더 많은 플랫폼에서 한결 쉽게 배포할 수 있게 된다는 부가적인 장점도 제공한다. 

또 잘 만든 엔진 하나가 제작사에 게임 판매 이상의 라이선스 수익을 안겨주기도 하며, 특정 장르에 특화된 전문 게임 엔진 등을 활용하면 원하는 게임을 제작하기 위한 개발 비용과 시간도 크게 절약할 수 있다. 하지만 모든 제작사가 게임 엔진을 공유하는 것은 아니다. 

회사의 내부 개발 프로젝트에만 쓰이는 비공개 전용 엔진의 수도 매우 많으며, 아예 특정 게임만을 만들기 위해 개발되는 엔진도 있다. 이런 비공개, 특수 게임 엔진 외에 널리 알려진 게임 엔진으로는 ‘유니티 엔진’, ‘언리얼 엔진’, ‘소스 엔진’, ‘주피터 엔진’, ‘id Tech 엔진’, ‘크라이 엔진’ 등이 있다. 여기에 ‘포크(Fork)’란 이름의 개량 게임 엔진들도 존재한다. 포크 엔진은 기존 게임 엔진의 코드를 조금씩 수정하거나 개선하다가 어느 시점에 원래 엔진과 거의 다른 엔진으로 변화했을 경우 아예 새로운 이름을 내걸고 출시하는 엔진들을 말한다. Id Tech 엔진 시리즈를 개량한 ‘골드 소스 엔진’, ‘IW 엔진’, 크라이 엔진 시리즈를 개량한 ‘듀니아 엔진’, ‘럼버야드 엔진’, ‘스타 엔진’ 등이 있다.

 

게임 엔진계의 양대 산맥 ‘언리얼’과 ‘유니티’

현존하는 게임 엔진의 수는 수십 가지 이상이지만, 게임 개발에 막 입문하려는 사람들에겐 가장 널리 사용되면서도 쉽게 배울 수 있는 엔진이 필요하다. 여기엔 누구나 입을 모아 언리얼 엔진과 유니티 엔진을 추천하곤 한다. 이 두 엔진은 마치 모바일의 안드로이드와 IOS처럼 게임 엔진계를 양분하고 있는 존재들이다. 이들의 특징과 장단점에 대해서도 잠시 짚고 넘어가도록 하자.

언리얼 엔진은 미국의 에픽게임즈에서 제작/배포하는 게임 엔진이다. 이 글의 서두에서 언급한 게임들은 모두 언리얼 엔진으로 만들어진 작품들이다. 언리얼 엔진의 특징이자 강점으론 많은 사람이 뛰어난 그래픽 품질을 꼽는다. 지금은 유니티 같은 경쟁 엔진들도 충분히 뛰어난 그래픽 퍼포먼스를 충족해주지만, 1990년대 후반 처음 언리얼이 등장했던 시기부터 언리얼 특유의 고급스러운 3D 렌더링은 경쟁 엔진들을 압도하는 완성도를 보여주며 오랜 시간 주목받아왔다.

또 이런 평가는 지금도 거의 변함이 없다. 이 때문에 주로 당대의 고사양 PC 게임 개발에 많이 활용됐으며, 경쟁 엔진인 유니티가 모바일 영역에서 두각을 나타낸 뒤로는 모바일에도 집중해 최신 버전에서는 모바일 경쟁력도 뛰어나다고 평가받고 있다.

언리얼 엔진 로고
언리얼 엔진 로고

단점으로는 초기 수억 원에 달하는 구입 비용과 일정 이상의 매출이 발생한 게임에 대한 추가 로열티, 무거운 제작 환경, C++ 언어 사용으로 인한 접근 장벽 등이 문제로 거론됐으나, 현재는 대부분 해결된 문제들이다.

언리얼 엔진의 전성시대를 이끈 언리얼 엔진3은 이후 소스코드 공개를 제외한 모든 기능을 무료로 오픈한 UDK 버전을 공개하며 본격적인 언리얼 대중화에 기여했으며, 이후 등장한 언리얼 엔진4도 출시 1년 동안은 매월 19달러의 사용료 정책을 운영했지만 이후 이마저도 완전 무료화 정책으로 전환하며 접근 장벽을 낮추는 전략을 선택했다.

한편 언리얼 엔진의 개발 접근성 문제는 ‘블루프린트’라고 부르는 순서로 로직 기반 에디터 시스템을 도입해 프로그래밍을 잘 모르는 디자이너라도 블루프린트만으로 일정 수준 이상의 게임을 제작하거나 구현하고 싶은 액션을 만들어 낼 수 있는 수준에 이르러 있다. 학습 측면에서도 2009년 에픽게임즈 코리아가 설립된 이후 엔진의 한글화, 한국어 튜토리얼(언리얼 홈페이지) 등을 상세히 공개하기 시작하면서 독학으로도 기본적인 게임 개발이 가능하도록 지원되고 있다.

언리얼 엔진 블루프린트 예제 (자료=언리얼 엔진 교육 문서)
언리얼 엔진 블루프린트 예제 (자료=언리얼 엔진 교육 문서)

다음으로 유니티는 2004년 유니티 테크놀로지스가 개발한 게임 엔진으로, 언리얼과는 다른 독자적인 특징으로 사랑받아 왔다. 유니티를 대표하는 키워드는 ‘가벼움’과 ‘접근성’이다. 유니티는 애초에 게임 엔진이 아닌 어도비 플래시 타깃의 웹 플레이어로 개발됐기 때문에 복잡하지 않고 사용법이 간단한 편이었다. 직관적인 아이콘 기반의 위지웍 인터페이스는 특히 초보 제작자들에게 큰 환영을 받았다. 

유니티 엔진 로고
유니티 엔진 로고

또 라이선스 비용이 상당히 저렴한 편이라 상대적으로 단순하고 가벼운 게임을 만들 때 큰 인기를 얻을 수 있었는데, 이점은 이후 모바일 게임 시장이 확장되기 시작한 이후에도 장점으로 작용해 초기 스마트폰용 모바일 게임 중 유명한 작품의 상당수가 유니티 엔진을 통해 만들어지기도 했다. 사용 언어도 C#과 자바스크립트를 지원해 역시 접근성이 높다고 평가된다. 

무엇보다 스마트폰 앱 장터를 연상시키는 자체 ‘에셋 스토어’를 제공해 각종 게임 리소스부터 스크립트, 플러그인, AI 등을 무·유료로 공유할 수 있도록 하면서 유니티 생태계의 선순환과 사용층 확장이라는 두 마리 토끼를 모두 잡는 데 성공한다. 이후 언리얼과의 경쟁을 위해 2015년 유니티도 개인용 엔진에 한해 완전 무료화를 선언하고 개발자 양성을 위해 적극적인 교육에 나서고 있다.

유니티 에셋 스토어

단점으로는 언리얼과 비교해 다소 부족한 고급 기능과 제한적인 멀티스레드 구현 등이 꼽힌다. 하지만 고급 기능 구현이 다소 복잡하다는 것뿐이지, 불가능한 것이 아니기 때문에 이 문제는 개발자들 사이에서도 여전히 갑론을박이 있다.

즉, 개발자의 역량이 중요하다는 것이다. 유니티 측에서도 이 같은 차이를 인지하고 해결을 위한 노력을 이어가고 있다. 애초에 언리얼 엔진이 고품질에 치중하고, 유니티 엔진이 저사양 기기에서도 충분히 구동 가능한 가벼운 게임 제작에 초점을 맞췄다는 점을 감안하면 이를 단점보다는 유니티의 특징 정도로 보는 이들도 적지 않다. 그 외에 가장 표면적으로 드러나는 단점으론 언리얼의 블루프린트와 대등한 수준의 비주얼 메이킹툴이 부재하다는 점 정도다.

 

게임 엔진의 무궁무진한 영역 확장

게임 엔진이 지원하는 기능이 점점 확대되면서, 최근 게임 엔진을 게임 제작 외에 활용하는 사례도 급증하고 있다. 유니티와 언리얼 엔진의 공식 홈페이지에만 접속해 보더라도 게임 외 각 엔진이 사용되고 있는 분야에 대한 상세한 소개들을 확인할 수 있다. 유니티의 경우 자동차, 운송/제조, 영화, 애니메이션/시네마틱, 설계, 엔지니어링과 건축 등의 응용 영역을 소개하고 있으며, 언리얼 역시 ‘언리얼 스튜디오’를 통해 애니메이션이나 영화 제작, 건축 설계, 차량 모델링 등으로 사용 영역을 확대해 가는 모습을 찾아볼 수 있다. 

이처럼 궁극적으로 게임 엔진은 단순한 게임 제작 도구에 머물지 않고 하나의 콘텐츠 제작 ‘플랫폼’으로 진화하는 추세다. 많은 게임 개발자들이 처음엔 ‘게임이 좋아서, 직접 만들고 싶어서’ 게임 엔진을 접하고 개발자의 길을 걷게 됐다고 말한다. 그러나 이젠 게임 엔진을 배워서 게임만 만들 수 있는 게 아니다. 활용하기에 따라 훨씬 다양한 영역에서 유용하게 사용할 수 있는 환경이 마련되고 있다. 또 요즘엔 그와 관련해 유니티와 언리얼 모두 관련 개발자 양성과 진입 장벽 완화에 노력을 기울이고 있으니, 개발에 관심 있는 사람이라면 취미로 게임 엔진 하나 정도는 입문해 보는 것도 좋을 듯하다. 
 


관련기사