유니티(게임 엔진)

Unity

개발사

Unity Technologies

출시일

2005년 6월 8일

최신 버전

2019.3.0. (2020/01/27)[1]

유형

게임 엔진

기반 언어

런타임용

C, C++[2]

스크립팅용

C# (지원 중)
UnityScript (2018.2 버전부터 지원 중단)[3]
Boo (5.0 버전부터 지원 중단)[4][5]

타겟 플랫폼[6]

PC

| |

콘솔

| | |
|
| |

모바일

| | |

VR HMD

| |
| |

AR HMD

| | |

TV

| |

클라우드

자동차

요금[7]

Personal

무료[8]

Plus

월 $40[9]

Pro

월 $150[10]

웹사이트

1. 개요
2. 역사
2.1. Unity
2.2. Unity 2
2.3. Unity 3
2.4. Unity 4
2.5. Unity 5
2.6. Unity 2017
2.7. Unity 2018
2.8. Unity 2019
3. 장단점
3.1. 장점
3.1.2. 간편한 빌드
3.1.3. 낮은 요구 사양
3.1.4. 에셋 스토어
3.1.5. 저렴한 라이선스 비용
3.2. 단점
3.2.1. 빈약한 고급 기능
3.2.2. 제한적인 멀티스레드 기능
3.2.3. 라이선스 문제
3.2.4. 소스 코드 비공개
3.2.5. 보안성 문제
4. 다른 개발도구와의 비교
4.1.1. 유니티 → 언리얼 엔진 4 목록
4.1.2. 언리얼 엔진 4 → 유니티 목록
4.2. 유니티 vs 크라이엔진
4.3. 유니티 vs 플래시 몰힐(Molehill)
4.4. 유니티 vs Cocos2d-x
4.5. 유니티 vs 쇼크웨이브
5. 기타

1. 개요

{{{#black 유니티 엔진으로 구현시킨 레이트레이싱(Ray-Tracing) 데모[* 댓글창을 보면 "웹플레이어 엔진이 이렇게나 진화 할 줄을 누가 알았겠냐" 라는 댓들이 보인다.][11]}}}

2004년 8월 덴마크 코펜하겐에서 설립된 Unity Technologies가 개발한 게임 엔진.

주로 저사양/소규모 게임의 개발에 적합하며, 2005년 6월 8일에 처음 발표되었다.

2. 역사

본래는 어도비 플래시가 한창 잘나가던 시절 플래시로 구현이 힘든 3D 시장 공략을 노린 3D 타겟 웹미디어 제작툴이었다(초기 유니티 엔진은 멀티플랫폼 중 하나로 브라우저 역시 주력 지원했고, '유니티 웹 플레이어'라는 이름으로 현재까지 남아 있다. 현재는 웹 플랫폼보다는 모바일 기반이 주력이 되었지만). 하지만 전문적인 게임엔진에 비해 비교적 단순하고 사용법이 쉽다는 점에 착안한 개발자들이 이를 이용해 게임을 만들기 시작하면서 아예 게임 엔진으로 방향이 선회되었다. 언리얼 엔진의 라이선스 정책 변경 전[12]에는 유니티의 라이선스 비용이 매우 저렴하고, 여타의 고급 엔진들로 대형 프로젝트를 개발하는 것에 비해 단순한 게임들을 만들어 내기에는 비교적 쉬운 편이라서 아이폰을 필두로 한 스마트폰 게임이 새로운 블루오션으로 떠오르던 태동기에 절묘한 타이밍으로 선점하여 모바일에서 승승장구했었다. Shiva3D와 같은 유사한 경쟁자들도 있었으나, 애셋 스토어라는 생태계의 조성에 힘입어 넓은 사용자 풀이 형성되면서 막 모바일 게임 시장이 확장되던 시기에 독보적으로 치고 나아갔다.

앞에서 언급한 플랫폼 이외에 VR HMD 또는 AR HMD 지원 기기 등을 비롯하여 현세대에 해당하는 대부분의 플랫폼으로 개발 가능한 게임 엔진이 되었다.

하지만 언리얼 엔진이 모바일 게임 시장까지 발을 넓혀가면서 그 입지가 서서히 양분화되어가는 추세로, 스마트폰도 차차 고사양화되어가면서 고품질의 모바일 게임들이 하나둘씩 언리얼 엔진을 사용하고 있으며 저사양/소규모 프로젝트에는 유니티가 많이 쓰이고 있는 상황이다. 언리얼 엔진이 교육정책에 힘을 쏟고 있는 것과 마찬가지로 유니티 역시 교육정책에 신경을 쓰고 있다.

유니티로 만들어진 게임영상은 유튜브 Unity GDC 채널에서 볼 수 있다. 공식 행사에서 뽑힌 퀄리티 높은 게임들을 묶어놓은 영상들이다.

공식 네이버 카페도 있다. 2018년 5월 말부터 한글 패치를 제공하고 있다.

2.1. Unity

2005년 6월 8일에 출시된 유니티 엔진의 최초 정식 버전으로, 초창기에는 macOS만 지원했으나 나중에 Windows와 PC 기반의 웹 브라우저들도 추가 지원하게 되었다.

2.2. Unity 2

2007년에 출시된 첫 메이져 업그레이드 버전으로, 3D 기능 강화와 공동 작업 기능, 비디오 재생 기능을 비롯하여 50여가지의 새로운 기능들이 추가되었다.

2008년에 애플의 앱 스토어가 런칭되면서 iPhone OS(현 iOS)를 추가 지원하여 유니티 엔진으로 개발된 게임을 앱 스토어로도 배포할 수 있게 되었다.

2.3. Unity 3

2010년 9월에 출시된 버전으로, 기존의 PC 플랫폼과 iPhone OS(iOS)뿐만 아니라 Android 같은 모바일 플랫폼, PS3, XBOX 360, Wii 같은 콘솔 게임기 등의 다양한 플랫폼으로 확장되었고 동시에 전세계적으로 스마트폰의 대중화와 맞물려서 유니티 엔진으로 개발된 게임들이 급격하게 늘어났다.

현재 유니티 엔진 버전별로 모아 놓은 공식 아카이브에서는 2011년 7월 26일에 발표된 3.4 버전부터 다운로드 받아 사용할 수 있다.

2.4. Unity 4

2012년 11월 13일에 출시된 버전으로, DirectX 11을 지원하기 시작했고 새로운 애니메이션 도구가 추가되었다.

2013년에 페이스북이 유니티 엔진 기반의 게임을 위한 개발 도구를 통합함으로써 유니티 엔진으로 개발한 게임을 페이스북에 등록하기가 쉬워졌다. SNS 연동으로 다른 친추 사용자에게 게임 추천 기능을 제공하여 접속할 수 있는 일종의 광고 캠페인 기능이 추가되었다.

2.5. Unity 5

2015년 3월 3일에 정식 출시된 버전으로, GDC 2015에서 언리얼 엔진 4의 완전 무료화에 이어 유니티도 개인용 무료화를 선언하였다. 그러나 완전 무료는 아니고 여러가지 조건에 따른 제약 사항이 따른다.

2015년 9월 8일에 발표된 5.2 버전부터는 Windows 10 유니버셜 앱 플랫폼을 추가 지원하며, 코드 작성에 있어서 비주얼 스튜디오Rider와의 연동이 가능하다.

2.6. Unity 2017

2017년 7월 10일에 정식 출시된 버전으로, Unity의 버전 이름이 연도 방식으로 변경되었을 뿐만 아니라 마이너 업데이트 버전의 형식도 2017.0.0 버전이 아니라 2017.1.0 버전부터 출발하는 것으로 변경되었다. 이후에 라이선스 정책도 변경되었다.

2017의 특정 버전부터 32비트 에디터 더 이상를 지원하지 않으므로 32비트에서 사용하려면 5 버전을 사용해야 한다.[13]

2.7. Unity 2018

2018년 5월 2일에 정식 출시된 버전으로, 3D 그래픽 성능이 크게 개선되었고 잡 시스템과 ECS를 지원하여 멀티스레드를 이용한 포크-조인 방식의 병렬 프로그래밍이 유니티 스크립트에서도 사용 가능해졌다.

2.8. Unity 2019

2019년 4월 15일에 정식 출시된 버전으로, 경량 렌더 파이프라인이 정식으로 적용되어 2018 버전에 이어서 3D 그래픽 성능의 최적화가 개선되었고 버스트 컴파일러가 정식으로 적용되어 컴파일 속도가 개선되었다.

안드로이드의 경우 x86_64 지원을 못했고, 그래서 x86을 아예 빼버렸다. (...) 다만 PC는 아직 지원하는 것으로 보이나(ARM을 가상화 하는 에뮬레이터 에서만 가능. 예를 들어 안드로이드 가상 에뮬레이터, 녹스, 블루스택 등등), 인텔계열 CPU를 쓰는 크롬북이나 일부 테블릿은 안드로이드 호환으로 대응하는 경우 문제가 생길수 있다. (안드로이드 x86 안습...)

3. 장단점

3.1. 장점

유니티 엔진의 장점은 크게 다음과 같이 살펴볼 수 있다.

시간이 지난 요즘에는 여타 게임 엔진들도 엇비슷하게 따라간 상황이라 유니티만의 특별한 장점으로 보기 힘들어졌다.

3.1.1. WYSIWYG

툴의 GUI가 아주 직관적이다. WYSIWYG 방식의 툴은 사용자가 직관적으로 내부 에셋들의 위치를 바꾸거나 적용하거나, 에셋의 임포트 등을 매우 손쉽게 가능하며 유니티가 소규모/인디 게임에 폭발적인 인기를 얻게 된 가장 큰 비결이었다. 게임 엔진에서 유저 친화적 UI가 얼마나 중요한지 상징적으로 보여줬으며, 향후의 게임 엔진들에 매우 많은 영향을 주었다.[14]

3.1.2. 간편한 빌드

버튼 몇 번만 누르면 다양한 플랫폼으로 빌드가 가능하다. 그러나 플랫폼별 특성에 맞게 어느 정도 조정작업 및 별도의 최적화도 필요하다. 플랫폼별로 특징이 다르므로 당연한 일이며 유니티를 쓴다고 해서 그런 조정작업이나 최적화가 자동으로 되지는 않는다. 게임 하나 만들어 놓고 별다른 노력도 없이 다양한 플랫폼으로 출시할 수 있는 건 아니니 반드시 유의해야 한다.

3.1.3. 낮은 요구 사양

버전 업 되면서 요구 사양이 점점 높아졌지만 AAA급 고퀄리티 게임을 개발할 수 있는 다른 메이저 게임 엔진에 비하면 비교적 가벼운 편이라 저사양 PC에서도 저사양 타겟의 간단한 게임 정도는 무리없이 개발할 수 있다. 물론 고사양 고퀄리티 에셋들로 떡칠하면 무거워지는건 마찬가지이다.

3.1.4. 에셋 스토어

인디 게임개발자들이나 초보 개발자들에게 유리한 이점을 제공한다. 바로 애셋 스토어의 존재다. 각종 리소스부터 스크립트, 플러그인으로 사용할 수 있는 다양한 기능, 미리 만들어 놓은 AI 등 수많은 기능들을 이용자들이 올려서 서로 사고 팔 수 있는 장터를 제공한다. 이 정책은 크게 성공하여 유니티 붐을 일으키는 데 일조했다. 사용자가 많을수록 애셋 스토어에 더 많은 상품들이 올라오고, 그것을 본 사람들은 유니티 사용에 긍정적으로 접근하게 되고, 신규 유입된 사람들이 다시 스토어에 유니티 기능을 만들어 올리는 등 선순환 과정이 형성되어 있다. 애플의 앱스토어가 아이폰 자체의 기능을 넘어서 사용자들에게 매력요소가 된 것과 비슷한 원리다. 그리고 유니티에서 운영하는 인디, 초보자들을 지원하는 프로그램 등 관련된 다양한 행사가 진행된다는 점도 강점이다. 엔진 자체의 확장성과 맞물려 게임 이외에 방송, 애니메이션, 툴 등 3D 게임 엔진으로 할 수 있는 각종 에셋들이 존재하며, 찾아보면 이런 것도 있나 싶을 정도로 방대한 생태계를 자랑한다.

웹사이트

유니티를 다른 엔진들에 비해 우월한 지위에 올려 준 가장 큰 요소이다. 디자인, 모델링부터 유니티에 기능을 추가하는 플러그인에 해당하는 애셋까지 누구나 무료로 배포하거나, 유료로 판매할 수 있는 애셋용 앱스토어이다. 코딩에 익숙하지 않은 디자이너들이나 리소스 제작이 힘든 개발자들이 이 애셋 스토어에서 구매하거나 무료로 다운받은 애셋을 사용하여 프로젝트를 수월하게 진행할 있도록 도와준다.

항목

애셋

GUI

NGUI, Scaleform[15], Noesis GUI[16], ...

2D

2D Toolkit, ...

Shader

Substance, Shader Forge, ...

Script

Playmaker, uScript, ...

AI

Simple Path, ...

Tween

iTween, LeanTween, ...

Modeling

Simplygon, GameDraw, ProBuilder 2, ...

애셋 스토어 폴더에 파일이 너무 많으면 로드가 매우 느려질 수도 있다. 그리고 빈 회색 화면만 보인다면 edit > project setting > player에서 use Direct3D 11을 체크 해제해 보자.

3.1.5. 저렴한 라이선스 비용

2017 버전 이후 영구 라이선스는 없어졌으나 개인 라이선스는 여전히 무료로 유지하고 있으며, 연매출 20만불 이하일 경우 월 40,000원대, 그 이상은 140,000원의 라이선스 비용을 받는다. 매출이 10만 달러 이하일 경우는 무료 라이선스를 사용할 수 있다. 1인 개발자의 경우, 여기에서 의미하는 10만 달러는 순수하게 유니티 엔진을 사용하여 번 돈을 의미한다. 예를 들어 유니티와 전혀 관계 없는, 연봉 10만 달러 이상의 금융 회사에 다니는 회사인이 있다고 가정해 보자. 그 회사인이 취미로 유니티를 이용하여 게임을 개발할 경우, 그 게임이 연 매출 10만 달러 이하라면 여전히 유니티를 무료로 사용하여 게임을 만들 수 있는 것이다. 이러한 값싼 라이선스 비용은 각종 엔진들이 무료화하는 데 큰 영향을 끼쳤으며, 게임이 출시되더라도 별도의 라이선스 비용을 청구하지 않는다. 이는 개발의 민주화라는 모토와 맞물려 게임개발의 대중화 및 인디/소규모 개발팀이 많이 생겨나는 계기를 만들어 냈다.

이러한 장점들 덕분에 벤처 기업이나 소규모 스타트업 창업을 하는 사람들 입장에서는 굉장히 유용하게 사용할 수 있으며, 2D 기능 역시 최신 기능들이 계속 추가되고 있기에 2D, 3D 모두 개발이 가능하다. 특히 소규모/인디 개발에만 한정되던 초기와는 다르게 저사양 게임이지만 비교적 개발자본이 어느정도 들어가는 규모의 게임까지. 그리고 장르 역시 MMORPG에서 전략/퍼즐/액션 등 다양하게 개발되고 있다.

3.2. 단점

3.2.1. 빈약한 고급 기능

간편하게 적용할 수 있는 고급 기능이 별로 없다. 고급기능을 활용하기 위해서는 개발자의 삽질이 필수적이다. 엔진 자체의 최적화가 아직 부실한 탓인지 일부 기기에선 프레임 드랍이 일어나기도 한다. 무엇보다 한국어 지원이 상당히 부실하다. 한국인으로서는 큰 걸림돌. 윈도우에서 처음 구동시 사용자 계정명이 한글로 되어있으면 제대로 실행조차 되지 않는다. 더욱이 기본적으로 마이크로소프트 계정 연동으로 인해 계정명이 기본적으로 실명으로 생성되는 윈도 8 유저들이라면 유니티 하나 돌리겠답시고 새 계정을 만드는 곤혹스러운 과정을 치러야 한다. 청강대에서 열렸던 유니티 로드쇼 2015에서 올해 내로 중국어를 제치고 한국어를 정식 지원하기로 언급했지만, 결국 3년 뒤 2018년 5월 경에서야 2018.1 버전 출시와 동시에 한글판 베타 버전이 출시되었다. 유니티 한글화 관련 소식

3.2.2. 제한적인 멀티스레드 기능

유니티 API가 메인 스레드 외에서는 호출이 안전하지 않기 때문에 제한적으로만 멀티 스레드를 적용할 수 있으며 결국 이를 통해서 높은 성능 향상을 꾀할 수는 없다. 유니티 API가 없는 순수한 연산 집약적 동작을 병렬 처리하는 것인데, 이는 전체 동작에 대한 완전 병렬화가 아니다. 또한 연산 관련 코드에서 API를 통하지 않는 경우는 많지 않으면서, 대부분의 연산 능력을 API에서 요구하기 때문. 즉, 병렬화가 되는 부분이 극히 일부이기 때문에 높은 이득을 취할 수는 없다. 암달의 법칙 참고.

설령 어찌해서 구현했다 해도 노력 대비 얻는 성능 향상이 크지 않아서 이를 동적 로딩[17]에 응용하는 경우도 볼 수 있는데, 마찬가지로 유니티 API를 멀티스레드에서 안전하게 사용할 수 없으니 완벽한 동적 로딩을 구현하기는 힘들고 성능 향상도 기대에 미치지는 못한다. 즉, 고도의 편법을 완벽하게 익혀서 문제가 될 부분을 최소화하여 적용하지 않는 이상, 성능 이슈가 될 가능성이 높은 부분을 병렬화하지 못해 0번 코어만 죽어라 갈구는 경우가 될 가능성이 높다는 것이다. 이런 상황이 높은 성능을 요구하는 게임에서 발생한다면 그야말로 망했어요. 실제로 유니티 엔진 4로 개발된 로켓 발사 시뮬레이션 게임인 KSP는 시뮬레이션 특성상 물리연산을 엄청 빡세게 하는데 이 물리연산 스레드를 코어 하나가 전부 감당해야 하기 때문에 어디가서 성능 좀 된다 하는 CPU도 부품이 많아지면 프레임을 제대로 못뽑는 상황이 무조건 발생한다. 이때문에 개발자가 유니티 엔진 5로 엔진을 갈아타는(!) 작업을 완료해 업데이트를 했지만, 그나마도 우주선 하나당 코어 하나씩 분담시키는 수준이 한계라고 밝혔다. 멀티스레딩이 안되어서 생기는 문제의 아주 대표적인 예. 그렇게 동세대 인텔 CPU 대비 IPC가 떨어지는 AMD CPU 노트북들은 죽어나간다[18] 물론, 이 문제는 KSP 못지 않게 연산량이 드럽게 많은 시티즈: 스카이라인도 마찬가지인데, 이 게임은 아예 유니티 본사 측에서 기술 지원을 해줬다(...). 그나마도 8스레드까지 인식하지만 실질적인 스레드 분담은 4스레드까지. 그래서 짝퉁 멀티코어 지원이라고 까이고 있다.

다수의 저성능 코어를 빅 리틀 솔루션까지 적용해가며 끌어모은 모바일 환경은 물론, 각 코어당 성능이 높은 편인 PC에서까지 영 좋지 않은 자원 활용도를 보일 수밖에 없다. 따라서 일정 수준 이상의 규모가 되는 게임을 개발하기에는 아쉬움이 크다.

다행히 2018.1 버전부터 C# 잡 시스템(JobSystem)[19]과 ECS[20]이라는 방법으로 멀티스레드를 이용한 포크-조인 방식의 병렬 처리를 지원한다. 하지만, 아직 문제가 많고 불안정해서 많은 개발자들이 지켜보고 있는 상황이다.

3.2.3. 라이선스 문제

언리얼 엔진이 공격적인 라이선스 정책으로 변경하면서 2017년 이후 시점에는 유니티의 라이선스 비용이 절대적으로 우위에 서 있지는 않다.

기본적으로 연수입/자본금 10만 달러 이하의 경우에는 완전 무료이지만, 그 이상부터는 언리얼 엔진처럼 개발된 제품의 매출에 따른 로열티가 없는 대신 개발자 머릿수(Seat)당 월간 라이선스 비용의 형태로 비용이 발생한다. 연수입/자본금 20만 달러 이하의 경우에는 월 25달러 (1년 납부시) 이며 그 이상의 경우 무제한 라이선스인 Unity Pro로서 월 125달러를 내면 된다. 여기에 만일 추가로 유료 플러그인을 구매할 경우 각 플러그인의 라이선스 정책에 따라 일시불 혹은 구독료가 발생할 수 있다.

연 10만달러 이상 수입을 내면서 소규모 개발팀이면서 개발자 seat 수가 많은 경우에는 라이선스 비용이 상당히 높아질 수 있는데 이러한 비용은 연 10만 달러가 넘는 수익규모를 가진 개발팀에 적용되는 것이며, 이 정도 규모의 개발팀이면 시스템이나 개발툴을 갖추는 데에도 적지 않은 비용이 필요하고 팀을 운영하기 위한 고정비가 요구된다는 점을 감안해야 한다. 사실 연 1억원이 넘는 매출을 올리면서 월 25달러 추가 지출을 못하며, 플러그인 구매에 비용을 소모하지만 리소스 편집/개발시스템 소프트웨어 비용은 무료 수준의 별도 수단을 이용하고 있고, 팀 운영은 공짜로 하지만 개발자 seat 수가 대단히 많으며, 소스코드 레벨 커스터마이징이 필요한 블록버스터 인디팀은 거의 없다.

또한, 언리얼 엔진이 기본 고정 라이선스 비용을 완전 무료화하였고 비율 로열티만 지불하는 정책이지만 분기별 매출 3천달러 이상 시 초과분에 대해 5%라는 것은 유니티보다 훨씬 하한선이 낮은 연 매출 1만2천달러(1400여만원) 부터 유료화가 된다는 이야기가 된다. 유니티가 유료화(월 25달러)되는 단계인 플러스 라이선스(10만달러~20만 달러) 에서 언리얼은 최소 월 366달러(10만달러) ~ 783달러(20만달러) 를 지불해야 한다. 이 차이는 금액이 커질수록 오히려 더 커진다.

3.2.4. 소스 코드 비공개

유니티는 기본적으로 월간 비용을 지속 지불하더라도 전체 소스코드는 여전히 비공개며, 전체 소스코드가 포함된 라이선스를 원할 경우 그 비용은 언리얼 엔진 커스텀 라이선스 비용과 맞먹게 된다. 여기에 개발기간이 길어진다던가, 개발팀 인원이 증가된다던가, 타 스튜디오 등의 지원을 받아서 유니티의 시트당 사용자수가 늘어날 경우에 따라서 개발 비용이 지나치게 높아질 수 있으므로 상황에 따라서 언리얼 엔진의 사용을 고려해야 할 수도 있다.

유니티는 버전 간의 완벽한 호환성이나 버그 무결성을 추구하는 것보다는 신기술과 트렌드를 빨리 도입하고 시장 강화적인 마케팅에 더 힘을 쏟는 정책을 펼치고 있다.

때문에 2019년 현재 FEEDBACK 과 ISSUE TRACK에 올라온 치명적 버그가 수십~수백개에 달하며 심지어 그 중 몇몇 개는 엔진 자체를 사용 못하게 만드는 버그임에도 불구하고 대응 속도가 아직도 너무 느리다. 예를들면 이런 . 버전관리가 안돼서 이전에 잡힌 버그도 계속 부활한다. 이쯤되면 회사가 버그를 잡아서 해결하는 것이 아니라 제작사가 알려진 버그를 피해서 해결하라는 이야기.

그런 반면 대외적 홍보, 강사 초빙, 세미나 등에 초점을 맞춰 마케팅에 집중하고 있다.

3.2.5. 보안성 문제

이전 버전의 경우 C# 프레임워크인 Mono에 기반했기 때문에 보안이 거의 하나도 되지 않았다. 강제로 오픈소스화된다고 할 정도로, 게임 내의 모든 리소스를 포함해서 스크립트의 코드를 담고 있는 DLL 또한 압축해제와 리버싱을 통해 얼마든지 내용이 드러나게 된다.[21] 이는 결과물이 중간 바이트코드인 대부분의 경우에 공통적으로 해당된다. 기계어 수준까지 컴파일이 되는 경우는 역컴파일이 쉽지 않고, 그마저도 현재는 C로 제한적인 표현이 가능한 수준이다. 그것도 다른 언어로 컴파일된 것이면 해석이 더욱 어렵다. 가르쳐줘! 코딩소녀에서도 이 문제가 언급되며 직접 인터넷에 나돌아다니는 도구로 하스스톤 클라이언트를 분해하는 시범도 보이면서 유니티는 사실상 오픈 소스 개발 도구라고 깐다.[22][23] 암호화를 시키면 되지만...

보안 문제는 메모리 해킹 방어, 스크립트 암호화[24], 변수 암호화 및 다중화, 체크섬 및 패킷 암호화 등 프로그래머들이 갈려나가면서 보안성을 마련하면 어느 정도는 해결될 수는 있다.[25] 문제는 유니티의 낮은 진입장벽에 의해 코드 암호화를 하지 않는 프로그래머가 대다수라는 점이 문제다. 어차피 모바일 환경이 보안성을 살릴 수 없는 환경이라는 점과[26] "어차피 털릴 어플은 털린다."라는 생각을 가지는 개발자들이 대부분이고 현장의 인식도 여기에서 크게 다르지 않은 상태라서 많은 게임들은 클라이언트-서버 구조로 제작해서 중요한 부분을 서버에서 처리하는 형태로 운영되고 있다. 이러면 다행이기라도 하지, 아예 보안장치를 마련하지 않는 사례도 수두룩하다.

그래서 해당 부분을 암호화하기 위하여 애셋 스토어에 CodeGuard나 Anti-Cheat-Toolkit 등의 서드파티 툴이 기본적인 코드 난독화, 메모리 해킹감지 등을 제공했다. 물론 완벽하게 막아줄 수는 없다. 할 일 없는 해커들의 공격은 집요한 법

IL 코드를 C++ 코드로 바꿔서 컴파일하는 IL2CPP 라는 것이 있으나 컴파일 시간이 너무 길고 버그가 심하며 .NET의 일부 기능을 쓸 수 없다.

최신 버전에 들어서면서 Mono 대신 .Net framework 4 이상의 버전으로 마이그레이션함과 동시에 아예 네이티브 코드를 생성하는 Burst Compiler를 도입하여 이 약점에 대응하는 수단이 등장했다. 네이티브 코드의 경우 C#이 해독되는 가장 큰 약점인 중간 바이트코드가 없이 C/C++과 동일하게 어셈블리 코드를 생성하므로 해당 문제점이 나타나지 않는다.

4. 다른 개발도구와의 비교

4.1. 유니티 vs 언리얼 엔진 4

항목 참조.

4.1.1. 유니티 → 언리얼 엔진 4 목록

상당수의 게임들이 유니티 엔진 기반으로 개발도중 언리얼 엔진 4로 엔진을 바꿔 재개발하는 경우가 많은 사례로 나타나고 있다. 주된 이유는 프로젝트의 규모가 커지면서 유니티로는 감당하기 힘든 리소스 관리 및 고퀄리티 그래픽 대비 최적화, 개발 툴의 편의성과 엔진의 확장성, 유연성에 있다. 유니티는 비교적 툴이 단순해 보여서 익히기 쉽고 편리하게 보일 수 있으나 개발의 깊이가 깊어질수록 그 한계가 드러나는 반면 언리얼은 유니티와는 정 반대이기 때문이다.

유니티에서 언리얼 엔진 4로 변경된 게임들 목록(지속 추가 바람)

목록을 보면 알겠지만 인디에서도 유니티에서 언리얼로 갈아타고 있는 것을 알 수 있다. 어찌보면 당연한 일인게, 대규모 프로젝트의 경우는 애초에 유니티를 사용하지 않고 언리얼로 시작한다. 유니티에서 언리얼로 갈아타는 프로젝트들은 인디/소규모 게임일 수밖에 없다.

4.1.2. 언리얼 엔진 4 → 유니티 목록

반대로, 개발규모를 축소하면서 작업을 증가시키는 일인 엔진 교체를 하는 상황 자체가 비합리적이므로 알려진 게임들 중 언리얼 엔진 4에서 유니티로 변경된 게임의 사례는 찾아보기 어렵다. 애초에 메이저나 인터넷에 알려질 정도로 유명세가 있는 개발팀이라면 이러한 선택을 하지 않을 것이다.

소수 모바일 프로젝트의 프로토타입 단계에서 테스트 후 엔진을 변경한 사례는 있으나 개발규모가 작은 게임의 경우며, 그마저도 개발중간에 변경한 사례는 찾아볼 수 없는데 애초에 작은 규모의 게임을 만들던 팀은 개발 중간에 엔진을 바꿔서 새로 만들 여력이 없는 경우가 대부분이기 때문이다.

언리얼 엔진에서 유니티로 변경된 게임들 목록(지속 추가 바람)

4.2. 유니티 vs 크라이엔진

크라이 엔진은 모바일에서의 사용이 전무하며, 2018년 이후 시점에서는 PC/콘솔의 대형 프로젝트에서의 입지도 거의 잃은 상황이라 사실상 비교하기 힘들다.

4.3. 유니티 vs 플래시 몰힐(Molehill)

웹에서 실행할 수 있다는 점에서 비슷한 쓰임새를 가진다. 정확히 따지자면 유니티는 게임 엔진이고, 플래시의 몰힐은 DirectXOpenGL과 같은 로우 레벨 API이다.(참고 사이트) 조금 다르지만 비유를 들자면 붓와 물감의 관계에 가깝다.

굳이 비교를 하자면 유니티는 직관적인 GUI를 통해 3D 쪽에서 높은 생산성과 함께 진입 장벽이 낮다. 플래시는 유니티보다 OOP적이며 높은 생산성, 특히 2D에 유리하다. 퍼포먼스는 몰힐이 로우 레벨 API라는 점에서 기기의 GPU 성능만 어느 정도 된다면 대체로 플래시의 몰힐이 더 높은 성능을 낼 것이다. 라이선스 면에선 유니티는 다른 수억 대의 엔진들에 비하면 싸긴 해도 일단 돈이 들긴 드는데 비해, 몰힐은 그냥 공짜다. 가령 Flash Professional은 유료. 몰힐 자체는 공짜라서 몰힐을 Flex Builder에서 쓰든 공짜 툴인 Flash Develop, Haxe에서 쓰든 아무 상관없다. 사실 적용 대상이 달라 차이를 비교하기는 어렵다.

4.4. 유니티 vs Cocos2d-x

몰힐의 비교와 비슷하다. 유니티는 C# 스크립트가 주가 되지만 Cocos2d-x 는 C++ 코드가 주로 사용된다. Cocos2d-x 는 드로우콜에 관련된 부분은 전부 OpenGL에 의존하며. 원래부터 GUI 기반의 에디터가 존재하지 않는 하드코딩이다. 나중에 GUI 에디터를 기반으로 개발된 Cocos Studio가 나왔지만, 나온지 얼마 안 돼서 그런건지 기능적인 지원 수준이 유니티 엔진에 비하면 부족한 편이다. 3D도 지원하긴 하지만 지금으로써는 거진 OpenGL로 3D 게임을 만드는 것보다 약간 더 편리한 정도 차이 밖에 없다. 3D 기능을 사용하고 싶다면 코코스2dx를 사용하는 것보다 유니티 엔진이나 언리얼 엔진을 사용하는것이 훨씬 낫다. 아니, 비교가 불가능할 정도.

2D에 특화된 코코스2dx라서 2D 쪽으로는 유니티 엔진과 경쟁할 정도로 생산성이 높다지만... 코코스에서 지원하는 기능만을 사용해서 개발하기엔 무리다. 언제가 되었든 간에 반드시 클래스와 객체지향적 프로그래밍을 알아야 하기 때문에, 첫 진입장벽은 꽤 높은 편이다.

2019년 기준으로 2D쪽으로도 유니티가 압도적으로 생산성이 좋다.

Cocos는 CocosCreator쪽으로 집중하느라 Cocos2D-X는 업데이트 주기가 점점 길어지고 있다. 또한, 업데이트 되면 기능이 좋아지거나 추가되거나 버그가 없어지거나 해야되는데, 정반대로 CocosStudio를 포함하여 있던 기능도 제거되고, 지원 플랫폼도 줄어들고 버그도 늘어나고 있는 중이다. 거의 모든 엔진중에서 공식적으로 닌텐도 스위치를 지원하지 않는다.(...)

4.5. 유니티 vs 쇼크웨이브

유니티 초창기 시절에 비교되었으며 이때는 웹 브라우저상에서 3D를 구현하는 가장 편리하고 성능 좋은 방법 중 하나로 어도비 쇼크웨이브가 자리잡고 있었고, 유니티 웹 플레이어는 후발주자인 상황이었다. 하지만 유니티는 게임 엔진이고 쇼크웨이브는 그저 웹 브라우저 등에 사용되는 멀티미디어 플레이어일 뿐이므로 둘은 적절한 비교 대상이 아니다.

5. 기타

5.1. 유니티 엔진 기반의 게임들

  자세한 내용은 유니티(게임 엔진)/게임 목록 문서를 참고하십시오.

5.2. 유니티짱

  자세한 내용은 유니티짱 문서를 참고하십시오.


  1. [1] Stable release.
  2. [2] 게임 엔진은 C++로 개발, API는 C#을 스크립팅 언어로 활용하여 작성한 형태를 띄고 있다.
  3. [3] JavaScript를 기반으로 하는 유니티 엔진의 자체 스크립트였으나, 2017 버전부터 서서히 퇴출 수순을 밟더니 2018.2 버전부터 지원이 완전히 중단되었다.
  4. [4] 이전에는 Boo라고 하는 언어도 지원했고 지금도 쓸 수는 있으나 5.0 버전으로 넘어오면서부터 API 문서를 지원하지 않는다고 공지하였다. 사실상의 퇴출 수순. 사실 Boo는 Python과 굉장히 유사한 언어고 기존에는 JS와 함께 여타 언어를 쓰던 유저들을 잡을 목적으로 지원했지만 그래도 제법 쓰고있는 JS에 비해 사용률이 매우 저조했기 때문에... 현재 이곳에서 볼 수 있는 사용 가능 스크립트에도 아예 빠져있다.
  5. [5] 사실, .Net 기반 언어이면 모두 사용 가능하다. F#도 가능하다는 이야기. 추가로, Python을 사용할 수 있게 해주는 플러그인도 있다.
  6. [6] 출처
  7. [7] 출처
  8. [8] 상한선 연매출 및 자본액 $100,000
  9. [9] 상한선 연매출 및 자본액 $200,000.
  10. [10] 상한선 연매출액 및 자본액 제한 없음.
  11. [11] 원문: Who could have known that a web player engine would turn into this...
  12. [12] 프로젝트당 최소 3억 가량.
  13. [13] 참고로 운영체제 64비트 검사 루틴이 없었는지 2017 버전이 32비트에서 설치가 되긴 한다. 당연히 64비트용이라서 실행은 되지 않는다.
  14. [14] 언리얼 엔진도 이 영향을 많이 받았는데 언리얼 엔진 3까지는 GUI가 다소 복잡하여 처음 접하는 사람들은 적응에 시간이 좀 걸리는 편이었으나 언리얼 엔진 4부터는 전반적인 인터페이스가 직관적인 GUI로 변경됐으며 특히 버전업하며 많은 기능들이 드래그 앤 드롭과 클릭 몇번으로 작동될 수 있게 바뀌어 가고 있다.
  15. [15] Flash. 다만 유니티 스케일폼은 업데이트나 기술지원이 썩 활발한 편은 아니기에 말 그대로 있다 수준에 그치는 정도인데다 정작 이 항목의 애셋 스토어에는 있지도 않은데 이유는 더이상 기술지원을 안하고 아예 내다버려서이다. 실제로도 해당 플러그인은 게임계 전반으로 봐도 기존 전성기에 비해서는 쇠퇴하고 있다.
  16. [16] XAML.
  17. [17] 오픈월드나 대규모 맵에서 사용하는 프리로드를 의미한다.
  18. [18] 2017년에 등장한 AMD RYZEN 시리즈부터는 동세대 인텔 CPU와의 IPC 격차가 매 세대마다 줄어들고 있어서 점점 옛말이 되어가고 있다.
  19. [19] 최대 10개의 스레드가 작동한다. 발표에서 선보인 예제는 100만개 이상의 군세를 렉없이 업데이트하고 렌더링하는 퍼포먼스를 보여줬었다.
  20. [20] 객체 지향이 아닌 데이터 지향으로 동작을 관여하는 스크립트가 객체마다 생성되었던 것을 1개로 줄여 인스턴싱 효과를 얻을 수 있는 시스템이다.
  21. [21] 물론 완벽하게 일치하지는 않는다. 컴파일을 진행하면서 전체적인 흐름을 깨지 않는 수준에서 최적화를 위해, 코드의 순서는 바뀌게 되기 때문. 그래도 스크립트의 전체적인 흐름은 파악하고도 남는다. 완전히 해커의 손에 떨어지는 셈.
  22. [22] 사실 개발자가 유니티에 원한이라도 있는지, 작중 내내 유니티의 여러가지 문제점을 가루가 되도록 까는 편이다. 특히 다른 개발자들과 나누는 라디오에서 유니티에 대한 개발자의 하소연에 언젠간 다른 엔진으로 성공적으로 옮기길 바란다고 하거나, 유니티를 까다가 작중 캐릭터가 이성을 잃고 방송사고를 일으키지 않나. 사실 틀린 소리들은 아니지만... 그런데 정작 재미있는건 코딩소녀는 유니티 퍼스널 기반이다.
  23. [23] 많은 원한이 유니티 구버전에서 나타나는 단점인 것으로 보아 과거 경험 및 개발 도중에서 겪은 고생이 스토리에 반영된 것으로 보인다.
  24. [24] 유니티의 경우 다이나믹 로더를 이용하기 때문에 이것이 가능하다. 물론, 스크립트 복호화 모듈이 해커에 의해 완전통제되면 답이 없다.
  25. [25] 물론 시간 많고 능력 좋은 수준급 해커와 만나면 털리는 것은 시간문제이긴 하지만...
  26. [26] 모바일 앱인 안드로이드 앱의 경우 Java 패키징 형태로 제작되므로 해체에 대단히 느슨하다.
  27. [27] 언턴드 버전 3까지는 유니티로 개발, 언턴드 버전 4부터는 언리얼 엔진 4로 개발되었다.
  28. [28] 에피소드 1은 유니티로 개발, 에피소드 2부터는 언리얼 엔진 4로 개발되었다.
  29. [29] 킥스타터 지원을 받아 개발된 인디 게임으로 처음 개발은 유니티 4로 시작해서 유니티 5로 업그레이드 했다가 중간에 언리얼 엔진 4로 변경하여 완성되었다.
  30. [30] 데모 버전은 유니티, 정식 버전은 언리얼로 개발되었다.