회사에서는 언리얼4 엔진을 쓰는데, 집에서는 훈련을 유니티로 해볼까 한다. 양쪽 모두 게임 산업에서는 상당히 널리 쓰이고 있다. 유니티는 원래 Unity 3D 라는 상표명을 사용했던 것 같은데, 올해부터 Unity 2017 이라는 이름으로 바뀐 듯 하다. 아마도 2D, 3D 가 모두 지원 가능하다는 이미지를 주고 싶어서가 아닐까? 그 때문인지 프로젝트 생성 시 2D, 3D 를 선택할 수 있게 되어있다.



몇년 전만 해도 양쪽 엔진 모두 개인은 월 몇만원씩 주고 사용해야 했으나 최근 경쟁이 붙기 시작하면서 개인이나 인디 게임 제작하는 회사 수준에서는 모두 무료로 이용할 수 있도록 바뀌었다. 게다가 MS 도 이와 같은 흐름에 동참하면서 비주얼 스튜디오를 개인에게 무료로 개방하였다. 최소한 윈도우 환경에서 취미 생활로 게임을 만들고자 하는 사람에게는 더 없이 좋은 환경이 만들어진 것이다.


다만 언리얼과는 달리, 유니티는 별도의 라이선스(Pro) 없이는 엔진 소스 코드까지 접근할 수는 없는 듯 하다. 언리얼은 디버깅을 할 때 엔진 소스 코드가 보여서 엔진쪽 버그인지 그리고 엔진 코드가 무슨 일을 하는지 쉽게 파악이 가능했는데 - 물론 엔진쪽 버그면 수정이 어려워서 짜증이 나긴 한다 - 유니티는 그런게 어려울 듯 하다. 


언리얼4 엔진은 C++를 보통 사용하지만 유니티는 C#을 사용한다. 개인적으로는 C++을 선호하는 편이지만 C#도 상당히 좋아한다. C#은 무엇보다도 객체 수명 관리가 간편하며 C++와 같이 복잡하고 지저분한 코드가 덜 만들어진다. 언리얼 엔진에서도 대부분의 객체는 스마트 포인터와 같이 따로 해제를 해줄 필요가 없으며 가비지 콜렉션(GC)으로 수명을 관리해주므로 사실상 C++의 문법을 사용하고는 있지만 C#과 비슷한 느낌으로 사용이 가능하게 만들어두었다.


유니티 설치 시 인상깊었던 점은 유니티 설치 시 비주얼 스튜디오 2017 을 같이 설치해준다는 것이다. 언리얼은 별도로 설치했던 것으로 기억한다. 프로그래밍을 처음 하게 될 게임 제작자도 헤멜 거리가 하나 줄어들게 될 것이므로 긍정적으로 볼 수 있겠다.


아래는 두 엔진의 차이점을 표로 정리해본 것이다:

 

Unreal Engine 4

Unity 2017 - Personal 버전

가격

무료

무료

과금 조건 (로열티)

분기 매출 당 $3,000 초과분의 5%

연매출 10만 달러 이상인 경우 Plus 또는 Pro 버전으로 바꿔야 함

엔진 소스 코드 제공

X  (Pro 이상 버전)

주 프로그래밍 언어

C++ 

C# 

프로그래밍 IDE (Windows 기준)

Visual Studio 2017 (또는 2015)

Visual Studio 2017

만약 틀린 정보가 있다면 즉시 업데이트하도록 하겠다.




엔진 이야기는 이 쯤 하고, 이제는 오늘 진행했던 내용이다.


Roll a Ball 이라는 튜토리얼 프로젝트를 하고 있는데 동영상으로 하나씩 따라할 수 있도록 되어 있다. 언리얼로 치자면 블루프린트로만 진행하는 튜토리얼과 같은 수준이지만 유니티에서는 C# 으로 직접 스크립트를 코딩해야 한다. 이 점에서는 언리얼의 진입 장벽이 조금 더 낮다고 볼 수 있겠지만, 블루프린트로 게임을 만드는 경우 (프로그래머 입장에서) 나중에 고생을 많이 하게 되므로 결국엔 별 차이가 없다고도 할 수 있겠다.


