1 이 장의 개요 언리얼 엔진은 크라이 엔진과 더불어 전 세계적으로 유명한 게임 엔진이다. 우리가 알고 있는 많은 게임이 언리얼 엔진으로 개발되었으며, 게임의 품질 또한 매우 우수하다고 평가 되고 있다. 이 장에서는 언리얼 엔진의 특징과 설치 방법 등에 대해 알아본다.
1.1 게임 엔진이란 무엇인가? 영화가 카메라, 조명, 사운드 등 근대 과학 기술의 기계공학적인 도구를 이용하여 작가의 메시지를 대중에게 전달하는 종합 예술인 것처럼, 컴퓨터 게임은 컴퓨터 그 래픽스와 사운드, 전문적인 프로그램 등 각종 기술이 집약된 종합적인 컴퓨터 소프 트웨어 시스템이다. 따라서 하나의 게임을 만들기 위해서는 해당 분야의 기술력을 갖춘 많은 전문가의 도움이 필수적이다. 게임 엔진Game Engine은 이와 같은 종합적인 컴퓨터 소프트웨어 시스템을 보다 손쉽게 개발할 수 있도록 도와주는 개발 툴Software이다. 컴퓨터를 활용하면 보다 빨리 작업 할 수 있는 것처럼, 게임 엔진을 사용하면 개발 기간이 훨씬 단축된다. 게임의 개발 비는 개발 기간에 비례하므로 개발 기간을 단축할 수 있는 게임 엔진은 게임 개발의 필수적인 요소라 할 수 있다. 컴퓨터 프로그래밍과 그래픽, 수학과 물리학에 깊은 지식을 가지고 있고, 시간이 아 주 많은 개발자라면 게임 엔진을 사용하지 않고도 게임을 만들 수는 있을 것이다. 모든 면에서 부족한 점이 없으므로 게임의 맨 밑바닥부터 차근차근 작업하면 되기 때문이다. 그런 개발자라도 두 번째 게임을 만들 때에는 맨 밑바닥부터 작업하지 않 고 앞에서 작업했던 많은 부분을 그대로 가져다가 활용하게 된다. 소프트웨어 개발 에는 유사한 작업 과정이 아주 많기 때문이다. 이처럼 유사한 부분을 많이 모아두 면 게임을 개발할 때 즉각 활용할 수 있어서 훨씬 편하다. 이렇듯 게임 개발에 필요 한 많은 부분을 다루기 쉽도록 만들어서 게임 개발을 도와주도록 만든 소프트웨어 가 바로 게임 엔진이다. 게임 엔진은 게임 개발사에서 직접 개발할 수도 있고, 상용화되어 있는 엔진을 구매 해서 사용할 수도 있다. 직접 개발한 엔진이든 상용 엔진이든 게임 엔진의 목적은 게임 개발의 시간과 노력을 줄이는 것이다. 많은 자본과 고급 인력을 보유하고 있고 역사가 긴 대규모 개발사들은 대부분 직접 개발한 게임 엔진을 가지고 있다. 그러나 2 제 1 장 언리얼 엔진 소개
소규모 회사나 이제 스타트업을 하려는 개인 개발자들은 게임 엔진을 개발할 자본 과 시간이 부족하므로 상용 엔진을 사용한다. 그림 1-1 언리얼 게임 엔진의 모습 게임 엔진의 개념은 1996년 발매된 FPS 게임인 퀘이크Quake 이후 3D 게임이 보편화되면 서부터 정립되기 시작했다. 퀘이크의 개발자인 존 카멕John Carmack이 퀘이크 시리즈의 소 스 코드를 공개하면서 게임 엔진이라는 개념이 자리잡은 것이다. 게임 엔진의 주요 기 능은 3D 그래픽의 표현을 위한 렌더링Rendering 시스템, 공간상의 충돌 감지 및 현실적인 물리 효과를 구현하기 위한 물리 시스템, 정해진 절차를 지시하기 위한 스크립트Script 에디터, 게임의 가상공간을 만들기 위한 맵Map 에디터, 기타 각종 개발 도구 등이다. 그림 1-2 게임 엔진의 화려한 그래픽과 현실감 있는 물리 효과 1.1 게임 엔진이란 무엇인가? 3
1.2 언리얼 엔진 언리얼 엔진Unreal Engine은 게임 관련 분야에 종사하는 사람들 중에는 이것을 모르는 사람이 없을 정도로 전 세계적으로 아주 유명한 게임 엔진이다. 단지 워낙 고가의 제품인 탓에 일반인이 쉽게 접할 수 없기는 하지만, 직접 보지는 못했더라도 그 막 강한 기능만큼은 풍문으로나마 들어서 모두들 잘 알고 있을 것이다. 언리얼 엔진은 미국의 에픽 게임스Epic Games에서 개발한 게임 엔진이다. 에픽 게임스는 1998년에 언리얼이라는 3D FPS 게임을 만들어 발표했는데, 이때 사용한 기술을 언리 얼 엔진이라는 이름으로 일반인에게 공개했다. 아직 3D 그래픽 기술이 보편화되지 않 은 당시에 언리얼 엔진이 제공하는 3D 그래픽 기술은 순식간에 많은 화제가 되었다. 그때부터 현재에 이르기까지 컴퓨터의 하드웨어(CPU)와 그래픽 카드(GPU)의 발전은 3D 그래픽 기술 수준을 한층 높여주었고, 언리얼 엔진 역시 꾸준히 개선 작업을 거쳐서 현 재의 언리얼 엔진으로 발전했다. 우리나라에서는 온라인 게임 시장이 한창이던 시절, 언리얼 엔진을 사용한 리니지2가 크게 성공하자 그 후 많은 제작사가 언리얼 엔진을 도 입하기 시작했고, 언리얼 엔진의 명성이 일반 개발자에게까지 알려지게 된 것이다. 비교적 최근까지만 해도 언리얼 엔진은 대규모 개발사 외에는 감히 사용해 볼 엄두 도 낼 수 없는 엄청난 고가의 제품이었다. 따라서 기능은 막강하지만 워낙 비쌌으므 로 소규모 개발사나 개인 개발자들은 접하기 힘든 엔진이었다. 그럼에도 불구하고 언리얼 엔진은 뛰어난 퀄리티로 인해서 세계에서 가장 유명한 엔진이라는 명성을 그 대로 유지하고 있었다. 그런데 게임 엔진 시장에 커다란 변화가 오게 된다. 2010년 무렵부터 게임의 플랫폼이 PC에서 모바일로 이동하기 시작한 것이다. 앵그리버드나 윈드러너처럼 가벼운 2D 게 임들이 모바일 플랫폼에서 크게 성공하면서 모바일 게임 시장은 날로 커진 반면, PC 게임 시장은 급속하게 위축되기 시작한다. 따라서 수많은 게임 개발사가 모바일 게임 시장에 진출하게 되었고, 모바일 게임에 적합한 게임 엔진의 필요성이 커진 것이다. 4 제 1 장 언리얼 엔진 소개
그림 1-3 언리얼 엔진으로 개발된 엔씨소프트의 리니지2 모바일 게임은 화려한 그래픽과 복잡한 인터페이스를 요구하지 않으므로 무겁고 다 루기 어려운 3D 엔진보다 가볍고 단순한 2D 엔진이 더 적합하다. cocos2d와 같이 오 픈 소스를 채택한 가벼운 엔진들이 무료로 배포되기 시작한 것도 이즈음이다. 이때 Unity 3D라는 게임 엔진이 혜성처럼 등장한다. Unity 3D를 처음 접한 사람들에게는 혜성처럼 등장한 엔진이었지만, Unity 3D는 2001년에 개발을 시작하여 2005년에 버전 1.0을 출시한 만큼 역사가 꽤 있는 제품이 다. 그런데 Unity 3D는 애초에 게임 엔진으로 개발된 제품이 아니라, 웹에서 구동되 는 3D 애플리케이션을 개발하는 툴이었으므로 게임 개발자들은 대부분 Unity 3D 에 관심을 두고 있지 않았다. Unity 3D는 발전을 거듭하여 웹에서부터 시작해서 PC는 물론 아이폰과 안드로이드 를 포함한 멀티 플랫폼 지원 기능이 추가되었는데, 이 멀티 플랫폼 기능이 크게 부 각되면서 순식간에 모바일 게임 분야의 강자로 떠오른 것이다. 당시만 해도 모바일 게임은 아이폰용과 안드로이드용을 별도로 제작해야 했다. 아이폰용 애플리케이션 은 오브젝티브-C를 사용해서 제작하고, 안드로이드용은 자바 언어로 작성해야 하므 로 소스 코드의 호환성이 없다. 따라서 개발사가 아이폰용 개발팀과 안드로이드용 개발팀을 각각 운영하는 것이 당연하다. 1.2 언리얼 엔진 5
그런데 Unity 3D를 사용하면 하나의 프로젝트로 아이폰과 안드로이드에서 동시에 실행되는 게임을 개발할 수 있으므로 소규모로 프로젝트를 운영하는 신생 업체나 혼자서 모든 것을 개발하는 인디 개발자들 사이에 크게 인기를 끌게 된 것이다. 여 기에는 Unity 3D의 가격 정책도 한몫을 했다. Unity 3D는 무료 버전과 유료 버전이 있는데, 유료 버전도 강력한 3D 기능에 비해 크게 부담이 되지 않을 정도의 금액이 다. 기존의 언리얼 엔진이 프로젝트당 30억 원에 달한다는 것과 비교해 보면 거의 무 료일 만큼 파격적인 가격이다. 따라서 많은 모바일용 게임이 Unity 3D로 제작되었고, 히트작 역시 많이 배출하고 있다. 이러한 결과에 힘입어 Unity 3D는 모바일 게임의 대표 엔진으로 자리잡기에 이른다. 이러한 모바일 게임 시장의 성장과 Unity 3D의 성공은 언리얼 엔진에도 많은 영향을 주었다. Unity 3D의 특징인 사용하기 쉬운 인터페이스와 멀티 플랫폼 기능은 그대로 도입되었고, 여기에 더해서 PC 게임의 화려한 3D 그래픽 기능을 모바일에서도 그대 로 재현할 수 있도록 한 것이다. 또한, 매월 19달러만 지불하면 누구나 언리얼 엔진 을 사용할 수 있는 파격적인 가격 정책으로 전 세계의 모든 개발자에게 모두의 언리 얼 엔진 4 라는 타이틀로 다가온 것이다. 모바일 기기의 성능이 PC에 근접해 감에 따라 모바일에서도 퀄리티가 높은 게임이 요구되고 있는 이때, 언리얼 엔진은 PC 게임의 화려한 3D 게임을 모바일용으로도 쉽게 만들 수 있는 환경을 모두 제공한다는 사실이 개발자에게는 무엇보다도 반가 운 소식일 것이다. 그림 1-4 언리얼 엔진의 지원 플랫폼 6 제 1 장 언리얼 엔진 소개
1.3 언리얼 엔진의 특징 언리얼 엔진은 워낙 유명한 엔진인 만큼 성능에 대해서는 익히 알려져 있지만, 이번 에 새롭게 발표한 언리얼 엔진 4의 특징에 대해 알아보자. 가격 정책 2014년 3월 20일, 에픽 게임스는 기존의 언리얼 UDK(언리얼 엔진 3)를 대폭 수정한 언 리얼 엔진 4(이하 언리얼 엔진)의 새로운 기능과 함께 파격적인 가격 정책을 발표했다. 누구나 회원 등록을 하고 매월 19달러만 내면 언리얼 엔진을 무제한으로 사용할 수 있도록 하겠다는 것이다. 본인이 보유하고 있는 모든 PC에 언리얼 엔진을 설치할 수 있음은 물론이고, 회원을 탈퇴해서 더는 추가 비용을 내지 않더라도 그동안 사용하 던 엔진은 계속해서 사용할 수 있다. 매월 19달러를 지불하여 회원 자격을 유지하는 기간에는 모든 업그레이드가 무료 이다. 회원을 탈퇴해서 업그레이드를 받을 수 없는 경우에는 그 시점에서 다시 회원 등록을 하면 업그레이드된 제품을 사용할 수 있으므로, 사실 19달러만으로도 언리 얼 엔진을 무제한으로 사용할 수 있다는 뜻이다. 게다가, 교육기관과 학생들에게는 지속적인 업그레이드가 가능한 무료 버전을 제공한다. 또한, 개발을 완료해서 출시한 제품에 대한 로열티도 종전의 30%에서 5%로 대폭 낮 췄는데, 이것도 분기별 최초 3,000달러까지는 로열티가 무료이며, 독립적으로 판매되 는 게임 형태가 아닌 놀이기구 등에 사용되는 제품에 대해서는 로열티를 받지 않겠 다고 했다. 따라서 이제 개인이나 소규모 개발사들은 별 부담 없이 언리얼 엔진을 마 음껏 사용할 수 있게 되었다. 1.3 언리얼 엔진의 특징 7
한글화된 인터페이스 대부분의 소프트웨어는 전문적인 용어가 사용되므로 처음 사용하는 사람이 익숙 해지기까지는 어느 정도의 기간이 필요하다. 언리얼 엔진은 대부분의 용어를 한글 화해서 언리얼 엔진을 처음 접하는 사용자들도 쉽게 사용할 수 있도록 많은 부분에 공을 들였다. 각각의 메뉴나 버튼에 대해 한글로 된 풍선 도움말을 제공하는데, 재미있는 것은 풍 선 도움말에서 Ctrl 키와 Alt 키를 동시에 누르면 더 자세한 설명이 나타나는 것이다. 세부적인 설명이 필요한 항목은 곧바로 인터넷 웹페이지로 연결되어 관련된 정보를 확인할 수 있도록 세심한 배려를 해 두었다. 버튼 위에서 Ctrl + Alt 키를 누르면 자세한 풍선 도움말이 나타난다 그림 1-5 언리얼 엔진의 자세한 풍선 도움말 8 제 1 장 언리얼 엔진 소개
블루프린트 시스템 컴퓨터로 어떤 시스템을 개발하는 과정은 여러 단계가 있지만, 결국 프로그래밍 언 어로 코딩하는 것이 가장 중요한 절차 중 하나이다. 따라서 프로그래밍 언어의 문법 을 알지 못하는 디자이너나 기획자들에게는 프로그램 작성 분야는 속된말로 넘사 벽 과 다름없다. 블루프린트 Blueprint 는 비주얼한 스크립트 환경으로, 프로그래밍 언어로 코딩하지 않 고 순서도를 그리는 개념으로 프로그램을 작성한다. 블루프린트를 사용하면 전체의 흐름을 한눈에 볼 수 있으므로 개발 및 수정이 매우 쉽다. 언리얼 엔진의 블루프린 트는 프로그래밍 언어의 문법을 잘 모르는 초급 개발자나 디자이너 및 기획자에게 는 아주 좋은 툴이다. 블루프린트를 사용하면 디자이너나 기획자가 직접 게임을 수 정할 수 있고, 나아가 직접 개발할 수도 있기 때문이다. 그림 1-6 언리얼 엔진의 블루프린트 에디터. 순서도와 같은 개념으로 스크립트를 만든다 블루프린트는 언리얼 엔진의 API를 잘 모르는 개발자들에게도 아주 유용한 툴이다. 블루프린트를 사용하면 그 상황에 필요한 함수 목록과 입력과 출력 등에 관한 정보 를 곧바로 제공해 주기 때문이다. 물론 프로그래밍 언어를 잘 알고 있는 개발자들은 비주얼 스튜디오에서 C++ 코드로 게임을 개발하는 것도 가능하다. 1 3 9
게임 템플릿 템플릿 Template 은 기본으로 사용하는 기능을 미리 마련해 둔 것이다. 템플릿을 사용하 면 기본적인 기능이 자동으로 완성되므로 그만큼 작업량이 줄어든다. 언리얼 엔진 은 개발하려는 게임의 종류에 적합한 게임 템플릿을 마련해 두었는데, 이것을 이용 하면 캐릭터 제어와 카메라 이동, 기본 배경, 조명 등 게임의 기본적인 골격이 자동 으로 완성된다. 개발자는 필요한 부분만 추가하면 되므로 처음부터 작업하는 것에 비해 개발 기간을 단축할 수 있다. 게임 템플릿은 개발 기간을 단축하는 용도 외에 도 언리얼 엔진의 구조와 기능, 작동 원리 등을 이해하는 데 많은 도움을 준다. 그림 1-7 프로젝트 템플릿 10 제 1 장 언리얼 엔진 소개
마켓플레이스 마켓플레이스 Marketplace 는 유니티의 애셋 스토어처럼 콘텐츠를 일정 가격에 사고파는 곳이다. 아직은 초창기이므로 유료 프로젝트가 많지는 않지만, 에픽 게임스에서 직 접 공개한 각종 예제와 샘플 프로젝트가 다수 수록되어 있다. 여기에 수록된 예제 와 샘플 프로젝트만 잘 분석해도 언리얼 엔진의 기능과 프로젝트 제작 방식을 이해 할 수 있을 것이다. 그림 1-8 언리얼 엔진의 마켓플레이스 1 3 11
실사와 같은 렌더링 기술 많은 사람이 언리얼 엔진에 매료되는 점은 화려한 게임 화면이다. 언리얼 엔진은 현 실 세계와 같은 화면을 구현하기 위해 물리 기반 렌더링 Physically Based Rendering 기술을 사 용한다. 물리 기반 렌더링은 어떤 라이팅 환경에서도 현실 세계에 가장 가까운 음영 을 보여줄 수 있는 컴퓨터 그래픽 기술이다. 언리얼 엔진은 현실 세계와 유사한 화면 을 만들기 위해 다양한 기술을 사용하는데, 그중 몇 가지 예를 들면 다음과 같은 것 들이 있다. 블룸 이펙트 블룸 Bloom 은 어두운 배경에 있는 매우 밝은 물체를 맨눈으로 볼 때, 물체 주변에 빛 이 번져 보이는 광학 현상을 재현해서 이미지에 사실감을 주는 기술이다. 렌즈 플레어 이펙트 렌즈 플레어 Lens Flare 는 실제의 카메라 렌즈로 밝은 물체를 볼 때 빛이 카메라 렌즈의 내부에서 산란되어 나타나는 결함 현상이지만, 영상 분야에서는 렌즈 플레어를 적 절히 사용하여 아름다운 이미지를 만든다. 라이트에 렌즈 플레어 효과를 주면 영화 와 같은 장면을 연출할 수 있다. 그림 1-9 블룸 이펙트와 렌즈 플레어 이펙트 뎁스 오브 필드 이펙트 뎁스 오브 필드 Depth of Field 이펙트는 씬의 포커스 지점 앞이나 뒷부분을 거리에 따라 흐리게 만드는 기법으로, 카메라 초점의 앞이나 뒤에 있는 물체가 흐려 보이는, 이른 바 아웃 포커싱 Out of Focus 현상을 재현한 것이다. 이 효과는 게임 화면을 좀 더 사진이 나 영화처럼 보이도록 만든다. 12 제 1 장 언리얼 엔진 소개
비네트 이펙트 비네트Vignette 이펙트는 실제의 카메라 렌즈처럼 이미지의 가장자리가 어두워지는 현 상을 재현해서 게임 화면을 더욱 더 영화와 같은 영상을 만들어 낸다. 그림 1-10 뎁스 오브 필드 이펙트와 비네트 이펙트 애트머스페릭 포그 애트머스페릭 포그Atmospheric Fog는 행성의 대기권을 통과하는 빛의 산란 효과를 추정 하는 기술로, 이것을 이용하면 현실처럼 깊이 있고 은은한 배경과 하늘을 만들 수 있다. 라이트 섀프트 라이트 섀프트Light Shaft는 현실에서 구름 사이를 뚫고 나오는 빛줄기에 대한 시뮬레이 션으로 창문 너머로 들어오는 빛줄기를 자연스럽게 표현한다. 그림 1-11 애트머스페릭 포그와 라이트 섀프트 1.3 언리얼 엔진의 특징 13
캐릭터 애니메이션 시스템 캐릭터를 애니메이션하기 위해서는 먼저 3D 형상의 캐릭터를 모델링한 후 캐릭터의 관절 위치에 맞도록 뼈대 Bone 를 심고 관절의 움직임을 수치화하는 작업이 필요하다. 언리얼 엔진도 본 Bone 애니메이션을 사용하는데, 개발자들이 캐릭터의 움직임에 대한 처리를 쉽게 할 수 있도록 페르소나 Persona 라는 애니메이션 시스템을 제공한다. 페르소 나는 애니메이션이 연속해서 진행될 때 애니메이션의 연결이 자연스럽게 연결되도록 도와준다. 예를 들어, 쉬고 있는 캐릭터가 달리는 경우 처음부터 마구 달리는 것이 아니라 쉬기 걷기 달리기 동작이 순서에 따라 재생되게 함으로써 자연스러운 움 직임을 만들어 낸다. 달리는 캐릭터가 정지할 때에도 달리기 걷기 쉬기의 동작이 구현된다. 그림 1-12 언리얼 엔진의 페르소나 애니메이션 에디터 언리얼 엔진은 3D 애니메이션은 물론 고전적인 2D 스프라이트 Sprite 애니메이션도 지 원하므로 카툰과 같은 분위기의 게임도 쉽게 만들 수 있다. 14 제 1 장 언리얼 엔진 소개