언리얼 유니티 | 언리얼 엔진과 유니티! 누가 황제일까? 55 개의 정답

당신은 주제를 찾고 있습니까 “언리얼 유니티 – 언리얼 엔진과 유니티! 누가 황제일까?“? 다음 카테고리의 웹사이트 ppa.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 이우 이(가) 작성한 기사에는 조회수 95,352회 및 좋아요 1,313개 개의 좋아요가 있습니다.

언리얼 유니티 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 언리얼 엔진과 유니티! 누가 황제일까? – 언리얼 유니티 주제에 대한 세부정보를 참조하세요

[Described]안녕하세요. 이우의 인포도어입니다.
게임 엔진의 개발 시작 시기별로 연도를 계산하여,
실제 이용자들의 체감과는 다소 상이한 부분이 있을 수 있습니다.
욕을 하셔도 너무 좋으나,
재미 없다고 하시면.. 슬퍼요…
────────────────────
[Contents]00:00 게임엔진 소개
00:45 언리얼 엔진(1)
02:11 언리얼 엔진(2)
02:42 유니티(1)
04:29 유니티(2)
05:48 언리얼 엔진(3)
06:25 언리얼 엔진 vs 유니티
────────────────────
[Contact][email protected]
────────────────────
[Music Source Support]Sunny – LiQWYD : https://www.youtube.com/watch?v=_2DHIB99cQc
────────────────────
[Video Source Support]Youtube channel \”freeticon\” : https://www.youtube.com/c/Freeticon

언리얼 유니티 주제에 대한 자세한 내용은 여기를 참조하세요.

언리얼 엔진 vs 유니티 엔진 – 나무위키:대문

이러한 차이 때문에, 양 엔진의 에셋 스토어에서 뭔가 고급 기능들을 보면 유니티의 경우 엔진에서 돌아가는 스크립트 코드 혹은 엔진과 함께 돌아가는 …

+ 여기를 클릭

Source: namu.wiki

Date Published: 11/14/2021

View: 5700

유니티 개발자를 위한 언리얼 엔진 4

유니티에서 게임오브젝트는 월드에 배치할 수 있는 “사물”을 말합니다. UE4 에서 이것은 Actor 액터입니다. 언리얼 에디터에서는 배치 패널에서 뷰포트로 Empty Actor 기본 …

+ 여기에 더 보기

Source: docs.unrealengine.com

Date Published: 4/30/2022

View: 76

언리얼 엔진과 유니티 엔진 차이점

구분, 언리얼 엔진, 유니티 엔진. 사용자풀 (때 마다 다름), 13%의 게임 개발자들이 선택 (10만이라고 나오는 곳도 있음), 47%의 게임 개발자들이 …

+ 자세한 내용은 여기를 클릭하십시오

Source: inspirer9.tistory.com

Date Published: 4/9/2022

View: 1109

메타버스 핵심축 ‘언리얼·유니티’ 차세대 전략으로 정면 승부

각종 산업군에서 사용하는 대표 엔진 개발사는 언리얼 엔진의 ‘에픽게임즈’와 유니티 엔진의 ‘유니티’가 있다. 최근 두 회사는 행사와 간담회를 …

+ 자세한 내용은 여기를 클릭하십시오

Source: it.chosun.com

Date Published: 5/5/2022

View: 2458

언리얼vs유니티, 두 엔진 모두 써 본 현업 개발자에게 직접 물었 …

이에 인벤은 유니티와 언리얼 엔진을 모두 써 본 개발자 2명에게 각 엔진 정책 중 어떤 것이 매력적이며 어떤 선택을 해야 하는지 질문해 보았습니다. 유우원 개발자 넥슨 …

+ 여기에 더 보기

Source: www.inven.co.kr

Date Published: 1/22/2022

View: 3713

혼자 취미로 게임 개발하기 (4) – 유니티와 언리얼 – 브런치

보통 유니티가 쉽고, 언리얼이 어렵다는 인식이 있습니다. 하지만 정말 그럴까요? 유니티는 스크립트 언어로 C#을 사용하는 반면, 언리얼은 Unrealscript …

+ 자세한 내용은 여기를 클릭하십시오

Source: brunch.co.kr

Date Published: 3/27/2022

View: 8559

스압) 언리얼 vs 유니티 진지빨고 비교분석해보는 글 – 인디 게임 …

일단 나는 언리얼 유니티 둘다 써보긴했지만, 지금은 유니티만 쓰는사람이다. (내가 하는 플젝이 유니티가 더 유리해서 그렇다)…

+ 여기에 더 보기

Source: m.dcinside.com

Date Published: 3/9/2022

View: 7517

[논문]유니티와 언리얼 엔진 4의 구조와 구현 방식 비교 연구

유니티(Unity)[4]는 3D 및 2D 비디오 게임의 개발 환경을 제공하는 게임엔진이면서 3D 애니메이션, 건축 시각화, 가상현실 등 반응형 콘텐츠 제작을 위한 통합 저작 도구 …

+ 여기를 클릭

Source: scienceon.kisti.re.kr

Date Published: 11/3/2021

View: 5670

Top 유니티 vs 언리얼 Update

유니티(Unity) VS 언리얼 엔진(Unreal Engine). 프로필. 감귤오렌지. 2019. 4. 30. 0:08. 이웃추가 … 유니티를 3년, 언리얼을 6개월 정도 써봤습니다.

+ 자세한 내용은 여기를 클릭하십시오

Source: ko.cityfordbinhtrieu.vn

Date Published: 6/27/2022

View: 766

주제와 관련된 이미지 언리얼 유니티

주제와 관련된 더 많은 사진을 참조하십시오 언리얼 엔진과 유니티! 누가 황제일까?. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

언리얼 엔진과 유니티! 누가 황제일까?
언리얼 엔진과 유니티! 누가 황제일까?

주제에 대한 기사 평가 언리얼 유니티

  • Author: 이우
  • Views: 조회수 95,352회
  • Likes: 좋아요 1,313개
  • Date Published: 2021. 7. 21.
  • Video Url link: https://www.youtube.com/watch?v=r22kvk8O8SA

유니티 개발자를 위한 언리얼 엔진 4

Choose your operating system: Windows macOS Linux

이 글은 유니티 사용자 관점에서 보는 UE4 에 대한 개요로, 기존 유니티 경험을 UE4 월드로 옮겨오는 데 도움이 되었으면 합니다.

에디터

아래 그림은 유니티 에디터와 언리얼 에디터를 나란히 놓은 것으로, 색을 통해 기능이 같은 부분을 확인할 수 있습니다. 각 블록에는 이름표를 붙여 그에 맞는 UE4 용어를 표시해 뒀습니다. 언리얼 에디터의 레이아웃은 드래그 앤 드롭을 통해 탭을 이리저리 끌어 붙여 입맛대로 조정하는 것이 가능합니다.

애셋 편집

유니티에서는 Inspector 탭을 사용하여 프로젝트에 선택된 애셋을 편집합니다. UE4 에서는 디테일 패널에 선택된 오브젝트의 프로퍼티가 노출되기는 하지만, 규모가 큰 편집 작업은 전용 창이나 탭 에서 이루어집니다. 웹 브라우저와 비슷하게 편집되는 애셋 각각에 대해 새로운 탭 창이 열립니다. 물론 각 탭은 자유롭게 끌어붙이거나 독립 창으로 띄울 수도 있습니다.

간략 용어집

아래 표의 왼쪽은 유니티에서 자주 쓰이는 용어와, 그 오른편은 상응하는 (또는 대략적으로 비슷한) UE4 용어입니다. UE4 키워드 링크를 통해 언리얼 엔진 온라인 문서의 상세 정보를 확인할 수 있습니다.

프로젝트와 파일

이 디렉터리와 파일들은 전부 뭐죠?

유니티 프로젝트와 마찬가지로 언리얼 프로젝트는 항상 별도의 디렉터리에 존재하며 자체적인 프로젝트 파일을 갖습니다. .uproject 파일에 더블클릭 하면 게임을 언리얼 에디터에 로드할 수 있으며, 우클릭 으로 추가 옵션을 확인할 수도 있습니다. 프로젝트 폴더에는 게임의 콘텐츠와 소스는 물론 다양한 환경설정 파일과 바이너리가 들어있는 서브폴더가 들어있습니다. 가장 중요한 서브폴더는 Content 와 Source 입니다.

애셋은 어디에 넣지요?

UE4 에는 각 프로젝트마다 Content 폴더가 있습니다. 유니티 프로젝트의 Assets 폴더와 비슷하게 이 폴더에 게임 애셋이 저장됩니다. 애셋을 게임에 임포트하려면, 단순히 파일을 프로젝트의 Content 디렉터리에 끌어놓기만 하면 자동으로 임포트되어 콘텐츠 브라우저 에 나타납니다. 애셋도 외부 프로그램으로 파일을 변경할 때마다 자동으로 에디터에 업데이트됩니다.

주로 지원되는 파일 포맷은?

유니티는 다양한 파일 포맷을 지원합니다. UE4 는 가장 자주 쓰이는 파일 유형을 지원합니다:

애셋 유형 지원되는 포맷 3D .fbx, .obj 텍스처 .png, .jpeg, .bmp ,.tga, .dds, .exr, .psd, .hdr 사운드 .wav 폰트 .ttf, .otf 비디오 .mov, .mp4, .wmv

씬은 어떻게 저장되나요?

유니티에서는 씬에 GameObject (게임오브젝트)를 배치하고 Scene (씬) 애셋 파일로 저장합니다. 언리얼에는 유니티의 Scene 과 비슷한 Map (맵) 파일이 있습니다. 맵 파일에는 레벨 과 그 안의 오브젝트에 대한 정보가 저장되며, 라이팅 데이터와 특정 레벨 전용 세팅도 포함됩니다.

프로젝트의 세팅은 어떻게 변경하나요?

모든 프로젝트 세팅은 메인 메뉴의 편집 / 프로젝트 세팅 아래에서 찾을 수 있습니다. 유니티의 프로젝트 세팅과 마찬가지로, 이를 통해 프로젝트 관련 (이름이나 아이콘 등의) 정보를 지정하고, 게임 입력 바인딩을 설정하고, 프로젝트 실행시의 엔진 작동 방식을 정의합니다. 각각의 프로젝트 세팅 관련 상세 정보는 여기서 확인하세요. 유니티에는 “플레이어 세팅” 이라는 것도 있습니다. 언리얼에서는 “플랫폼 세팅” 에 해당하는데, 프로젝트 세팅의 “플랫폼” 카테고리 아래에서 찾을 수 있습니다.

소스 파일은 어디로 가나요?

유니티에서는, 주로 C# 소스 파일을 애셋 폴더에 넣습니다.

UE4 는 다른 방식으로 작동합니다. C++ 코드가 있는 프로젝트의 경우, 프로젝트 디렉터리 아래 “Source” 서브폴더에는 C++ 소스 (.cpp), 헤더 (.h) 파일은 물론 빌드 (.Build.cs, .Target.cs) 파일 등 다양한 파일이 들어있습니다. 하지만 블루프린트 전용 프로젝트의 경우 Source 폴더가 없습니다.

UE4 에서 C++ 작업을 시작하는 가장 쉬운 방법은, 에디터의 (메인 파일 메뉴에 있는) 프로젝트에 코드 추가 를 사용하거나, 그냥 여러 템플릿 중 하나를 통해 처음부터 새로운 C++ 프로젝트를 만드는 것입니다. 콘텐츠 브라우저에서 바로 C++ 클래스를 찾아 그 아이콘을 더블클릭하면 Visual Studio 나 Xcode 에서 열 수 있습니다.

게임오브젝트에서 액터로

게임오브젝트는 어디있나요?

유니티에서 게임오브젝트는 월드에 배치할 수 있는 “사물”을 말합니다. UE4 에서 이것은 Actor 액터입니다. 언리얼 에디터에서는 배치 패널에서 뷰포트로 Empty Actor 기본 액터를 끌어놓으면 됩니다.

기본 액터만 가지고도 게임을 만들 수 있지만, UE4 에는 일정한 기능이 내장된 특수 액터 유형이 있습니다. 이를테면 (플레이어나 AI 오브젝트에 사용되는) Pawn 폰, (애니메이션 캐릭터에 사용되는) Character 캐릭터 등입니다. 기본 액터와 마찬가지로, 이러한 특수 액터 유형도 끌어놓은 다음 프로퍼티나 컴포넌트를 추가 또는 수정 가능합니다. 나중에 자세히 알아보겠지만, 지금은 UE4 에 이러한 특수 액터 작업을 위한 게임플레이 프레임워크 가 있다는 것만 기억해 두시면 됩니다.

UE4 의 액터는 유니티의 게임오브젝트와 약간 다릅니다. 유니티에서 GameObject 는 C# 클래스로 직접 확장할 수는 없습니다. UE4 에서 Actor 는 C++ 클래스로 상속을 통해 확장 및 수정 가능합니다. 이에 대해서는 나중에 자세히 알아보겠습니다!

컴포넌트는 어딨나요?

유니티에서는 게임오브젝트에 컴포넌트를 추가하여 함수성을 부여합니다.

UE4 에서는 액터에 컴포넌트를 추가합니다. 레벨에 기본 액터를 끌어놓은 이후에는, (디테일 패널의) 컴포넌트 추가 버튼을 클릭한 뒤 추가할 컴포넌트를 선택하면 됩니다. 여기서는 기본 액터를 끌어놓은 뒤, 베이스에 메시 컴포넌트를 추가하고, 라이트 소스에 이어 파티클 시스템을 붙여 화염을 만들어서 횃불을 만들고 있습니다.

유니티에서 게임오브젝트는 컴포넌트가 일반 목록으로 저장되지만, UE4 에서 액터에는 컴포넌트끼리 서로 붙는 계층구조 가 저장됩니다. 위 예제에서 확인할 수 있듯이, 라이트와 파티클이 메시에 붙어있습니다. 이는 중요한 내용을 암시하고 있는데, 나중에 복합 액터 및 게임오브젝트 에서 다루겠습니다.

유니티 프리팹에서 UE4 블루프린트 클래스로

유니티의 작업방식은 prefab 프리팹을 기반으로 합니다. 유니티에서는 컴포넌트로 게임오브젝트 세트를 만든 다음, 거기서 프리팹을 생성합니다. 그런 다음 프리팹 인스턴스를 월드에 배치하거나, 실행시간에 인스턴스를 생성합니다.

UE4 에서 그에 상응하는 작업방식은, Blueprint Class 블루프린트 클래스를 기반으로 합니다. UE4 에서는 컴포넌트로 액터를 만든 다음, 선택하고, (디테일 패널의) “블루프린트 / 스크립트 추가” 버튼을 클릭합니다. 그런 다음 블루프린트 클래스를 저장할 위치를 선택하고, “블루프린트 생성” 버튼을 눌러 새로운 블루프린트 클래스를 저장합니다!

새로운 블루프린트 클래스는 콘텐츠 브라우저 에서 찾을 수 있습니다. 더블클릭 해서 바로 편집할 수도 있고, 드래그 앤 드롭으로 레벨에 배치할 수도 있습니다.

스크립트 컴포넌트와 MonoBehaviour 는 어딨나요?

유니티에서는 게임오브젝트에 드롭하여 C# 스크립트를 추가하는 Script Component 스크립트 컴포넌트가 있습니다. MonoBehaviour 를 상속하는 클래스를 만들어서 컴포넌트가 하는 일을 정의하는 것이지요.

UE4 에도 비슷한 것이 있습니다. 완전히 새로운 Component 컴포넌트 클래스를 만든 다음 아무 액터에나 드롭할 수 있습니다. 블루프린트 스크립트 또는 C++ 어느 것을 사용해서든 컴포넌트 클래스를 만들 수 있습니다.

그러면 UE4 에서 컴포넌트 클래스는 어떻게 만들까요? 디테일 패널의 컴포넌트 추가 드롭다운에서, 새로운 컴포넌트를 생성하거나 기존의 것을 선택할 수 있습니다:

유니티에서 새로운 MonoBehaviour 를 만들 때, Start() 함수와 Update() 함수가 있는 스켈레톤 클래스 파일이 주어집니다.

UE4 에서도 위의 Start / Update 함수와 비슷한 역할을 하는 InitializeComponent() 함수와 TickComponent() 함수가 있는 스켈레톤 클래스가 주어집니다.

블루프린트 스크립트 컴포넌트를 생성하면, 비주얼 노드로 동일한 함수가 주어집니다:

스크립팅 가능 액터 블루프린트 클래스

UE4 의 멋진 기능이라면, 새로운 액터 블루프린트 클래스는 자체 블루프린트 비주얼 스크립트를 가질 수 있다는 점입니다! 이를 통해 개별 컴포넌트가 아닌 전체 오브젝트에 로직을 추가할 수 있습니다. (아래 설명하는) 상속 개념과 함께하면, 게임 디자인이 크게 유연해 집니다.

블루프린트 클래스가 비주얼 스크립트를 지원하는 것에 추가로, UE4 는 코드로 구현되는 C++ 클래스도 지원합니다. 양쪽에 놓고 보면 이렇습니다.

유니티 C# UE4 C++ UE4 블루프린트 using UnityEngine; using System.Collections; public class MyComponent : MonoBehaviour { int Count; // Use this for initialization. void Start () { Count = 0; } // Update is called once per frame. void Update () { Count = Count + 1; Debug.Log(Count); } } pragma once #include “GameFramework/Actor.h” #include “MyActor.generated.h” UCLASS() class AMyActor : public AActor { GENERATED_BODY() int Count; // Sets default values for this actor’s properties. AMyActor() { // Allows Tick() to be called PrimaryActorTick.bCanEverTick = true; } // Called when the game starts or when spawned. void BeginPlay() { Super::BeginPlay(); Count = 0; } // Called every frame. void Tick(float DeltaSeconds) { Super::Tick(DeltaSeconds); Count = Count + 1; GLog->Log(FString::FromInt(Count)); } };

