일단 나는 언리얼 유니티 둘다 써보긴했지만, 지금은 유니티만 쓰는사람이다. (내가 하는 플젝이 유니티가 더 유리해서 그렇다)
그래도 신기술 보는건 좋아해서 유나이트랑 언리얼서밋 꾸준히 보고, 언리얼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. 그냥 다른 방향성의 엔진이고 누가 우위다 라고 얘기하긴 힘들다.
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.