유니티(게임 엔진)
ㅠ
[clearfix]
2004년 8월 Unity Technologies가 개발한 게임 엔진.
Unity Technologies는 2004년 덴마크 코펜하겐에서 설립되었다. 현재는 미국 샌프란시스코에 본사를 이전했다.
주로 저사양/소규모 게임의 개발에 적합하며, 2005년 6월 8일에 처음 발표되었다.
본래는 어도비 플래시가 한창 잘나가던 시절 플래시로 구현이 힘든 3D 시장 공략을 노린 3D 타겟 웹미디어 제작툴이었다. 초기 유니티 엔진은 멀티플랫폼 중 하나로 브라우저 역시 주력 지원했고, '유니티 웹 플레이어'라는 이름으로 현재까지 남아 있다. 하지만 전문적인 게임엔진에 비해 비교적 단순하고 사용법이 쉽다는 점에 착안한 개발자들이 이를 이용해 게임을 만들기 시작하면서 아예 게임 엔진으로 방향이 선회되었다. 언리얼 엔진의 퍼블리싱 라이선스 옵션 도입 전[15] 에는 유니티의 라이선스 비용이 매우 저렴하고, 여타의 고급 엔진들로 대형 프로젝트를 개발하는 것에 비해 단순한 게임들을 만들어 내기에는 비교적 쉬운 편이라서 아이폰을 필두로 한 스마트폰 게임이 새로운 블루오션으로 떠오르던 태동기에 절묘한 타이밍으로 선점하여 모바일에서 승승장구했었다. Shiva3D와 같은 유사한 경쟁자들도 있었으나, 애셋 스토어라는 생태계의 조성에 힘입어 넓은 사용자 풀이 형성되면서 막 모바일 게임 시장이 확장되던 시기에 독보적으로 치고 나아갔다.
앞에서 언급한 플랫폼 이외에 VR HMD 또는 AR HMD 지원 기기 등을 비롯하여 현세대에 해당하는 대부분의 플랫폼으로 개발 가능한 게임 엔진이 되었다.
하지만 언리얼 엔진이 모바일 게임 시장까지 발을 넓혀가면서 그 입지가 서서히 양분화되어가는 추세로, 스마트폰도 점차 고사양화가 되며 고품질 AAA급 모바일 게임들은 언리얼 엔진을 사용하고, 저사양/소규모 프로젝트에는 유니티가 많이 쓰이는 상황이다. 언리얼 엔진이 교육정책에 힘을 쏟고 있는 것과 마찬가지로 유니티 역시 교육정책에 신경을 쓰고 있다.
유니티로 만들어진 게임영상은 유튜브 Unity GDC 채널에서 볼 수 있다. 공식 행사에서 뽑힌 퀄리티 높은 게임들을 묶어놓은 영상들이다.
공식 네이버 카페도 있다. 2018년 5월 말부터 한글 패치를 제공하고 있다.
2005년 6월 8일에 출시된 유니티 엔진의 최초 정식 버전으로, 초창기에는 macOS만 지원했으나 나중에 Windows와 PC 기반의 웹 브라우저들도 추가 지원하게 되었다.
2007년에 출시된 첫 메이져 업그레이드 버전으로, 3D 기능 강화와 공동 작업 기능, 비디오 재생 기능을 비롯하여 50여가지의 새로운 기능들이 추가되었다.
2008년에 애플의 앱 스토어가 런칭되면서 iPhone OS(현 iOS)를 추가 지원하여 유니티 엔진으로 개발된 게임을 앱 스토어로도 배포할 수 있게 되었다.
2010년 9월에 출시된 버전으로, 기존의 PC 플랫폼과 iPhone OS(iOS)뿐만 아니라 Android 같은 모바일 플랫폼, PS3, Xbox 360, Wii 같은 콘솔 게임기 등의 다양한 플랫폼으로 확장되었고 동시에 전세계적으로 스마트폰의 대중화와 맞물려서 유니티 엔진으로 개발된 게임들이 급격하게 늘어났다.
현재 유니티 엔진 버전별로 모아 놓은 공식 아카이브에서는 2011년 7월 26일에 발표된 3.4 버전부터 다운로드 받아 사용할 수 있다.
2012년 11월 13일에 출시된 버전으로, DirectX 11을 지원하기 시작했고 새로운 애니메이션 도구가 추가되었다.
2013년에 페이스북이 유니티 엔진 기반의 게임을 위한 개발 도구를 통합함으로써 유니티 엔진으로 개발한 게임을 페이스북에 등록하기가 쉬워졌다. SNS 연동으로 다른 사용자에게 게임 추천 기능을 제공하여 접속할 수 있는 일종의 광고 캠페인 기능이 추가되었다.
2015년 3월 3일에 정식 출시된 버전으로, GDC 2015에서 언리얼 엔진 4의 완전 무료화에 이어 유니티도 개인용 무료화를 선언하였다. 그러나 완전 무료는 아니고 여러가지 조건에 따른 제약 사항이 따른다.
2015년 9월 8일에 발표된 5.2 버전부터는 Windows 10 유니버셜 앱 플랫폼을 추가 지원하며, 코드 작성에 있어서 비주얼 스튜디오나 JetBrains의 Rider와의 연동이 가능하다.
2017년 7월 10일에 정식 출시된 버전으로, Unity의 버전 이름이 연도 방식으로 변경되었을 뿐만 아니라 마이너 업데이트 버전의 형식도 2017.0.0 버전이 아니라 2017.1.0 버전부터 출발하는 것으로 변경되었다. 이후에 라이선스 정책도 변경되었다.
2017의 특정 버전부터 32비트 에디터를 더 이상 지원하지 않으므로 32비트에서 사용하려면 5 버전을 사용해야 한다.
2018년 5월 2일에 정식 출시된 버전으로, 3D 그래픽 성능이 크게 개선되었고 잡 시스템과 ECS를 지원하여 멀티스레드를 이용한 포크-조인 방식의 병렬 프로그래밍이 유니티 스크립트에서도 사용 가능해졌다.
2019년 4월 15일에 정식 출시된 버전으로, 경량 렌더 파이프라인이 정식으로 적용되어 2018 버전에 이어서 3D 그래픽 성능의 최적화가 개선되었고 버스트 컴파일러가 정식으로 적용되어 컴파일 속도가 개선되었다. 가비지 컬렉션 이슈가 일부 개선되었다.
안드로이드의 경우 x86_64 지원을 못 했고, 그래서 x86을 아예 빼버렸다. (...)
이 여파로 PC는 ARM을 가상화 하는 에뮬레이터 에서만 가능하며[16] , 인텔 계열 CPU를 쓰는 크롬북이나 일부 태블릿은 안드로이드 호환으로 대응하는 경우 문제가 생긴다.
유니티 엔진의 장점은 크게 다음과 같이 살펴볼 수 있다.
시간이 지난 요즘에는 여타 게임 엔진들도 엇비슷하게 따라간 상황이라 유니티만의 특별한 장점으로 보기 힘들어졌다.
툴의 GUI가 아주 직관적이다. WYSIWYG 방식의 툴은 사용자가 직관적으로 내부 에셋들의 위치를 바꾸거나 적용하거나, 에셋의 임포트 등을 매우 손쉽게 가능하며 유니티가 소규모/인디 게임에 폭발적인 인기를 얻게 된 가장 큰 비결이었다. 게임 엔진에서 유저 친화적 UI가 얼마나 중요한지 상징적으로 보여줬으며, 향후의 게임 엔진들에 매우 많은 영향을 주었다.[17]
버튼 몇 번만 누르면 다양한 플랫폼으로 빌드가 가능하다. 그러나 플랫폼별 특성에 맞게 어느 정도 조정작업 및 별도의 최적화도 필요하다. 플랫폼별로 특징이 다르므로 당연한 일이며 유니티를 쓴다고 해서 그런 조정작업이나 최적화가 자동으로 되지는 않는다. 게임 하나 만들어 놓고 별다른 노력도 없이 다양한 플랫폼으로 출시할 수 있는 건 아니니 반드시 유의해야 한다.
버전 업 되면서 요구 사양이 점점 높아졌지만 AAA급 고퀄리티 게임을 개발할 수 있는 다른 메이저 게임 엔진에 비하면 비교적 가벼운 편이라 저사양 PC에서도 저사양 타겟의 간단한 게임 정도는 무리없이 개발할 수 있다.
인디 게임개발자들이나 초보 개발자들에게 유리한 이점을 제공한다. 바로 '''에셋 스토어'''의 존재다. 각종 리소스부터 스크립트, 플러그인으로 사용할 수 있는 다양한 기능, 미리 만들어 놓은 AI 등 수많은 기능들을 이용자들이 올려서 서로 사고 팔 수 있는 장터를 제공한다. 이 정책은 크게 성공하여 유니티 붐을 일으키는 데 일조했다. 사용자가 많을수록 에셋 스토어에 더 많은 상품들이 올라오고, 그것을 본 사람들은 유니티 사용에 긍정적으로 접근하게 되고, 신규 유입된 사람들이 다시 스토어에 유니티 기능을 만들어 올리는 등 선순환 과정이 형성되어 있다. 애플의 앱스토어가 아이폰 자체의 기능을 넘어서 사용자들에게 매력요소가 된 것과 비슷한 원리다. 그리고 유니티에서 운영하는 인디, 초보자들을 지원하는 프로그램 등 관련된 다양한 행사가 진행된다는 점도 강점이다. 엔진 자체의 확장성과 맞물려 게임 이외에 방송, 애니메이션, 툴 등 3D 게임 엔진으로 할 수 있는 각종 에셋들이 존재하며, 찾아보면 이런 것도 있나 싶을 정도로 방대한 생태계를 자랑한다.
웹사이트
유니티를 다른 엔진들에 비해 우월한 지위에 올려 준 가장 큰 요소이다. 디자인, 모델링부터 유니티에 기능을 추가하는 플러그인에 해당하는 에셋까지 누구나 무료로 배포하거나, 유료로 판매할 수 있는 에셋용 앱스토어이다. 코딩에 익숙하지 않은 디자이너들이나 리소스 제작이 힘든 개발자들이 이 에셋 스토어에서 구매하거나 무료로 다운받은 에셋을 사용하여 프로젝트를 수월하게 진행할 있도록 도와준다.
에셋 스토어 폴더에 파일이 너무 많으면 로드가 매우 느려질 수도 있다. 그리고 빈 회색 화면만 보인다면 edit > project setting > player에서 use Direct3D 11을 체크 해제해 보자.
개발 초보자나 비 프로그래머에서부터 고급 개발자까지 사용자층이 다양하고 그 수가 많다. 특히 입문 장벽이 낮기 때문에 초보자 인구가 많은데, 이 때문에 인터넷 어디를 검색해도 관련 자료가 넘쳐난다.
마이너하거나 사용자층이 한정될수록 인터넷 상에 자료들이 적고 제작사에서 제공하는 도움말이나 공식포럼이 고작인 경우가 많은데, 이는 사용자 수 자체가 적은 것도 있고, 사용자들이 이미 대부분 고여버려서 어지간한 상황에서 만나는 장애물들은 알아서 이미 해결가능하기 때문인 경우도 있다. 반면 유니티의 경우엔 정말 생초보들을 위한 그림책 수준의 강의부터 오만 잡다한 에러의 해결법 및 흔히 마주치는 실수, 사람들이 즐겨 사용하는 베스트 프랙티스까지 매우 많은 정보가 인터넷에 돌아다니고 있으며, 이것들이 엔진을 배우는 데 큰 도움이 된다. 그 형태도 블로그, 유튜브 강좌나 튜토리얼, 인터넷 강의, 소스 공유 사이트의 공개된 실습 코드등 매우 다양하기 때문에 동일한 기술을 배우는 데도 자기가 알아듣기 쉽고 따라하기 편한 매체를 고를 수 있다.
유니티는 엔진의 변화가 빠르고 지원 API 변화가 잦아서 공식 홈페이지의 도큐먼트의 질에 있어 언리얼 엔진 도움말이 더 좋다는 평이 많은데, 인터넷에서 찾을 수 있는 수많은 실제 예제들이 이러한 불리함을 보충해 주고 있다.
2017 버전 이후 영구 라이선스는 없어졌으나 개인 라이선스는 여전히 무료로 유지하고 있으며, 연매출 20만불 이하일 경우 월 40,000원대, 그 이상은 140,000원의 라이선스 비용을 받는다. 매출이 10만 달러 이하일 경우는 무료 라이선스를 사용할 수 있다. 1인 개발자의 경우, 여기에서 의미하는 10만 달러는 순수하게 유니티 엔진을 사용하여 번 돈을 의미한다. 예를 들어 유니티와 전혀 관계 없는, 연봉 10만 달러 이상의 금융 회사에 다니는 회사인이 있다고 가정해 보자. 그 회사인이 취미로 유니티를 이용하여 개인적으로 게임을 개발할 경우, 그 게임이 연 매출 10만 달러 이하라면 여전히 유니티를 무료로 사용하여 게임을 만들 수 있는 것이다. 이러한 값싼 라이선스 비용은 각종 엔진들이 무료화하는 데 큰 영향을 끼쳤으며, 게임이 출시되더라도 별도의 라이선스 비용을 청구하지 않는다. 이는 개발의 민주화라는 모토와 맞물려 게임개발의 대중화 및 인디/소규모 개발팀이 많이 생겨나는 계기를 만들어 냈다.
이러한 장점들 덕분에 벤처 기업이나 소규모 스타트업 창업을 하는 사람들 입장에서는 굉장히 유용하게 사용할 수 있으며, 2D 기능 역시 최신 기능들이 계속 추가되고 있기에 2D, 3D 모두 개발이 가능하다. 특히 소규모/인디 개발에만 한정되던 초기와는 다르게 저사양 게임이지만 비교적 개발자본이 어느 정도 들어가는 규모의 게임까지, 그리고 장르 역시 MMORPG에서 전략/퍼즐/액션 등 다양하게 개발되고 있다.
간편하게 적용할 수 있는 고급 기능이 별로 없다. 고급 기능을 활용하기 위해서는 개발자의 삽질이 필수적이다. 엔진 자체의 최적화가 아직 부실한 탓인지 일부 기기에선 프레임 드랍이 일어나기도 한다. 무엇보다 '''한국어 지원이 상당히 부실'''하다. 한국인으로서는 큰 걸림돌. 윈도우에서 처음 구동시 사용자 계정명이 한글로 되어있으면 제대로 실행조차 되지 않는다. 더욱이 기본적으로 마이크로소프트 계정 연동으로 인해 계정명이 기본적으로 실명으로 생성되는 윈도 8 유저들이라면 유니티 하나 돌리겠답시고 새 계정을 만드는 곤혹스러운 과정을 치러야 한다. 청강대에서 열렸던 유니티 로드쇼 2015에서 올해 내로 중국어를 제치고 한국어를 정식 지원하기로 언급했지만, 결국 3년 뒤 2018년 5월 경에서야 2018.1 버전 출시와 동시에 한글판 베타 버전이 출시되었다. 유니티 한글화 관련 소식
유니티 API가 메인 스레드 외에서는 호출이 안전하지 않기 때문에[20] 제한적으로만 멀티 스레드를 적용할 수 있으며 결국 이를 통해서 높은 성능 향상을 꾀할 수는 없다. 유니티 API가 없는 순수한 연산 집약적 동작을 병렬 처리하는 것인데, 이는 전체 동작에 대한 완전 병렬화가 아니다. 또한 연산 관련 코드에서 API를 통하지 않는 경우는 많지 않으면서, 대부분의 연산 능력을 API에서 요구하기 때문. 즉, 병렬화가 되는 부분이 극히 일부이기 때문에 높은 이득을 취할 수는 없다. 암달의 법칙 참고.
설령 어찌해서 구현했다 해도 노력 대비 얻는 성능 향상이 크지 않아서 이를 동적 로딩(프리로드)에 응용하는 경우도 볼 수 있는데, 마찬가지로 유니티 API를 멀티스레드에서 안전하게 사용할 수 없으니 완벽한 동적 로딩을 구현하기는 힘들고 성능 향상도 기대에 미치지는 못한다. '''즉, 고도의 편법을 완벽하게 익혀서 문제가 될 부분을 최소화하여 적용하지 않는 이상, 성능 이슈가 될 가능성이 높은 부분을 병렬화하지 못해 0번 코어만 죽어라 갈구는 경우가 될 가능성이 높다는 것이다.''' 이런 상황이 높은 성능을 요구하는 게임에서 발생한다면 그야말로 '''망했어요.''' 실제로 유니티 엔진 4로 개발된 로켓 발사 시뮬레이션 게임인 Kerbal Space Program는 시뮬레이션 특성상 물리연산을 엄청 빡세게 하는데 이 물리연산 스레드를 코어 하나가 전부 감당해야 하기 때문에 어디가서 성능 좀 된다 하는 CPU도 부품이 많아지면 프레임을 제대로 못뽑는 상황이 무조건 발생한다. 이때문에 개발자가 유니티 엔진 5로 엔진을 갈아타는(!) 작업을 완료해 업데이트를 했지만, 그나마도 우주선 하나당 코어 하나씩 분담시키는 수준이 한계라고 밝혔다. 멀티스레딩이 안되어서 생기는 문제의 아주 대표적인 예. 물론, 이 문제는 KSP 못지 않게 연산량이 드럽게 많은 시티즈: 스카이라인도 마찬가지인데, 이 게임은 아예 유니티 본사 측에서 기술 지원을 해줬다(...). 그나마도 8스레드까지 인식하지만 실질적인 스레드 분담은 4스레드까지. 그래서 짝퉁 멀티코어 지원이라고 까이고 있다.
다수의 저성능 코어를 빅 리틀 솔루션까지 적용해가며 끌어모은 모바일 환경은 물론, 각 코어당 성능이 높은 편인 PC에서까지 영 좋지 않은 자원 활용도를 보일 수밖에 없다. 따라서 일정 수준 이상의 규모가 되는 게임을 개발하기에는 아쉬움이 크다.
다행히 2018.1 버전부터 C# 잡 시스템(JobSystem)[21] 과 ECS[22] 이라는 방법으로 멀티스레드를 이용한 포크-조인 방식의 병렬 처리를 지원한다. 하지만, 아직 문제가 많고 불안정해서 많은 개발자들이 지켜보고 있는 상황이다.
가비지 콜렉션으로 인하여, 게임 규모가 크고 복잡한 로직이 있는 경우 잠깐씩 프리징이 일어나는 현상이 있다. 대표적으로 Escape from Tarkov가 있다.
2019 버전에서 일부 완화되었으나 근본적인 해결은 아직 불가능하다고 한다.#
이 때문에 규모가 큰 AAA급 게임에서는 잘 사용되지 않고 있다.
언리얼 엔진이 공격적인 라이선스 정책으로 변경하면서 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만달러) 를 지불해야 한다. 이 차이는 금액이 커질수록 오히려 더 커진다.
반면, Unity 본사와 달리 Unity Korea에서는 대학에 과금을 시도하려는 조짐이 보이고 있어 게임학과에서 큰 반발을 불러오고 있다. 美 게임 엔진 '유니티', 대학에 사용료 받나... 학계 공동대응 예고
유니티는 기본적으로 월간 비용을 지속 지불하더라도 전체 소스코드는 여전히 비공개며, 전체 소스코드가 포함된 라이선스를 원할 경우 그 비용은 언리얼 엔진 커스텀 라이선스 비용과 맞먹게 된다. 유니티 측은 프로 라이선스도 소스 코드에 엑서스 할 수 있는 것 마냥 선전하고 있지만 실상은 구독과 별개로 소스코드를 구매해야 한다고 한다. 여기에 개발기간이 길어진다던가, 개발팀 인원이 증가된다던가, 타 스튜디오 등의 지원을 받아서 유니티의 시트당 사용자수가 늘어날 경우에 따라서 개발 비용이 지나치게 높아질 수 있으므로 상황에 따라서 언리얼 엔진의 사용을 고려해야 할 수도 있다.
유니티는 버전 간의 완벽한 호환성이나 버그 무결성을 추구하는 것보다는 신기술과 트렌드를 빨리 도입하고 시장 강화적인 마케팅에 더 힘을 쏟는 정책을 펼치고 있다.
때문에 2019년 현재 FEEDBACK과 ISSUE TRACK에 올라온 치명적 버그가 수십~수백개에 달하며 심지어 그 중 몇몇 개는 엔진 자체를 사용 못하게 만드는 버그임에도 불구하고 대응 속도가 아직도 너무 느리다. 예를 들면 다음 링크 모음과 같은 버그들이 있다. 버전관리가 안돼서 이전에 잡힌 버그도 계속 부활한다.
#1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11
한편, 상기 언급된 바와 같이 유니티 엔진은 대규모 개발로 사용되기엔 부적합하여 인디 환경 위주로 많이 쓰이는 편인데, 인디 개발 환경 특성상 발적화 문제가 흔하기 때문에 두가지 단점이 시너지를 일으켜서 유니티를 사용한 게임들은 버그 덩어리라는 오명을 얻는 경우가 흔하다. 유니티 엔진을 사용한 고사양 3D 게임 치고 심각한 버그 문제를 겪지 않은 게임이 손에 꼽을 정도.
그런 반면 대외적 홍보, 강사 초빙, 세미나 등에 초점을 맞춰 마케팅에 집중하고 있다.
이전 버전의 경우 C# 프레임워크인 Mono에 기반했기 때문에 보안이 거의 하나도 되지 않았다. 강제로 오픈소스화된다고 할 정도로, 게임 내의 모든 리소스를 포함해서 스크립트의 코드를 담고 있는 DLL 또한 압축해제와 리버싱을 통해 얼마든지 내용이 드러나게 된다.[23] 이는 결과물이 중간 바이트코드인 대부분의 경우에 공통적으로 해당된다. 기계어 수준까지 컴파일이 되는 경우는 역컴파일이 쉽지 않고, 그마저도 현재는 C로 제한적인 표현이 가능한 수준이다. 그것도 다른 언어로 컴파일된 것이면 해석이 더욱 어렵다. 암호화를 시키면 되지만...
보안 문제는 메모리 해킹 방어, 스크립트 암호화[24] , 변수 암호화 및 다중화, 체크섬 및 패킷 암호화 등 프로그래머들이 보안성을 마련하면 어느 정도는 해결될 수는 있다. 시간 많고 능력 좋은 수준급 해커와 만나면 털리는 것은 시간문제이긴 하지만. 문제는 유니티의 낮은 진입장벽에 의해 코드 암호화를 하지 않는 프로그래머가 대다수라는 점이 문제다. 어차피 모바일 환경이 보안성을 살릴 수 없는 환경이라는 점과[25] "어차피 털릴 어플은 털린다"라는 생각을 가지는 개발자들이 대부분이고 현장의 인식도 여기에서 크게 다르지 않은 상태라서 많은 게임들은 클라이언트-서버 구조로 제작해서 중요한 부분을 서버에서 처리하는 형태로 운영되고 있다. 이러면 다행이기라도 하지, 아예 보안장치를 마련하지 않는 사례도 수두룩하다.
그래서 해당 부분을 암호화하기 위하여 애셋 스토어에 CodeGuard나 Anti-Cheat-Toolkit 등의 서드파티 툴이 기본적인 코드 난독화, 메모리 해킹감지 등을 제공했다. 물론 완벽하게 막아줄 수는 없다.
최신 버전에 들어서면서 Mono 대신 .Net framework 4 이상의 버전으로 마이그레이션함과 동시에 아예 C++로 변환 후 네이티브 코드를 생성하는 IL2CPP / Burst Compiler를 도입하여 이 약점에 대응하는 수단이 등장했다. 네이티브 코드의 경우 C#이 해독되는 가장 큰 약점인 중간 바이트코드가 없이 C/C++과 동일하게 어셈블리 코드를 생성하므로 해당 문제점이 나타나지 않는다. 초기에는 IL2CPP의 컴파일 시간이나 버그에 대한 불만이 있었으나 현재는 거의 안정화된 상태.
상당수의 게임들이 '''유니티 엔진 기반으로 개발도중 언리얼 엔진 4로 엔진을 바꿔 재개발'''하는 경우가 많은 사례로 나타나고 있다. 주된 이유는 프로젝트의 규모가 커지면서 유니티로는 감당하기 힘든 리소스 관리 및 고퀄리티 그래픽 대비 최적화, 개발 툴의 편의성과 엔진의 확장성, 유연성에 있다. 유니티는 비교적 툴이 단순해 보여서 익히기 쉽고 편리하게 보일 수 있으나 개발의 깊이가 깊어질수록 그 한계가 드러나는 반면 언리얼은 유니티와는 정 반대이기 때문이다.
유니티에서 언리얼 엔진 4로 변경된 게임들 목록
반대로, 개발규모를 축소하면서 작업을 증가시키는 일인 엔진 교체를 하는 상황 자체가 비합리적이므로 알려진 게임들 중 언리얼 엔진 4에서 유니티로 변경된 게임의 사례는 찾아보기 어렵다. 애초에 메이저나 인터넷에 알려질 정도로 유명세가 있는 개발팀이라면 이러한 선택을 하지 않을 것이다.
소수 모바일 프로젝트의 프로토타입 단계에서 테스트 후 엔진을 변경한 사례는 있으나 개발규모가 작은 게임의 경우며, 그마저도 개발중간에 변경한 사례는 찾아볼 수 없는데 애초에 작은 규모의 게임을 만들던 팀은 개발 중간에 엔진을 바꿔서 새로 만들 여력이 없는 경우가 대부분이기 때문이다.
언리얼 엔진에서 유니티로 변경된 게임들 목록
크라이 엔진은 모바일에서의 사용이 전무하며, 2018년 이후 시점에서는 PC/콘솔의 대형 프로젝트에서의 입지도 거의 잃은 상황이라 사실상 비교하기 힘들다.
웹에서 실행할 수 있다는 점에서 비슷한 쓰임새를 가진다. 정확히 따지자면 유니티는 '''게임 엔진'''이고, 플래시의 몰힐은 DirectX나 OpenGL과 같은 '''로우 레벨 API'''이다.(참고 사이트) 조금 다르지만 비유를 들자면 붓과 물감의 관계에 가깝다.
굳이 비교를 하자면 유니티는 직관적인 GUI를 통해 3D쪽에서 높은 생산성과 함께 진입 장벽이 낮다. 플래시는 유니티보다 OOP적이며 높은 생산성, 특히 2D에 유리하다. 퍼포먼스는 몰힐이 로우 레벨 API라는 점에서 기기의 GPU 성능만 어느 정도 된다면 대체로 플래시의 몰힐이 더 높은 성능을 낼 것이다. 라이선스 면에선 유니티는 다른 수억 대의 엔진들에 비하면 싸긴 해도 일단 돈이 들긴 드는데 비해, 몰힐은 그냥 공짜다. 가령 Flash Professional은 유료. 몰힐 자체는 공짜라서 몰힐을 Flex Builder에서 쓰든 공짜 툴인 Flash Develop, Haxe에서 쓰든 아무 상관없다. 사실 적용 대상이 달라 차이를 비교하기는 어렵다.
몰힐의 비교와 비슷하다. 유니티는 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를 포함하여 있던 기능도 제거되고, 지원 플랫폼도 줄어들고 버그도 늘어나고 있는 중이다. 거의 모든 엔진중에서 공식적으로 닌텐도 스위치를 지원하지 않는다(...).
유니티 초창기 시절에 비교되었으며 이때는 웹 브라우저상에서 3D를 구현하는 가장 편리하고 성능 좋은 방법 중 하나로 어도비 쇼크웨이브가 자리잡고 있었고, 유니티 웹 플레이어는 후발주자인 상황이었다. 하지만 유니티는 게임 엔진이고 쇼크웨이브는 그저 웹 브라우저 등에 사용되는 멀티미디어 플레이어일 뿐이므로 둘은 적절한 비교 대상이 아니다.
[image]
유니티 테크놀러지 코리아에서 2020년에 제작된 선정된 3D 모델이다. 2018년 나온 언리얼 엔진의 사이렌#처럼 정교하게 제작된 디지털 휴먼 테크데모 중 하나이다.
수아 디지털이 유니티 엔진으로 제작한 캐릭터이며, 머릿결부터 피부, 옷 재질까지 3D 스캔이 아니라 제로 베이스에서 매우 정밀하게 모델링되었다. 다만 움직임 부분에선 모션캡쳐를 사용할 것이며, 대신 실존 인물을 캡쳐한 만큼 다양한 동작을 정교하게 수행할 수 있다고 한다.
1월에 공개되었을 땐 머리카락은 움직이지 않지만, 3월에 공개되었을 때는 머리카락도 물리엔진이 적용되었다.
제작 비화를 밝힌 김형일[30] 은 일반적인 극사실 모델링이 실재 인물을 바탕으로 3D 스캔해서 만들지만 SU:A는 Z브러쉬로 일일이 그려서 제작했는데, 어차피 3D 스캐닝도 수작업으로 후보정을 해야해서 걸리는 시간은 비슷했다고 한다. 오히려 이 때문에 개인적으로는 3D 스캐닝을 비효율적이라고 봤다. 오히려 만들기 어려웠던 건 머리카락이였다고 토로했다.#
가정에서 사용되는 수준의 PC에서도 동작 가능하다고 하며, 버전 3.0 기준으로 API도 일반적인 다이렉트X 11을 사용하였다.#
유니티 엔진에서 디지털 휴먼 패키지를 소개한 후 공개되었다.
[clearfix]
1. 개요
2004년 8월 Unity Technologies가 개발한 게임 엔진.
Unity Technologies는 2004년 덴마크 코펜하겐에서 설립되었다. 현재는 미국 샌프란시스코에 본사를 이전했다.
주로 저사양/소규모 게임의 개발에 적합하며, 2005년 6월 8일에 처음 발표되었다.
2. 역사
본래는 어도비 플래시가 한창 잘나가던 시절 플래시로 구현이 힘든 3D 시장 공략을 노린 3D 타겟 웹미디어 제작툴이었다. 초기 유니티 엔진은 멀티플랫폼 중 하나로 브라우저 역시 주력 지원했고, '유니티 웹 플레이어'라는 이름으로 현재까지 남아 있다. 하지만 전문적인 게임엔진에 비해 비교적 단순하고 사용법이 쉽다는 점에 착안한 개발자들이 이를 이용해 게임을 만들기 시작하면서 아예 게임 엔진으로 방향이 선회되었다. 언리얼 엔진의 퍼블리싱 라이선스 옵션 도입 전[15] 에는 유니티의 라이선스 비용이 매우 저렴하고, 여타의 고급 엔진들로 대형 프로젝트를 개발하는 것에 비해 단순한 게임들을 만들어 내기에는 비교적 쉬운 편이라서 아이폰을 필두로 한 스마트폰 게임이 새로운 블루오션으로 떠오르던 태동기에 절묘한 타이밍으로 선점하여 모바일에서 승승장구했었다. Shiva3D와 같은 유사한 경쟁자들도 있었으나, 애셋 스토어라는 생태계의 조성에 힘입어 넓은 사용자 풀이 형성되면서 막 모바일 게임 시장이 확장되던 시기에 독보적으로 치고 나아갔다.
앞에서 언급한 플랫폼 이외에 VR HMD 또는 AR HMD 지원 기기 등을 비롯하여 현세대에 해당하는 대부분의 플랫폼으로 개발 가능한 게임 엔진이 되었다.
하지만 언리얼 엔진이 모바일 게임 시장까지 발을 넓혀가면서 그 입지가 서서히 양분화되어가는 추세로, 스마트폰도 점차 고사양화가 되며 고품질 AAA급 모바일 게임들은 언리얼 엔진을 사용하고, 저사양/소규모 프로젝트에는 유니티가 많이 쓰이는 상황이다. 언리얼 엔진이 교육정책에 힘을 쏟고 있는 것과 마찬가지로 유니티 역시 교육정책에 신경을 쓰고 있다.
유니티로 만들어진 게임영상은 유튜브 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 유니버셜 앱 플랫폼을 추가 지원하며, 코드 작성에 있어서 비주얼 스튜디오나 JetBrains의 Rider와의 연동이 가능하다.
2.6. Unity 2017
2017년 7월 10일에 정식 출시된 버전으로, Unity의 버전 이름이 연도 방식으로 변경되었을 뿐만 아니라 마이너 업데이트 버전의 형식도 2017.0.0 버전이 아니라 2017.1.0 버전부터 출발하는 것으로 변경되었다. 이후에 라이선스 정책도 변경되었다.
2017의 특정 버전부터 32비트 에디터를 더 이상 지원하지 않으므로 32비트에서 사용하려면 5 버전을 사용해야 한다.
2.7. Unity 2018
2018년 5월 2일에 정식 출시된 버전으로, 3D 그래픽 성능이 크게 개선되었고 잡 시스템과 ECS를 지원하여 멀티스레드를 이용한 포크-조인 방식의 병렬 프로그래밍이 유니티 스크립트에서도 사용 가능해졌다.
2.8. Unity 2019
2019년 4월 15일에 정식 출시된 버전으로, 경량 렌더 파이프라인이 정식으로 적용되어 2018 버전에 이어서 3D 그래픽 성능의 최적화가 개선되었고 버스트 컴파일러가 정식으로 적용되어 컴파일 속도가 개선되었다. 가비지 컬렉션 이슈가 일부 개선되었다.
안드로이드의 경우 x86_64 지원을 못 했고, 그래서 x86을 아예 빼버렸다. (...)
이 여파로 PC는 ARM을 가상화 하는 에뮬레이터 에서만 가능하며[16] , 인텔 계열 CPU를 쓰는 크롬북이나 일부 태블릿은 안드로이드 호환으로 대응하는 경우 문제가 생긴다.
2.9. Unity 2020
3. 장단점
3.1. 장점
유니티 엔진의 장점은 크게 다음과 같이 살펴볼 수 있다.
시간이 지난 요즘에는 여타 게임 엔진들도 엇비슷하게 따라간 상황이라 유니티만의 특별한 장점으로 보기 힘들어졌다.
3.1.1. WYSIWYG
툴의 GUI가 아주 직관적이다. WYSIWYG 방식의 툴은 사용자가 직관적으로 내부 에셋들의 위치를 바꾸거나 적용하거나, 에셋의 임포트 등을 매우 손쉽게 가능하며 유니티가 소규모/인디 게임에 폭발적인 인기를 얻게 된 가장 큰 비결이었다. 게임 엔진에서 유저 친화적 UI가 얼마나 중요한지 상징적으로 보여줬으며, 향후의 게임 엔진들에 매우 많은 영향을 주었다.[17]
3.1.2. 간편한 빌드
버튼 몇 번만 누르면 다양한 플랫폼으로 빌드가 가능하다. 그러나 플랫폼별 특성에 맞게 어느 정도 조정작업 및 별도의 최적화도 필요하다. 플랫폼별로 특징이 다르므로 당연한 일이며 유니티를 쓴다고 해서 그런 조정작업이나 최적화가 자동으로 되지는 않는다. 게임 하나 만들어 놓고 별다른 노력도 없이 다양한 플랫폼으로 출시할 수 있는 건 아니니 반드시 유의해야 한다.
3.1.3. 낮은 요구 사양
버전 업 되면서 요구 사양이 점점 높아졌지만 AAA급 고퀄리티 게임을 개발할 수 있는 다른 메이저 게임 엔진에 비하면 비교적 가벼운 편이라 저사양 PC에서도 저사양 타겟의 간단한 게임 정도는 무리없이 개발할 수 있다.
3.1.4. 에셋 스토어
인디 게임개발자들이나 초보 개발자들에게 유리한 이점을 제공한다. 바로 '''에셋 스토어'''의 존재다. 각종 리소스부터 스크립트, 플러그인으로 사용할 수 있는 다양한 기능, 미리 만들어 놓은 AI 등 수많은 기능들을 이용자들이 올려서 서로 사고 팔 수 있는 장터를 제공한다. 이 정책은 크게 성공하여 유니티 붐을 일으키는 데 일조했다. 사용자가 많을수록 에셋 스토어에 더 많은 상품들이 올라오고, 그것을 본 사람들은 유니티 사용에 긍정적으로 접근하게 되고, 신규 유입된 사람들이 다시 스토어에 유니티 기능을 만들어 올리는 등 선순환 과정이 형성되어 있다. 애플의 앱스토어가 아이폰 자체의 기능을 넘어서 사용자들에게 매력요소가 된 것과 비슷한 원리다. 그리고 유니티에서 운영하는 인디, 초보자들을 지원하는 프로그램 등 관련된 다양한 행사가 진행된다는 점도 강점이다. 엔진 자체의 확장성과 맞물려 게임 이외에 방송, 애니메이션, 툴 등 3D 게임 엔진으로 할 수 있는 각종 에셋들이 존재하며, 찾아보면 이런 것도 있나 싶을 정도로 방대한 생태계를 자랑한다.
웹사이트
유니티를 다른 엔진들에 비해 우월한 지위에 올려 준 가장 큰 요소이다. 디자인, 모델링부터 유니티에 기능을 추가하는 플러그인에 해당하는 에셋까지 누구나 무료로 배포하거나, 유료로 판매할 수 있는 에셋용 앱스토어이다. 코딩에 익숙하지 않은 디자이너들이나 리소스 제작이 힘든 개발자들이 이 에셋 스토어에서 구매하거나 무료로 다운받은 에셋을 사용하여 프로젝트를 수월하게 진행할 있도록 도와준다.
에셋 스토어 폴더에 파일이 너무 많으면 로드가 매우 느려질 수도 있다. 그리고 빈 회색 화면만 보인다면 edit > project setting > player에서 use Direct3D 11을 체크 해제해 보자.
3.1.5. 넓은 사용자 층과 그로 인한 풍부한 관련자료
개발 초보자나 비 프로그래머에서부터 고급 개발자까지 사용자층이 다양하고 그 수가 많다. 특히 입문 장벽이 낮기 때문에 초보자 인구가 많은데, 이 때문에 인터넷 어디를 검색해도 관련 자료가 넘쳐난다.
마이너하거나 사용자층이 한정될수록 인터넷 상에 자료들이 적고 제작사에서 제공하는 도움말이나 공식포럼이 고작인 경우가 많은데, 이는 사용자 수 자체가 적은 것도 있고, 사용자들이 이미 대부분 고여버려서 어지간한 상황에서 만나는 장애물들은 알아서 이미 해결가능하기 때문인 경우도 있다. 반면 유니티의 경우엔 정말 생초보들을 위한 그림책 수준의 강의부터 오만 잡다한 에러의 해결법 및 흔히 마주치는 실수, 사람들이 즐겨 사용하는 베스트 프랙티스까지 매우 많은 정보가 인터넷에 돌아다니고 있으며, 이것들이 엔진을 배우는 데 큰 도움이 된다. 그 형태도 블로그, 유튜브 강좌나 튜토리얼, 인터넷 강의, 소스 공유 사이트의 공개된 실습 코드등 매우 다양하기 때문에 동일한 기술을 배우는 데도 자기가 알아듣기 쉽고 따라하기 편한 매체를 고를 수 있다.
유니티는 엔진의 변화가 빠르고 지원 API 변화가 잦아서 공식 홈페이지의 도큐먼트의 질에 있어 언리얼 엔진 도움말이 더 좋다는 평이 많은데, 인터넷에서 찾을 수 있는 수많은 실제 예제들이 이러한 불리함을 보충해 주고 있다.
3.1.6. 저렴한 라이선스 비용
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가 메인 스레드 외에서는 호출이 안전하지 않기 때문에[20] 제한적으로만 멀티 스레드를 적용할 수 있으며 결국 이를 통해서 높은 성능 향상을 꾀할 수는 없다. 유니티 API가 없는 순수한 연산 집약적 동작을 병렬 처리하는 것인데, 이는 전체 동작에 대한 완전 병렬화가 아니다. 또한 연산 관련 코드에서 API를 통하지 않는 경우는 많지 않으면서, 대부분의 연산 능력을 API에서 요구하기 때문. 즉, 병렬화가 되는 부분이 극히 일부이기 때문에 높은 이득을 취할 수는 없다. 암달의 법칙 참고.
설령 어찌해서 구현했다 해도 노력 대비 얻는 성능 향상이 크지 않아서 이를 동적 로딩(프리로드)에 응용하는 경우도 볼 수 있는데, 마찬가지로 유니티 API를 멀티스레드에서 안전하게 사용할 수 없으니 완벽한 동적 로딩을 구현하기는 힘들고 성능 향상도 기대에 미치지는 못한다. '''즉, 고도의 편법을 완벽하게 익혀서 문제가 될 부분을 최소화하여 적용하지 않는 이상, 성능 이슈가 될 가능성이 높은 부분을 병렬화하지 못해 0번 코어만 죽어라 갈구는 경우가 될 가능성이 높다는 것이다.''' 이런 상황이 높은 성능을 요구하는 게임에서 발생한다면 그야말로 '''망했어요.''' 실제로 유니티 엔진 4로 개발된 로켓 발사 시뮬레이션 게임인 Kerbal Space Program는 시뮬레이션 특성상 물리연산을 엄청 빡세게 하는데 이 물리연산 스레드를 코어 하나가 전부 감당해야 하기 때문에 어디가서 성능 좀 된다 하는 CPU도 부품이 많아지면 프레임을 제대로 못뽑는 상황이 무조건 발생한다. 이때문에 개발자가 유니티 엔진 5로 엔진을 갈아타는(!) 작업을 완료해 업데이트를 했지만, 그나마도 우주선 하나당 코어 하나씩 분담시키는 수준이 한계라고 밝혔다. 멀티스레딩이 안되어서 생기는 문제의 아주 대표적인 예. 물론, 이 문제는 KSP 못지 않게 연산량이 드럽게 많은 시티즈: 스카이라인도 마찬가지인데, 이 게임은 아예 유니티 본사 측에서 기술 지원을 해줬다(...). 그나마도 8스레드까지 인식하지만 실질적인 스레드 분담은 4스레드까지. 그래서 짝퉁 멀티코어 지원이라고 까이고 있다.
다수의 저성능 코어를 빅 리틀 솔루션까지 적용해가며 끌어모은 모바일 환경은 물론, 각 코어당 성능이 높은 편인 PC에서까지 영 좋지 않은 자원 활용도를 보일 수밖에 없다. 따라서 일정 수준 이상의 규모가 되는 게임을 개발하기에는 아쉬움이 크다.
다행히 2018.1 버전부터 C# 잡 시스템(JobSystem)[21] 과 ECS[22] 이라는 방법으로 멀티스레드를 이용한 포크-조인 방식의 병렬 처리를 지원한다. 하지만, 아직 문제가 많고 불안정해서 많은 개발자들이 지켜보고 있는 상황이다.
3.2.3. GC 스파이크 문제
가비지 콜렉션으로 인하여, 게임 규모가 크고 복잡한 로직이 있는 경우 잠깐씩 프리징이 일어나는 현상이 있다. 대표적으로 Escape from Tarkov가 있다.
2019 버전에서 일부 완화되었으나 근본적인 해결은 아직 불가능하다고 한다.#
이 때문에 규모가 큰 AAA급 게임에서는 잘 사용되지 않고 있다.
3.2.4. 라이선스 문제
언리얼 엔진이 공격적인 라이선스 정책으로 변경하면서 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만달러) 를 지불해야 한다. 이 차이는 금액이 커질수록 오히려 더 커진다.
반면, Unity 본사와 달리 Unity Korea에서는 대학에 과금을 시도하려는 조짐이 보이고 있어 게임학과에서 큰 반발을 불러오고 있다. 美 게임 엔진 '유니티', 대학에 사용료 받나... 학계 공동대응 예고
3.2.5. 소스 코드 비공개
유니티는 기본적으로 월간 비용을 지속 지불하더라도 전체 소스코드는 여전히 비공개며, 전체 소스코드가 포함된 라이선스를 원할 경우 그 비용은 언리얼 엔진 커스텀 라이선스 비용과 맞먹게 된다. 유니티 측은 프로 라이선스도 소스 코드에 엑서스 할 수 있는 것 마냥 선전하고 있지만 실상은 구독과 별개로 소스코드를 구매해야 한다고 한다. 여기에 개발기간이 길어진다던가, 개발팀 인원이 증가된다던가, 타 스튜디오 등의 지원을 받아서 유니티의 시트당 사용자수가 늘어날 경우에 따라서 개발 비용이 지나치게 높아질 수 있으므로 상황에 따라서 언리얼 엔진의 사용을 고려해야 할 수도 있다.
유니티는 버전 간의 완벽한 호환성이나 버그 무결성을 추구하는 것보다는 신기술과 트렌드를 빨리 도입하고 시장 강화적인 마케팅에 더 힘을 쏟는 정책을 펼치고 있다.
때문에 2019년 현재 FEEDBACK과 ISSUE TRACK에 올라온 치명적 버그가 수십~수백개에 달하며 심지어 그 중 몇몇 개는 엔진 자체를 사용 못하게 만드는 버그임에도 불구하고 대응 속도가 아직도 너무 느리다. 예를 들면 다음 링크 모음과 같은 버그들이 있다. 버전관리가 안돼서 이전에 잡힌 버그도 계속 부활한다.
#1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11
한편, 상기 언급된 바와 같이 유니티 엔진은 대규모 개발로 사용되기엔 부적합하여 인디 환경 위주로 많이 쓰이는 편인데, 인디 개발 환경 특성상 발적화 문제가 흔하기 때문에 두가지 단점이 시너지를 일으켜서 유니티를 사용한 게임들은 버그 덩어리라는 오명을 얻는 경우가 흔하다. 유니티 엔진을 사용한 고사양 3D 게임 치고 심각한 버그 문제를 겪지 않은 게임이 손에 꼽을 정도.
그런 반면 대외적 홍보, 강사 초빙, 세미나 등에 초점을 맞춰 마케팅에 집중하고 있다.
3.2.6. 보안성 문제
이전 버전의 경우 C# 프레임워크인 Mono에 기반했기 때문에 보안이 거의 하나도 되지 않았다. 강제로 오픈소스화된다고 할 정도로, 게임 내의 모든 리소스를 포함해서 스크립트의 코드를 담고 있는 DLL 또한 압축해제와 리버싱을 통해 얼마든지 내용이 드러나게 된다.[23] 이는 결과물이 중간 바이트코드인 대부분의 경우에 공통적으로 해당된다. 기계어 수준까지 컴파일이 되는 경우는 역컴파일이 쉽지 않고, 그마저도 현재는 C로 제한적인 표현이 가능한 수준이다. 그것도 다른 언어로 컴파일된 것이면 해석이 더욱 어렵다. 암호화를 시키면 되지만...
보안 문제는 메모리 해킹 방어, 스크립트 암호화[24] , 변수 암호화 및 다중화, 체크섬 및 패킷 암호화 등 프로그래머들이 보안성을 마련하면 어느 정도는 해결될 수는 있다. 시간 많고 능력 좋은 수준급 해커와 만나면 털리는 것은 시간문제이긴 하지만. 문제는 유니티의 낮은 진입장벽에 의해 코드 암호화를 하지 않는 프로그래머가 대다수라는 점이 문제다. 어차피 모바일 환경이 보안성을 살릴 수 없는 환경이라는 점과[25] "어차피 털릴 어플은 털린다"라는 생각을 가지는 개발자들이 대부분이고 현장의 인식도 여기에서 크게 다르지 않은 상태라서 많은 게임들은 클라이언트-서버 구조로 제작해서 중요한 부분을 서버에서 처리하는 형태로 운영되고 있다. 이러면 다행이기라도 하지, 아예 보안장치를 마련하지 않는 사례도 수두룩하다.
그래서 해당 부분을 암호화하기 위하여 애셋 스토어에 CodeGuard나 Anti-Cheat-Toolkit 등의 서드파티 툴이 기본적인 코드 난독화, 메모리 해킹감지 등을 제공했다. 물론 완벽하게 막아줄 수는 없다.
최신 버전에 들어서면서 Mono 대신 .Net framework 4 이상의 버전으로 마이그레이션함과 동시에 아예 C++로 변환 후 네이티브 코드를 생성하는 IL2CPP / Burst Compiler를 도입하여 이 약점에 대응하는 수단이 등장했다. 네이티브 코드의 경우 C#이 해독되는 가장 큰 약점인 중간 바이트코드가 없이 C/C++과 동일하게 어셈블리 코드를 생성하므로 해당 문제점이 나타나지 않는다. 초기에는 IL2CPP의 컴파일 시간이나 버그에 대한 불만이 있었으나 현재는 거의 안정화된 상태.
4. 다른 개발도구와의 비교
4.1. 유니티 vs 언리얼 엔진 4
4.1.1. 유니티 → 언리얼 엔진 4 목록
상당수의 게임들이 '''유니티 엔진 기반으로 개발도중 언리얼 엔진 4로 엔진을 바꿔 재개발'''하는 경우가 많은 사례로 나타나고 있다. 주된 이유는 프로젝트의 규모가 커지면서 유니티로는 감당하기 힘든 리소스 관리 및 고퀄리티 그래픽 대비 최적화, 개발 툴의 편의성과 엔진의 확장성, 유연성에 있다. 유니티는 비교적 툴이 단순해 보여서 익히기 쉽고 편리하게 보일 수 있으나 개발의 깊이가 깊어질수록 그 한계가 드러나는 반면 언리얼은 유니티와는 정 반대이기 때문이다.
유니티에서 언리얼 엔진 4로 변경된 게임들 목록
- 고스트러너
- EVE 발키리
- 로딩 휴먼
- 데드 링거
- 워해머 40k 이터널 크루세이드
- 리틀 데빌 인사이드
- 화이트데이 2: 스완송
- 시스템 쇼크 리메이크
- 시스템 쇼크 3
- 언턴드[26]
- 이카루스M
- 머더 마이너스 X
- 세션 스케이트보딩 게임
- 언어스드: 트레일 오브 이븐 바투타#s-6[27]
- 보일링 보트
- 스컬프터 VR
- MORDHAU[28]
- Dark Deception[29]
4.1.2. 언리얼 엔진 4 → 유니티 목록
반대로, 개발규모를 축소하면서 작업을 증가시키는 일인 엔진 교체를 하는 상황 자체가 비합리적이므로 알려진 게임들 중 언리얼 엔진 4에서 유니티로 변경된 게임의 사례는 찾아보기 어렵다. 애초에 메이저나 인터넷에 알려질 정도로 유명세가 있는 개발팀이라면 이러한 선택을 하지 않을 것이다.
소수 모바일 프로젝트의 프로토타입 단계에서 테스트 후 엔진을 변경한 사례는 있으나 개발규모가 작은 게임의 경우며, 그마저도 개발중간에 변경한 사례는 찾아볼 수 없는데 애초에 작은 규모의 게임을 만들던 팀은 개발 중간에 엔진을 바꿔서 새로 만들 여력이 없는 경우가 대부분이기 때문이다.
언리얼 엔진에서 유니티로 변경된 게임들 목록
4.2. 유니티 vs 크라이엔진
크라이 엔진은 모바일에서의 사용이 전무하며, 2018년 이후 시점에서는 PC/콘솔의 대형 프로젝트에서의 입지도 거의 잃은 상황이라 사실상 비교하기 힘들다.
4.3. 유니티 vs 플래시 몰힐(Molehill)
웹에서 실행할 수 있다는 점에서 비슷한 쓰임새를 가진다. 정확히 따지자면 유니티는 '''게임 엔진'''이고, 플래시의 몰힐은 DirectX나 OpenGL과 같은 '''로우 레벨 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. 기타
- 대한민국 서울이 2012년 유니티 엔진 사용 집계에서 전 세계 도시 중 1위를 차지했다(관련 기사).
- 2018년에는 게임 퍼블리싱 사업을 벌였는데, 다름 아닌 PLAYERUNKNOWN'S BATTLEGROUNDS의 유럽 지역 퍼블리싱을 맡았다. 그런데 이 게임은 경쟁사인 에픽게임즈의 언리얼 엔진을 사용하여 개발된 게임이다.
- 2014년에 CEO로 존 리치티엘로(John Riccitiello)가 선임되었다. 헌데, 이 사람은 EA의 전 회장이며, 웨스트우드와 불프로그(Bullfrog), 오리진(Origin)의 인수에 대해서 “우리 EA가 그들을 망쳐놓았다. 상당한 기간 동안 나는 이들 기업의 인수에 직접 관여하고 있었다. 그래서 나는 그들을 망쳤다고 말할 수 있다.” 라며, 웨스트우드 인수는 큰 실패였다고 자평했던 인물이다. 웨스트우드 문서 참고.
- 어느 1인 개발자가 유니티 엔진을 이용해서 이니셜D 아케이드판을 구현해냈다. 게임 퀄리티를 보면 그야말로 괄목할 만한 수준. 그러나 개인적인 용도로 만들었기 때문에 정식 게임은 아니며 배포할 의향도 없다고 한다. 자세한 사항은 이니셜D/게임#s-7 목록 참조.
- 2021년 국내 개인 주식투자자들이 유니티 소프트웨어에 1200억원에 달하는 순매수를 진행한것으로 조사되었다.관련 기사.
5.1. 유니티 엔진 기반의 게임들
5.2. SU:A(수아) 인물 데모
[image]
유니티 테크놀러지 코리아에서 2020년에 제작된 선정된 3D 모델이다. 2018년 나온 언리얼 엔진의 사이렌#처럼 정교하게 제작된 디지털 휴먼 테크데모 중 하나이다.
수아 디지털이 유니티 엔진으로 제작한 캐릭터이며, 머릿결부터 피부, 옷 재질까지 3D 스캔이 아니라 제로 베이스에서 매우 정밀하게 모델링되었다. 다만 움직임 부분에선 모션캡쳐를 사용할 것이며, 대신 실존 인물을 캡쳐한 만큼 다양한 동작을 정교하게 수행할 수 있다고 한다.
1월에 공개되었을 땐 머리카락은 움직이지 않지만, 3월에 공개되었을 때는 머리카락도 물리엔진이 적용되었다.
제작 비화를 밝힌 김형일[30] 은 일반적인 극사실 모델링이 실재 인물을 바탕으로 3D 스캔해서 만들지만 SU:A는 Z브러쉬로 일일이 그려서 제작했는데, 어차피 3D 스캐닝도 수작업으로 후보정을 해야해서 걸리는 시간은 비슷했다고 한다. 오히려 이 때문에 개인적으로는 3D 스캐닝을 비효율적이라고 봤다. 오히려 만들기 어려웠던 건 머리카락이였다고 토로했다.#
가정에서 사용되는 수준의 PC에서도 동작 가능하다고 하며, 버전 3.0 기준으로 API도 일반적인 다이렉트X 11을 사용하였다.#
유니티 엔진에서 디지털 휴먼 패키지를 소개한 후 공개되었다.
5.3. 유니티짱
[1] 안정판.[2] 게임 엔진은 C++로 개발, API는 C#을 스크립팅 언어로 활용하여 작성한 형태를 띄고 있다.[3] JavaScript를 기반으로 하는 유니티 엔진의 자체 스크립트였으나, 2017 버전부터 서서히 퇴출 수순을 밟더니 2018.2 버전부터 지원이 완전히 중단되었다.[4] 이전에는 Boo라고 하는 언어도 지원했고 지금도 쓸 수는 있으나 5.0 버전으로 넘어오면서부터 API 문서를 지원하지 않는다고 공지하였다. 사실상의 퇴출 수순. 사실 Boo는 Python과 굉장히 유사한 언어고 기존에는 JS와 함께 여타 언어를 쓰던 유저들을 잡을 목적으로 지원했지만 그래도 제법 쓰고 있는 JS에 비해 사용률이 매우 저조했기 때문에... 현재 이곳에서 볼 수 있는 사용 가능 스크립트에도 아예 빠져있다.[5] 사실, .Net 기반 언어이면 모두 사용 가능하다. F#도 가능하다는 이야기. 추가로, Python을 사용할 수 있게 해주는 플러그인도 있다.[6] DX 9/10/11/12[7] OpenGL ES 포함[8] 출처[9] 출처[10] 상한선 연매출 및 자본액 $100,000[11] 상한선 연매출 및 자본액 $200,000.[12] 상한선 연매출액 및 자본액 제한 없음.[13] 한국 웹사이트[14] High Definition Render Pipeline 그외에 레이트레이싱 SSAO가 적용되었다.[15] 프로젝트당 약 3억[16] 안드로이드 가상 에뮬레이터, 녹스, 블루스택 등등[17] 언리얼 엔진도 이 영향을 많이 받았는데 언리얼 엔진 3까지는 GUI가 다소 복잡하여 처음 접하는 사람들은 적응에 시간이 좀 걸리는 편이었으나 언리얼 엔진 4부터는 전반적인 인터페이스가 직관적인 GUI로 변경됐으며 특히 버전업하며 많은 기능들이 드래그 앤 드롭과 클릭 몇번으로 작동될 수 있게 바뀌어 가고 있다.[18] Flash. 다만 유니티 스케일폼은 업데이트나 기술지원이 썩 활발한 편은 아니기에 말 그대로 있다 수준에 그치는 정도인데다 정작 이 항목의 에셋 스토어에는 있지도 않은데 이유는 더이상 기술지원을 안하고 아예 내다버려서이다. 실제로도 해당 플러그인은 게임계 전반으로 봐도 기존 전성기에 비해서는 쇠퇴하고 있다.[19] XAML.[20] Thread-Unsafe는 여러 스레드가 동일한 레지스터에 동시 접근해서 잘못된 결과를 내는 것을 말한다.[21] 최대 10개의 스레드가 작동한다. 발표에서 선보인 예제는 100만개 이상의 군세를 렉 없이 업데이트하고 렌더링하는 퍼포먼스를 보여주었다.[22] 객체 지향이 아닌 데이터 지향으로 동작을 관여하는 스크립트가 객체마다 생성되었던 것을 1개로 줄여 인스턴싱 효과를 얻을 수 있는 시스템이다.[23] 물론 완벽하게 일치하지는 않는다. 컴파일을 진행하면서 전체적인 흐름을 깨지 않는 수준에서 최적화를 위해, 코드의 순서는 바뀌게 되기 때문. 그래도 스크립트의 전체적인 흐름은 파악하고도 남는다. 완전히 해커의 손에 떨어지는 셈.[24] 유니티의 경우 다이나믹 로더를 이용하기 때문에 이것이 가능하다. 물론, 스크립트 복호화 모듈이 해커에 의해 완전통제되면 답이 없다.[25] 모바일 앱인 안드로이드 앱의 경우 Java 패키징 형태로 제작되므로 해체에 대단히 느슨하다.[26] 언턴드 버전 3까지는 유니티로 개발, 언턴드 버전 4부터는 언리얼 엔진 4로 개발되었다.[27] 에피소드 1은 유니티로 개발, 에피소드 2부터는 언리얼 엔진 4로 개발되었다.[28] 킥스타터 지원을 받아 개발된 인디 게임으로 처음 개발은 유니티 4로 시작해서 유니티 5로 업그레이드 했다가 중간에 언리얼 엔진 4로 변경하여 완성되었다.[29] 데모 버전은 유니티, 정식 버전은 언리얼로 개발되었다.[30] 현재 온마인드 대표