UE4 블루프린트 클래스는 확장 가능

유니티 프리팹과 UE4 블루프린트 클래스는 게임에서 비슷하게 인스턴스 생성 가능합니다. 하지만 유니티는 한 프리팹을 다른 프리팹 안에 중첩시키는 경우 복잡해져서, 확장형 구성 요소로서의 역할이 제한됩니다.

UE4 에서는 블루프린트 클래스를 새로 만들고, 기존 블루프린트 클래스를 확장하여 새로운 프로퍼티, 컴포넌트, 비주얼 스크립트 함수성으로 살을 붙이는 것이 가능합니다.

예를 들어, UE4 에서 사람들을 쫓는다던가 하는 기본적인 괴물의 함수성을 구현하는 Monster 라는 이름의 블루프린트 클래스를 만듭니다. 그런 다음 이 블루프린트 클래스를 확장시킬 수 있는데, Dragon 으로 하여 불을 내뿜는 기능을 추가하고, Grue 라고 하여 밤이 되면 사람을 잡아먹는 기능을 추가하고, 이런 식으로 8 개 더 만들었다 칩시다. 이러한 Monster 의 서브클래스는 모두 Monster 의 기본적인 함수성을 상속하고, 그 위에 새로운 기능이 추가됩니다.

유니티에서는 이러한 구현을 하려면, Dragon 하나, Grue 하나 식으로 각기 다른 게임오브젝트 프리팹을 만들어야 할 것입니다. 여기서 모든 몬스터에 새로 만든 대화 컴포넌트를 사용하여 새로운 능력을 추가해야겠다 칩시다. 유니티에서는 새로운 함수성을 복사하여 10 개의 프리팹 모두 일일이 찾아 붙여넣어 줘야 합니다.

UE4 에서는 그냥 Monster 블루프린트 클래스를 편집하여 대화 능력을 추가해 주기만 하면 됩니다. 끝! Dragon, Grue, 나머지 8 종의 Monster 서브클래스 모두 자동으로 새로운 대화 함수성을 상속하므로, 일일이 건드릴 필요 없습니다.

하나 더! 지금까지 블루프린트 클래스에 대해 말씀드린 모든 것은 C++ 클래스에도 적용되며, 액터와 컴포넌트에도 마찬가지입니다. 이 시스템은 확장가능 함수성의 대규모 개발 지원을 위해 디자인된 것으로, 열 명의 개발자든 백 명의 개발자든 다양한 규모의 프로젝트를 모두 지원합니다.

블루프린트? C++? 아니면 둘 다?

블루프린트 비주얼 스크립트는 간단한 게임내 로직 흐름이나 액션 시퀀스에 이상적입니다. 디자이너, 아티스트, 비주얼 지향형 프로그래머에게 뛰어난 시스템인데, 게임내 오브젝트를 비주얼 방식으로 쉽게 접근하고 제어할 수 있기 때문입니다. 블루프린트만 가지고도 소규모 독립형 게임을 만들 수 있습니다. 태피 치킨만 봐도 확실히 알 수가 있습니다.

C++ 프로그래밍은 게임플레이 시스템, 복잡한 AI, 새로운 엔진 기능 제작같은 대규모 작업용입니다. C++ 경험이 이미 있으신 분이라면, 언리얼 엔진 프로그래밍 기본 문서를 참고하세요.

대부분의 프로젝트는 블루프린트와 C++ 를 혼합해 사용합니다. 여러 개발자들은 블루프린트를 사용하여 게임 함수성 프로토타입을 제작합니다. 쉽고 재밌기까지 하니까요. 그러다가 나중에 퍼포먼스와 엔지니어링 상의 이유로 그 일부 또는 전부를 C++ 로 옮기기도 합니다.

블루프린트 클래스는 C++ 클래스 확장가능

UE4 게임 개발의 마법같은 부분은 대부분 프로그래머가 C++ 로 신기능을 구현하고, 디자이너와 아티스트는 블루프린트로 그 덕을 보면서 추가적인 요구를 하는 협업을 통해 이루어집니다! UE4 기반 슈팅 게임에서 픽업을 구현할 때, 시스템 프로그래밍에는 C++ 클래스를 사용하고 작동방식과 외형에는 블루프린트 클래스를 혼합해서 사용하는 팀 구성 예제입니다:

트랜스폼 컴포넌트

유니티에는 각 게임오브젝트마다 Transform 트랜스폼 컴포넌트가 있어, 게임오브젝트의 월드 내 위치, 회전, 스케일을 정해줍니다.

UE4 에도 비슷하게 액터에 Root 루트 컴포넌트가 있으며, Scene 씬 컴포넌트의 서브클래스가 될 수 있습니다. 씬 컴포넌트는 액터의 월드 내 위치, 회전, 스케일을 정해주며, 그 아래 모든 컴포넌트에 계층구조식으로 적용됩니다. 사용하게될 컴포넌트 다수는 씬 컴포넌트의 서브클래스로, 위치가 있으면 정말 편하기 때문입니다!

기본 액터를 배치했다 하더라도 UE4 는 그 액터에 대해 “디폴트 씬 루트”를 생성하는데, 이는 평이한 씬 컴포넌트입니다. 직접 새로운 씬 컴포넌트를 드롭하면, 디폴트 씬 루트가 대체됩니다.

복합 오브젝트

유니티에서는 게임오브젝트의 계층구조를 생성한 다음 그 트랜스폼을 같이 부모로 만들어 복합 오브젝트를 만듭니다:

UE4 에서는 컴포넌트를 계층구조식으로 중첩시켜 복합 오브젝트를 만듭니다:

도표에서 볼 수 있듯이, 중첩된 계층구조는 씬 컴포넌트끼리 붙여 만들 수 있는데, 트랜스폼이 있기 때문입니다. 유니티에서 트랜스폼 부모설정과 비슷한 개념이지요. 액터 컴포넌트(모든 컴포넌트의 베이스 클래스)는 액터 자신에게만 붙일 수 있습니다.

모든 것을 컴포넌트로 만드나요?

여러분 선택에 달린 일이지만, 대부분은 커스텀 컴포넌트 유형과 아울러 그 컴포넌트를 사용하는 액터 클래스를 조합해서 사용하게 될 것입니다. 앞서 말씀드린 바 있지만, UE4 에는 일정 수준의 능력을 보장하며 항상 특정 컴포넌트를 포함하는 특수 유형 액터가 여럿 있습니다. 예를 들어 Character 캐릭터에는 항상 Character Movement Component 캐릭터 무브먼트 컴포넌트가 포함됩니다.

엔진에서 종종 접할 수 있는 액터 서브클래스 유형은 여러가지 있으며, 거의 모든 유형의 게임에 유용하게 쓰입니다. 가장 흔히 쓰이는 내장 액터 목록은 이렇습니다:

Pawn 폰 – 제어가능한 게임 오브젝트, 전형적으로 플레이어의 아바타를 나타내는 액터 유형입니다. 폰은 Controller 컨트롤러 소유를 통해 플레이어나 AI 등에 의해 움직입니다.

Character 캐릭터 – 이족보행 아바타용으로 디자인된 보다 전문화된 버전의 폰으로, 그러한 게임 오브젝트 유형의 복잡도를 다수 처리합니다.

Controller 컨트롤러 – 폰을 Possess 빙의하여 제어합니다. 폰과 컨트롤러를 분리함으로써, 플레이어를 가정하고 그와 똑같은 인터페이스를 사용하여 폰을 임의로 조작하는 AI 컨트롤러 작성이 가능합니다.

Player Controller 플레이어 컨트롤러 – 플레이어의 게임패드, 터치, 마우스/키보드에서 입력을 받고, 그 입력을 사용하여 빙의중인 폰 또는 캐릭터를 구동시키기 위한 좀 더 전문화된 컨트롤러입니다.

즉 모든 것은 액터인가요?

모든 것이 그렇지는 않습니다. UE4 의 게임플레이에 가장 흔히 쓰이는 것이 액터 이고, World 월드에 Spawn 스폰 가능한 유일한 유형입니다. 즉 레벨에 배치하는 모든 것은 액터가 맞습니다.

또 한가지 알아둬야 할 중요한 유형은 Object 오브젝트입니다. 오브젝트는 사실 액터 외 다수를 포함해서 모든 언리얼 클래스의 기본 클래스입니다. 액터보다 훨씬 낮은 레벨에서의 구성이지만, reflection 리플렉션이나 serialization 시리얼라이제이션처럼 언리얼 클래스에서 기대하는 기능을 여전히 갖고 있습니다. 오브젝트는 액터 를 어찌해서는 맞지 않는 새로운 유형을 정의할 필요가 있을 때 사용하는 매우 기본적인 클래스입니다. 예를 들어 액터 컴포넌트 는 모든 컴포넌트의 베이스 클래스이며, 액터 가 아닌 오브젝트 에서 파생됩니다.

UE4 의 게임플레이 프레임워크 라는 것은 뭔가요?

자, 이제 약간 (많이 좋다는 의미의) 미쳐가기 시작하는 부분입니다. 게임 디자인을 시작할 수 있는 깔끔한 판을 제공한다는 점에서는 유니티나 언리얼이나 같습니다. 유니티에서는 기본적인 게임오브젝트와 컴포넌트로 모든 것을 만들 수 있고, 언리얼에서는 액터와 컴포넌트로 모든 것을 만들 수 있습니다.

하지만 언리얼쪽에는 게임플레이 프레임워크 라는 레이어가 한 층 더 있습니다. 유니티에는 전혀 없는 부분이지요. 언리얼에서도 반드시 사용할 필요는 없지만, 실제적으로 엄청 멋진 기능입니다! 사실, 엄청 기본적인 클래스 몇 개만 활용하면서 이미 확립된 규칙 몇 가지만 따르면 게임에 자동으로 (멀티플레이어 기능 완벽 지원 같은) 엄청난 기능이 추가되는데, 직접 구현이라도 할라치면 엄청나게 힘든 일이 될 것입니다.

이미 셀 수 없이 많은 뛰어난 게임이 언리얼의 게임플레이 프레임워크 기반으로 디자인되었기에, 작동 원리를 이해해 둘 가치는 충분합니다. 네, 이를 토대로 자신만의 버전을 운용할 수 있고, 원한다면 얼마든지 그렇게도 가능하니까요! 현재도 수백명의 뛰어난 언리얼 개발자들이 UE4 에서 이 프레임워크를 적극 활용하고 있으므로, 시간을 들여 배울 가치가 있습니다.

게임플레이 프레임워크를 사용하려면, 반드시 언리얼에 포함된 특수 내장 액터, 즉 폰, 캐릭터, 플레이어 컨트롤러 에 대해 배울 필요가 있으며, 궁극적으로 언리얼의 리플리케이션 및 네트워킹 기능의 작동 방식을 알아둬야 합니다. 지금은 일단 기본으로 돌아가 봅시다.

UE4 에서 코드 작성 방법

MonoDevelop 프로그래밍에 익숙한 분들

블루프린트 스크립트의 경우, 언리얼 에디터만 사용하면 됩니다. 모든것이 내장되어 있으니까요! C++ 코드를 작성하려면, Windows에서는 Visual Studio 무료 버전 또는 Mac에서는 Xcode 를 설치하면 됩니다. 새 프로젝트를 처음 생성( 또는 기존 프로젝트에 코드를 추가)할 때, UE4 가 자동으로 Visual Studio 프로젝트 파일을 생성 해 줍니다. 콘텐츠 브라우저 에서 C++ 클래스에 더블클릭 하거나, 메인 파일 메뉴의 “Visual Studio 열기”를 클릭하면 Visual Studio 가 열립니다.

UE4 의 한 가지 중요한 차이점이라면, 가끔은 Visual Studio 프로젝트 파일 을 수동으로 새로고침 해줘야 한다는 것입니다 (예를 들면 UE4 새 버전을 다운로드한 후, 또는 디스크의 소스 파일을 수동으로 변경한 후). 메인 메뉴의 “Refresh Visual Studio Project” 또는 프로젝트 디렉터리에 있는 .uproject 파일에 우클릭 한 다음 “Generate Visual Studio project files” 를 선택하면 됩니다.

MonoBehaviours 작업에 익숙하신 경우, Start, Update, OnDestroy 와 같은 메서드가 익숙하실 것입니다. 유니티 비헤이비어와 UE4 액터 및 컴포넌트 대응부분에 대한 비교는 이렇습니다.

유니티에서는, 이와 같은 단순한 컴포넌트가 있을 수 있습니다:

public class MyComponent : MonoBehaviour { void Start() {} void OnDestroy() {} void Update() {} }

하지만 기억할 것은, UE4 에서는 새로운 컴포넌트 유형에 대한 코딩만이 아닌 액터 자체에 바로 코드를 작성할 수 있습니다. 사실 매우 자주 쓰이는 유용한 기능입니다.

유니티의 Start, OnDestroy, Update 함수와 비슷하게, UE4 의 액터에도 비슷한 메서드 세트가 있습니다:

C++ :

