메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

게임 개발을 하기 위해 알아야 할 것들 & 언리얼 엔진과 유니티 특징 비교

한빛미디어

|

2020-10-27

|

by 한빛

73,932

 

 

men-playing-video-games_700.jpeg

 

게임을 만들고 싶어 하는 사람이 늘었다

 

 

디지털 게임 산업은 수십 년 전부터 존재하고 있습니다. 

지금까지 일반 사용자는 게임 회사가 만들어놓은 게임을 즐길 뿐 직접 만드는 사람은 거의 없었습니다. 

 

하지만 스마트폰이 폭발적으로 보급되면서 ‘스마트폰 게임을 직접 만들고 싶다’고 생각하는 사람도 늘었습니다.

그 증거로 서점에는 스마트폰용 앱과 게임 제작에 대해 다룬 책이 많죠. 

 

요즘은 인디라고 불리는 소규모 조직에서 만든 게임이 세계적으로 화제가 되는 경우도 종종 있습니다. 

개인들도 iOS는 앱스토어, 안드로이드는 구글 플레이 스토어와 같은 마켓을 통해 게임을 배포할 수 있게 되면서 여건이 좋아진면도 있습니다.

 

원래 게임 개발에 사용되던 고성능 PC는 값이 비싸서 개인이 좀처럼 살 엄두를 내지 못했지만 최근에는 가격이 많이 낮아졌습니다.

그리고 게임을 만들기 위한 툴이 무료로 제공되는 등 환경도 쉽게 갖출 수 있게 되었죠. 

 

주변 환경의 변화하고 여건 마련되면서 게임을 만들어보고 싶어 하는 사람이 증가했습니다.

 

Q: 게임을 개발하기 위해서는 배워야 할 지식이 많다?

 

실제로 게임을 만들기 위해서는 무엇을 공부해야 할까요? 

사실 디지털 게임을 만들려면 배워야 할 것이 많습니다. 

 

게임을 만들기 전에 제대로 프로그래밍에 대해 학습하지 않으면 컴퓨터 화면에 3D 오브젝트를 표시하는 것조차 할 수 없습니다.

게다가 그 3D 오브젝트를 움직이거나 오브젝트 사이의 마찰력을 표현하기 위해서는 프로그래밍 지식뿐 아니라 여러 가지 표현을 위한 수학이나 물리학 지식도 필요합니다.

 

개인이나 작은 조직에서는 이러한 지식을 이용해 게임을 만드는 일이 쉽지 않았습니다.

 

 

Q: 물리와 수학을 모르면 게임 개발은 어렵나요? 

 

그러면 고급 프로그래밍 지식이나 복잡한 물리, 수학을 구사하지 못하는 사람은 게임 개발을 포기해야 할까요?

그렇지 않습니다. 

 

언리얼 엔진으로 대표되는 게임엔진을 사용하면 됩니다. 

“언리얼 엔진은 게임 엔진입니다”라는 말을 들었을 때 “게임 엔진이 뭐죠?”라고 되묻는 분들도 계실 것 입니다.

언리얼 엔진을 배우기 전에 먼저 게임 엔진이 무엇인지부터 알아보겠습니다.

 

게임 엔진은 다양한 툴이나 기능의 집합이다

게임 엔진은 한마디로 프로그래밍, 수학, 물리학과 같이 원래 게임을 만들 때 알아야 할 지식을 최소한으로만 알고 있어도 게임을 만들 수 있게 도와주는 도구입니다. 이는 게임 엔진이 있으니 공부하지 않아도 된다는 의미가 아니며, 수학이나 물리학 지식을 갖추는 것은 매우 중요합니다.

 

예를 들어 어떤 오브젝트가 중력에 의해 아래로 떨어지는 동작을 구현하고 싶다면 강체 시뮬레이션이라고 하는 분야의 지식을 갖춰야 합니다.

 

강체 시뮬레이션

 

강체 시뮬레이션은 ‘물체는 중력에 끌려 아래로 떨어진다’와 같이 실생활에서 흔히 접할 수 있는 물리적 현상의 시뮬레이션을 의미합니다.

게임에 강체 시뮬레이션을 적용하면 총알 탄도를 현실 세계와 똑같이 재현할 수 있어 게임의 현실감이 올라갑니다. 

 

하지만 강체 시뮬레이션을 프로그래밍으로 구현하려고 하면 물체가 떨어지는 운동뿐 아니라 물체의 회전, 물체끼리의 충돌과 그 영향 등도 생각해야 합니다. 

 

얼핏 생각해도 아주 복잡합니다.

강체 시뮬레이션을 다룬 전문 서적이 많으므로 관심이 있다면 참고하기 바랍니다.

게임을 만들 때는 오브젝트가 낙하한다는 고전 물리학 기능만 필요한 것이 아닙니다. 

캐릭터 상태에 따라 애니메이션을 관리하는 애니메이션 제어 시스템, 이펙트를 만들기 위한 파티클 시스템, 색이나 텍스처와 같은 외관을 설정하기 위한 머티리얼 에디터 등 간단한 예시에도 벌써 여러 에디터나 기능이 필요하다는 것을 확인할 수 있습니다.

 

게임 엔진은 원래 게임 회사 내에서 만든 자체 엔진이었다

 

게임 제작사가 게임을 만들 때는 게임 엔진을 사용해 개발하는 것이 일반적이었습니다. 

여기서 말하는 게임 엔진은 각 개발사가 자체적으로 만든 것을 말합니다. 

 

게임 개발의 비밀 레시피처럼 절대 외부에 공개되지 않습니다. 

따라서 유니티나 언리얼 엔진과 같이 어느 게임 회사에서나 공통으로 사용되는 게임 엔진은 없었습니다.

 

그렇다면 요즘 게임 회사는 왜 언리얼 엔진이나 유니티를 사용할까요?

 

그 이유는 게임 엔진을 자체 개발하기에는 수지가 맞지 않는다는 점과 게임 엔진을 개발하는 비용으로 게임을 만드는데 집중할 수 있다는 점을 들 수 있습니다.

 

게임 개발에 요구되는 기술이 전문화, 다양화됨에 따라 게임 엔진을 자체 개발해서 사용하던 게임 회사조차 언리얼 엔진이나 유니티를 사용하게 됐습니다.

 

따라서 언리얼 엔진을 잘 다룬다는 것은 회사에 취업할 때 또는 이직할 때 강점이 될 수 있습니다.

 

개인도 기업과 같은 환경을 갖출 수 있는 시대

 

게임 회사의 자체 개발 엔진은 개인이 넘볼 수 없는 존재였습니다. 

그러나 이제는 개인도 게임 엔진을 무료로 사용할 수 있게 됐습니다.

 

언리얼 엔진보다 먼저 무료로 게임 엔진을 사용할 수 있도록 개방한 것은 유니티였습니다. 

유니티는 ‘게임 개발의 민주화’를 표방하며 무료로 게임 엔진을 개방했을 뿐 아니라 세미나 등의 활동도 적극적으로 진행했습니다. 

 

이러한 움직임 속에서 게임 엔진이 개인에게 보급됐으며 언리얼 엔진도 2015년 3월에 무료화됐습니다.

 

또 게임 엔진이 개인에게 보급되기 전에는 게임 엔진으로 개발하면서 문제가 발생할 경우 일반적으로 게임 엔진을 제공한 회사에서 엔지니어를 파견했습니다. 

더욱이 그 무렵에는 비밀유지 계약 때문에 인터넷에 정보를 올리는 것 자체가 엄격하게 제한됐습니다.

 

하지만 언리얼 엔진은 현재 ANSWERHUB라는 게시판을 통해 사용자 간 정보 공유를 지원합니다. 

또한 개인이 자신의 블로그에서 언리얼 엔진 정보를 공유하기도 합니다. 

그래서 개인이 직접 게임을 제작하다가 어려운 문제를 만나도 인터넷을 통해 원하는 정보를 쉽게 구할 수 있습니다.

 

이처럼 게임 회사에서 널리 이용되고 있는 언리얼 엔진과 유니티는 개인이 게임 엔진을 무료로 사용할 수 있도록 하겠다고 발표했습니다. 

이것으로 개인 개발자도 게임 엔진에 한층 가까워졌습니다.

개인과 기업이 똑같은 개발 환경을 이용할 수 있는 시대가 된 것입니다.

 

 

Unreal vs Unity 언리얼 엔진과 유니티 특징 비교

그러면 대표적인 게임 엔진인 유니티와 언리얼 엔진의 특징을 간단히 살펴봅시다. 

 

언리얼 엔진

언리얼 엔진은 게임 회사인 에픽게임즈(Epic Games)가 제작한 게임 엔진입니다.

다른 게임 엔진을 압도하는 그래픽 표현이 가능하고 대기업 회사의 대표 타이틀 제작에 많이 이용됩니다.

 

언리얼 엔진은 원래 에픽게임즈에서 자체 개발한 게임 엔진으로 태어났지만 그 후 다른 회사에도 공개됐고 언리얼 엔진 4까지 발전했습니다. 

지금은 개인에게도 무료로 개방됐습니다.

 

유니티 

유니티는 ‘게임 개발의 민주화’를 표방하는 게임 엔진입니다. 

언리얼 엔진이 무료화되기 이전부터 개인도 게임 엔진을 사용할 수 있도록 라이선스를 무료로 개방했습니다.

 

유니티는 여러 플랫폼을 지원하기 때문에 사용자가 많고 인터넷에 다량의 정보가 있는 것이 특징이며 이로 인해 정보 공유가 쉬운 것이 장점입니다.

 

유니티는 원래 다루기 쉬운 게임 엔진이어서 스마트폰용 게임 제작에 이용되는 경우가 많았습니다.

그리고 유니티 5부터는 그래픽이 대폭 강화되어 현실적인 PC용 게임도 제작할 수 있게 됐습니다.

 ​

왜 언리얼 엔진인가?

여러 게임 엔진 가운데 왜 언리얼 엔진을 선택해야 하는지 알아보기 위해 언리얼 엔진의 장점을 보겠습니다.

 

1. 높은 품질의 게임을 만들 수 있다

언리얼 엔진은 유니티 이상으로 고품질이며 현실적인 영상을 재현할 수 있다는 것이 큰 장점입니다. 그 결과 많은 상용 게임에 이용되며 요즘 유행하는V R 게임에도 사용됩니다.

 

2. 블루프린트로 간단하게 프로그래밍할 수 있다

블루프린트라고 하는 비주얼 스크립팅 시스템을 사용해 프로그래머가 아니라도 게임 로직을 구현할 수 있습니다. (블루프린트 외에 C++로도 개발 가능).

 

3. 무료화되어 이용자가 늘었다

언리얼 엔진이 무료화되면서 사용자가 증가해 인터넷에 정보가 많아짐에 따라 원하는 정보를 쉽게 찾을 수 있게 됐습니다.

 

4. 멀티 플랫폼을 지원한다

언리얼 엔진으로 게임을 만들면 다음과 같은 플랫폼을 지원할 수 있습니다(플랫폼에 따라 플랫폼의 개발 라이선스 필요).

  • PC(VR용 콘텐츠 제작 포함)
  • iOS
  • HTML 5
  • 안드로이드
  • 플레이스테이션 4
  • 리눅스
  • 닌텐도 스위치
  • Xbox One

 

시스템 권장 사양

개발용으로 추천되는 사양은 다음과 같습니다.

  • 윈도우 10 64bit 또는 맥OS 10.14 모하비 이상이 설치된 데스크톱 PC
  • 8GB 이상 RAM
  • 인텔 또는 AMD 프로세서(쿼드 코어 이상 추천)
  • DirectX 11 이상 지원(윈도우), Metal 1.2 지원(맥OS) 그래픽 카드

 

 

라이선스

언리얼 엔진을 사용해 게임, 데모, 시뮬레이션, 건축 쇼케이스 등을 배포할 수 있습니다. 

분기별로 프로젝트 하나당 3,000달러가 넘은 매출에는 로열티 5%가 과금됩니다. 

 

또한 언리얼 엔진4를 사용하여 무료 게임을 배포하는 것은 무료이며 에픽게임즈에 로열티를 지불할 필요가 없습니다. 

학교에서는 무료로 사용할 수 있습니다.

 

최신 라이선스 정보를 파악하는 것이 좋습니다. 자세한 내용은 다음을 참고하세요.

URL   https://www.unrealengine.com/ko/faq

 

언리얼 엔진으로 게임을 만드는 과정

언리얼 엔진으로 게임을 만들 때는 TV나 영화에 등장하는 배우를 무대나 스튜디오에 배치하는것처럼 게임 세계에 먼저 오브젝트object를 배치합니다. 

언리얼 엔진에서는 게임에 배치되는 오브젝트를 액터actor라고 합니다.

 

액터를 배치한 다음에는 카메라를 배치합니다. 

카메라를 통해 보이는 게임 세계가 실제 화면에 그려집니다. 따라서 카메라의 위치를 바꾸는 것만으로도 TPS(3인칭 시점 게임)와 FPS(1인칭 시점 게임)로 변경할 수 있습니다. 

 

카메라 위치나 설정을 변경할 때는 게임 세계가 잘 반영되도록 하는 것이 매우 중요합니다. 

언리얼 엔진으로 게임을 만드는 과정은 ‘게임 세계에 액터를 배치하고 각 액터의 특징과 게임 규칙을 부여하며 만들어가는 것’이라고 이해하면 됩니다.

 

01.jpg

게임 세계에는 플레이어와 상대 캐릭터, 동전 아이템, 배경이 되는 나무 등도 있습니다. 

언리얼엔진이나 유니티로 게임을 만들 때는 먼저 게임 위에 오브젝트를 배치하고 각 오브젝트에 특징을 부여하는 식으로 만듭니다.

 

원래는 오브젝트를 게임에 표시하는 것도 굉장히 손이 많이 가는 작업이지만 이것을 게임 엔진이 처리해주므로 개발자는 게임 개발 자체에 전념할 수 있습니다.

다음에는 프로젝트 계층 구조를 살펴보겠습니다.

 

게임 프로젝트 구성

언리얼 엔진으로 게임을 만들 때 생성되는 프로젝트 데이터의 구성에 대해 살펴보겠습니다.

‘리즈의 모험’이라는 게임을 만드는 과정을 예로 들겠습니다.

 

02.jpg

 

프로젝트

프로젝트란 게임과 관련된 데이터를 말합니다. 예로 든 리즈의 모험이라는 프로젝트 파일을 만든다고 가정하겠습니다. 

프로젝트 안에 레벨(나중에 설명)을 만들고 레벨 안에 액터(모델 데이터)를 배치한 후 각 액터에 컴포넌트를 붙여서 특징을 부여하여(경우에 따라 규칙 정의) 게임을 만듭니다.

 

레벨과 맵 

레벨은 프로젝트 데이터를 몇 개로 나눈 덩어리입니다. 

예를 들면 리즈의 모험은 타이틀, 지상스테이지, 지하 스테이지, 결과의 네 가지 화면으로 나뉘어 있습니다.

 

이러한 각 화면이 레벨입니다.

또한 각 레벨을 열기 위한 데이터를 이라고 합니다.

 

03.jpg

액터

리즈의 모험에는 플레이어와 상대 캐릭터, 아이템이 등장합니다. 그리고 배경에 나무도 여러개 배치합니다.

각 레벨은 이처럼 오브젝트를 배치하여 만듭니다. 

 

이러한 오브젝트를 액터라고 합니다. 

라이트처럼 형체가 없는 것도 액터입니다. 

 

컴포넌트

리즈의 모험에 등장하는 플레이어는 이동 속도, 공격력, 충돌 판정과 같은 요소를 가집니다. 또한 적도 같은 요소를 갖고 있습니다. 

이처럼 액터를 구성하는 요소를 언리얼 엔진에서는 컴포넌트component라고 합니다. 

액터에 특징을 부여할 때 컴포넌트를 추가하거나 값을 편집해서 게임을 만듭니다.

 

04.jpg

 

게임 엔진으로 레벨 디자인하기

 

게임 엔진으로 게임을 만들 때는 액터에 컴포넌트를 부여하거나 편집하기가 쉽다는 것이 장점입니다.

이를테면 액션 게임에서 상대 캐릭터의 움직임이 느리고 공격력이 약해 쉽게 쓰러뜨릴 수 있으면 깨기는 쉽겠

지만 전혀 재미가 없습니다. 하지만 반대로 상대가 너무 빠르고 공격력도 높으면 플레이어는 금방 포기해버릴

수 있습니다.

 

이처럼 게임을 플레이하면서 재미를 느낄 수 있도록 조정하는 작업을 레벨 디자인level design이라고 합니다.

실제 레벨 디자인에서는 상대 캐릭터가 움직이는 속도, 공격력 등의 값과 플레이어 값의 관계가 중요합니다. 그

뿐 아니라 게임에 따라서는 일시적으로 플레이어의 상태가 강화되는 아이템도 존재할 수 있습니다. 즉, 게임을

재미있게 만드는 요소는 다양합니다.

 

언리얼 엔진과 같은 게임 엔진을 사용하면 에디터에서 게임을 실행하며 실제 난이도를 확인할 수 있습니다. 심

지어 각 값을 실시간으로 조정할 수도 있어 매우 효율적입니다.

 

이처럼 그저 게임을 쉽게 제작하기 위해서 뿐만 아니라 재미있는 게임을 효율적으로 만들기 위해서도 게임 엔

진을 사용합니다.

 

 


 

 위 내용은 <초보자를 위한 언리얼 엔진 4 입문>을  재구성하여 작성 하였습니다. 

 

블루프린트를 활용해 풍부한 예제로 실습하며 익히는 게임 개발

초보자를 위한 언리얼 엔진 4 입문

 

 

B4792640793_l.jpg

 

 

댓글 입력
자료실