언리얼 엔진에서 다시 유니티로

언리얼 유니티 비교 이야기- 한국에서 유니티 엔진을 계속 사용하다가 독일에 와서 VR 게임을 개발하게 되면서 언리얼 엔진을 처음으로 사용하게 되었습니다. 유니티와 비슷해 보이면서도 다른 점이 많아서 처음에는 많이 생소했지만 점점 익숙해졌습니다. 2년 넘게 언리얼로 게임을 만들다보니 나중에는 제가 언제 유니티를 썼었던가 하는 생각까지 들더군요. 

그러던 중, 프로젝트가 회사 내부 사정으로 접히면서 저는 회사 내의 다른 VR 프로젝트 팀으로 옮기게 되었습니다. 이 팀에서는 유니티로 VR 게임을 만들고 있었고 다시 유니티로 개발을 시작하게 되었습니다. 그 후 8개월 정도 지나고 나니 이제는 언리얼로 돌아가고 싶은 생각이 또 없어져 버렸습니다.

일단 언리얼로 돌아가고 싶지 않은 개인적인 이유를 적어 보면 다음과 같습니다.

C++ 쓰다가 C#으로 프로그래밍하니 정말 편합니다

C++ 에서 다시 C# 으로

언리얼 엔진에서 사용하는 C++ 은 본래의 C++ 에 에픽에서 다양한 기능을 추가로 덧붙인 아주 편리한 프로그래밍 언어입니다. 가비지 컬렉션까지 지원하니까 할 말 다 했죠. 그럼에도 불구하고 C++ 을 사용해서 프로그래밍하는 것과 유니티에서 C# 을 이용해서 프로그래밍하는 것은 편리함에서 큰 차이가 있습니다.

일단 클래스마다 .h 와 .cpp 의 두 개 파일을 분리해서 관리할 필요가 없고, 컴파일하느라 기다릴 필요가 없습니다. 그리고 Linq를 비롯 언어 자체가 지원하는 수 많은 C#의 편리한 기능들을 사용하다가 다시 C++ 로 돌아갈 생각을 하니 눈 앞이 좀 캄캄해진다고 할까요?

물론 제가 C++ 을 자유자재로 다루는 수준이 아니라는 점 때문이기는 하겠지만 저 같은 평범한 프로그래머 입장에서는 따뜻하고 안락한 곳에 있다가 춥고 힘든 곳으로 가려고 하니 발걸음이 안 떨어지는 것도 사실입니다.

유니티는 2010년에 구입한 저의 맥북 프로에서도 아직 잘 돌아갑니다.

제가 사용하는 맥북 프로는 mid-2010 모델입니다. 거의 10년된 맥북 프로인데도 유니티로 가벼운 게임은 전혀 문제 없이 개발할 수 있습니다. 반면, 언리얼은… 작년에 과감하게 설치를 해 보았는데, 어렵게 설치는 되었지만 실행하는데 실패하고 말았습니다. 가난한 개발자에게 언리얼 엔진은, 비록 소프트웨어 자체를 무료로 사용할 수 있다고는 해도, 가까이 하기에는 너무 멀리 있습니다.

레벨디자이너를 미워하지 않게 되었습니다.

한국에서는 어떤지 모르겠지만 제가 일하고 있는 독일 게임 회사에서는 레벨 디자이너들이 게임 플레이와 관련된 코딩을 담당합니다. 프로그래머들이 필요한 기능을 구현하면, 레벨 디자이너들이 이것을 사용해서 게임을 만드는 식입니다. 언리얼 엔진은 블루프린트(Blueprint)라는 강력한 성능을 가진 비주얼 스크립팅 시스템을 제공하고 있는데, C++ 을 다루지 못하는 레벨 디자이너들은 당연히 이 블루프린트를 이용하여 코딩을 합니다.

문제는 레벨 디자이너들이 실수를 할 때인데요, 예를 들어 머지(merge) 도중에 충돌이 발생할 경우, 블루 프린트의 경우에는 두 버전의 차이를 비교해서 충돌 문제를 해소(resolve)하는 과정이 굉장히 번거롭습니다.

언리얼 엔진 자체적으로 지원하는 블루 프린트 버전 비교 툴(blueprint diff tool)이 있기는 하지만, 아무래도 텍스트 기반이 아니다 보니까 충돌을 해소하는 과정이 간단하지 않습니다. 물론 프로그래머가 아키텍처를 잘 구성해 놓고, 충분한 교육과 역할에 대한 조정을 잘 하면 이런 문제를 피해나갈 수 있겠지만, 이것이 생각보다 쉽지는 않더군요.

물론 C#을 사용한다고 해서 이런 문제가 자동으로 해결되는 것은 아닙니다. 그래도 텍스트 기반의 C# 코드를 사용할 때가 블루 프린트 비주얼 스크립트 도구를 사용하는 경우보다는 머지 과정에서의 충돌에 대한 해결이 더 편리하다는 점을 부인할 수는 없을 것입니다.  

일자리가 더 많을 것 같은… 느낌이 듭니다.

유럽에 소재한 게임 회사들의 프로그래머 구인 광고를 보면 유니티 프로그래머를 찾는 회사가 압도적으로 많습니다. 물론 유니티 프로그래머의 수도 그만큼 많으니까 경쟁은 더 심하지 않는가 하고 생각할 수 있겠지만, 경쟁은 언리얼 프로그래머의 경우도 마찬가지입니다.

물론 C++을 능숙하게 다루는 언리얼 프로그래머의 수가 유니티 프로그래머 수보다는 훨씬 적겠지만, 그만큼 일자리도 적기 때문에 유니티 프로그래머보다 경쟁이 심하면 심했지 절대로 약하지 않습니다. 따라서 미래의 구직을 생각한다면, 저도 당분간은 유니티를 붙잡고 있어야 할 것 같은 느낌이 듭니다. ^^

이 4가지 이유는 그저 제 개인적인 경험에 근거한 것입니다. 게임 개발 도구로서 언리얼 엔진은 정말 뛰어난 점이 많습니다. 아마 언리얼로 계속 개발하고 있는 프로그래머 분이 있다면 유니티로 돌아오고 싶지 않을 것입니다. 저의 경우도 유니티로 개발하다가 언리얼로 옮긴 뒤로 2년간은 유니티로 되돌아올 생각을 하지 못했으니까요.

그런데 외부 요인으로 유니티를 다시 시작하게 되니까, 이제는 또 언리얼로 못 돌아가겠네요. 편해지면 안주하게 된다고 하나요? 유니티가 저에게는 너무나 편하네요.

미래는 모르는 법이라 제가 언제 다시 언리얼로 되돌아가게 될 지는 모르겠지만 일단은 편한 곳에 더 머물고 싶습니다. ^^ (결론은 언리얼보다 유니티가 더 좋다는 것이 아니라 제게 더 편하다는 이야기였습니다 ㅎㅎ)

관련 학습 자료

언리얼 엔진 관련해서 초급 대상 교재나 강의는 많이 찾아 볼 수 있지만 중급 수준의 강의를 발견하기는 어렵습니다. 최근에 영어 강의 하나가 한글 자막본으로 번역되어 나온 것을 보았습니다. 이에 소개해 드립니다.

언리얼 C++ 멀티 플레이어 마스터 : 중급 게임 개발 (한글 자막 강의)