UCLASS() class AMyActor : public AActor { GENERATED_BODY() // 게임 시작시 호출됩니다. void BeginPlay(); // 소멸시 호출됩니다. void EndPlay(const EEndPlayReason::Type EndPlayReason); // 매 프레임 이 액터 업데이트를 위해 호출됩니다. void Tick(float DeltaSeconds); };

블루프린트 :

UE4 의 컴포넌트에는 다양한 함수가 들어있습니다. 간단한 예제입니다:

C++ :

UCLASS() class UMyComponent : public UActorComponent { GENERATED_BODY() // 소유중인 액터 생성 이후 호출됩니다 void InitializeComponent(); // 컴포넌트 또는 소유중인 액터가 소멸중일 때 호출됩니다. void UninitializeComponent(); // 틱의 컴포넌트 버전입니다 void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction); };

블루프린트 :

기억하실 것은, UE4 에서는 부모 클래스 버전 메서드 호출이 중요합니다.

예를 들어 유니티 C# 에서는 base.Update() 가 되지만, UE4 C++ 에서는 Super::TickComponent() 를 사용합니다:

void UMyComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) { // 여기에 커스텀 틱 관련 Super::TickComponent(DeltaTime, TickType, ThisTickFunction); }

C++ 에서 어떤 것은 “A” 로, 어떤 것은 “U” 로 시작하는 것을 눈치채셨을 것입니다. 접두사 “A” 는 Actor 의 서브클래스임을 나타내는 반면, 접두사 “U” 는 Object 의 서브클래스임을 나타냅니다. 다른 접두사도 있습니다. 예를 들어 “F” 는 대부분의 일반 데이터 구조체 또는 UObject 이외의 클래스에 사용됩니다.

UE4 에서 게임플레이 코드 작성

자, 이제부터 약간 깊이 들어가기 시작합니다. 게임 제작에 있어 매우 중요한 프로그래밍 주제에 대해 이야기해 보겠습니다. 유니티 C# 사용자가 언리얼 C++ 를 학습한다는 전제하에 설명을 하고 있지만, 사실 블루프린트 스크립트로도 원하는 거의 모든 것을 할 수 있기 때문입니다. 가급적이면 C++ 와 블루프린트 양쪽의 예제를 추가해 뒀습니다.

가장 흔한 게임플레이 프로그래밍 패턴과 언리얼에서 어떻게 접근할 것인지에 대해 조금 이야기해 봅시다. 유니티의 함수 중 다수는 언리얼에도 비슷해 보이는 비교가능 함수가 있습니다. 가장 자주 쓰이는 함수부터 하나씩 살펴보도록 하겠습니다.

게임오브젝트 인스턴스 생성 (Instantiate) / 액터 스폰

유니티에서는 Instantiate 함수를 사용하여 오브젝트의 인스턴스를 새로 만듭니다.

이 함수는 UnityEngine.Object 유형 (GameObject, MonoBehaviour, 등)을 받아 사본을 만듭니다.

public GameObject EnemyPrefab; public Vector3 SpawnPosition; public Quaternion SpawnRotation; void Start() { GameObject NewGO = (GameObject)Instantiate(EnemyPrefab, SpawnPosition, SpawnRotation); NewGO.name = “MyNewGameObject”; }

UE4 에서는 오브젝트의 인스턴스를 만드는 함수가 둘 정도 있는데, 필요에 따라 다릅니다. NewObject 는 새로운 UObject 유형을 만들 때, SpawnActor 는 AActor 유형을 스폰시킬 때 입니다.

먼저 UObject 와 NewObject 에 대해 간단히 얘기해 보겠습니다. 언리얼에서 UObject 의 서브클래스를 만드는 것은 유니티에서 ScriptableObject 의 서브클래스를 만드는 것과 매우 비슷합니다. 월드에 스폰시킬 필요가 없거나 액터처럼 컴포넌트를 붙일 필요가 없는 게임플레이 클래스에 좋습니다.

유니티에서, ScriptableObject 의 자체 서브클래스를 생성한다면, 이런 식으로 인스턴스를 만들 것입니다:

MyScriptableObject NewSO = ScriptableObject.CreateInstance();

그리고 언리얼에서, UObject 파생 유형을 만든다면, 이런 식으로 인스턴스를 만들 것입니다:

UMyObject* NewObj = NewObject();

액터는 어떨까요? 액터는 SpawnActor 메서드를 사용해서 월드(C++ 의 UWorld) 오브젝트에 스폰됩니다. 월드 오브젝트는 어떻게 구할까요? 일부 UObject 에서는 GetWorld 오브젝트 메서드를 제공해 줍니다. 예를 들어 모든 액터가 그렇지요.

다른 액터를 전달하는 대신, 스폰하고자 하는 액터의 “클래스” 를 전달하는 것이 보일 것입니다. 우리 예제에서 클래스는 AMyEnemy 의 서브클래스가 될 수 있습니다.

하지만 다른 오브젝트의 “사본” 을 만들고자 한다면? Instantiate 로 가능한 것처럼 말이지요?

NewObject 와 SpawnActor 함수에도 작업할 “템플릿” 오브젝트를 줄 수 있습니다. 그러면 언리얼은 “처음서부터” 오브젝트를 새로 만드는 것이 아니라, 그 오브젝트의 사본을 만듭니다. 그 UPROPERTY 와 컴포넌트를 모두 복사해 옵니다.

AMyActor* CreateCloneOfMyActor(AMyActor* ExistingActor, FVector SpawnLocation, FRotator SpawnRotation) { UWorld* World = ExistingActor->GetWorld(); FActorSpawnParameters SpawnParams; SpawnParams.Template = ExistingActor; World->SpawnActor(ExistingActor->GetClass(), SpawnLocation, SpawnRotation, SpawnParams); }

위의 “처음서부터” 라는 것이 무슨 뜻인지 의아해 할 수가 있습니다. 생성하는 각 오브젝트 클래스마다 그 프로퍼티와 컴포넌트의 기본값이 들어있는 기본 템플릿이 있습니다. 이 프로퍼티를 덮어쓰지 않고 별도의 템플릿을 제공해주지 않는다면, 언리얼은 이러한 기본값을 사용하여 오브젝트를 생성합니다. 이에 대한 이해를 돕기 위해, 먼저 MonoBehaviour 를 예로 살펴봅시다:

public class MyComponent : MonoBehaviour { public int MyIntProp = 42; public SphereCollider MyCollisionComp = null; void Start() { // 콜리전 컴포넌트가 없는 경우 생성합니다 if (MyCollisionComp == null) { MyCollisionComp = gameObject.AddComponent(); MyCollisionComp.center = Vector3.zero; MyCollisionComp.radius = 20.0f; } } }

위 예제에서, 기본값이 42 인 int 프로퍼티가 있으며, 기본 반경이 20 인 SphereCollider 컴포넌트가 있습니다.

오브젝트의 생성자를 사용하여 언리얼에서도 똑같은 작업이 가능합니다.

UCLASS() class AMyActor : public AActor { GENERATED_BODY() UPROPERTY() int32 MyIntProp; UPROPERTY() USphereComponent* MyCollisionComp; AMyActor() { MyIntProp = 42; MyCollisionComp = CreateDefaultSubobject(FName(TEXT(“CollisionComponent”)); MyCollisionComp->RelativeLocation = FVector::ZeroVector; MyCollisionComp->SphereRadius = 20.0f; } };

AMyActor 생성자에서 클래스의 기본 프로퍼티 값을 설정해 줬습니다. CreateDefaultSubobject 함수가 사용된 부분을 보세요. 이를 통해 컴포넌트를 생성한 뒤 기본 프로퍼티를 할당할 수 있습니다. 이 함수를 사용하여 만드는 서브오브젝트는 전부 기본 템플릿처럼 작동하므로, 서브클래스나 블루프린트에서 변경할 수 있습니다.

한 유형에서 다른 유형으로 형변환(Cast)

여기서는 이미 있는 것으로 알고있는 컴포넌트를 구한 다음 특정 유형으로 형변환(cast)한 뒤 조건에 따라 어떤 작업을 하겠습니다.

유니티 C#:

Collider collider = gameObject.GetComponent; SphereCollider sphereCollider = collider as SphereCollider; if (sphereCollider != null) { // … }

UE4 C++:

UPrimitiveComponent* Primitive = MyActor->GetComponentByClass(UPrimitiveComponent::StaticClass()); USphereComponent* SphereCollider = Cast(Primitive); if (SphereCollider != nullptr) { // … }

게임오브젝트 / 액터 소멸(Destroy)

유니티 C++ 블루프린트 Destroy(MyGameObject); MyActor->Destroy();

게임오브젝트 / 액터 소멸 (1초 딜레이)

유니티 C++ 블루프린트 Destroy(MyGameObject, 1); MyActor->SetLifeSpan(1); 클릭하면 원래 크기로 봅니다.

게임오브젝트 / 액터 비활성화

유니티 C++ 블루프린트 MyGameObject.SetActive(false); // Hides visible components MyActor->SetActorHiddenInGame(true); // Disables collision components MyActor->SetActorEnableCollision(false); // Stops the Actor from ticking MyActor->SetActorTickEnabled(false); 클릭하면 원래 크기로 봅니다.

컴포넌트에서 게임오브젝트 / 액터 접근

유니티 C++ 블루프린트 GameObject ParentGO = MyComponent.gameObject; AActor* ParentActor = MyComponent->GetOwner(); 클릭하면 원래 크기로 봅니다.

게임오브젝트 / 액터에서 컴포넌트 접근

유니티

MyComponent MyComp = gameObject.GetComponent();

C++

UMyComponent* MyComp = MyActor->FindComponentByClass();

블루프린트

게임오브젝트 / 액터 찾기

// 이름으로 게임오브젝트 찾기 GameObject MyGO = GameObject.Find(“MyNamedGameObject”); // 유형으로 오브젝트 찾기 MyComponent[] Components = Object.FindObjectsOfType(typeof(MyComponent)) as MyComponent[]; foreach (MyComponent Component in Components) { // … } // 태그로 게임오브젝트 찾기 GameObject[] GameObjects = GameObject.FindGameObjectsWithTag(“MyTag”); foreach (GameObject GO in GameObjects) { // … } // 이름으로 액터 찾기 (UObject 에도 작동) AActor* MyActor = FindObject(nullptr, TEXT(“MyNamedActor”)); // 유형으로 액터 찾기 (UWorld 오브젝트 필요) for (TActorIterator It(GetWorld()); It; ++It) { AMyActor* MyActor = *It; // … }

// 유형으로 UObject 찾기 for (TObjectIterator It; It; ++it) { UMyObject* MyObject = *It; // … } // 태그로 액터 찾기 (ActorComponent 에도 작동, 대신 TObjectIterator 사용) for (TActorIterator It(GetWorld()); It; ++It) { AActor* Actor = *It; if (Actor->ActorHasTag(FName(TEXT(“Mytag”)))) { // … } }

게임오브젝트 / 액터에 태그 추가

MyGameObject.tag = “MyTag”; // 액터는 태그를 여럿 가질 수 있습니다 MyActor.Tags.AddUnique(TEXT(“MyTag”));

모노비헤이비어 / 액터컴포넌트 에 태그 추가

// 붙어있는 게임오브젝트의 태그를 변경합니다 MyComponent.tag = “MyTag”; // 컴포넌트에는 자체 태그 배열이 있습니다 MyComponent.ComponentTags.AddUnique(TEXT(“MyTag”));

게임오브젝트 / 액터 및 모노비헤이비어 / 액터컴포넌트의 태그 비교

if (MyGameObject.CompareTag(“MyTag”)) { // … } // 붙어있는 게임오브젝트의 태그 검사 if (MyComponent.CompareTag(“MyTag”)) { // … } // 액터에 이 태그가 있는지 검사 if (MyActor->ActorHasTag(FName(TEXT(“MyTag”)))) { // … }

// 액터 컴포넌트에 이 태그가 있는지 검사 if (MyComponent->ComponentHasTag(FName(TEXT(“MyTag”)))) { // … }

피직스: 리짓바디 대 프리미티브 컴포넌트

유니티에서는 게임오브젝트에 물리 특성을 부여하기 위해 먼저 RigidBody 리짓바디 컴포넌트를 줍니다. 언리얼에서는 어떤 프리미티브 컴포넌트(C++ 의 UPrimitiveComponent)도 물리 오브젝트가 될 수 있습니다. 자주 쓰이는 프리미티브 컴포넌트라면 (캡슐, 구체, 박스 등의) ShapeComponent 셰이프 컴포넌트, StaticMeshComponent 스태틱 메시 컴포넌트, SkeletalMeshComponent 스켈레탈 메시 컴포넌트가 있습니다.

콜리전(충돌)과 시각적인 부분을 담당하는 것을 별도의 컴포넌트로 나눈 유니티와 달리, 언리얼은 물리적 가능성과 시각적인 가능성 개념이 프리미티브 컴포넌트에 결합되어 있습니다. 월드에 지오메트리를 가질 수 있는 컴포넌트라면, 프리미티브 컴포넌트의 물리적인 서브클래싱을 통해 상호작용 또는 렌더링 가능한 것입니다.

레이어 대 채널

유니티에서는 “Layer” 레이어라 불립니다. UE4 에서는 Collision Channel 콜리전 채널을 사용하며, 비슷한 방식으로 작동합니다. 자세한 내용은 여기서 참고하세요.

레이캐스트 대 레이트레이스

유니티 C#:

GameObject FindGOCameraIsLookingAt() { Vector3 Start = Camera.main.transform.position; Vector3 Direction = Camera.main.transform.forward; float Distance = 100.0f; int LayerBitMask = 1 << LayerMask.NameToLayer("Pawn"); RaycastHit Hit; bool bHit = Physics.Raycast(Start, Direction, out Hit, Distance, LayerBitMask); if (bHit) { return Hit.collider.gameObject; } return null; } UE4 C++: APawn* AMyPlayerController::FindPawnCameraIsLookingAt() { // 이것으로 트레이스 관련 다양한 프로퍼티 수정이 가능합니다 FCollisionQueryParams Params; // 플레이어의 폰을 무시합니다 Params.AddIgnoredActor(GetPawn()); // 히트 결과가 라인 트레이스로 채워집니다 FHitResult Hit; // 카메라에서 레이캐스트를 하며, 폰하고만 충돌합니다 (ECC_Pawn 콜리전 채널에 있습니다) FVector Start = PlayerCameraManager->GetCameraLocation(); FVector End = Start + (PlayerCameraManager->GetCameraRotation().Vector() * 1000.0f); bool bHit = GetWorld()->LineTraceSingle(Hit, Start, End, ECC_Pawn, Params); if (bHit) { // Hit.Actor 에는 트레이스에 걸린 액터로의 약 포인터가 저장됩니다 return Cast(Hit.Actor.Get()); } return nullptr; }

UE4 Blueprint:

클릭하면 원래 크기로 봅니다.

트리거

유니티 C#:

public class MyComponent : MonoBehaviour { void Start() { collider.isTrigger = true; } void OnTriggerEnter(Collider Other) { // … } void OnTriggerExit(Collider Other) { // … } }

UE4 C++:

UCLASS() class AMyActor : public AActor { GENERATED_BODY() // 내 트리거 컴포넌트 UPROPERTY() UPrimitiveComponent* Trigger; AMyActor() { Trigger = CreateDefaultSubobject(TEXT(“TriggerCollider”)); // 두 콜라이더 모두 이 옵션이 true 여야 이벤트가 발동됩니다 Trigger.bGenerateOverlapEvents = true; // 콜라이더에 대한 콜리전 모드를 설정합니다 // 이 모드는 레이캐스트, 스윕, 오버랩에 대한 콜라이더만 활성화시킵니다 Trigger.SetCollisionEnabled(ECollisionEnabled::QueryOnly); } virtual void NotifyActorBeginOverlap(AActor* Other) override; virtual void NotifyActorEndOverlap(AActor* Other) override; };

UE4 블루프린트:

콜리전 반응 구성 관련 상세 정보는 여기서 참고하세요.

키니마틱 리짓바디

유니티 C#:

public class MyComponent : MonoBehaviour { void Start() { rigidbody.isKinimatic = true; rigidbody.velocity = transform.forward * 10.0f; } }

UE4 에서 콜리전 컴포넌트와 리짓바디 컴포넌트는 하나입니다. 그 베이스 클래스는 UPrimitiveComponent 로, 필요에 따라 여러가지 서브클래스가 있습니다 (USphereComponent, UCapsuleComponent, 등).

UE4 C++:

UCLASS() class AMyActor : public AActor { GENERATED_BODY() UPROPERTY() UPrimitiveComponent* PhysicalComp; AMyActor() { PhysicalComp = CreateDefaultSubobject(TEXT(“CollisionAndPhysics”)); PhysicalComp->SetSimulatePhysics(false); PhysicalComp->SetPhysicsLinearVelocity(GetActorRotation().Vector() * 100.0f); } };

입력 이벤트

유니티 C#:

public class MyPlayerController : MonoBehaviour { void Update() { if (Input.GetButtonDown(“Fire”)) { // … } float Horiz = Input.GetAxis(“Horizontal”); float Vert = Input.GetAxis(“Vertical”); // … } }

UE4 C++:

UCLASS() class AMyPlayerController : public APlayerController { GENERATED_BODY() void SetupInputComponent() { Super::SetupInputComponent(); InputComponent->BindAction(“Fire”, IE_Pressed, this, &AMyPlayerController::HandleFireInputEvent); InputComponent->BindAxis(“Horizontal”, this, &AMyPlayerController::HandleHorizontalAxisInputEvent); InputComponent->BindAxis(“Vertical”, this, &AMyPlayerController::HandleVerticalAxisInputEvent); } void HandleFireInputEvent(); void HandleHorizontalAxisInputEvent(float Value); void HandleVerticalAxisInputEvent(float Value); };

UE4 블루프린트:

프로젝트 세팅에서 입력 프로퍼티는 이런 모습입니다:

입력 구성 관련 상세 정보는 여기서 확인할 수 있습니다.

잦은 질문

전 프로젝트를 자동으로 로드하는 방법은?

유니티의 지난 번 작업하던 프로젝트가 자동 로드되는 기능은, UE4 에서도 가능합니다. 프로젝트를 열 때 “Always load last project on Startup” (시작시 항상 지난 프로젝트를 로드합니다.) 옵션을 체크하면 됩니다. 언제든지 메인 메뉴의 Edit/Editor Preferences/Loading and Saving/Startup (편집/에디터 개인설정/로드 & 저장/Startup) 에서 설정을 바꿀 수 있습니다.

게임의 입력 바인딩 설정은 어디서 하나요?

유니티에서 프로젝트에 대한 인풋 매니저 세팅을 사용하여 기본 바인딩 구성을 했습니다. UE4 에서도 비슷합니다. 프로젝트 세팅을 연 다음 입력 카테고리를 설정합니다. 거기서 다양한 버튼 (액션) 및 아날로그 컨트롤 (축) 추가가 가능합니다. 각 컨트롤에 이름과 기본 바인딩을 설정합니다. 그런 다음 그 입력 이벤트가 트리거되면 게임의 폰에 대한 콜백을 구할 수 있습니다. 자세한 내용은 입력 문서 를 참고하세요.

프로젝트의 시작 씬은 어떻게 바꾸나요?

프로젝트의 스타트업 맵은 프로젝트 세팅 탭에서 바꿀 수 있습니다. 메인 메뉴에서 Edit/Project Settings->Maps & Modes (편집/프로젝트 세팅/맵 & 모드) 에서 스타트업 맵을 바꿀 수 있습니다.

게임 실행은 어떻게 하나요?

게임을 실행하는 가장 쉬운 방법은 메인 에디터 툴바의 “플레이” 버튼을 클릭하면 에디터 프로세스 안에서 게임이 바로 실행됩니다. 독립형 어플리케이션으로 실행하고자 하는 경우, “플레이” 옆의 드롭다운 화살표를 클릭한 다음 “독립형 게임”을 선택하면 됩니다. 마지막으로 모바일 디바이스나 웹 브라우저에서 실행시키고자 하는 경우, (해당 플랫폼에 미리 필요한 것을 설치한 이후) 툴바의 “실행” 버튼을 사용하면 됩니다.

유닛의 단위는 어떻게 되나요?

유니티에서 주로 1 유닛은 1 미터입니다. UE4 에서 주로 1 유닛은 1 센티미터 입니다.

즉 유니티에서 1 유닛(미터) 옮기면, UE4 에서 100 유닛(센티미터) 옮기는 것입니다.

유니티에서 2 피트를 옮기는 경우 0.61 유닛(미터)이며, UE4 에서는 61 유닛(센티미터) 입니다.

좌표계는 어떻게 되나요? 어디가 위쪽이죠?

유니티와 UE4 둘 다 왼손 좌표계를 사용합니다만, 축은 뒤집어져 있습니다. UE4 에서는 양수 X 가 “앞쪽”, 양수 Y 가 “오른쪽”, 양수 Z 가 “윗쪽”입니다. 이 부분은 바꿀 수 없으므로, 익숙해 져야 합니다.

게임에서 로그 출력을 어떻게 확인하나요?

UE4 에디터에서 “Output Log” 출력 로그창은 “Window -> Developer Tools” 창 -> 개발자 툴 메뉴에서 열 수 있습니다. 게임에 “-log” 명령줄 파라미터를 붙여 실행하면 게임 옆에 전용 로그 창이 뜨는데, 정말 유용합니다!

로그 출력 말인데, Debug.Log 는 어디있나요?

UE4 의 로그는 입맛대로 바꿀 수 있는 부분이 많습니다. 메시지 로깅 관련 상세 내용은 여기서(영문) 확인 가능합니다.

예외 처리는 어떻게 하나요?

유니티에서는 무언가 잘못되었을 때의 예외 처리(throwing exception)에 익숙할 것입니다. UE4 에서는 예외 처리를 사용하지 않습니다. 대신 ‘check()’ 함수를 사용하여 치명적인 어서트 오류를 발동시킵니다. 오류 메시지를 전달할 수 있습니다. 오류 보고는 하지만 프로그램을 멈추고 싶지는 않은 경우, ‘ensure()’ 를 대신 사용합니다. 전체 콜 스택 포함 오류 기록은 하지만, 프로그램 실행은 계속합니다. 디버거가 붙어있는 경우, 두 함수 모두 디버거로 들어갑니다.

.NET 프레임워크는 어디있나요?

유니티와는 다르게 UE4 는 .NET 프레임워크를 사용하지 않습니다. UE4 는 별도의 컨테이너 클래스와 라이브러리가 있습니다. 주요 컨테이너를 비교해 보면 이렇습니다:

.Net 프레임워크 UE4 String FString, FText List TArray Dictionary TMap HashSet TSet

다른 UE4 컨테이너 관련 상세 정보는 Containers여기서(영문) 찾아볼 수 있습니다.

언리얼은 코드 변경사항을 자동으로 로드하나요?

네! 코드를 작성하면서 에디터를 열어둬도 됩니다. 코드 편집을 마친 다음 Visual Studio 에서 컴파일을 실행시키기만 하면, 에디터가 변경사항을 자동으로 “핫 리로드” 합니다. 에디터 메인 툴바의 컴파일 버튼을 클릭해도 됩니다. Visual Studio 디버거가 붙어있는 경우 유용하게 쓸 수 있습니다.

이제 어디로?

긴 글 읽어주셔서 감사합니다! 이 글은 세계 각지 언리얼 개발자들의 도움으로 언리얼 커뮤니티를 위해 작성된 것이며, 피드백이나 고칠 부분 알려주시면 대단히 감사하겠습니다. UE4 로 전환할 때 큰 도움이 되는 부분이 어떤 것이 있는가 배워가면서 이 문서를 계속 발전시키도록 하겠습니다!

이외에도 UE4 학습 자료가 많이 있습니다!

언리얼 엔진과 유니티 엔진 차이점

언리얼vs유니티: 4. 사용하는 프로그래밍 언어

게임 회사에 자리잡고 계신 꽤 많은 게임 개발자들은 c와 c++을 시작으로 프로그래밍에 입문했을 것입니다. 상용엔진이 보편화 되기 전에는 대부분 c나 c++을 이용한 자체엔진으로 게임을 만들어

tistory.jeon.sh

메타버스 핵심축 ‘언리얼·유니티’ 차세대 전략으로 정면 승부

개발용 ‘엔진’은 메타버스 산업·플랫폼을 구축하는 토양이라 할 수 있다. 각종 산업군에서 사용하는 대표 엔진 개발사는 언리얼 엔진의 ‘에픽게임즈’와 유니티 엔진의 ‘유니티’가 있다. 최근 두 회사는 행사와 간담회를 차례로 열어 성과를 발표하고 각 엔진의 새로운 기능과 비전을 제시했다.

에픽게임즈가 언리얼 엔진5으로 만든 ‘윈드워커 에코’. / 에픽게임즈

에픽게임즈 “하나의 ‘생태계’ 구축”

에픽게임즈는 10월 12일부터 15일까지 ‘언리얼 서밋 온라인 2021’ 행사를 개최한다. 언리얼 엔진의 혁신 기술과 정보, 개발 트렌드를 공유하는 컨퍼런스로 전체 산업계를 시작으로 게임, 영화, TV&라이브 이벤트, 건축&제조 순으로 약 30여 개 기술 강연이 펼쳐진다.

언리얼 엔진은 대표적으로 포트나이트, 오딘, 리니지2M에 사용됐다. 특히 포트나이트는 글로벌 아티스트 공연 개최나 페라리 신차를 이용자가 직접 살펴보고 운전할 수 있게 하는 등 메타버스 대표 플랫폼 중 하나로 꼽힌다.

언리얼 엔진의 특징은 고품질 그래픽과 리얼 타임 렌더링 기술이다. 리얼 타임 렌더링은 기존 며칠이 걸리던 작업을 몇 분 만에 완성하도록 돕는다. 에픽게임즈가 새로 출시할 언리얼 엔진5는 기존 렌더링 보다 높은 질, 메타버스 플랫폼 위한 오픈월드 기능, 몰입감 있는 콘텐츠를 만들기 위한 디지털 휴먼과 애니메이션 기능, 사운드를 탑재했다.

에픽게임즈는 이번 언리얼 서밋 행사에서 언리얼 엔진을 통해 개발, 서비스, 퍼블리싱까지 하나의 생태계(에코 시스템)를 구축해 종합 프로세스를 제공할 계획을 밝혔다. 신광섭 에픽게임즈 코리아 부장은 “메타버스를 위해 언리얼 엔진5, 트윈모션, 퀵셀을 통한 콘텐츠, 메타휴먼 크리에이터, 캡쳐링 리얼리티, 스케치팹 등 다양한 기능을 제공하고자 한다”고 말했다.

얼리얼 엔진과 다양한 기능을 통해 개발자가 콘텐츠를 개발하면, 온라인 서비스를 제공한다. 온라인 서비스는 게임과 계정 서비스로 크게 나눠 구축할 예정이다. 언리얼 엔진에만 온라인 서비스를 제공하는게 아니라 타사 엔진이나 스토어, 플랫폼에서도 에픽게임즈의 온라인 서비스를 개발자가 이용하도록 만든다. 이후 에픽게임즈 스토어에서 퍼블리싱을 진행하도록 돕는다.

이는 인터넷 플랫폼 내에 개인과 사업자가 페이지를 만들어 사업을 꾸리듯 메타버스 플랫폼 내에서도 똑같이 각자 콘텐츠를 만들고 수익을 창출하는 환경이 중요한 과제라고 봤기 때문이다. 에픽게임즈는 앞으로 인터넷과 마찬가지로 누구나 쉽게 콘텐츠를 고퀄리티로 만들고 메타버스에 걸맞게 몰입감을 증대할 수 있게 돕는 역할을 한다는 입장이다.

신 부장은 “에픽게임즈는 누구나 실시간 3D 콘텐츠를 만드는 세상을 지원한다”며 “개발자에게 개발 생태계를 제공해 에픽게임즈의 시스템만으로도 개발부터 퍼블리싱까지 가능하게 만들겠다”고 말했다.

유니티 엔진을 활용한 LG유플러스의 가상 오피스. / 유니티

언리얼vs유니티, 두 엔진 모두 써 본 현업 개발자에게 직접 물었습니다

[언리얼엔진 4 정책] 언리얼엔진4 무료화 선언…분기매출 3천달러 이상은 5% 로열티 지불

[유니티엔진 5 정책] 게임엔진 무료화 물결, 유니티도 참전? ‘유니티 5 엔진’, 개인용 무료화

유우원 개발자

넥슨 재직 중이며, 현재 유니티로 모바일게임 개발 중

언리얼로는 뮤2 프로젝트, 유니티로는 블랙썬 for kakao를 개발

권오찬 대표

전 넥슨/엔씨 재직. 현재는 TeslaCoil 대표로, 언리얼을 활용해 모바일게임 개발 중

언리얼은 게임사 재직 당시 5년 가까이, 유니티는 모바일게임 및 개인 프로젝트 개발로 1년 간 사용

▲ 유우원 개발자(좌)와 권오찬 대표 넥슨 재직 중이며, 현재 유니티로 모바일게임 개발 중언리얼로는 뮤2 프로젝트, 유니티로는 블랙썬 for kakao를 개발전 넥슨/엔씨 재직. 현재는 TeslaCoil 대표로, 언리얼을 활용해 모바일게임 개발 중언리얼은 게임사 재직 당시 5년 가까이, 유니티는 모바일게임 및 개인 프로젝트 개발로 1년 간 사용

유니티와 언리얼의 바뀐 요금제에 대해서 어떻게 생각하시나요?

유우원 개발자

권오찬 대표

게임을 직접 개발하는 입장에서 느낀, 각각의 엔진이 가진 장단점은 무엇인가요?

유우원 개발자

▲ ‘모바일에 어울리지 않다’는 언리얼에 대한 인식도 블레이드 이후 많이 개선되었다

권오찬 대표

언리얼은 PC온라인, 유니티는 모바일이란 말도 옛 말, 향후 엔진 시장의 판도는 어떻게 바뀔까요?

유우원 개발자

권오찬 대표

▲ 실사풍 비주얼로 유명한 언리얼엔진이지만, 최근 픽셀아트 풍의 다양한 비주얼도 구현되고 있다

언리얼엔진4의 로열티 5%. 개발사에게 부담되지는 않을까요?

유우원 개발자

권오찬 대표

유니티엔진 5의 가격정책, 기존과 크게 다르지 않다는 이야기도 있어요.

유우원 개발자

권오찬 대표

유니티와 언리얼은 각각 어떤 성향의 게임에 어울릴까요?

유우원 개발자

권오찬 대표

▲ 두 엔진 모두 쉽게 이용할 수 있게 언리얼과 유니티의 툴을 비교하는 포스트도 찾아볼 수 있다

(출처: 언리얼엔진4 포럼)

영원한 라이벌 언리얼&유니티. 서로 경쟁력을 갖추기 위해 무엇을 해야 할까요?

유우원 개발자

▲ ‘레이븐’이 증명했듯이,유니티에서도 하이퀄리티 레퍼런스가 나올 수 있다

권오찬 대표

이제 막 게임 개발을 시작한 학생들에게 추천하는 엔진은 무엇인가요?

유우원 개발자

권오찬 대표

▲ 넥슨이 2016년에 출시할 레고IP 모바일게임 역시 언리얼엔진4로 만들어 질 예정.

모바일 시장 내 언리얼엔진 수요는 더 커질 전망이다

지난 GDC기간 중, 다수의 엔진들이 상당히 파격적인 정책을 발표했습니다. 그 중에서 가장 주목받은 것은 현재 시장에서 두루 쓰이는 엔진, 언리얼과 유니티의 정책입니다. 개발자 입장에서는 거의 크리스마스가 다시 온 듯한 소식이나 다름없었죠.에픽게임즈의 언리얼4 엔진에 대한 정책을 정리하자면, 각종 툴셋, 소스코드를 무료로 제공하고 분기별 3천 달러(한화 약 3백만 원) 이상의 매출을 기록할 경우 5%의 로열티를 받겠다는 것입니다. 최신 기능의 업데이트는 물론, 포럼과 위키, AnswerHUB와 Q&A, GitHub등 각종 부가기능도 무료로 이용할 수 있고요.유니티 엔진5의 정책 역시 파격적입니다. 프로페셔널 버전의 경우 월 75달러의 이용료를 내거나 1,500달러로 구매할 경우 로열티를 받지 않으며, 레벨11의 유니티 에셋스토어를 마음껏 사용할 수 있습니다. 유니티 클라우드 빌드 프로 및 유니티 아날리틱스 프로도 제공하며, 게임 퍼포먼스 리포팅 서비스 및 베타/프리뷰 서비스도 지원됩니다. 개인용인 퍼스널 버전은 경우 기본 무료에, 한화 1억 원 이하의 매출을 내거나 투자를 받지 않는다면 로열티도 지급할 필요가 없습니다.양 쪽 모두 상당히 매력적인 정책이라 많은 개발자들이, 특히 모바일 게임 개발에 이제 막 착수했거나 할 예정인 스타트업 개발자들은 두 엔진을 두고 ‘행복한’ 고민에 빠져 있습니다. 또한, 게임 개발을 꿈꾸는 학생들에게도 선택의 시간이 찾아왔죠. 어떤 엔진을 쓰느냐에 따라 게임 개발의 결과가 상당히 달라지는데다, 양 쪽 모두 익숙해지기까진 시간이 걸리기도 하니까요.선택의 갈림길에서 아무래도 가장 확실히 도움될 수 있는 건 실제 경험을 바탕으로 한 조언이겠죠. 이에 인벤은 유니티와 언리얼 엔진을 모두 써 본 개발자 2명에게 각 엔진 정책 중 어떤 것이 매력적이며 어떤 선택을 해야 하는지 질문해 보았습니다.두 엔진 모두 맥스나 마야 같은 3D 저작툴이나 포토샵으로 대표되는 이미지 프로세싱 소프트웨어보다는 엄청나게 저렴하단 것이 장점입니다.언리얼4 엔진은 초기 비용 없이도 모든 기능을 무료로 사용할 수 있고, 유니티5는 무료인 대신 기능에 약간의 제한이 있는 퍼스널 에디션과, 스플래시 제거 및 모든 기능을 사용하기 위해서는 월 75$이상의 가격을 지불하고 각 플랫폼 별로 초기 추가비용이 들어가는 프로페셔널 에디션이 나누어져 있어 초기 비용 측면에서는 언리얼4가 좋아 보입니다.다만 언리얼4는 분기별 타이틀당 3,000$ 이상의 매출이 발생하면 5%의 로열티를 지불해야 하는 반면, 유니티5는 연 매출 1억까지 프리버전으로 개발할 수 있어요. 물론 유니티5가 아예 무료인 건 아닙니다. 퍼스널에디션은 무료이지만, 유니티로 모바일 프로젝트를 빌드하려면 일단 안드로이드와 iOS용 프로버전(각각 165만 원)이 필요하니까요.따라서 제 생각엔 정말 처음 시작하는 학생이나 소규모인 인디팀 개인 개발자라면 언리얼 쪽이 유리합니다. 적으나마 자본금을 마련한 팀이라면 유니티도 좋은 선택이 될 겁니다.일단 언리얼4의 무료 정책은 사실 언리얼4 공개 당시 발표했던 월 19달러의 정책과 크게 다르지 않다고 봅니다. 월 19달러라는 가격은 언리얼4가 가지는 가치에 비한다면 수익보다는 최저한의 배포비용이라고 봤기 때문이죠. 즉, 이미 공개 때부터 사실상 무료에 가까운 가치로 배포했던 것이며, 이번 무료화 발표는 ‘자유롭게 개발하고 수익이 발생한다면 지불하라’ 라는 에픽게임즈의 방향성을 조금 더 강하게 표현했다고 봅니다.유니티 역시 기존과 크게 다르지 않다고 봅니다. 기존의 무료버전과 다르게 퍼스널버전이 엔진의 모든 기능을 포함하긴 했지만 결국 개발이 가능한 무료버전은 존재해 왔고 1억 원 이상의 수익이라면 프로버전으로 전환해야 하기 때문에 개발사 입장에서는 기존과 비슷해 보입니다.언리얼은 아무래도 콘솔이나 PC플랫폼에 레퍼런스 프로젝트가 많고, 비주얼 측면에서 여러 시도를 할 수 있어서 좋았습니다. 노드 방식에 익숙하다면 다른 애드온 없이도 재질 표현이나 여러가지 생각한 것들을 자유롭게 표현할 수 있다는 점에서 높은 점수를 주고 싶습니다. 또한 이번에 추가된 블루프린트로 예전보다 훨씬 쉽고 편하게 프로토타입을 만들 수 있게 되어 코딩을 못해서 답답하던 문제들을 해결할 수 있어서 좋았습니다.콘솔이나 PC로 시작하고, 일인칭 호러 장르나 FPS등 라이팅 표현이나 실사 비주얼 표현이 중요한 인디 프로젝트라면 언리얼4 엔진을 추천하고 싶네요. 엔진 에디터 완성도는 정말 끝판대장이란 표현이 아깝지 않을 정도이고, 출력되는 퍼포먼스에서는 절대 실망할 일이 없습니다. 여러가지 멋진 시각 효과를 얹어도 프레임이 잘 나와요. 작년 크게 히트한 ‘블레이드’ 이후 현재는 모바일에서도 꽤 많은 팀들이 언리얼 엔진으로 프로젝트를 준비하고 있는 것으로 알고 있습니다.유니티는 모바일 관련 압도적인 레퍼런스 프로젝트가 많습니다. 현재 시장이 모바일 쪽으로 쏠려버린 상황에서는 유니티가 일단 우선 고려되는 것이 사실입니다. 실사 같은 그래픽이 모든 게임의 방향은 아니기 때문에, 아티스트의 역량에 따라 얼마든지 인상적이고 멋진 결과물을 낼 수 있습니다. 에디터는 그야말로 쓰기 쉽고 직관적입니다. 에셋스토어도 많이 활성화 되어 있어서 나에게 필요한 기능을 쉽게 추가해서 쓸 수 있다는 것도 장점이라고 봅니다.우선 유니티의 장점부터 설명하자면, 가벼운 에디터와 직관적인 인터페이스, 모바일 개발을 기준으로 압도적인 레퍼런스 코드 및 수많은 플러그인 등이 있습니다. 두루 쓰이고 있기 때문에 개발인력 확보의 용이함, 다양한 플랫폼에서의 호환성도 좋고, 가격도 저렴하죠. 현재 모바일 게임 정도라면 사실상 유니티로도 충분히 개발에 어려움이 없고 오히려 더욱 쉽고 빠르고, 안전하게 개발이 가능하다고 생각합니다.반면에 언리얼은 압도적인 랜더링 퍼포먼스, 개발에 필요한 업계 최고수준의 툴들의 완벽한 통합, 그리고 블루프린트를 꼽을수 있습니다. 당장 제가 직접 테스트한 플랫폼(PC, IOS, Android) 기준으로 유니티(4.X)와 언리얼(3,4)의 퍼포먼스 차이가 꽤 났습니다. 뿐만 아니라 좀 더 코어한 장르에서 언리얼의 다양한 툴들은 강력한 아티스트 드리븐 개발을 가능하게 해줍니다. 고성능의 툴이 엔진에 완벽히 통합되어 별다른 세팅 없이도 유기적으로 잘 작동하는 점도 큰 장점입니다.물론 유니티도 다양한 최적화를 통해 비슷한 퀄리티의 비주얼과 게임시스템을 만들 수는 있다고 봅니다만, 콘솔에 준하는 액션게임이나 FPS게임을 만든다고 할 때 유니티보다 언리얼이 30%는 개발비용(인력과 기간)을 단축시킬 수 있다고 봅니다.마지막으로 블루프린트는 누구라도 쉽고 빠르게 프로토 타이핑을 가능하게 합니다. 시스템이나 로직이 점점 유기적으로 복잡해지는 상황에서 기획이나 아트 중심의 프로토 타이핑은 프로젝트 생산성과 퀄리티를 극적으로 향상시켜 줍니다.모바일 용 고성능 메탈 API가 등장하고, 모바일 기기의 성능 역시 올라가면서 모바일 플랫폼에서도 실사 같은 그래픽, 리얼레이싱과 같은 퀄리티 높은 타이틀에 도전할 수 있게 되었습니다. 배터리 문제만 해결한다면, 콘솔 같은 개발 환경이 될 거라고 생각합니다.그러나 실사 같은 느낌만이 좋은 퀄리티라는 생각은 들지 않습니다. 물론 시뮬레이션 장르나 레이싱 등처럼 고퀄리티 그래픽이 필요한 게임들도 있겠지만, 저니나 모뉴먼트 밸리같은 독창적이고 개성 있는 게임이라면 아트디렉터가 원하는 대로 간편하게 구현하게 되리라고 생각합니다. 따라서 엔진의 성능보다 무엇을 만들고 싶은지, 그것을 얼마나 쉽고 멋지게 표현할 수 있을 지를 판단하는 게 중요할 것 같습니다.사실 1년 전까지만 해도 모바일에서의 언리얼은 어렵고, 배포도 힘들다는 인식이 있어 입지가 썩 좋지는 않았습니다. 하지만 ‘블레이드’의 대성공 이후에는 언리얼에 대한 공포(?)가 많이 없어진 상태입니다. 오히려, 점점 더 많은 유저들이 좀 더 코어한 플레이의 게임을 원하게 될 것이라고 확신하는 추세입니다.기존의 러너 류나 팡 류 같은 캐주얼 게임이라도 비주얼 퀄리티에 대한 필요성이 높아지고 있고요.유니티를 메인으로 사용해온 개발자들이 기존의 콘솔이나 PC게임 레벨의 개발 수준에 도달하는 시간보다도 기존 콘솔이나 PC게임 개발자들이 모바일로 진입하는 속도가 훨씬 빠르다고 보면 결국 모바일 시장에서 언리얼의 비율은 점점 더 늘어나리라고 봅니다.언리얼 로열티는 게임(프로젝트)당 분기별 3천 달러 이상인데요. 개인적인 생각을 말하자면… 만일 개발사가 그 이상 벌면서 5%가 아깝다고 생각한다면 에픽 사와 따로 라이센싱을 하면 되는 것이고, 그보다 적으면 개발사로서의 생존이 더 문제가 아닐까 합니다.전 이번 무료화가 좋은 정책이라고 생각합니다. 개발사도, 개발자도 충분히 윈윈(Win-Win)할 수 있다고 봅니다. 개인이나 인디 개발자들이 혜택을 받고, 언리얼 엔진 사용자 저변을 넓히기 위한 정책이기 때문이죠.소규모 개발자 입장에서는 압도적인 비주얼 퀄리티와 강력한 프로토타이핑과 아티스트 드리븐을 통한 플레이 퀄리티를 고려하면 매출의 5%는 정말 괜찮은 편이죠. 언리얼을 통해서 향상된 비주얼 플레이 퀄리티가 전체 매출의 5%라는 로열티를 메꿀 수 있을 정도로 매출을 증가시킬 가능성이 높으니까요.반면에 국내 모바일 시장을 목표로 삼은 개발사 입장에서는 참 어려운 기준입니다. 애플, 구글을 제외하고도 카카오, 라인 같은 플랫폼 사업자와 퍼블리셔가 추가되기 때문입니다. 스토어에 직접 서비스 하는 경우에는 개발사가 전체 매출의 70%중에 전체 매출의 5%를 로열티로 지불하지만, 국내 대다수의 개발사들은 퍼블리셔에게 투자를 받는 구조다보니 전체 매출의 20~25%만을 가지게 됩니다.이런 상황에서 로열티가 전체매출의 5%라는 건 사실상 개발사가 얻는 이익의 20~25%가 로열티라는 말과 다름 없죠. 제 개인적인 생각으로는 현재 언리얼 엔진의 국내 도입에 가장 걸림돌이 되는게 바로 5% 로열티 정책이라고 봅니다. 대형 개발사를 위한 기존의 정책과 소규모 개발사를 위한 5%로열티 정책도 좋지만, 퍼블리셔나 플랫폼 사업자와 같이 해야 하는 한국의 상황을 고려해서 적합한 라이선스 방식을 추가해 주길 바라고 있습니다.이번 정책과 기존 ‘유니티 프리’와의 차이라면 팀 라이센스나 클라우드 빌딩과 같은 심화 기능을 제외한, 기본적인 프로기능들을 다 넣어서 무료로 공개한다는 겁니다. 기존 유니티 프로에 포함된 기능들도 지금은 다 무료인 거죠. 기존에 비해 참 좋아졌습니다. 실제로 유료기능인 팀 라이센스도, 서브버전이나 다른 여러 관리 솔루션으로 대체해 사용한다고 알고 있습니다. 그러니 문제될 것이 없지요.아주 개인적인 생각인데요. 유니티도 언리얼처럼 기본적으로 모든 플랫폼으로 다 낼 수 있게 해주고 매출기준으로 로열티를 받는 방식을 같이 시도해도 재미있는 경쟁이 되었을 거라고 생각합니다. 그래도 지금도 충분히 매력적인 정책이라고 생각합니다. 맥스등 제작 소프트웨어 가격을 생각하면 상당히 저렴하니까요.사실 퍼스널 버전의 무료는 그렇게 큰 의미로 다가오진 않습니다. 게임 출시를 통한 기대수익이 1억 원 수준을 크게 넘기도 하고, 엔진 가격 자체도 저렴하기 때문에 크게 부담이 되지 않죠.다만 소규모 개발자 입장에서는 어느 정도 유리한 부분이 존재합니다. 어찌됐건 간에 엔진의 전체 기능을 사용해서 개발하면서도 수익이 10만 달러에 미치지 못하면 프로 버전을 구입할 필요가 없으니까요.향후의 판도는 엔진 선택 전에 개발 조건이 얼만큼, 어떻게 갖춰져 있는지가 오히려 더 중점이 될 겁니다. 현재는 극도로 모바일 쪽으로 편중되어 있으며, 1년 이하의 짧은 개발 기간을 가져가며 극도의 소모전 양상을 띄고 있습니다. 기술도 2000년도 기술을 그대로 답습하고 있고요.시간이 촉박하고 개발 환경이 녹록치 않으니 다른 것을 생각할 여유가 없죠. 이러한 상황이라면 타겟 플랫폼에서 얼마나 참고사례의 유무, 혹은 다소(多少)에 따라 선택이 달라질 겁니다. 모바일이면 유니티, 콘솔이나 PC 인디 게임이라면 언리얼 엔진을 선택하겠지요.굳이 따지자면 언리얼은 비주얼이 중요한 메카닉, 시뮬레이터, 레이싱, FPS등에서 여전히 강력할 것으로 봅니다. 유니티는 캐주얼이나 귀엽고, 또는 가벼운 쪽에 절대 강자지요. 특성상 생산성도 높고요. 어떻게 보면 서로 장점과 단점이 명확히 갈린다고 보지만, 양측 모두 그 점을 보완하려고 노력하고 있기에 엔진때문에 특정 게임을 개발하지 못하는 일은 없을 것 같네요.일반적인 관점에서 보면 높은 비주얼 퍼포먼스, 복잡하고 유기적인 게임 로직, 아티스트드리븐의 개발이 아주 중요한 경우에는 언리얼, 그렇지 않은 경우에는 유니티가 더 좋다고 생각합니다. 개발 관점으로 보자면 빈번한 프로토타이핑과 폴리싱이 필요한 장르에서는 언리얼, 어느정도 규격화된 장르에서는 유니티라고 생각합니다.개인 적으로도 모바일에서 HDR, 노말맵, 콘솔게임에 준하는 구현요소를 가진 액션게임을 만든다면 언리얼로 만들 것이고 러너게임이나 팡류, TCG, 레트로 스타일의 플랫포머 게임을 만든다면 유니티로 만들 것 같습니다.유니티는 현재는 모바일에서 절대강자이긴 하나, 콘솔이나 PC 타이틀등 타 시장의 지배력도 원한다면 더 많은 고퀄리티 레퍼런스를 구축해야 할 것이라고 봅니다. 향후 시장은 어떻게 변할지 모르니까요. 크레센트 베이나 스팀VR등 기술이 진보하면서 하이엔드 렌더링이 각광받는 시대가 혹시 온다면 다소 입지가 위축될 지도 모르겠다고 생각되지만, 요즘 핫한 레이븐의 사례를 보면 유니티도 좋은 하이퀄리티 레퍼런스가 많이 나올 것으로 봅니다.언리얼은 블루프린트를 통해서 아티스트들이 그토록 원하던 ‘코딩없이 표현해 볼 수 있겠다’를 실현시켰다는 점에서 큰 진보를 했다고 봅니다. 다만, 지금과 같이 힘든 개발환경에서 써보라고 쉽게 추천하기는 어렵네요. 그래도 지금처럼 계속 접근성을 높여가서 모바일 프로젝트나 인디게임들이 다수 쏟아져 나오기 시작하면, 앞으로 소규모 캐주얼게임에도 자신있게 ‘언리얼로 시작해!’ 라고 권할 수 있을 때가 올 거 같아요.언리얼4 버전은 아직 극 초기로, 추가되는 기능들이 계속 개발 중인 상황인데다, 모바일 플랫폼에서 언리얼을 이용한 프로젝트가 그렇게 많지 않기 때문에 아직은 개발 안전성이 높다고 하기 어렵습니다. 또한 에디터가 저사양 개발머신에서 돌리기 어려울 정도로 무거운 점도 개선해야 할 점이라고 봅니다.유니티는 다양한 개발 툴이 추가되고는 있지만 툴 자체도 부족하고 추가된 툴들도 아직까지 엔진에 완벽히 통합되어 있다고 하기는 어렵습니다. 또한 개별 툴들도 기능적으로나 사용성으로나 언리얼의 툴들에 비해 많이 부족합니다.유니티4 버전을 기준으로 하자면 비쥬얼 퍼포먼스도 언리얼에 비해서 많이 떨어집니다. 결국 유니티를 이용한 AAA급 타이틀 개발 경험이 거의 없기 때문에 이런 스타일의 게임 개발에 최적화 되지 않은 점을 개선해야 한다고 생각합니다.배포할 일이 없는 학습용이라고 하면 둘다 무료이므로 부담없이 둘 다 설치해서 비교해보고 고르시면 되겠습니다.그러나 실제 학습을 넘어 개발, 배포까지도 염두에 두신다고 가정한다면… 정말 초기비용이 한 푼도 없는데, 특히 멋진 비주얼이 키 포인트라 타협도 불가능하다면 언리얼 엔진을 추천하겠습니다. 정말로 ‘아이디 만드는 노력’ 외엔 돈들 일은 없을 테니까요. 반면 빌드를 위해 약간의 비용을 지불할 용의가 있고, 특별히 고사양 그래픽을 지향하지 않으면서도 인상적이고 개성 있는 게임을 만들어 보고 싶다. 라면 유니티를 추천하겠습니다.개인적으로는 언리얼을 권합니다. 많은 분들이 수많은 레퍼런스 소스를 이유로 유니티를 권하시는데 양쪽 엔진에 대한 경험이 모두 없는 상태에서 처음부터 공부하는 학생이라면 한글화된 언리얼 공식문서는 그 자체만으로도 엄청난 이점이라고 생각합니다.또한 향후 모바일 시장에서의 언리얼엔진 성장과 PC, 콘솔 플랫폼까지 고려한다면 언리얼 개발 인력에 대한 필요성이 커질 것이라고 판단됩니다.

혼자 취미로 게임 개발하기 (4) – 유니티와 언리얼

Ⅴ. 유니티와 언리얼

저번 세 번째 글 말미에 제가 ‘(4)에서 이어집니다.’라고 써놓았으나, 정작 네 번째 글의 소재로 괜찮은 게 무엇이 있을지 잘 생각이 나지 않아서 고민을 많이 했습니다. 사실 제가 전문가가 아니기 때문에, 혼자서 게임 개발하기와 관련된 주제로는 제가 쓸 수 있는 글은 다 쓴 것 같더군요. 그래서, 원래 지금까지 제 글들이 객관성보다는 주관성이 더 짙은 글들이기는 했지만, 이번에는 정말로 거의 100% 주관적인 글을 써보고자 합니다.

제가 게임 제작을 하기 전에 가장 고민했던 것은 어떤 게임 엔진을 써야 하느냐였습니다. 그래서 유명한 게임 엔진을 포함하여 잘 알려지지 않은 게임 엔진들까지 직접 사용해보았습니다.(사실 사용이라기보다는 그저 만지작거렸다에 불과한 경험이긴 했습니다. T^T) 여러 게임 엔진에 대한 건 제가 첫 번째 글의 주제로 이미 써 놓았으니 궁금하시면 다음 주소를 찾아가 보시기 바랍니다. 🙂 (주소 : https://brunch.co.kr/@iimjae123/1)

어쨌거나, 첫 번째 글에서 여러 게임 엔진에 대해 소개해드리긴 했지만, 그중에서 개인적으로 가장 추천해드리는 게임 엔진은 유니티와 언리얼 엔진 4(이하 언리얼)입니다. 제가 유니티와 언리얼 두 개 중 어떤 걸 배워서 활용해야 할지 고민을 많이 했었는데, 아마 이 글을 읽으시는 분 중에서도 그런 분들이 많을 거라고 생각됩니다. 두 엔진이 워낙 유명하고, 다른 많은 인터넷 사이트들에서도 두 엔진을 추천하는 경우가 굉장히 많거든요.

제가 첫 번째 글을 다시 읽어보니까 유니티와 언리얼을 비교하는 비교 내용이 좀 부족했던 것 같아서, 이번 글에서는 두 엔진을 더 자세히 비교 및 대조해보도록 하겠습니다.

1. 왜 유니티 또는 언리얼일까?

1) 높은 신뢰도

먼저 두 엔진이 다른 엔진에 비해 더 좋은 이유에 대해서 말씀드려야 할 것 같습니다. 어떻게 보면 두 게임 엔진의 공통점이라고 할 수 있겠네요. 첫 번째로 높은 신뢰도입니다. 용어가 딱히 떠오르지 않아 ‘신뢰도’라는 표현을 썼습니다. 다시 말해 믿을 수 있는 엔진이라는 건데, 이를 풀어쓰자면, 두 엔진은 다른 게임 엔진들에 비해서 출시된 상용 게임들이 많고, 그중에서도 사람들에게 잘 알려진 성공한 게임들도 많은 편입니다. 그래서 이 엔진을 사용하면 엔진의 성능 또는 기능 부족 때문에 게임 제작에 어려움을 겪을 가능성이 적죠.

유니티로 만들어진 유명한 게임으로는 『하스스톤』, 『포켓몬 GO』, 『컵헤드』, 『던그리드』, 『테라M』 등이 있으며, 언리얼로 만들어진 유명한 게임으로는 『배틀그라운드』, 『포트나이트』, 『드래곤볼 파이터즈』, 『스트리트 파이터 5』, 『리니지 2 레볼루션』 등이 있습니다.

2) 뛰어난 엔진 성능 및 기능

어찌 보면 높은 신뢰도와 겹치는 이유이기도 합니다. 바로 다른 엔진에 비해 뛰어난 엔진 성능과 기능입니다. 사실 유니티와 언리얼이 높은 신뢰도를 가질 수 있었던 것은, 많은 게임 개발자들로부터 좋은 게임 엔진으로 인정받았기 때문일 테고, 게임 개발자들이 좋은 게임 엔진이라고 생각할 수 있었던 것은, 유니티와 언리얼의 성능과 기능이 다른 게임 엔진들에 비해 우수했기 때문이었겠죠.

유니티의 경우, 모바일 게임 시장이 한창 꽃을 피우고 있을 무렵, 다른 게임 엔진들보다 발 빠르게 먼저 PC를 비롯하여 모바일 플랫폼으로까지 게임 개발을 쉽게 해 주었다는 것이 유니티로 하여금 큰 인기를 얻게 하는 요인이 되었습니다. 하나의 게임을 다른 여러 플랫폼으로 간단하게 출시할 수 있기에 게임 개발자들의 수고를 덜어줌과 동시에 엔진의 성능도 나쁘지 않아서 게임 개발자들의 사랑을 받을 수 있었던 거죠. 동시에 초보 게임 개발자들 입장에서 직관적이고 쉬운 게임 개발 기능을 제공한 것도 큰 인기를 얻을 수 있었던 점입니다.

언리얼의 경우, 원래 예전부터 게임 개발자들에게 큰 인기를 얻고 있던 게임 엔진이었습니다. 게이머들 사이에서도 압도적인 3D 그래픽 경험을 제공하면서 엔진 최적화가 잘 되어 있어서 유명했던 게임 엔진이죠. 한때는 FPS 게임만 잘 만드는 엔진이라는 인식이 있었으나, 현재는 언리얼로 다양한 장르의 게임들이 개발되면서 그런 인식은 이제 거의 없습니다. 게다가, 예전에 유니티가 모바일 게임 시장을 지배하고 있을 무렵, 모바일 게임 개발에 있어서는 유니티보다 떨어진다는 말들이 있었으나, 지금은 유니티와 비등비등하거나, 오히려 더 뛰어난 모습을 보여준다는 평가를 받고 있죠.

2. 유니티와 언리얼 비교

그럼 유니티와 언리얼, 둘 중 무엇을 써야 할까요? 두 엔진의 차이점을 좀 더 명확히 보기 위해 여러 측면에서 유니티와 언리얼을 비교해보았습니다.

1) 무료/유료 라이선스

유니티 라이선스 정책(유니티 공식 홈페이지)

먼저 유니티입니다. 본인의 연간 수익이나 자본금이 미화 10만 달러 이하인 경우에만 무료 라이선스(Personal)로 유니티를 사용할 수 있다고 합니다. 즉 연 수익 또는 가진 돈이 대략 1억 원을 초과하는 분이라면 무료 라이선스를 이용할 수 없습니다. 그런데 무료라고 해서 엔진의 기능 또는 사용 기간에 제한이 있지는 않습니다. 무료 라이선스도 유니티의 핵심 기능들을 전부 사용할 수 있고, 게임 출시에도 제한이 없으며, 유니티로 만든 게임으로 수익을 창출해도 무방합니다. 저는 무료 라이선스를 이용할 수 있군요. 하하… 왜 눈물이…

유료 라이선스는 ‘Plus’와 ‘Pro’로 나뉩니다. Plus가 Pro보다 저렴한 라이선스인데, Plus를 이용하는 것에도 제한 조건이 있습니다. 본인의 연간 수익이나 자본금이 한화로 약 2억 원 이하여야만 Plus를 사용할 수 있다고 하는군요. 다시 말해 연 수익 또는 가진 돈이 대략 2억 원을 초과하는 분이면 Pro 라이선스를 사용해야 합니다. 참고로, 당연하겠지만, 좀 더 비싼 라이선스를 사용할수록 유니티에서 제공하는 혜택이 많습니다.

무료(Personal) 라이선스와 유료(Plus, Pro) 라이선스의 첫 번째 차이점은 유니티 에디터의 UI 색깔을 바꿀 수 있다는 겁니다. 게임의 성능에 영향을 주는 부분은 아니지만, 유니티의 기본 UI 색깔이 다소 촌스러운 회색이거든요. 만약 유튜브 등에서 정보를 찾을 때, 유니티 UI 색깔이 검은색인 영상이나 그림을 보신다면, 그분은 최소 Plus 라이선스를 사용하고 있는 거라고 보실 수 있습니다.

두 번째 차이점은 에셋스토어에서 유명한 에셋들을 20% 할인된 가격으로 구입할 수 있다는 것입니다. 다른 건 별로 안 부러운데, 이건 좀 부럽더라고요. 혹시 에셋스토어를 모르시는 분들을 위해 간단하게 설명드리자면, 에셋스토어는 다른 사람들이 만든 게임 리소스나 추가 기능을 무료 또는 유료로 구매할 수 있는 온라인 상점이라고 보시면 됩니다. 물론 모든 에셋에 적용되는 건 아니지만, 꽤 할인되는 에셋들이 많습니다. 에셋스토어를 자주 이용하시는 분이라면 무료보다 유료 라이선스가 더 이득일지도 모르겠습니다.

마지막 차이점은 유니티 로고를 넣지 않을 수 있다는 것입니다. 무료 라이선스는 유니티로 만든 게임을 실행시키면 처음에 유니티 로고를 무조건 나오도록 하고 있습니다. 물론 게임 내내 유니티 로고가 워터마크처럼 박혀있는 건 아니고, 게임 시작하기 전에 잠깐 나옵니다. 반면 유료 라이선스를 사용하면 유니티 로고를 게임 앞에 나오지 않게 할 수 있습니다.

언리얼 라이선스 정책(언리얼 공식 홈페이지)

언리얼은 유니티에 비해 라이선스 정책이 간단합니다. 무료로 엔진을 사용하되, 언리얼로 출시한 게임에서 수익을 얻으면 그 수익의 5%만큼 로열티를 지불하면 됩니다. 로열티는 무조건인 것 같습니다. 만약 언리얼로 게임을 만들어서 설령 1,000 원밖에 못 벌었어도, 50 원을 언리얼을 만든 회사인 ‘에픽게임즈’에 지불해야 하는 거죠.

그럼 라이선스 측면에서는 어떤 엔진이 더 나을까요? 일단 무료로 엔진을 사용하고자 하는 입장이라면 언리얼이 더 좋을 것 같습니다. 왜냐하면 언리얼은 무료라도 유니티처럼 게임 엔진 로고를 넣을 필요가 없으며, 유니티는 Personal 라이선스 사용자에겐 엔진의 소스 코드를 제공하지 않는 반면, 언리얼은 엔진의 소스 코드를 무조건 무료로 제공해주기 때문에 능력만 된다면 엔진을 자신의 입맛에 맞게 개조하는 것이 가능합니다. 게다가 에픽게임즈에서 개발 중지된 자사 AAA 게임인 『파라곤』의 게임 리소스들을 무료로 배포하니까요.

유료로 엔진을 사용하는 경우라면 손익계산을 좀 따져봐야 할 것 같습니다. 매달 꾸준히 정해진 가격만큼 엔진 사용료를 지불하는 것과, 자신이 만든 게임이 팔릴 때마다 로열티 5%씩 지불하는 것 중에서 더 저렴한 경우를 선택하는 거죠. 전자가 더 저렴하다는 결론이 나오면 유니티를, 후자가 더 저렴하다는 결론이 나오면 언리얼을 이용하면 될 것 같습니다.

결국 유료 라이선스는 상황에 따라 다르기 때문에 우열을 가릴 수 없으므로, 무료 라이선스 정책이 더 우수한 언리얼에 손을 들어줘야 할 것 같네요.

2) 한국어화

이건 언리얼이 유니티보다 뛰어납니다. 언리얼은 엔진 인터페이스가 이미 모두 한국어로 되어있고, 공식 문서도 거의 다 한국어화 되었습니다. 영어를 못 한다 하더라도 굳이 인터넷 뒤져가며 유튜브 영상이나 다른 사람의 정보를 찾을 필요 없이 공식 문서만으로도 충분히 엔진 사용법을 익히며 문제 해결이 가능하다는 거죠. 또 에픽게임즈에서 공지사항을 올릴 때도 보면, 공지사항이 모두 한글로 번역된 걸 보기 어렵지 않습니다.

반면에 유니티는 2019년 1월 23일 기준으로 가장 최신 안정화 버전인 2018.3.2f1 버전조차 아직 한국어 지원이 실험 단계에 있을뿐더러, 공식 문서도 아직 완전히 한국어화 되어있지 않습니다. 심지어 공지사항조차 종종 번역되지 않고 원문 그대로 올려져 있는 경우가 있습니다. 참 아쉬운 부분이죠.

3) 2D 성능

두 게임 모두 3D 게임 개발에 전문적인 게임이지만, 2D 게임 개발도 가능하고, 실제로 공식적으로 지원합니다. 그럼 2D 게임을 개발하는 데 있어서는 어떤 엔진을 사용하는 것이 나을까요? 1년 전 영상이기는 하지만 다음 유튜브 영상이 비교에 큰 도움이 될 것 같습니다.(주소 : https://www.youtube.com/watch?v=Ou_90guwUwo)

언리얼 vs 유니티 vs Defold 비교(유튜브 영상)

위 영상에서는 언리얼, 유니티, 그리고 Defold 엔진의 2D 성능을 비교했는데요, 태블릿 모바일 환경에서 스프라이트의 수에 따른 프레임 수치를 기준으로 삼아 2D 성능을 비교했습니다. 일단 영상의 결론부터 말씀드리자면 Defold가 1등, 유니티가 2등, 그리고 언리얼이 꼴찌였습니다.

Defold는 애초에 2D 게임 개발을 전문으로 하는 엔진으로 개발되었기 때문에 제외해보면, 화면에 스프라이트 개수가 백 개 미만일 때는 큰 차이를 보여주지 않다가, 백 개 이상일 때부터 유니티에 비해 언리얼이 약 3~4 프레임 정도 떨어지는 모습을 보입니다. 그 이유는 잘 모르겠지만, 일단 이 영상에 따르면 유니티가 언리얼에 비해 2D 측면에서는 더 뛰어난 성능을 보이네요.

물론 2D 게임의 성능을 비교할 때 스프라이트 개수만으로 기준을 삼는 것에는 이견이 있을 수 있습니다. 게임의 종류, 게임이 돌아가는 환경, 2D 그래픽 외 다른 연산 등등의 여러 요소가 2D 게임 성능에 영향을 주기 때문이죠. 게다가 저 영상은 1년 전 영상이기 때문에 지금은 또 다른 모습을 보여줄 수도 있습니다.

그런데 제 경험적인 측면에서 볼 때, 유니티에 비하면 언리얼로 만든 2D 게임은 거의 본 적이 없습니다. 유니티는 『컵헤드』, 『던그리드』 등 2D 게임들이 꽤 있는데, 언리얼로 만든 2D 게임은 해보기는커녕 본 적도 없네요. 언리얼의 3D 성능이 워낙 뛰어나서, 굳이 2D 게임을 만들 필요가 없어서일까요? 아니면 설마 언리얼의 2D 성능이 유니티에 비해 떨어져서?

여하튼 일단은 2D 성능의 측면에서는 위의 유튜브 영상과 제 경험을 고려해봤을 때, 유니티에게 손을 들어주고 싶습니다.

4) 3D 성능

3D 성능은 사실 2D 성능보다 영향을 주는 요소들이 더 많아서 비교가 힘듭니다. 게다가 제가 3D 쪽은 관심이 별로 없기 때문에 제 입장에서는 사실 유니티와 언리얼의 3D 성능 비교하기가 불가능하죠. 그래서 이것은 제가 이곳저곳에서 보거나 들은 정보로만 비교할 수 있을 것 같습니다.

유튜브에서 그냥 ‘Unity vs Unreal’이라고 검색하시면 유니티와 언리얼의 3D 그래픽을 비교하는 영상들을 쉽게 찾아볼 수 있는데, 일단 보이는 것만으로는 어느 한쪽의 손을 들어주기가 힘듭니다. 혹자는 만화 같은 3D 그래픽을 표현하는 데 있어서는 유니티, 현실 같은 그래픽을 표현하는 데에는 언리얼이 뛰어나다고 말합니다. 그러나 유니티의 『RECORE』를 보시면 유니티에서도 현실 같은 그래픽을 표현한 게임을 만들기도 합니다. 또 언리얼의 『드래곤볼 파이터즈』는 만화보다 더 만화 같은 그래픽을 자랑하는 게임이죠.

그러나 이쪽저쪽에서 흘러들은 정보를 기준으로 본다면 언리얼이 유니티보다 우수하다고 합니다. 실제로 이미 언리얼은 압도적인 3D 그래픽으로 명성이 자자합니다. 국내 게임사에서 게임을 홍보할 때 ‘언리얼 엔진으로 만든 게임’이라는 걸 아예 자랑하는가 하면, 게이머 입장에서도 언리얼로 만든 게임이라고 하면 게임 그래픽이 얼마나 좋을지 기대되기도 하죠. 그런데 유니티로 만든 게임 중에서는 ‘유니티 엔진으로 만들었다!’라고 광고하는 걸 본 적이 없네요. 아마도 언리얼이 유니티보다 같은 하드웨어 시스템에서 3D 그래픽을 더 섬세하고 잘 표현할 수 있기에, 그만큼 훌륭한 3D 그래픽 게임을 만들기 쉬워서이지 아닐까 싶습니다.

게다가 실제로 언리얼로 만든 유명한 게임 중에서는 뛰어난 3D 그래픽을 자랑하는 게임들이 많은 반면, 유니티에서는 그런 게임들을 찾기가 힘든데, 아마 언리얼과 유니티의 3D 그래픽 성능의 차이에 따른 결과가 아닐까 싶습니다.

5) 엔진의 무게

엔진의 무게는 유니티가 언리얼보다 가볍습니다. 일단 두 엔진의 용량 자체도 언리얼이 유니티보다 무겁습니다. 그래서 저는 언리얼을 설치하고자 할 경우, 하드디스크를 정리해야 합니다. 만약 하드디스크를 정리하지 않는다면, 저의 1번 드라이브 SSD 용량이 120GB밖에 안 돼서 2번 드라이브인 HDD에 설치해야 합니다. 아시다시피, HDD는 SSD보다 속도가 느리죠. 반면에 유니티는 디스크 정리할 필요 없이 저 좁아터진 SSD 용량에 바로 설치할 수 있습니다. 그래서 유니티가 더 빠르게 느껴지나 봐요.

또 제 시스템 사양으로는 언리얼이 잘 돌아가지 않는 반면, 유니티는 쌩쌩 잘 돌아갑니다. 참고로 제 시스템 사양은, CPU는 i5 3550, RAM은 DDR3 8GB, 그리고 VGA는 GT1030입니다. 『오버워치』를 중옵으로 겨우 돌릴 정도의 사양이죠. 실제 각 엔진의 공식 홈페이지에서 제공하는 요구 사양을 봐도 유니티의 요구 사양이 언리얼보다 낮습니다. 이건 유니티의 승이네요.

유니티 2018.3 버전 공식 요구 사양

언리얼 공식 요구 사항

6) 난이도

보통 유니티가 쉽고, 언리얼이 어렵다는 인식이 있습니다. 하지만 정말 그럴까요? 유니티는 스크립트 언어로 C#을 사용하는 반면, 언리얼은 Unrealscript라는 C++을 바탕으로 한 자체 개발 스크립트 언어를 사용합니다. 참고로 프로그래머들 사이에서는 C++ 이 C#보다 사용 난이도가 어렵다고 합니다. 물론 언리얼은 C++을 개량한 Unrealscript를 사용하지만, 그래도 C++을 바탕으로 하고 있는 만큼, 그 난이도가 어디 갈 거라고 생각되진 않습니다. 이러한 면에서 볼 때는 정말로 유니티가 언리얼보다 더 쉬워 보이네요. 하지만 언리얼은 ‘블루프린트’라고 해서, 코딩 없이 게임을 개발할 수 있게 해주는 기능을 공식적으로 제공합니다. 쉽게 말해, C#이니 C++이니 그런 거 몰라도 언리얼은 게임을 개발할 수 있다는 것입니다. 이런 점에서 보면 언리얼이 유니티보다 더 개발 난이도가 낮은 것 같습니다.

게다가 아까 말씀드렸다시피, 언리얼은 인터페이스와 공식 문서가 공식적으로 한국어화 되어있습니다. 그러나 유니티는 아직 한국어 지원이 실험 단계에 있어서, 유니티를 처음 설치하고 실행하면 다 영어로 되어있습니다. 처음 게임 엔진이라는 것을 접하는 한국인 입장에선 언리얼이 더 익숙하겠죠. 게다가 언리얼은 개발하다가 모르는 것이 생기면 공식 문서를 활용하여 해결할 수 있습니다. 그에 비해 유니티는 공식 문서조차 아직 완전히 한국어화 되어있지 않습니다. 모르는 게 생겨도 공식 문서만으로는 완전히 이해하기 어려운 경우가 종종 생길 수 있습니다. 이런 면에서 볼 때도 언리얼이 유니티보다 더 쉬워 보입니다.

그래서 스크립트 언어 자체는 유니티가 더 쉽다고 생각되지만, 전체적인 입문 난이도를 고려하면 개인적으로 언리얼에 손을 들어주고 싶네요.

3. 결론은?

이렇게 총 여섯 개의 항목에서 유니티와 언리얼을 비교해봤습니다. 한 항목에서 상대 엔진을 이길 때마다 1점을 부여하면, 유니티가 2D 성능, 엔진의 무게 항목에서 +2점, 언리얼이 라이선스, 한국어화, 3D 성능, 난이도 항목에서 +4점을 얻었으므로, 언리얼이 최종적으로 4:2로 이겼… 다고 말할 수 있을까요?

단순히 항목마다 동등하게 1점씩 부여하는 건 큰 의미를 갖기 힘들다고 생각합니다. 사람에 따라 중요하게 여기는 항목이 다르기 때문입니다. 저의 경우에는 2D 게임을 만들고 싶었고, 컴퓨터 사양도 낮았기에 2D 성능 항목과 엔진의 무게 항목이 매우 중요하게 다가왔습니다. 그래서 이 두 항목은 제게 있어서 1점이 아니라 2~3점에 가까웠던 반면, 3D 성능은 제게 있어서 거의 0점에 가까웠고, 한국어화도 거슬리기는 하지만 크게 신경 쓰이는 부분은 아니었으니까요.

그리고 이렇게 직접적으로 비교해서 두 엔진 간의 차이가 크게 느껴져서 그렇지, 사실 두 엔진 모두 훌륭한 엔진입니다. 유니티가 언리얼보다 한국어화 지원이 부족하다고는 하나, 사실 유니티만큼이라도 한국어화 지원이 되는 엔진들이 거의 없습니다. 또 2D 성능이 언리얼이 유니티보다 나쁘다고는 하지만, 언리얼로 2D 게임을 못 만들 수준이란 건 아닙니다. 충분히 훌륭한 2D 게임을 만들 수 있습니다. 3D 성능이 유니티가 언리얼보다 떨어져 보이지만, 유니티로 만든 3D 게임들이 여전히 계속 출시되고 있는 걸 보면, 유니티의 3D 성능이 나쁘다고 말할 수 있을까요?

결론은 유니티나 언리얼이나 둘 중 아무거나 고르셔도 좋다는 것입니다. 제가 저번 편에서 모범적인 1인 개발 게임의 사례로 『언더테일』을 언급했는데요, 『언더테일』은 유니티랑 언리얼이 아닌 ‘게임메이커’라는 게임 엔진으로 만들어졌습니다. 이 엔진이 잘 알려지지 않은 엔진은 아니지만, 그렇다고 해서 객관적으로 유니티와 언리얼보다 훌륭하다고 말하긴 힘든 엔진이기도 합니다. 게다가 『동굴 이야기』는 따로 다른 상용 엔진을 사용해 만들어진 게임이 아니죠. 이런걸 보면 엔진도 중요하지만 결국 게임의 질은 게임 개발자의 노력에 달려있다고 말할 수 있겠네요.

혹시 더 정보가 필요하시다면, 인벤의 ‘윤홍만’ 기자께서 쓰신 아래 기사가 도움이 되지 않을까 싶습니다. (기사 주소: http://www.inven.co.kr/webzine/news/?news=177855)

Ⅵ. 마치며

이렇게 해서 ‘혼자 취미로 게임 개발하기’를 주제로 한 제 글은 마무리가 된 것 같습니다. 원래 ‘게임 개발 관련 서적’까지 해서 다섯 개의 글을 쓰려고 했는데, 제가 읽은 책들이 다 유니티에만 국한된 서적들이라 다른 엔진을 사용하기로 결정한 분들에게는 도움이 안 될 것 같아서 쓰지 못했네요… T^T

사실 처음 글을 쓰기 전에 생각한 글의 구상은 완벽했는데, 막상 이렇게 글로 쓰니 엉망진창인 것 같네요. ‘이런 글을 쓰면 좋을 것 같다!’ 하고 글을 쓰기 시작했는데, 생각보다 제가 모르는 게 많고… 일단 떠오르는 대로 막 글을 쓰는데 가독성도 떨어지고… 글을 다 썼다 싶어서 발행하고 다시 보니 각종 오타…

게임 제작도 그런 것 같습니다. ‘이런 게임을 만들면 재밌겠다!’ 하고 만들기를 시작했는데, 내가 생각하고 있는 게임에 대해 정작 나 조차도 모르는 게 많고… 일단 어떻게든 만들고 있는데 게임이 별로 재미없는 것 같고… 기능 구현에 성공했다 싶어서 테스트하니 각종 버그와 오류… 그래도 게임 개발을 계속하는 건, 제가 게임을 너무 좋아하기 때문이겠죠.

다른 훌륭한 브런치 작가분들의 훌륭한 글들이 많음에도 불구하고, 읽기도 힘든데 재미없는 제 글들을 꾸준히 읽어주신 분들에게 감사의 말씀을 드립니다. 일단 브런치 작가가 되었으니, 다음에는 어떤 글을 써야 할지 생각을 좀 많이 해야겠네요.

여러분도 부디 포기하지 마시고 좋은 게임을 만드시길 바랍니다.

감사합니다.

스압) 언리얼 vs 유니티 진지빨고 비교분석해보는 글

일단 나는 언리얼 유니티 둘다 써보긴했지만, 지금은 유니티만 쓰는사람이다. (내가 하는 플젝이 유니티가 더 유리해서 그렇다)

그래도 신기술 보는건 좋아해서 유나이트랑 언리얼서밋 꾸준히 보고, 언리얼5 관련해서도 따로 더 서치해봤다.

핵심키워드들(이번엔 Nanite랑 Lumen)도 무조건 다 파악하고 넘어가는 편이다.

컴퓨터 그래픽스 관련 전공으로 석사도 했고, 유니티 언리얼 떡밥은 게임개발하면 맨날 나오는 떡밥이라 엔진 비교관련 서치도 많이 했었다.

코로나 터지기 전에도 컨퍼런스다니면서 티셔츠 받고 그랬다.

내가 지금 유니티 사용자다보니 글 쓰면서 유니티를 좋게 평가하는 시선이 없진 않겠다만

유니티 사용하면서 유니티에 빡쳤던것도 많아서, 유니티 단점 깔껀 확실히 까면서 중립기어 박고 분석글 한번 써보려고한다.

언리얼은 내가 지금은 사용자가 아니기때문에, 내 얘기가 깊게 들어갈수록 실무/현업에서 봤을 때 온도차이가 좀 있을수도있다.

-목차-

1. 단순 엔진 스펙비교

2. 입문 난이도

2.1 블루프린트?

2.2. C# vs C++

3. 점유율

4. 방향성

1. 단순 엔진 스펙비교

누가 언리얼 유니티 비교를 VS랑 메모장으로 해놨던데, 완전 틀린 비유는 아니지만 좀 의도적으로 유니티 까내리려는 비약이 심한 것 같다.

진지빨고 비유를 하자면, Visual Studio랑 VS Code 정도로 비교하면 더 적절할 것 같다.

VS Code는 아주 가볍고 다양한 플러그인으로 커스텀 할 수 있는데, 이게 유니티 UPM 생태계랑 꽤 비슷하다.

유니티는 가볍고, 언리얼은 무겁다.

언리얼이 무겁다는건 정말 크게 와닿는 단점이다.

예를 들어, 아티스트가 월드에 라이트를 배치및 이동하면서 꾸미는 경우 라이트를 베이킹할때마다 시간이 뒤지게 오래걸려서 생산성에 직접적인 타격이 있다.

에픽게임즈도 이런 단점을 인지하고있고, 언리얼 5에 소개된 기술인 Lumen을 얘기할 때, Lightmap baking을 하지 않아도 된다는 점을 통해 생산성 측면을 어필했다.

자료 : 언리얼엔진 5 소개 – https://www.unrealengine.com/en-US/blog/a-first-look-at-unreal-engine-5

(이건 여담이지만, Lumen도 결국 런타임 퍼포먼스는 Light baking에 못비비기때문에, 상위호환이아니라 케바케로 선택되는 고유포지션이다.)

자료 : 레딧 주제 – Lumen이 Lightmap을 대체할 수 있는가? – https://www.reddit.com/r/unrealengine/comments/ieko9g/could_ue5_lumen_replace_lightmaps/

그러나, 언리얼이 개발할 때 퍼포먼스가 안나오는만큼 개발결과물의 퍼포먼스는 언리얼이 더 좋은편이다.

유니티도 이 점을 확실히 인지하고 있으며, 유니티의 목표도 ‘언리얼을 뛰어넘는 그래픽 퍼포먼스’ 가 아니라 ‘언리얼만큼 뛰어난 그래픽 퍼포먼스’ 이다.

자료 : ADAM – https://unity3d.com/pages/adam

위 짤은 유니티에서 5년도 더 전에 Cinematic Sequencer를 통해 제작한 실시간 렌더링 단편영화다. (GDC에서 시연할 때 실시간 조작으로 카메라시점을 돌리는 등 인증했다.)

GTX980 에서 1440p로 60fps 돌아간다.

내생각엔 거의 언리얼 저격해서 내놓은 데모이고, 실제로 유니티 관계자들도 ‘언리얼 만큼 뛰어난 결과물을 낼 수 있다’ 는 말을 할 때 보여준다.

‘언리얼을 뛰어넘는 결과물’은 절대 아니다. 애초에 그걸 목표로 하고있지도 않다.

그래픽을 극한까지 뽑아내고 나면, 언리얼이 더 잘나온다. (Unity 한국지사소속 TA랑 사석에서 얘기했을 때 그사람도 인정한 내용이다.)

근데 반대로 말하면, 극한까지 뽑아먹을 거 아니면 유니티 써도 무방하다는 얘기가 된다. 유니티가 노리고있는 포인트가 이것이다.

가볍다는 장점을 활용하여, ‘언리얼 못지않은 아웃풋을 낼 수 있으면서 생산성이 뛰어난 엔진’의 포지션을 잡고있다.

2. 입문 난이도

중급자 기준 유니티는 쉬운편이고, 언리얼은 어려운편이다.

굳이 중급자라고 달아놓은 이유는, 초급자 기준에선 양쪽 다 배울게 산더미니 난이도 비교가 무의미하고, 고급자는 난이도를 따지지 않기때문이다.

초급자 기준으로는 블루프린트때문에 언리얼이 더 쉬울 수 있는데, 블루프린트 떡밥도 내가 귀에 딱지 앉도록 들은거라 짧게 정리하고 넘어간다.

2.1 블루프린트?

블루프린트는 이름부터가 ‘설계도’ 라는 뜻이다.

비 프로그래밍 직군이 간단하게 프로토타이핑 하거나, 플머가 구현해준 기능을 확장 할 수 있게 지원하는 목적으로 나온 기능이다.

자료 : 언리얼 공식 도큐 블루프린트 소개 – https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/Blueprints/GettingStarted/

물론 블루프린트도 Turing Complete 하기때문에, 구현하지 못하는 기능은 없다. 근데 그게 모든걸 다 할 수 있다는 뜻은아니다.

기능 구현은 됐는데, 성능 최적화나 더 나은 구조로의 개선이 필요한 상황일 때 매우 제한적일 수 밖에 없다.

자료 : 언리얼포럼 블루프린트 한계점 – https://forums.unrealengine.com/t/blueprints-limitations/36562

너가 ‘프로그래머’ 직군이라면, 블루프린트만 가지고 일정 수준이상 아웃풋을 내겠다는 꿈은 지금 즉시 버려야한다.

그렇기 때문에 블루프린트가 쉽다는 이유로 언리얼 입문을 생각하는 ‘프로그래머’는 없길 바란다.

물론 블루프린트가 아예 안쓰이는건아니다. 코딩할때도 생산성을 챙기기위해 모듈화 후 모듈 내부는 대충 짜는 경우가 있다. 마찬가지로 블루프린트도 국소적으로 쓰면 생산성에 뛰어난 강점이 존재한다. Nativization 옵션을 켜면 상황따라 퍼포먼스도 꽤 챙길 수 있다.

중급자 난이도가 갈리는 이유는 여러가지가 있겠지만, 제일 주요한 두가지를 뽑으면 프로그래밍 언어차이, 도움받을 수 있는 자료 량의 차이다.

주로 사용하는 언어가 유니티는 C#, 언리얼은 C++이다.

언어 비교는 엔진 떡밥보다는 언어 떡밥에 가까우므로, 여기서 설명은 하겠지만 다른 자료를 더 찾아보길 권장한다.

2.2 C# vs C++

C#은 high-level 언어고, C++은 low-level 언어이다.

레벨이 높다고 좋다는뜻이 아니라, 얼마나 인간에게 친숙한 언어인지에 대한 추상화 척도이다. C#은 인간에게 친숙하고, C++은 기계에게 친숙하다.

C++이 기계에 친숙하다는 뜻은, 컴퓨터 구조가 직접적으로 드러나 보이는 형태의 언어라는 뜻이다.

그래서 컴퓨터공학/과학을 가르치는 커리큘럼에서는 C/C++을 이용해 컴퓨터 구조에 대한 이해도를 높이는 교육방법을 주로 쓴다.

C#이 인간에게 더 친숙한 언어이므로 더 쉽게 배울 수 있고, 생산성이 좋지만, 결국 프로그래머는 컴퓨터 입장에서 생각해야하는 사람이다. 언어가 추상화 되어있더라도, 더 나은 코드를 작성하기 위해서는 내부 구조에 대한 이해는 수반되어야한다. 진짜 고급자라면 C/C++, 더 나아가서는 어셈블리와 컴파일러 수준의 지식까지 습득하고 C#을 사용하는것이 권장된다.

C++은 기계에 더 친숙한 언어이므로 더 세부적인 컨트롤이 가능하고, 성능상의 이득도 많다. 하지만 결국 인간이 프로그래밍 하기때문에, 인간의 실수를 통해 손해보는 상황이 C#보다 더 자주 발생한다. 세부적인 컨트롤이 가능한 만큼 생산성 측면에서는 손해보는 것도 있다.

C#은 메모리 관리를 GC가 알아서 해주지만, 알아서 해주기때문에 GC Spike같은 프리징현상을 피하기 위해 직접적인 해결책을 쓰기 어렵다. 하지만 정말 크리티컬 한 부분에 대해서는 Marshal.AllocHGlobal 같은 Unmanaged Memory를 사용할 수 있고, unsafe 코드 작성을 통한 마이크로 최적화도 가능은하다.

C++은 메모리를 직접 관리해야하므로 타임퍼포먼스 이슈에서는 자유로울 수 있지만, 인간은 언제나 실수를 하기때문에 메모리 누수문제와 평생 싸워야한다. 하지만 C++도, 댕글링 포인터를 막을 수 있는 스마트 포인터같은 기능이 점점 추가되고, IDE와 프로파일러의 발전으로 메모리를 트래킹할 수 있는 수단이 늘어나서 꽤 완화되는 추세이다.

본인이 프로그래밍과 게임제작을 둘다 처음하는 초급자라면, 사실 엔진 뭐 하든 별 상관없다. 뭐가 무조건 더 상위호환이고 그런건 존재하지않는다. 다 케바케다. 이 케바케를 일일히 컨설팅 해줄 사람이 옆에 있는거아니면 걍 꼴리는거해라.

게임제작에 필요한 정보량을 전체로 놓고봤을때 ‘엔진 기능에 대한 학습’이 차지하는 비중은 솔직히 작은편이다. 그리고 C++배우고나면, C#도 금방하고.. 반대도 마찬가지다. 다른엔진으로 갈아탄다고해도, 예전에 학습했던 내용도 다 의미있는 내용이다. 물론 각잡고 깊게 팔 때가 되면, 적합한 엔진 골라서 깊게 파는게 효율이 좋지만, 그 수준까지 가면 이미 스스로 엔진 고를 능력이 생긴다.

뭐 그래도 본인이 큰 그림을 그리고 맞춤형 셋팅을 하고 싶으니까 엔진을 굳이 저울질하는걸텐데, 그러면 자기 최종 목표에 맞는 엔진을 골라서 쓰는게 좋다.

고사양의 3D그래픽 PC~콘솔 게임, 대형프로젝트를 지향한다면 언리얼이 적합하다.

모바일이나 2D그래픽~2.5D그래픽 게임, 중소형프로젝트를 지향한다면 유니티가 적합하다.

나는 아래와 같은 2D 모바일게임을 만드는중이라, 유니티 엔진이 아주 적합하다고 볼 수 있다.

혼란을 틈탄 내 게임 홍보 : PV영상 – https://www.youtube.com/watch?v=phPIf_9NDC4

아니면 중급자 기준으로 쉽고 소규모플젝에서 생산성 좋은 유니티로 빠르게 경험을 쌓고 보는것도 아주 추천할만한 테크트리다.

답정너로 유니티 쓰라는거 아니냐는 생각이 들 수 있는데, 유니티는 입문할 때 장점이 확실히 존재하고 그건 점유율이 말해준다.

3. 점유율

유니티는 쉽고, 가볍고, 자료가 많기때문에 엄청난 점유율을 보유하고있다.

점유율이 높기때문에, 자료도 많아서 더 입문 하기 쉬워지는 선순환이 반복되는중이다.

아래는 게임엔진 점유율 비교 자료이다.

자료 : 유니티와 언리얼의 점유율 – https://www.valuecoders.com/blog/technology-and-apps/unreal-engine-vs-unity-3d-games-development/

자료 : 게임엔진 점유율 – https://www.linkedin.com/pulse/unity-unreal-developers-kobayashi-maru-glenn-lusk

자료에 다 더해서 100%가 넘는이유는 사용 통계이므로, 언리얼이랑 유니티 둘다 쓴다고 응답하는 사람도 있고해서 그렇다.

Primary(주로쓰는거 하나)로 통계냈을때는 100프로 안넘는다.

보다시피 유니티는 점유율 측면에서 압도적이다.

(물론 점유율이 게임엔진의 성능을 말해주진않는다)

점유율이 높은이유는 아까도 말했듯이 입문이쉽기 때문이다. 그리고 유니티가 마케팅에 돈을 더 쏟아붓는 점도 확실히 있다.

유니티가 접근성이 좋은탓에 ‘언리얼이 더 적합한 프로젝트를 지향하는 사람도 유니티로 시작하는 경우’가 생긴다.

언리얼도 이걸 알고 있기때문에, 그 사람들을 끌어오기 위한 전략을 사용하는 중이다.

자료 : 유니티 개발자를 위한 언리얼 입문서 – https://docs.unrealengine.com/4.26/en-US/Basics/UnrealEngineForUnityDevs/

유니티에서 언리얼 갈아타는 사람들을 빠르게 정착시킬 수 있는 도큐먼트를 적극적으로 제공하는중이다.

AAA급 게임을 지향하는 개발자도, 유니티로 입문해서 성장하고 언리얼로 갈아탄 뒤 본인의 꿈을 펼칠 수 있는 것이다.

4. 방향성

일단 기업입장에서 방향성을 보았을 때, 유니티랑 언리얼은 일단 서로 바라보고있는 곳이 다르다.

유니티는 멀티플랫폼/메타버스/VR/AR등등 최신 유행하는 키워드들을 많이 바라보고 있고,

언리얼은 유니티랑 비교했을때는 AAA급 게임 하나만 우직하게 보고있는 편이다.

유니티는 빠르게 변화하고 새로운 기술을 계속 시도하는 모습을 보인다. 일단 만들고 아닌거같으면 갈아엎고 뿌신다.

그리고 새로운것들을 계속 만들어내고 그걸 자주 뿌리고 어필한다.

이런 유니티의 성향과 아주 좋은 시너지를 내는게 UPM이라고 생각한다.

언리얼은 장인정신으로 우직하게 자기할일하면서, 이번에 언리얼5 처럼 큰거 하나씩 던진다.

유니티 테크놀로지의 에반젤리스트팀 규모와 에픽게임즈의 에반젤리스트팀 규모를 비교해보면 확실한 차이를 볼 수 있다.

자료 : 언리얼 에반젤리스트 팀 – https://www.unrealengine.com/en-US/programs/unreal-indies/meet-the-team

자료 : 유니티 에반젤리스트 팀 – https://unity.com/kr/community/advocates

이런 기업 성향차이는 주식상장여부랑도 관련이 있다.

우직하게 자기 할일 하는 에픽게임즈는 비상장이고, 빠르게 최신 유행 키워드들을 섭렵하려고 노력하는 유니티테크놀러지는 상장회사이다.

뭐 그외에도 유니티 언리얼 사이 차이는 많이 있다.

언리얼은 소스코드를 공개하고, 유니티는 소스코드를 공개 안한다. 이 때문에 로우레벨 커스터마이징 가능한 정도가 차이가 나지만,

반대로얘기하면 이 때문에 언리얼은 이슈대응을 잘 안해준다는 뜻이기도하다.

사실 쓰자면 2박3일 쓸 수 있지만, 배달시킨 치킨이 왔기때문에 이만 줄인다.

대충 3줄요약하면 결론은 이렇다.

1. 초급자수준에서는 엔진 비교 의미없다.

2. 뭐가 뭔지 잘 모르겠으면 나는 유니티로 시작하는걸 권장한다.

3. 그냥 다른 방향성의 엔진이고 누가 우위다 라고 얘기하긴 힘들다.

[논문]유니티와 언리얼 엔진 4의 구조와 구현 방식 비교 연구

초록

게임 산업에서 전통적인 게임 개발은 자체 엔진을 사전에 개발하여 게임 콘텐츠를 완성하는 방식이었다. 이로 인해 게임을 개발할 때마다 자체 게임엔진을 개발하는 비용부담이 크다는 단점을 가지고 있다. 또한, 게임 콘텐츠와 게임엔진이 독립적인 형태로 개발이 되어야 하지만 게임엔진이 사전에 마련되지 않으면 게임 콘텐츠가 개발되지 않는 문제점을 갖는다. 이러한 문제점을 해결하기 위해 최근 게임 산업에서는 게임엔진 구현에 집중하기보다는 게임 콘텐츠 생산성을 높이는 방법인 상용 엔진의 라이선스를 구매하여 개발하는 방식을 선택하고 있다. 본 논문에서는 컴포넌트 기반 시스템(Component-Based System)이고 시장 점유율이 가장 높은 게임엔진인 유니티와 언리얼 엔진을 대상으로 두 엔진의 구조, 에디터 인터페이스, 그리고 지원하는 개발 언어를 비교하여 각 게임엔진이 가진 특징들을 분석한다. 특히, FPS(First-Person Shooter) 게임의 구현을 통해 두 엔진에서의 플레이어 구성과 이벤트 처리 방식의 차이를 비교 설명하였다.

Top 유니티 vs 언리얼 Update

현재 보고 있는 주제 유니티 vs 언리얼

언리얼 엔진 vs 유니티 엔진 – 나무위키 최신

이러한 차이 때문에, 양 엔진의 에셋 스토어에서 뭔가 고급 기능들을 보면 유니티의 경우 엔진에서 돌아가는 스크립트 코드 혹은 엔진과 함께 돌아가는 …

+ 여기서 자세히 보기

언리얼 엔진 한달 공부한 결과 (+느낀점) New Update

동영상 보기

주제에 대한 새로운 업데이트 유니티 vs 언리얼

이번에는 7월 한달 간 언리얼을 어떻게 공부했는지를 영상으로 만들었습니다.

공부를 하면서 느낀 어려움, 유니티와의 차이점 등에 대해서도 넣어보았습니다. 유니티만 몇 년간 사용하다가 언리얼 1달 공부한 후에 만든 영상이니(매우 주관적!), 참고해주시면 감사하겠습니다.

#언리얼 #게임개발 #UNREAL

유니티 vs 언리얼주제 안의 관련 사진

언리얼 엔진 한달 공부한 결과 (+느낀점) Update

스압) 언리얼 vs 유니티 진지빨고 비교분석해보는 글-[인디 게임 … New Update

누가 언리얼 유니티 비교를 VS랑 메모장으로 해놨던데, 완전 틀린 비유는 아니지만 좀 의도적으로 유니티 까내리려는 비약이 심한 것 같다.

+ 여기서 자세히 보기

언리얼 엔진과 유니티! 누가 황제일까? New

동영상 보기

주제에서 더 많은 유용한 정보 보기 유니티 vs 언리얼

[Described]

안녕하세요. 이우의 인포도어입니다.

게임 엔진의 개발 시작 시기별로 연도를 계산하여,

실제 이용자들의 체감과는 다소 상이한 부분이 있을 수 있습니다.

욕을 하셔도 너무 좋으나,

재미 없다고 하시면.. 슬퍼요…

────────────────────

[Contents]

00:00 게임엔진 소개

00:45 언리얼 엔진(1)

02:11 언리얼 엔진(2)

02:42 유니티(1)

04:29 유니티(2)

05:48 언리얼 엔진(3)

06:25 언리얼 엔진 vs 유니티

────────────────────

[Contact] [email protected]

────────────────────

[Music Source Support]

Sunny – LiQWYD : https://www.youtube.com/watch?v=_2DHIB99cQc

────────────────────

[Video Source Support]

Youtube channel \”freeticon\” : https://www.youtube.com/c/Freeticon

유니티 vs 언리얼주제 안의 멋진 사진을 볼 수 있습니다

언리얼 엔진과 유니티! 누가 황제일까? New

유니티(Unity) VS 언리얼 엔진(Unreal Engine) – 네이버 블로그 Update

유니티(Unity) VS 언리얼 엔진(Unreal Engine). 프로필. 감귤오렌지. 2019. 4. 30. 0:08. 이웃추가 … 유니티를 3년, 언리얼을 6개월 정도 써봤습니다.

+ 여기서 자세히 보기

Unity vs Unreal | Graphics Comparison Update

동영상 보기

주제에서 더 많은 유용한 정보 보기 유니티 vs 언리얼

♦ Don’t forget to SUBSCRIBE for more!

♦ Discord: https://discord.gg/4kRCajN

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

♦ Make sure to join us at DISCORD!

https://discord.gg/4kRCajN

I was planning to finish this video that I had started a while ago, but never got into it. Today, I decided

to make a new video (since I have a day off), but I’m a little sick, so I decided therefore to not make my

throat worse with a commentary. Instead, I just finished this video! 🙂

I hope you guys enjoy this one. I put quite a lot of time into it to make sure the scenes look as similar as possible

in terms of post processing. The models are from different authors, but I tried mixing them and finding the closest possible ones.

▬▬▬

♦ Check out these videos too!

• DISCORD Server for Game Dev, GIVEAWAYS, Game Jams, and MORE!

• Unity vs Unreal Engine | Graphics Comparison

▬▬▬

♦ Links:

• Discord: https://discord.gg/4kRCajN

• My Website: http://www.sykoos.com

• Twitter: http://www.twitter.com/sykoosam

• YouTube: http://www.youtube.com/SykooTV

▬▬▬

Partnered by Curse, UnionForGamers.

Owner of MESVER \u0026 MESVER NETWORK

http://www.mesver.com

유니티 vs 언리얼주제 안의 사진 몇 장

Unity vs Unreal | Graphics Comparison New

언리얼vs유니티, 두 엔진 모두 써 본 현업 개발자에게 직접 물었 … New Update

이에 인벤은 유니티와 언리얼 엔진을 모두 써 본 개발자 2명에게 각 엔진 정책 중 어떤 것이 매력적이며 어떤 선택을 해야 하는지 질문해 보았습니다. 유우원 개발자 넥슨 …

+ 여기서 자세히 보기

2021 년 Unity VS 언리얼 엔진 | 최고의 게임 엔진은 무엇입니까? New Update

아래 동영상 보기

주제에 대한 새로운 정보 유니티 vs 언리얼

Unity VS Unreal Engine in 2021. What is the best game engine and which one should you use? In this video, I break down several topics talking about the pros and cons of each regarding each engine, and then reach a verdict on which engine does that one thing best. Hopefully, this information helps inform you and gives you an idea of which game engine is best for you.

Timestamps:

0:00 Intro

1:07 Graphics

4:55 Learning Curve

9:15 Coding

14:49 Tools

21:24 Pricing

24:35 Community \u0026 Support

27:44 Summary

My Verdicts:

Unreal Wins on Graphics, Tools, and Pricing

Unity Wins on Learning Curve, Coding, and Community

Sykoo’s Channel – https://www.youtube.com/user/SykooTV

Udemy Courses that you might like:

C# Unity Developer 2D Coding – http://bit.ly/3nnONrX

The Ultimate Guide to Unity Games Development – http://bit.ly/3bfnVId

The Complete Guide to 3D Modeling with Blender – http://bit.ly/3nbhqbH

******************ASSET STORE******************

Unity New Years Sale (Affiliate) ► http://bit.ly/3rIZl8o

Unreal Engine Marketplace ►http://bit.ly/34wpkpD

A couple of my favorite Unity assets (Affiliate)

Odin Inspector ► http://bit.ly/3nnPMs8

Beautify 2 ► http://bit.ly/3neOYFB

********************SUPPORT********************

Twitter ► https://twitter.com/BrendanDickins

Instagram ► https://www.instagram.com/_BrendanDickinson

My YouTube Gear ► https://kit.co/BrendanDickinson/brendan-s-youtube-gear

Merch ► https://merch.streamelements.com/brendandickinsonunity

*********************MUSIC**********************

Rooftops by Harris Heller ► http://spoti.fi/3q2bMun

#unityvsunreal #gameengine #gamedevelopment #howtomakeagame #unrealengine4 #unity2020 #tips #videogames #gamedev

유니티 vs 언리얼주제 안의 사진 몇 장

2021 년 Unity VS 언리얼 엔진 | 최고의 게임 엔진은 무엇입니까? Update

[주간 인프런 #8] 게임의 심장, 게임 엔진 – 언리얼 VS 유니티 Update

하지만 유니티는 언리얼보다 상당히 가볍고, TV/웹/모바일 등 멀티플랫폼 지원에 특화되어 있으며, 초기 개발 환경 세팅이 복잡하지 않다는 장점이 있죠.

+ 여기서 자세히 보기

놓치면 후회하는 게임회사 취업 분석 유니티vs언리얼 Update

동영상 보기

주제에 대한 새로운 정보 유니티 vs 언리얼

놓치면 후회하는 게임회사 취업분석

게임회사가 선호하는 게임엔진은? 유니티vs언리얼

게임회사 취업시 게임엔진 선택

#유니티강좌 #언리얼엔진 #게임회사 #게임개발

유니티 vs 언리얼주제 안의 멋진 사진을 볼 수 있습니다

놓치면 후회하는 게임회사 취업 분석 유니티vs언리얼 Update

내가 언리얼에서 유니티로 되돌아 온 이유 – BatStudio Update New

한국에서 유니티 엔진을 계속 사용하다가 독일에 와서 VR 게임을 개발하게 되면서 언리얼 엔진을 처음으로 사용하게 되었습니다. 유니티와 비슷해 보이면서도 다른 …

+ 여기서 자세히 보기

[Q\u0026A]유니티와 언리얼 중 무엇으로 시작해야 할까요? Update New

동영상 보기

주제에 대한 새로운 정보 유니티 vs 언리얼

궁금하신점이 있으시면 댓글이나 메일보내주세요.

[email protected]

유니티 vs 언리얼주제 안의 사진 몇 장

[Q\u0026A]유니티와 언리얼 중 무엇으로 시작해야 할까요? New

메타버스 핵심축 ‘언리얼·유니티’ 차세대 전략으로 정면 승부 업데이트

각종 산업군에서 사용하는 대표 엔진 개발사는 언리얼 엔진의 ‘에픽게임즈’와 유니티 엔진의 ‘유니티‘가 있다. 최근 두 회사는 행사와 간담회를 …

+ 여기서 자세히 보기

Unity vs Unreal | Graphics Comparison 2021 Update

동영상 보기

주제에 대한 추가 정보 유니티 vs 언리얼

Lets have a look at some of the most realistic graphics produced in both Unity and Unreal Engine. (Some of these are featured in VR).

Which of these do you think is Unreal Engine and which is Unity? YOU DECIDE!

Featuring some of the most up to date rendering techniques, post processing, high definition and high quality 3D Models.

🔥 INSANE UNITY SAVINGS 🔥

🕹️Ukraine Unity MEGABUNDLE: https://bit.ly/UkraineUnityMegaBundle

🕹️Unity Lightning MEGABUNDLES: https://bit.ly/UnityLightningDeals

🔥 INSANE HUMBLE SAVINGS: https://bit.ly/HumbleBundleDeals 🔥

🕹️Learn Unity Tutorial Bundle: https://bit.ly/LearnUnityTutorialBundle

🕹️2D/3D Game Art Tutorial Bundle: https://bit.ly/2D3DGameArtTutBundle

🕹️Synty Polygon Bundle: https://bit.ly/SyntyPolygonAssetsBundle

🕹️Music Creator Bundle: https://bit.ly/HumbleMusicCreatorBundle

🕹️Book Coding Bundle: https://bit.ly/JoyOfCodingHumbleBundle

🎁 Get OVER 115 Scripts, Projects and premium content on my PATREON HERE:

http://bit.ly/SpeedTutorPatreon

💬Join the Community Discord:

https://discord.gg/vnhWy6R

💰BIG DISCOUNTS on my website, for my UNITY ASSETS:

(Use the code \”speedtutor-yt-5\” for an additional 5% off)

https://www.speed-tutor.com

💝 Make a donation to the channel:

http://www.paypal.me/speedtutor

00:00 Unity or Unreal?

8:50 Results

Links to the creators below:

1). ArchVizPro Vol. 8: https://tinyurl.com/ww7z62w

2). Realistic Bodrum House: https://tinyurl.com/5x8hente

3). Inirror Office ArchViz: https://tinyurl.com/2p9ppwy6

4). Virtual Production Studio: https://tinyurl.com/23x9eswm

5). R2 House Pack: https://tinyurl.com/y93wsemm

6). ArchVizPro Vol. 6: https://tinyurl.com/dxmyhkhs

7). Smart ArchViz Interior: https://tinyurl.com/wyvnkeen

·························································································

⚡Get Access to Scripts, Projects and Premium Content:

🠺 Patreon: http://bit.ly/SpeedTutorPatreon

⬇️ Check Out My Puzzle Assets – Unity Asset Store: http://bit.ly/SpeedTutorAssetStore

🧩 Adventure Puzzle Kit: http://bit.ly/adventurepuzzlekit

🧩 Safe Unlock System: http://bit.ly/safeunlocksystem

🧩 Chess Puzzle System: http://bit.ly/chesspuzzlesystem

🧩 Examine System: http://bit.ly/examinesystem

🧩 Generator System: http://bit.ly/generatorsystem

🧩 Keypad System: http://bit.ly/keypadsystem

🧩 Gas Mask System: http://bit.ly/gasmasksystem

🧩 Flashlight System: http://bit.ly/flashlightsystem

🧩 Note \u0026 Letter System: http://bit.ly/letternotesystem

🧩 Themed Key System: http://bit.ly/themedkeysystem

🧩 Padlock System: http://bit.ly/padlocksystem

🧩 Phone System: http://bit.ly/phonecallsystem

🧩 Lever Puzzle System: http://bit.ly/leverpuzzlesystem

🧩Valve Puzzle System: https://bit.ly/ValvePuzzleSystem

🧩Fuse Box System: https://bit.ly/FuseBoxPuzzle

⬇️Model Packs:

🧩 PBR Themed Key Model Pack: http://bit.ly/themedkeymodelpack

🧩 PBR Chess Piece – Key \u0026 Fuse Model Pack: http://bit.ly/chesskeyfusemodelpack

························································································

▼ Connect with me:

⭐| Become a Patron: http://bit.ly/SpeedTutorPatreon

💬| Discord: https://discord.gg/vnhWy6R

🐦| Twitter: https://twitter.com/SpeedTutor

📱 | Facebook: https://www.facebook.com/Speedtutoruk

🖥 | Website: http://www.speed-tutor.com

·······················································································

#SpeedTutor #UnityVsUnreal #UnityVsUE4

유니티 vs 언리얼주제 안의 멋진 사진을 볼 수 있습니다

Unity vs Unreal | Graphics Comparison 2021 New

‘개발엔진계 삼성-LG’ 언리얼 vs 유니티, 앞다퉈 혜택 늘린다 New

언리얼과 유니티는 성능 측면 외에도 에픽게임즈와 유니티의 엔진 관련 정책에서도 차이가 있다. 유니티는 교육 등 비영리적 목적으로 유니티엔진을 …

+ 여기서 자세히 보기

Unity vs Unreal : Graphics Comparison (HDRP DEMO) Update

동영상 보기

주제에 대한 새로운 정보 유니티 vs 언리얼

This is my first experiment with Unreal engine 4. I used almost same workflow in both engines and try to create similar results.

I used unreal’s data smith workflow to import all the objects along with materials into the scene.

For the unity I have used High definition Render Pipeline(HDRP) to achieve this result.

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

✅ Download 3D Scene : http://bit.ly/2D3AzrG

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

💎 Watch advanced tutorial on Patreon 💎

http://patreon.com/uguruz/

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

📱Social Links:📱

🔸 Discord https://discord.gg/BmYJC34

🔸 Twitter: https://twitter.com/U_Guruz

🔸 Facebook: https://www.facebook.com/uguruzYT/

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

✅URP Tutorial Series

https://bit.ly/2TRZnv9

✅HDRP Tutorial Series

http://bit.ly/2G73caJ

✅Lighting and Post Processing Series

https://bit.ly/2TS0x9Z

✅Shader Graph Series

https://bit.ly/2Xe2AaE

✅Unity Graphics Demo

https://bit.ly/2XfSRAG

✅ Unity Beginner 3D Game Tutorial Series

https://bit.ly/2ZNTjaY

유니티 vs 언리얼주제 안의 관련 사진

Unity vs Unreal : Graphics Comparison (HDRP DEMO) Update

주제에 대한 추가 정보 유니티 vs 언리얼

Updating

사용자가 주제에 대해 검색한 키워드 유니티 vs 언리얼

유니티 언리얼 취업유니티 언리얼 메타버스게임엔진 점유율언리얼 유니티 그래픽 차이유니티 장점언리얼 블루프린트 vs c++유니티 엔진언리얼 엔진 언어

방금 주제 제목 유니티 vs 언리얼

키워드에 대한 정보 언리얼 유니티

다음은 Bing에서 언리얼 유니티 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 언리얼 엔진과 유니티! 누가 황제일까?

  • 이우
  • 인포도어
  • 언리얼엔진
  • 유니티
  • 언리얼유니티
  • 게임엔진
  • 그래픽엔진
  • 게임그래픽

언리얼 #엔진과 #유니티! #누가 #황제일까?


YouTube에서 언리얼 유니티 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 언리얼 엔진과 유니티! 누가 황제일까? | 언리얼 유니티, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment