당신은 주제를 찾고 있습니까 “언리얼 블루프린트 단점 – 언리얼 엔진 한달 공부한 결과 (+느낀점)“? 다음 카테고리의 웹사이트 https://you.pilgrimjournalist.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.pilgrimjournalist.com/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 윤농 Yunnong 이(가) 작성한 기사에는 조회수 95,060회 및 좋아요 1,390개 개의 좋아요가 있습니다.
…
단점
- 어렵다.
- 언리얼에서 제공하는 표준을 맞추지 않을시 오류가 발생한다.
- 간단한 기능을 구현하기도 복잡할 때가 있다.
Table of Contents
언리얼 블루프린트 단점 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 언리얼 엔진 한달 공부한 결과 (+느낀점) – 언리얼 블루프린트 단점 주제에 대한 세부정보를 참조하세요
이번에는 7월 한달 간 언리얼을 어떻게 공부했는지를 영상으로 만들었습니다.
공부를 하면서 느낀 어려움, 유니티와의 차이점 등에 대해서도 넣어보았습니다. 유니티만 몇 년간 사용하다가 언리얼 1달 공부한 후에 만든 영상이니(매우 주관적!), 참고해주시면 감사하겠습니다.
#언리얼 #게임개발 #UNREAL
언리얼 블루프린트 단점 주제에 대한 자세한 내용은 여기를 참조하세요.
유니티2년 언리얼 1년 가까이 써오면서 느끼는 장단점.
-블루프린트 자료가 많아서 로직 카피한 후 내껄로 만들기 수월하다. -마켓플레이스의 에셋 심사기준이 까다롭다. 일정 퀄리티이상이 아니면 통과시켜주지 …
Source: lfio.tistory.com
Date Published: 8/28/2022
View: 2575
스압) 언리얼 vs 유니티 진지빨고 비교분석해보는 글 – 인디 게임 …
유니티 사용하면서 유니티에 빡쳤던것도 많아서, 유니티 단점 깔껀 확실히 까 … 초급자 기준으로는 블루프린트때문에 언리얼이 더 쉬울 수 있는데, …
Source: m.dcinside.com
Date Published: 3/10/2021
View: 5777
언리얼 엔진 vs 유니티 엔진 – 나무위키
언리얼 엔진 4는 아래에서 언급될 비주얼 스크립팅 언어인 블루프린트와 프로그래밍 스크립트 언어를 함께 사용하여 복잡한 구조나 퍼포먼스가 필요한 …
Source: namu.wiki
Date Published: 6/30/2022
View: 142
블루프린트와 C++ 의 조화 | 언리얼 엔진 문서
블루프린트 네이티브화 를 통해 이러한 문제를 줄일 수 있지만, 몇 가지 단점이 있습니다. 첫째, 쿠킹 워크플로를 변경하므로 쿠킹된 게임의 반복처리 작업이 느려질 …
Source: docs.unrealengine.com
Date Published: 10/6/2022
View: 1396
언리얼vs유니티, 두 엔진 모두 써 본 현업 개발자에게 직접 물었 …
게임을 직접 개발하는 입장에서 느낀, 각각의 엔진이 가진 장단점은 무엇인가요? … 언리얼은 블루프린트를 통해서 아티스트들이 그토록 원하던 ‘코딩없이 표현해 볼 …
Source: www.inven.co.kr
Date Published: 1/7/2021
View: 7618
언리얼 엔진 이해하기
언리얼 엔진의 철학 … Modern Game Engine Architecture – 블루프린트 … 단점 • 전문가의 눈높이를 맞출 만큼 설계 구조가 탄탄하지 못함. • 블루 …
Source: kyoun.tistory.com
Date Published: 2/30/2022
View: 7490
[언리얼]유니티/언리얼? *언리얼 선택하게 된 이유! – 3d
언리얼의 가장 큰 장점 블루프린트 (노드 베이스 프로그래밍) ** … 또한 고퀄리티를 최적화하려고 하면 큰 단점이 되기 때문에, 언리얼로 변경하는 …
Source: bombom3d.tistory.com
Date Published: 3/7/2022
View: 5014
언리얼) [블루프린트 핵심 개념] 정리 – 공부공간
Visual Scripting이다. 노드를 연결한다. 장점 : 컴파일 시간이 짧아 기능을 빠르게 만들고 시연할 수 있다. 단점 : 블루프린트를 c++코드 …
Source: studyfield.tistory.com
Date Published: 8/19/2022
View: 2952
언리얼 엔진 공부하기
일본인 저자의 책. 초보자용. 서평은 극과 극이다. 비추와 강추로 나뉜다. 비추를 하는 쪽은 블루프린트만 다루는 것을 단점으로 …
Source: inspirer9.tistory.com
Date Published: 12/8/2021
View: 1314
주제와 관련된 이미지 언리얼 블루프린트 단점
주제와 관련된 더 많은 사진을 참조하십시오 언리얼 엔진 한달 공부한 결과 (+느낀점). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 언리얼 블루프린트 단점
- Author: 윤농 Yunnong
- Views: 조회수 95,060회
- Likes: 좋아요 1,390개
- Date Published: 2021. 7. 31.
- Video Url link: https://www.youtube.com/watch?v=eNWSO74pSaY
고래가 날아간다요 :: [언리얼] 블루프린트와 C++
블루프린트
장점
쉽다.
흐름이 잘 보인다.
코딩에 대해서 몰라도 된다.
단점
기능상 제약이 존재한다.
흐름이 복잡해질 수 있다.
느리다.
C++을 사용하면 볼일 없는 오류가 발생한다.
C++
장점
원하는 기능을 마음껏 구현할 수 있다.
블루프린트에서는 구현할 수 없는 기능이 구현가능하다.
단점
어렵다.
언리얼에서 제공하는 표준을 맞추지 않을시 오류가 발생한다.
간단한 기능을 구현하기도 복잡할 때가 있다.
블루프린트를 쓰면 간단하지만 제대로된 기능을 구현하지 못할 수도 있고, C++를 쓰면 제대로 기능을 구현할 수 있지만 그만큼 어렵다는 것이다. C++ 보다 10배 느리기도하고. 프로그래밍에 익숙하지 않고 게임 아이디어를 현실로 바꾸고 싶다면 블루프린트를 배울 것인데. C++은 게임 개발 업계에서도 많이 쓰이고 있으며 언리얼 이외에 모든 종류의 소프트웨어 프로그래밍에 필수적인 요소이기 때문에 미래에 투자하기 위해서는 C++을 배우는 것이 맞겠다.
유니티2년 언리얼 1년 가까이 써오면서 느끼는 장단점.
대학교 2학년때.
유니티엔진이 무료화된 시점부터 2년동안 유니티 신봉자로 지내다가
언리얼엔진을 접하고 1년동안 언리얼엔진을 접하면서 적는 개인적인 취향이야기.
유니티.
장점.
– C# 코딩하기 정말 직관적이고 편하다. (이것 때문에 유니티쓴다고하면 인정.)
– 교육자료, 튜토리얼, 커뮤니티의 구글링자료가 정말 많다.(특히 한글로된거)
– 쉐이더와 그에 관련된 매터리얼을 관리하기 편하다.
– 에반젤리스트분들이 개발자들과 소통하려는 모습이 많이보인다.
– 엔진이 가벼워서 태블릿pc로도 돌아가진다.
– 자유롭다. 빈종이 갖다주고 하고싶은거 다~해 하는 느낌
– 에셋스토어에 마켓플레이스보다 자료가 배는 많다. 근데 퀄리티 낮은것도 많다.
– 개발자를 지원해주는 행사나 이벤트 많이한다.
– 당연할지 모르지만 엔진폴더에 리소스파일이 변환이 안되고 meta파일로 관리되서 외부에 넣고뺄떄 편하다.
단점.
– 프로그래밍 제대로 몰라도 라이브러리로 스크립트 짜서 컴포넌트로 붙이면 어떻게든 돌아가는 식이다보니
코드몽키면서 프로그래머인줄알고 착각하기 쉽다.
– 교육자료가 많고 쉬운만큼 진입장벽이 낮은 탓에 커뮤니티에는 정말 어린학생들도 많고 이상한사람도 많아서
잘못된 지식을 알려주는사람도 있고 질문에 답해주면 기분나쁜일이 생길때가 있다.
– 필요한 플러그인이 많을수록 엔진폴더가 드러워지고 관리하기 힘들어진다.
– 가벼운만큼 언리얼에 비해 제공되는 라이브러리 기능이 좀 적다. 그래서 왠만한 기능은 직접 구현해야되서 귀찮다.
– 개인적으로 UI가 보기 불편하고 눈에 안보여서 있는데도 몰라서 못쓰는기능이 좀 많다.
– 레벨 돌아다닐때 카메라 속도 조절 못하는거. 3DMAX같은 다차워 뷰포트방식이 없다는것이 불편.
– 엔진소스 공개안되있어서 라이브러리가 뭘 매개변수로하는지. 안에 어떤 메소드가
내장되어있는지 바로바로 못뜯어 본다. 때문에 공식 홈페이지가서 도큐먼트 볼수밖에 없다.
언리얼.
장점.
– 유니티처럼 빈오브젝트 만들어놓고 내가 임의로 정하는것이 아니라
언리얼 자체에서 게임모드,컨트롤러,레벨, 액터 이런 단계로 나뉘어져 관리하도록 설계되어있으니
프로젝트 관리하는것이 통일되어 있어 편하다.
-언리얼 c++ 코딩스탠다드가 있어서 개발자들사이에 코드간 충돌이 일어날 가능성이적다.
– UI가 직관적이고 각종 에디터와 아이콘만봐도 대충 어떤기능인지 어떤일이 일어날지 예상이가는 기능이 많다.
-외부 플러그인을 관리하는 폴더가 엔진폴더의 내부에 따로들어가있어서 관리하기 편하다.
근데 프로젝트 공유할때는 다른 컴퓨터에 그 플러그인을 전달해줘야되서 불편한점이 있다.
– 유니티는 구글링하며 직접 만들어야되지만 언리얼은 찾아보면 대부분 라이브러리에 내장되있다.
– 유니티는 스크립트+컴포넌트 붙이며 조립해가며 만들지만 언리얼은 완성품+완성품 -> 빌드 하는방식이라
제대로된 프로그래밍 지식이 없으면 디버깅이 안된다. 어찌보면 단점이지만 난 이걸로 삽질한 덕분에 OOP구조를
제대로 복습했다.
– 에디터 한글화 매우 잘되있다. 에디터에서 튜토리얼이나 문서로 이동하는것도 잘 설계되어있다.
– 다양한 에디터창에서 작업이 가능해서 프로그래밍 이외의 작업하기 정말 편하다.
– 신기술에관해서 유니티보다 좀더 앞선다.
– 보통 나는 프로그래밍 할때 블루프린트와 유사하게 머릿속에 그리면서 하기때문에
프로토타입 로직설계할때와 디버깅할때는 블루프린트가 정말 편하고 좋다.
– 진입장벽이 좀 있는덕분에 배우는 고통을 감내하는사람들(?)로 걸러져서
커뮤니티를보면 유니티보다 예의바르고 수준높은글이 많다.
예를들면 가성비좋은 pc방에 소리지르는 초글링이 많아서 싫다면
비싸고 고급진 pc방엔 조용한 아저씨들이 많은느낌.
-블루프린트 자료가 많아서 로직 카피한 후 내껄로 만들기 수월하다.
-마켓플레이스의 에셋 심사기준이 까다롭다. 일정 퀄리티이상이 아니면 통과시켜주지 않는것같다. 그래서 고급지다.
-매 달 고급진 무료에셋을 뿌린다.
단점.
– 업데이트 내용만 공식 블로그에 올리고 유니티만큼 마케팅을 안해서 업데이트가 눈에 안띈다.
– c++ 쓰는건 괜찮은데 핫리로드를 안쓰고 그냥 재빌드하는게 안전하지만 귀찮고,
비주얼 스튜디오 인텔리센스가 매우 X같다. 이게 제일 짜증난다.
매우신경쓰이는 빨간줄이 떠도 빌드가 된다. 그래서 오류창이아니라 출력창보고 버그잡아야한다.
에러가떠서 해당 부분을 더블클릭해도 유니티처럼 바로 그 코드에 가지 못하는것도 있다.
– 한글 절대 쓰지마.
– c++을 c#같이 쓰게하려고 흑마법을 사용한게 좀 있는데. 제공되는기능이 편한만큼 공부할것도 많다.
– 유니티하다가 언리얼 프로그래밍 하면 유니티로 도망가고싶을때가 있다.
– 머티리얼인스턴스 관리하는거 불편하고 귀찮다.
– 엔진소스가 공개되어있어서 비주얼 스튜디오에서 그냥 정의로 이동하면 내부코드 다보여서 그거 보면서
어떤기능이 있는지 바로바로 확인이 가능하다.
– 자료찾아보면 죄다 블루프린트자료가 대부분이고 cpp자료랑 섞여있어서 구글링으로 문제해결할때 곤란하다.
– 빌드,컴파일시간, 렌더링시간 유니티에비해 엄~~~~청길다. cpu한테 미안하다.
-엔진폴더에 리소스파일을 넣으면 .uasset 확장자로 변환이 되는데. 이거 꺼내쓰고싶을때
에디터에서 다시 추출안해주면 못 써서 불편하다.
———————————————————————————————————————————-
요약.
언리얼은 엔진 편의성이 넘사벽으로 좋지만 프로그래밍이 x같고
유니티는 프로그래밍이 편해서 좋지만
가벼운대신 편의성이 별로. 너무 자유로워서 프로젝트 관리하기 힘들다.
나는 프로그래밍 x같은건 감내할수있어서 언리얼이 편하다.
스압) 언리얼 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. 그냥 다른 방향성의 엔진이고 누가 우위다 라고 얘기하긴 힘들다.
블루프린트와 C++ 의 조화
Choose your operating system: Windows macOS Linux
필요한 사전지식 이 글은 다음 주제에 대한 지식이 있는 분들을 대상으로 합니다. 계속하기 전 확인해 주세요. 일인칭 슈팅 C++ 튜토리얼
블루프린트 소개
게임의 전반적인 기술 디자인을 할 때 주요 의문점은 보통 블루프린트로는 무엇을 구현하고 C++ 로는 무엇을 구현할지가 됩니다. 이 문서의 목표는 이러한 의문점에 대한 해답을 찾는 방법을 논하고 탄탄한 데이터 기반 게임플레이 시스템 구축법에 대한 조언을 드리는 것입니다. 이 문서는 기본 프로그래밍 문서를 읽고 더 많은 것을 배우고자 하는 프로그래머와 테크니컬 디자이너를 위한 것입니다. 게임 설계에 단 하나의 “정답”은 없지만, 이 문서가 올바른 질문을 하는 데 도움이 되었으면 합니다.
게임플레이 로직 및 데이터
대체로 게임의 모든 것은 Logic (로직)과 Data (데이터)로 나눌 수 있습니다. instruction (인스트럭션)과 structure (구조체)에 게임의 일정 부분이 따르는 것이 게임플레이 로직이고, 그 로직에 사용되어 게임의 역할을 규정하는 것이 게임플레이 데이터입니다. 이러한 구분이 명확한 경우라면, C++ 코드로 화면에 캐릭터를 그리는 것은 명백히 로직 기반인 반면 캐릭터의 물리적 외형은 명확히 데이터 기반입니다. 그러나 실제로 이러한 구분이 서로 섞이게 되면서 프로젝트가 복잡해지므로, 어떤 기준으로 구분할지 그리고 어떤 옵션이 있는지 이해하는 것이 중요합니다.
언리얼 엔진 4 (UE4) 안에서 게임플레이 로직을 구현할 수 있는 옵션은 다음과 같습니다.
C++ 클래스: C++ 로 변수와 함수를 정의하고 베이스 게임플레이 로직을 구현합니다.
블루프린트 클래스: 블루프린트 의 이벤트 그래프 로, 또는 그 그래프에서 호출하는 함수 로 로직을 구현할 수 있습니다. 여기서 변수를 추가할 수도 있습니다.
커스텀 시스템: 여러 시스템과 게임에 작은 “마이크로 랭귀지”를 사용하여 게임플레이 로직 일정 부분을 규정합니다. UE4 머티리얼 에디터, 시퀀서 트랙, AI 비헤이비어 트리 모두 게임플레이 로직을 위한 커스텀 시스템 예제입니다.
데이터의 경우 옵션이 더 많습니다.
C++ 클래스: 네이티브 클래스 생성자에서 기본값을 설정하고 데이터 상속을 지원합니다. 함수 로컬 변수에 데이터를 하드코딩할 수도 있지만, 추적하기 어렵습니다.
구성 파일: Ini 파일과 콘솔 변수 는 C++ 생성자에서 선언한 데이터 오버라이드를 지원하거나 직접 쿼리할 수도 있습니다.
블루프린트 클래스: 블루프린트 클래스 디폴트 작동 방식은 C++ 클래스 생성자와 비슷하며 데이터 상속을 지원합니다. 함수 로컬 변수 또는 핀 리터럴 값으로 데이터를 안전하게 설정할 수도 있습니다.
데이터 애셋: 인스턴싱할 수 없고 데이터 상속이 필요치 않은 오브젝트의 경우, 독립형 Data Asset (데이터 애셋)이 Blueprint Default (블루프린트 디폴트)보다 사용하기 쉽습니다.
테이블: 데이터는 데이터 테이블, 커브 테이블로 임포트하거나, 런타임으로 읽을 수 있습니다.
인스턴스 배치: 데이터는 레벨 또는 다른 애셋 안에 설정된 블루프린트 또는 C++ 클래스 인스턴스로 저장할 수 있으며, 클래스 디폴트를 오버라이드합니다.
커스텀 시스템: 로직과 마찬가지로 데이터 저장을 위한 커스텀 방식은 많습니다. 세이브 게임: 런타임 세이브 게임 파일을 사용하여 위 데이터 유형을 오버라이드 또는 수정할 수 있습니다.
일반적으로 위 목록보다 한층 더 파생되는 옵션은 위의 베이스 레벨 옵션을 오버라이드 및 확장합니다. 그래서 베이스 레벨 시스템이 확장 시스템에서 정의한 것에 액세스하고 사용하는 것이 어렵습니다. 예를 들어 C++ 클래스에서 파생된 블루프린트 클래스가 추가한 변수에 액세스하는 것은 매우 어려워 권장하지 않습니다. 이와 같은 문제를 피하려면 함수와 변수 정의를 액세스가 자주 일어나는 가장 베이스 레벨에서 해야 합니다. 로직의 경우, 전체 구현을 베이스 레벨에서 하거나, 베이스 레벨에 스텁 함수를 두고 파생 레벨에서 오버라이드하는 것이 이치에 맞습니다.
데이터에 대한 규칙은 조금 복잡하고 시스템에 따라 달라지는데, 가능성이 다양하고 다단계 상속이 흔하기 때문입니다. 변수에 대한 기본값은 정의한 그 레벨에서 설정하고, 이후 파생되는 레벨에서 오버라이드해야 합니다. 또한 커스텀 규칙에 따라 한 오브젝트에서 다른 오브젝트로 데이터를 복사하여 로직을 작성하는 것이 일반적입니다. 아래는 데이터 구조 관련 자주 발생하는 이슈에 대한 설명입니다.
C++ vs 블루프린트
위 목록에서 C++ 또는 블루프린트 클래스로 로직 및 데이터를 저장할 수 있음을 알 수 있습니다. 이러한 유연성으로 인해 대부분의 게임플레이 시스템은 둘 중 하나로 (또는 약간 조합해서) 구현합니다. 모든 게임과 개발 팀은 고유해서 “올바른 선택”이란 것은 없지만, C++ 또는 블루프린트 중에서 무엇을 선택할지 도움이 되는 일반적인 지침은 있습니다.
C++ 클래스 장점
빠른 런타임 퍼포먼스 : 일반적으로 C++ 로직은 블루프린트 로직보다 훨씬 빠릅니다. 이유는 다음과 같습니다.
명확한 디자인 : C++ 에서 변수나 함수를 노출하면 세밀한 제어를 통해 원하는 것을 정확히 노출할 수 있으므로, 특정 함수/변수를 보호하고 클래스의 공식 “API”를 만들 수 있습니다. 따라서 지나치게 크고 따라잡기 어려운 블루프린트를 만들지 않아도 됩니다.
광범위한 액세스 : C++ 에서 정의(하고 제대로 노출)한 함수와 변수는 다른 모든 시스템에서 액세스할 수 있어, 여러 시스템 사이 정보 전달에 완벽합니다. 또한, C++ 에는 블루프린트보다 많은 엔진 함수 기능이 노출되어 있습니다.
더 많은 데이터 제어 : C++ 에서는 데이터 저장과 로드 관련해서 구체적인 함수 기능을 더 많이 사용할 수 있습니다. 버전 변경 및 시리얼라이즈 처리를 다양한 사용자 지정 방식으로 처리할 수 있습니다.
네트워크 리플리케이션 : 블루프린트의 리플리케이션 지원은 간단하며 작은 게임이나 고유한 일회성 액터에 사용하도록 설계되었습니다. 리플리케이션 대역폭이나 타이밍같은 것을 엄격하게 제어해야 하는 경우 C++ 를 사용해야 합니다.
강력한 연산력 : 블루프린트로 복잡한 수학 연산을 하는 것은 어렵고 약간 느릴 수도 있습니다. 복잡한 수학 연산은 C++ 를 고려하세요.
쉬운 Diff/Merge: C++ 코드와 데이터는 (구성 및 커스텀 솔루션을 포함해서) 텍스트로 저장되므로, 여러 브랜치에서의 동시 작업이 쉽습니다.
블루프린트 클래스 장점
빠른 생성 : 대부분의 경우 블루프린트 클래스를 새로 만들어 변수와 함수를 추가하는 것이 비슷한 작업을 C++ 로 하는 것보다 빠릅니다. 그래서 완전 새로운 시스템의 프로토타입을 만드는 작업은 보통 블루프린트로 하는 것이 빠릅니다.
빠른 반복처리 : 블루프린트 로직을 수정하고 에디터 안에서 미리보는 것이 핫 리로드 기능이 있더라도 게임을 다시 컴파일하는 것보다 훨씬 빠릅니다. 성숙한 시스템은 물론 새로운 시스템에서도 마찬가지이므로 “미세조정” 가능한 모든 값은 가급적 애셋에 저장해야 합니다.
원활한 흐름 : C++ 로 “게임 흐름”을 그려 보는 것은 복잡할 수 있으므로, 보통 블루프린트로 (또는 딱 그 용도로 설계된 비헤이비어 트리같은 커스텀 시스템으로) 구현하는 것이 낫습니다. 딜레이 및 비동기 노드는 C++ 델리게이트보다 흐름을 따라잡기 훨씬 쉽습니다.
유연한 편집 : 별도의 기술 훈련을 받지 않은 디자이너와 아티스트도 블루프린트를 생성하고 편집할 수 있으므로, 엔지니어 이외에도 수정해야 하는 애셋은 블루프린트가 이상적입니다.
쉬운 데이터 사용: 블루프린트 클래스 안에 데이터를 저장하는 것은 C++ 안에 저장하는 것보다 훨씬 간단하고 안전합니다. 블루프린트는 데이터와 로직이 밀접하게 섞인 클래스에 좋습니다.
블루프린트에서 C++ 로 변환
블루프린트는 생성 및 반복처리 작업이 쉬우므로, 블루프린트에서 프로토타입을 만든 후 그 기능의 일부 또는 전부를 C++ 로 옮기는 것이 일반적입니다. 보통 시스템의 기본 기능을 입증했고 다른 사람들이 원활하게 사용할 수 있도록 “강화”하고자 하는 “리팩터링 지점”에서 이 작업을 하는 것이 좋습니다. 이 시점에서, 어떤 클래스, 함수, 변수는 C++ 로 옮기고 어떤 것은 블루프린트에 남겨둘지 결정해야 합니다. 그 결정을 내리기 전, C++ 로 리팩터링하기 위해 거쳐야 하는 프로세스를 이해하는 것이 좋습니다.
일반적으로 첫 단계는 블루프린트 클래스가 상속할 “베이스” C++ 클래스 세트를 만드는 것입니다. 게임의 베이스 네이티브 클래스를 만들었으면 프로토타입 블루프린트의 부모를 새로운 네이티브 클래스로 변경합니다. 그 작업을 완료하면 블루프린트 클래스의 변수와 함수를 네이티브 C++ 로 옮기기 시작할 수 있습니다. 네이티브 클래스의 변수 또는 함수가 블루프린트 변수와 유형 및 이름이 같다면, 블루프린트를 로드할 때 그 레퍼런스가 자동 변환됩니다. 하지만 블루프린트로의 외부 레퍼런스가 네이티브 베이스 클래스를 가리키도록 변경하고 싶을 수 있습니다. 예를 들어 ActionRPG 샘플 작업을 하는 도중, DefaultEngine.ini 파일에 다음과 같은 블록을 추가했습니다.
[CoreRedirects] +ClassRedirects=(OldName=”BP_Item_C”, NewName=”/Script/ActionRPG.RPGItem”, OverrideClassName=”/Script/CoreUObject.Class”) +ClassRedirects=(OldName=”BP_Item_Potion_C”, NewName=”/Script/ActionRPG.RPGPotionItem”, OverrideClassName=”/Script/CoreUObject.Class”) +ClassRedirects=(OldName=”BP_Item_Skill_C”, NewName=”/Script/ActionRPG.RPGSkillItem”, OverrideClassName=”/Script/CoreUObject.Class”) +ClassRedirects=(OldName=”BP_Item_Weapon_C”, NewName=”/Script/ActionRPG.RPGWeaponItem”, OverrideClassName=”/Script/CoreUObject.Class”)위 블록은 코어 리디렉트 시스템을 사용하여 Blueprint BP Item C 로의 레퍼런스를 전부 새로운 네이티브 클래스 RPGItem 으로 변환합니다. OverrideClassName 옵션이 필요한 이유는 이제 UBlueprintGeneratedClass 가 아닌 UClass 임을 알리기 위해서입니다. 부모변경 및 수정을 처음 한 이후에는 느려진 블루프린트 컴파일 문제를 고치고 게임의 모든 블루프린트를 다시 저장해야 할 것입니다. 목표는 블루프린트 경고 없이 리팩터링을 완료하는 것으로, 그래야 새 이슈가 생겼을 때 추적이 쉽습니다.모든 것이 정상 작동하면 이제 수정 프로세스 도중 추가한 CoreRedirect 를 제거하고 ini 파일을 정리하면 됩니다.
퍼포먼스 고려사항
C++ 가 블루프린트에 비해 갖는 강점은 퍼포먼스입니다. 하지만 많은 경우 사실 블루프린트 퍼포먼스가 문제되지는 않습니다. 대체로 C++ 코드 한 줄을 실행하는 것보다 블루프린트의 개별 노드 하나를 실행하는 속도가 느리다는 것이 큰 차이점인데, 한 노드에서 한 번 실행하는 것은 C++ 에서 호출하는 것만큼 빠릅니다. 예를 들어 값싼 최상위 노드 몇 개에 값비싼 Physics Trace 함수를 호출하는 블루프린트 클래스가 있다면, C++ 로 변환해도 퍼포먼스 향상이 크지 않습니다. 하지만 블루프린트 클래스에 빽빽한 루프가 많거나 펼치면 노드가 수백개나 되는 중첩 매크로가 많은 경우라면, 그 코드는 C++ 로 옮길 것을 생각해야 합니다. 퍼포먼스 문제가 매우 심한 것은 Tick(틱) 함수입니다. 블루프린트 틱은 네이티브 틱보다 훨씬 느릴 수 있으므로, 인스턴스가 많은 클래스에는 절대 틱을 사용하지 말아야 합니다. 대신 타이머나 델리게이트를 사용하여 블루프린트 클래스가 필요할 때만 일을 하도록 해야 합니다.
블루프린트 클래스에 퍼포먼스 문제가 있는지 알아내는 가장 좋은 방법은 프로파일러 툴 을 사용하는 것입니다. 프로젝트의 퍼포먼스 상황을 파악하려면, 먼저 블루프린트 클래스의 퍼포먼스 스트레스가 심한 (적을 한 무더기 스폰하는 등의) 상황을 만든 뒤, 프로파일러 툴을 사용하여 프로파일을 캡처합니다. 프로파일러 툴을 사용하면 Game Thread Tick (게임 스레드 틱)을 자세히 분석해서 트리를 펼쳐가며 문제가 되는 블루프린트 클래스를 찾을 수 있습니다 (같은 클래스의 모든 인스턴스는 하나의 그룹으로 묶여 있으니, 참고하세요). 블루프린트 클래스 안에서, 시간이 걸리는 블루프린트 함수를 확인할 수 있습니다. 그 함수를 펼칩니다. 대부분의 시간이 Self 에서 발생한다면, 블루프린트 오버헤드로 인해 퍼포먼스 손실이 있는 것입니다. 하지만 대부분의 시간이 그 함수 안에 중첩된 다른 네이티브 이벤트에서 발생한다면, 블루프린트 오버헤드 문제는 아닙니다.
블루프린트 네이티브화 를 통해 이러한 문제를 줄일 수 있지만, 몇 가지 단점이 있습니다. 첫째, 쿠킹 워크플로를 변경하므로 쿠킹된 게임의 반복처리 작업이 느려질 수 있습니다. 또한, 네이티브화된 블루프린트의 런타임 로직은 보통 블루프린트와 다르므로 게임의 특성에 따라 다른 작동방식 또는 버그가 생길 수 있습니다. 대부분의 블루프린트 기능은 네이티브화에 완벽 지원되지만, 명확하지 않은 몇 가지 예외가 있을 수 있습니다. 마지막으로, C++ 를 직접 변환한 것에 비해 퍼포먼스 향상이 크지 않을 수 있습니다. 네이티브화가 퍼포먼스 이슈를 전부 해결하지는 못하지만, 해법이 될 수 있는지 조사해 볼 수는 있을 것입니다.
아키텍처 노트
블루프린트와 C++ 를 같이 사용하여 게임을 만들면, 게임의 규모가 커지고 복잡해짐에 따라 여러가지 문제가 생길 것입니다. 프로젝트가 커지기 시작할 때 유념해야 할 몇 가지 사항입니다.
언리얼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, 콘솔 플랫폼까지 고려한다면 언리얼 개발 인력에 대한 필요성이 커질 것이라고 판단됩니다.
언리얼 엔진 이해하기
▣ 왜 언리얼 엔진을 쓰는가?
1. 내 손으로 직접 멋진 것을 만들고 싶어서
2. 앞으로도 계속 쓰일 엔진
3. 좀 더 공부를 많이 하고 싶어서
4. 게임 엔진을 더욱 깊숙히 알고 싶은 자유
▣ 언리얼 엔진의 철학
1. 모든 직군이 프로그래밍을 몰라도 컨텐츠를 제작할 수 있도록 설계한다.
2. 게임을 제작한 경험을 바탕으로, 최대한 완성된 프레임웍을 만들어 제공한다.
3. 프레임웍의 설계는 (초) 대형 게임을 제작할 수 있는 스케일로 기획한
Modern Game Engine
▣ Modern Game Engine Architecture
최신 게임 엔진은 세 개의 계층으로 구분할 수 있다.
▣ Modern Game Engine Architecture – Runtime
• 단단하고 빠른 게임 엔진의 심장
• 일반적으로 개발 언어는 C++를 많이 사용
• 사소한 오류에도 결과는 크리티컬하기 때문에 코딩에 엄격한 룰을 적용 • 컨텐츠 제작자에게 노출하지 않는다.
▣ Modern Game Engine Architecture – RuntimeDeveloper
• 컨텐츠 개발에 보조로 사용되는 개발 도구.
• 방대한 엔진 기능 관리를 위해 다양한 도구의 개발이 필요.
• 사용 프레임웍에 따라 구현. C++ 을 그대로 쓰거나 C#로 변경하거나.
• 컨텐츠 제작자에게 노출하지 않음.
▣ Modern Game Engine Architecture – Editor
• 게임 컨텐츠 개발을 위한 에디터 UI의 제공
• 다양한 외부 파일을 엔진 파일로 변환시켜주는 변환 기능
• 3차원 공간을 다룰 수 있는 뷰포트 제공
• 컨텐츠 제작자가 직접 활용하고 결과물을 디스크에 저장
▣ Modern Game Engine Architecture – Contents 제작
• 컨텐츠를 개발하고 결과물을 디스크에 저장
• 생산성 : 빠른 컴파일, 스크립트와 전문 개발 도구 연동
• 안정성 : 실행 영역의 분리 : 안전한 메모리관리
▣ Modern Game Engine Architecture – C# 스크립팅
• 이미 산업적으로 널리 쓰이는 완성도 높은 언어
• 업계 최강의 개발도구 Visual Studio
• MS 표준 Runtime에서 안전하게 실행
• 전문가의 눈높이를 맞출 만큼 탄탄한 설계가 가능
• Native 라이브러리와 연동(Interop) 및 확장 가능한 설계
• Assembly Component의 공유 ( GAC ) – 코드 재사용, 컴파일 타임을 단축
• Native 못지 않는 빠른 성능 ( JIT / AOT 컴파일 )
※ 초급/고급 프로그래머 모두를 만족시키는 프로그래밍 환경
▣ Modern Game Engine Architecture – 블루프린트
○ 장점
• 에픽 게임스가 만든 시각적 프로그래밍 언어 ( Visual Programming Language )
• 자체 개발 도구를 제공 ( Blueprint Editor )
• 자체 제작한 Runtime에서 안전하게 실행
• 빠른 컴파일 속도
• 가독성 높은 디자인
※ 프로그래밍이라는 진입 장벽이 없어 모든 직군이 사용 가능
○ 단점
• 전문가의 눈높이를 맞출 만큼 설계 구조가 탄탄하지 못함.
• 블루프린트 시스템 밖으로는 확장할 수 없다 .
• 컴파일은 빠르나 실행 속도는 느리다. ( 그렇다고 게임을 못 만들 성능은 아님 )
• 복잡도가 증가할 수록 사용하는 리소스가 늘어나고 가독성이 떨어짐.
※ 블루프린트는 만능이 아니다.
▶ 대신 프로그래머를 위해 C++을 제공한다
유니티와 언리얼 비교
소스 코드를 얻게 되면 생기는 문제점
• 소스 코드 양이 너무 어마어마하다.
• 개발 할 때 이를 함께 가지고 가야 한다.
• 부수적으로 따르는 부작용
• 느린 컴파일 속도
• 느린 인텔리센스 기능
• 엄청난 용량의 결과물
이런 문제들은 빠른 C++ 언어의 자체적인 문제
자동으로 완성해주는 마법의 빌드 툴 – Unreal Build Tool
프로젝트의 Target.cs와 모듈의 Build.cs 를 통해 설정 가능
• 멀티플랫폼 빌드 툴
• Private 영역과 Public 영역을 구분해 빌드 목록 생성
• 의존성을 파악하고 빌드 순서 지정
• Modular ( 에디터 ) / Monolithic ( 게임 ) 방식의 빌드 지원
• 프리컴파일드헤더 컴파일 지원
• Static Library 지원 ( 플러그인 )
• 유니티 빌드 방식 지원 ( 대용량 컴파일을 묶어서 빠르게 )
관리받는 코드와 Native 코드의 혼합
▣ C++ 언어의 생산성을 높이자
• 객체의 초기 설정 값을 손쉽게 관리
• 런타임에서 클래스와 인스턴스 정보를 검색
• 객체의 저장과 로딩을 간편하게
• 메모리 관리를 편하게
• 함수를 묶어서 한번에 호출
• 모든 플랫폼에 안정적으로 동작하는 API
※ 언리얼은 C#과 같은 C++ 프레임웍의 제공한다
▣ 관리받는 코드와 Native 코드의 혼합
생산성을 높이기 위해 관리받는 C++ 클래스 프레임웍을 구축
소스코드에 특별한 매크로가 있으면 파싱을 시도하고 규칙에 맞으면 엔진에서 관리
▣ 관리받는 코드와 Native 코드의 혼합 – 모듈 초기화
하지만, 편리한 기능으로 인해 고려해야 할 것이 늘어난다
언리얼 엔진의 실행의 처음에는 항상 모듈 단위로, 언리얼 오브젝트 초기화 과정이 들어간다.
▣ 관리받는 코드와 Native 코드의 혼합 – 모듈 초기화
DLL 단위로 모듈 내 모든 언리얼 오브젝트 초기화가 완성되면 %가 올라간다.
▣ 관리받는 코드와 Native 코드의 혼합 – UClass
하나의 언리얼 오브젝트에는 상응하는 UClass가 존재한다
초기화 단계에서 모듈 별로 자신이 속한 언리얼 오브젝트의 UClass DB를 구축한다.
언리얼 엔진에서는 “/Script/모듈이름.클래스이름” 형식으로 고유 주소를 부여한다
▣ 관리받는 코드와 Native 코드의 혼합 – UClass
CDO – Class Default Object ( 클래스 기본 객체 )
언리얼 오브젝트는 CDO를 복제해 인스턴스를 생성하도록 설계되어 있다.
▣ 관리받는 코드와 Native 코드의 혼합 – 모듈 초기화
초기화 단계에서 복제하기 쉽게 미리 CDO를 만들어준다.
초기화가 끝나면 대략 위와 같은 형태로 메모리가 완성된다.
▣ 관리받는 코드와 Native 코드의 혼합 – CDO
CDO는 생성자 코드를 실행하면서 완성된다. 즉, 생성자 코드는 엔진 초기화 단계에서 실행된다.
생성자 코드에서는 게임에 대한 내용을 전혀 알수가 없다!
각 언어 별, 난이도/확장성 분석
결론
• 빠르게 프로토타입 컨텐츠를 만들려면 (방식이) 맘에 안들어도 블루프린트가 맘 편하다.
• 블루프린트는 확장성에 한계가 있으니, 어디까지 할 수 있는지 미리 조사하자.
• 제대로 엔진을 다루고 싶다면 C++로 가야 한다.
• 자유에는 (엄청난) 대가가 따른다! ( 컴파일 타임 , 인텔리센스 ㅜㅜ )
• C# 개발환경보다 (많이) 불편할지라도 익숙해지려고 노력하자.
• 하나씩 차근차근 따라오면 세계 최고 엔진이 내 것이 된다.
참고// 언리얼 서밋 :: 언리얼 튜토리얼만 쌓여가는 유니티 개발자를 위한 조언
[언리얼]유니티/언리얼? *언리얼 선택하게 된 이유!
반응형
Maya로 취업했지만, 회사에서 유니티 사용을 필요로 하여서, 튜토리얼을 보며 이것저것 유니티를 시작한 지 약 8개월 정도 되었어요.
유니티 첫 이미지는 별로 좋지 않았던 터라 긴장을 하고 있었는데, 아니나 다를까 3D 작업을 하기엔 힘든 부분이 많았던 것 같아요. 그래서, 최근에 유니티에서 언리얼로 갈아타야겠다는 결심을 하게 되었습니다!! 유니티를 하면서 힘들었던 부분? 언리얼과 어떤 차이점이 있는지 정리해 보는 시간이 되겠습니다!
<언리얼을 선택해야 하는 이유>
1. 언리얼은 모든 기능이 무료다!
– 무료이기도 하고, 유니티 보다 활용할 수 있는 기능이 많다! ( 게임 개발에 필요한 기능을 모두? 가짐 )
– 유니티는 연수입이 10만 달러 이하인 경우에만 무료! 그 외에는 유료! 따라서, 비용이 만만치 않음.
– 플러그인 구매 시 돈이 더 올라감.
2. 언리얼의 가장 큰 장점 블루프린트 (노드 베이스 프로그래밍) **
– 유니티에 비해 쉽게 개발 가능 ( 노드 )
유니티 -> 프로그래밍을 알지 못한다면 유니티는 하기 힘든 프로그램이라고 생각함. 디자이너에게는 불리한 프로그램.
– 쓰리디 작업을 하는 사람들이라면, 코딩을 하는 것이 굉장히 부담스러운 일인데, 유니티에서는 코딩이 필요한 순간들이 많음, 블루프린트를 이용한다면, 코딩 없이 표현 가능함!
( 코딩에 관한 자료만 수두룩한 유니티, 코딩을 안 하면 해결되지 않는 문제 발생 -> 디자이너로써 자료와
강의가 많지 않아 답답함에 연속, 코딩의 기본이 안된 상태에서 한계에 계속 부딪힘 )
또, 디자이너 입장에서는 코딩은 눈으로 보이지 않는 싸움… 노드를 이용해 작업하는 것이 시각적으로 보기 편하고
더 익숙하고, 이해하기 쉬움 (c++을 몰라도 됨**)
함수와 필요한 언어들에 대해서만 잘 정리하고 공부하면 , 이래저래 필요한 자료를 보며 노드를 찾아 넣고 연결하면서, ‘어떻게든 작업 퀄을 높일 수 있겠다’라는 생각이 듦.
3. 유니티에 비해 비주얼 적으로 표현력이 뛰어난 언리얼.
– 비주얼 퀄리티가 높은 게임을 만들기에 용이함.
– 유니티에서 실사풍 재현에 대한 어려움 ( 만드는데 편의성은 있지만, 세세한 설정들이 부족 )
3d를 하는 입장에서는 유니티 안에서 비주얼적으로 퀄리티 업 하는데 한계가 있음.
( 단, 간단하고 가벼운 게임들을 만드는 데는 유니티가 더 좋은 듯, 유니티는 기본 쉐이더가 있지만, 언리얼은 기본 쉐이더 조 차 다 노드로 만들어 줘야 함. )
4. 유니티 최적화의 어려움.
-유니티는 절대적으로 최적화 작업이 필요함. 그에 따른 시간과, 삽질이 필요함. 또한 고퀄리티를 최적화하려고 하면 큰 단점이 되기 때문에, 언리얼로 변경하는 상황들도 발생.
5. 인터페이스가 언리얼이 더 알아보기 편하다.
– 직관적인 인터페이스가 3d 프로그램을 다뤄보지 않은 사람들도 알아보기 편함.
– 인터페이스 요소들이 언리얼이 Maya와 3D Max 타 3D 프로그램과 비슷함.
– 언어가 한국어가 된다는 점**
언어가 별 거 아닌 것 같지만, 유니티 안에서 세세한 설정들을 잡아 줘야 하는 때가 많은데, 자료 부족과 언어 때문에 더 힘든 부 분이 있음.
6. 빠르고 오류 없는 실시간 구현
– 내가 만든 공간, 내가 만든 오브젝트를 바로 바로 실시간으로 플레이해볼 수 있어서, 작업도 게임처럼!
ex) 공간 안에 box 오브젝트를 만들어, 플레이시킬 시, 기본 캐릭터를 통해 장애물을 밟고 뛰는 실시간 구현이 바로 적용
반응형
언리얼) [블루프린트 핵심 개념] 정리
1. 블루프린트는 코드를 작성하지 않고도 동일한 기능을 생성할 수 있는
Visual Scripting이다. 노드를 연결한다.
장점 : 컴파일 시간이 짧아 기능을 빠르게 만들고 시연할 수 있다.
단점 : 블루프린트를 c++코드로 변환하는 기능을 개발중이지만,
할 수 있는 것은 c++이 더 많고 무거운 계산을 처리할 때 c++이 더 좋다.
형변환 문제(순환 종속) :
블루프린트를 로드할 때는 해당 블루프린트가 가진 모든 종속성을 로드하게 된다.
만약 블루프린트 A와 B가 서로 종속한다고 가정했을 시
A는 B에 종속되므로 B까지 로드되는데, B는 A에 종속되어 있다. 때문에 무한 반복이 발생하고 로드에 실패하게 된다.
블루프린트와 순환 종속 문제
2. 만드려는 것에 따라 블루프린트의 유형을 다르게 쓸 수 있다.
Level Blueprint : 컴포넌트가 없고 이벤트 그래프만 수정할 수 있어 레벨을 통제하기 위해 쓰면 좋다. (ex. 게임시작시)
Class Blueprint : 컴포넌트가 있고 한번 만들면 쉽게 복제가 가능하기에 여러 레벨에서 사용할 때 좋다.
Animation Blueprint : 캐릭터의 애니메이션 로직을 생성하는데 사용된다. 이것의 이벤트 그래프는
순간순간의 변수를 정의하는 데에 사용된다.
검색 버튼으로 애니메이션 블루프린트를 찾고, 더블클릭하면 애니메이션 블루프린트 에디터가 열린다.
HUD Blueprint(위젯 블루프린트) : 디자이너 탭 외에는 클래스 블루프린트와 비슷하다.
디자이너 탭에서 UI를 구성하고, 시각적으로 볼 수 있다. 애니메이션, 버튼, 체크박스 등 쓸 수 있는게 많다.
Parent Blueprint(자손 블루프린트) : 부모 블루프린트의 기능을 상속받아 쓸 수 있다.
만드는 방법은 부모 블루프린트를 우클릭해 자손 블루프린트 클래스 생성을 선택한다.
3. 블루프린트 에디터에서 블루프린트를 수정이 가능하다.
컴포넌트를 추가 : DefaultRoot를 기준으로 추가할 수 있다.
클래스 세팅 : 특정 블루프린트에 맞춘 클래스별 세팅을 할 수 있다.
클래스 디폴트 세팅 : 특정 블루프린트의 기본 속성을 설정할 수 있다.
시뮬레이션 버튼 : 블루프린트가 잘 실행되는지 바로 확인할 수 있다.
드롭다운 메뉴 : 레벨에 있는 블루프린트의 인스턴스를 디버그할 수 있다.
디테일 패널 : 수정 가능한 여러 프로퍼티가 나타난다. 어떤 컴포넌트를 선택하고 있냐에 따라
맥락이 다르다.
My Blueprint 패널 : 쓰인 이벤트 그래프, 함수 생성과 오버라이드, 매크로 생성, 변수의 생성, 할당이 가능하다.
이벤트 디스패처는 서로 다른 블루프린트 간의 통신에 사용된다.
Viewport 탭 : 블루프린트를 시각적으로 보고 수정할 수 있다.
Construction Script 탭 : 이 블루프린트와 관련한 에디터 기능를 수정하거나, 게임 시작시 실행시킬 수 있다.
예를 들어, 컴포넌트 중 라이트를 끌어놓아 색이나 강도를 파라미터로 노출시킬 수도 있다.
Event Graph : 게임 실행 중일 때 쓰인다.
블루프린트 에디터
4. 블루프린트와 관련한 고급 에셋을 만들 수 있다.
Blueprint Function Library : 다른 블루프린트에서 액세스할 수 있는 함수의 모음이다.
Blueprint Interface : 블루프린트간 통신에 사용할 수 있는 또 다른 방법이다.
Blueprint Macro Library : 다른 블루프린트에서 액세스할 수 있는 매크로의 모음이다.
Enumeration(열거형) : 블루프린트에서 생성 및 사용 가능한 지정 목록이다. 흐름 제어를 위해 사용한다.
Structure(구조체) : 다양한 변수들의 모음이다.
블루프린트 고급 에셋
5. 에디터 내에서 오브젝트를 선택하고, 바로 블루프린트로 만들 수 있다.
블루프린트를 만드는 또 다른 방법
6. 빌보드 컴포넌트로 레벨 뷰포트에서 에셋을 선택하기 쉽게 할 수 있다.
빌보드 컴포넌트. 2D 스프라이트로 되어있고 카메라가 움직일 시 회전한다.
7. 블루프린트 에디터에서 컴포넌트를 Default root로 드래그해 실제 루트 컴포넌트로 만들 수 있다.
Default root였던 하얀 구체가 사라진다.
만약 컴포넌트를 컴포넌트에 드래그 하면 드래그한 것이 자손 컴포넌트로 설정된다.
8. Skeletal Mesh컴포넌트는 애니메이션을 설정할 때 여러 방법을 사용한다.
Skeletal Mesh컴포넌트의 애니메이션 설정
9. 레벨 뷰포트에서 블루프린트를 우클릭해 바로 볼 수 있다.
레벨 뷰포트
10. 컴포넌트를 클릭해 이벤트를 추가할 수 있다. My Blueprint패널에서 변수를 클릭해 바로 이벤트 추가도 가능하다.
11. 노드를 추가할 때 컨텍스트 메뉴를 꺼 선택한 컴포넌트와 관계 없는 노드를 검색할 수 있다.
예를 들어, Mesh 컴포넌트를 선택했는데 네트워크 노드의 검색이 가능해진다.
12. 변수의 눈을 깜빡여 공개 비공개 여부를 설정할 수 있다.
13. 노드들을 선택하고 우클릭해 함수 혹은 매크로로 만들 수 있다.
노드들을 선택하고 우클릭해 접기만 할 수도 있다.
접힌 함수의 경우 외부 블루프린트에서 호출이 가능해진다.
형변환 문제 신기하네요. 김포프님이 영상에서 말하신 문제를 알아서 좋았네요.
언리얼 엔진 공부하기
반응형
매번 시작은 하는데 끝도 못 맺고 포기하게 되는 것 같아서 어떻게 시작해야할지 막막하다.
또 필요한 기능만 조금 쓰다가 끝날 것 같은 느낌이 든다.
실전 게임 제작으로 배우는 언리얼 엔진 4
일본인 저자의 책. 초보자용.
서평은 극과 극이다. 비추와 강추로 나뉜다.
비추를 하는 쪽은 블루프린트만 다루는 것을 단점으로 꼽는다.
강추하는 쪽은 C++를 사용하지 않고 블루프린트만 이용해서 게임을 하나 만들 수 있다는 것을 장점으로 꼽는다.
블루프린트만 가지고 플랫포머 게임을 하나 만드는 과정이다.
레벨 디자인, 이펙트, 사운드 등 거의 대부분의 요소를 다루지만, UI 제작에 관한 내용은 없다.
저자 : 미나토 카즈히사
역자 : 윤인성
출판사 : 한빛미디어
출간일 : 2016.06.01
원제 : UNREAL ENGINE 4で極めるゲ-ム開發 サンプルデ-タと動畵で學ぶUE4ゲ-ム制作プロジェクト
페이지 : 703
ISBN : 9788968482809
판형 : 규격외 변형
가격 : 40,500원 (정가 45,000원에서 -10% 할인)
ebook : 28,350원 (정가 31,500원에서 -10% 할인)
이 도서의 리뷰를 꼼꼼하게 작성되어 있는 블로그, 게다가 학습한 내용도 정리되어 있어서 나도 이 블로그처럼 해보는 것을 목표로 정했다.
https://blog.naver.com/websearch/221242973035
이득우의 언리얼 C++ 게임 개발의 정석
한국인 저자의 책. 높은 평점
실전 게임 제작으로 배우는 언리얼 엔진 4와는 반대로 블루프린트를 거의 사용하지 않는다.
C++로 언리얼 엔진 게임을 만드는 과정. C++ 관련 내용이 가장 풍부하다고 한다.
단점 제시된 코드에 주석이 없어서 생초보가 본다면 이해하기 힘들다.
책의 설명 방식이 “블루프린트로 A의 방식을 C++로 바꾸면 이렇게 된다”라는 느낌이다.
저자의 ‘언리얼 4 블루프린트 게임 개발’이란 책을 보고 공부한 사람들이 읽기에 적합한 책(?)같다는 리뷰가 있다.
저자 : 이득우
출판사 : 에이콘출판
출간일 : 2018.10.26
페이지 : 640
ISBN : 9791161752204
판형 : 규격외 변형
가격 : 45,000원 (정가 50,000원에서 -10% 할인)
이 책으로 공부한 분의 블로그
https://blog.naver.com/poss_leave/221746867117
언리얼 4 블루프린트 게임 개발
리뷰 평점이 상당히 낮은 책. 평점이 1~3 수준. 비추 많이 먹은 책.
언리얼 엔진에 이런 기능이 있다 소개하는 무식하게 따라하기 방식의 책.
예제로 들어있는 파일이 책 설명과 다르거나 아예 작동하지 않는 경우도 있다.
언리얼 엔진 홈페이지의 따라하기 1/10 정도 분량이라고 한다.
그냥 아~ 블루프린트란 이런 것이구나~를 알 수 있는 책.
저자 : 이득우, 유우원
출판사 : 에이콘출판
출간일 : 2014.07.21
페이지 : 452
ISBN : 9788960775831
판형 : 규격외 변형
가격 : 40,000원
언리얼 엔진 4 블루프린트 게임 만들기
평가가 가장 평균적인 책. 무난하게 배울 수 있는 책 같다.
예제 따라해서 게임 하나 만드는 과정.
그외 부분에서는 설명이 부족하여 기본 지식이 없이 시작하면 흥미가 떨어질 수 있다.
저자 : 박승제
출판사 : 제이펍
출간일 : 2015.02.10
페이지 : 456
ISBN : 9791185890135
판형 : 규격외 변형
가격 : 34,200원 (정가 38,000원에서 -10% 할인)
https://book.naver.com/bookdb/book_detail.naver?bid=8731325
이 책으로 공부하신 분.
https://blog.naver.com/m_jackson_ko/221436257597
책을 잘 못 샀다.
근데 난 완전 초심자라서 쉬운 거 산다고 만 아래의 책 두권을 사버렸네?
제일 위에 나오는 책을 사야하는데 ㅋㅋㅋ
반응형
키워드에 대한 정보 언리얼 블루프린트 단점
다음은 Bing에서 언리얼 블루프린트 단점 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 언리얼 엔진 한달 공부한 결과 (+느낀점)
- 언리얼
- unreal
- 유니티
- unity
- 게임엔진
- 게임개발
- gamedev
언리얼 #엔진 #한달 #공부한 #결과 #(+느낀점)
YouTube에서 언리얼 블루프린트 단점 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 언리얼 엔진 한달 공부한 결과 (+느낀점) | 언리얼 블루프린트 단점, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.