몇 가지 인상깊었던 차이점을 하나 보자면, 언리얼은 에디터에서 기본 제공되는 기본 도형 중에 유니티에서 Plane 이라고 불리는 객체가 없다. 이게 없어서 상당히 의아했던 기억이 난다. 언리얼은 부피가 존재하는 블록을 사용하여 평평한 땅을 만든다. 유니티의 Plane 은 부피가 존재하지 않는 평면이다. 대신 앞, 뒷면이 존재하며 반대쪽 방향에서는 이 평면이 컬링되어 보이지 않는다.


또 한가지 다른 점은 축, 좌표계이다. 언리얼은 X, Y축이 지면이고 Z축이 위쪽인데, 유니티에서는 X, Z축이 지면이고 Y축이 위쪽이다. 예를 들어, 위 아래로 길쭉한 캡슐의 크기를 설명할 때 언리얼에서는 1x1x2 라고 표현하지만 유니티에서는 1x2x1 이라고 표현한다. 개인적으로는 Z축을 위쪽으로 보는 것을 선호한다. X, Y축은 위에서 땅을 내려다 보았을때 2D 평면의 좌표가 되고 Z축이 높이(Height)값이 되기 때문이다. 당분간은 이것 때문에 헷갈릴 것 같다.


에디터에서 카메라 움직임을 조작하는 법도 다른데, 예를 들어 마우스 휠 버튼을 누른 채로 이동하는 경우 언리얼에서는 카메라의 좌표를 조작한다는 느낌을 준다. 즉 휠을 누르고 마우스를 위쪽으로 움직이면 카메라는 지면에서 멀어지는 쪽(+Z)으로 움직인다. 반대로 유니티는 손으로 화면을 움켜쥐고 이동시키는 느낌이다. 스마트폰에서 화면을 손으로 누르고 밀어서 스크롤하는 느낌과 같다. 휠을 누르고 마우스를 위쪽으로 움직이면 화면의 다른 물체들이 위로 이동하고, 따라서 카메라는 반대로 내려간다. 나는 언리얼 방식을 선호하는 편이다. 아무래도 FPS 게임을 좋아해서 그런지 카메라가 플레이어로 인식되는 느낌이 더 편하다.


유니티 에디터에서 C# 스크립트인 .cs 파일을 여는 경우 내 기대와는 달리 Visual Studio 2017 이 켜지는 대신 처음 보는 에디터가 모습을 드러냈다. 이름은 MonoDevelop-Unity 이다. VS 가 더 편한 나로써는 약간 심기가 불편했지만 이 에디터가 유니티와 더 결합되어 있을 것이라는 기대를 했다. 그러나 한글과 같은 조합형 언어 지원을 제대로 못하는지 주석에 한글을 쓰니 타이핑이 누락되는 처참한 결과를 내고 말았다. 유니티가 한국 지사도 있는 것으로 아는데 이 점은 빨리 개선되어야 할 듯 하다.


"Input" 이라는 스크립트 코드를 입력한 후 Ctrl+' 를 누르면 관련 도움말 사이트로 즉시 넘어가는 기능의 설명을 따라했지만 유니티 사이트에서 404 에러를 뱉어냈다. 아무래도 이 기능이나 레퍼런스 웹 페이지의 유지보수가 필요할 듯 하다. 조금 더 테스트해보니 레퍼런스가 보관된 웹페이지의 주소가 바뀐 듯 하다. 직접 유니티 사이트에서 API 검색을 통해 Input 에 대한 설명을 찾아낼 수 있었다.


이 주소로 직접 이동하여 검색하면 된다: https://docs.unity3d.com/ScriptReference/index.html


C# 스크립트가 C++ 코드보다 더 나은 점이 있다면 엄청난 시간이 걸리는 컴파일 작업을 하지 않아도 된다는 것이다. 언리얼에서는 한 줄의 코드만 바꾸더라도 컴파일을 다시 해야 했는데 프로젝트가 커지면 커질수록 C++ 의 특성상 몇분에서 수십분 정도는 기다려야 했지만 C# 은 컴파일 속도가 엄청나게 빠르므로 그냥 스크립트를 저장하고 에디터로 오면 짠! 하고 게임을 플레이할 수 있다.

반응형

+ Recent posts