기타 정보 유머

유니티(게임엔진)에 대해알아보자

뤼케 2023. 9. 13. 18:09
728x90
반응형

2004년 8월 Unity Technologies가 개발한 게임 엔진. Unity Technologies는 2004년 덴마크 코펜하겐에서 설립되었다. 현재는 미국 샌프란시스코로 본사를 이전했다. 주로 저사양/소규모 게임의 개발에 적합하며, 2005년 6월 8일에 처음 발표되었다.

유니티 역사

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

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

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

또한 단순히 게임 엔진으로서 남지 않으려는 듯, 최근 여러 분야의 기술들을 확장 지원하고 시각효과 기업들을 인수합병하는 등 공격적인 확장 정책을 보이고 있다. 예를 들어, Pytorch를 통하여 게임 엔진 속의 오브젝트에게 머신러닝을 시키는 기능을 통합할 수 있는 ML-Agent 라던가, 자동차 및 제조산업을 위한 AR/VR을 제공하는 Unity Industrial Collection 라던가.

2021년만 해도 '아바타', '반지의 제왕', '왕좌의 게임' 등의 VFX 효과를 담당했던 웨타 스튜디오, 원격 데스크탑 및 스트리밍 기술기업인 Parsec, AR 건축 설계 기술기업인 비주얼라이브, 원격 동기화 협업 기술기업인 싱크스케치 등 다양한 분야의 가상현실 기업들을 흡수하고 있다.

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

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

Unity 생태계



Unity는 단순한 게임 엔진 그 이상입니다. 이는 개발자가 다양한 플랫폼을 위한 게임과 대화형 경험을 만들 수 있도록 지원하는 포괄적인 생태계입니다. Unity를 탁월하게 만드는 몇 가지 주요 측면은 다음과 같습니다.

크로스 플랫폼 성능: Unity의 크로스 플랫폼 호환성은 판도를 바꾸는 요소입니다. 이를 통해 개발자는 PC, 모바일, 콘솔, VR 및 AR 장치를 포함한 다양한 플랫폼용 게임을 구축할 수 있습니다. Unity를 사용하면 전 세계 고객에게 쉽게 다가갈 수 있습니다.


사용자 친화적인 인터페이스: 노련한 개발자이든 완전 초보자이든 Unity의 사용자 친화적인 인터페이스를 통해 누구나 액세스할 수 있습니다. 시각적 편집기는 장면, 캐릭터 및 환경을 만드는 과정을 단순화하여 아이디어를 쉽게 생생하게 표현할 수 있습니다.


에셋 스토어: Unity의 에셋 스토어는 커뮤니티에서 제작한 사전 제작된 에셋, 도구, 플러그인이 가득한 보물창고입니다. 3D 모델과 음향 효과부터 강력한 AI 솔루션까지, Asset Store는 방대한 리소스 라이브러리를 제공하여 개발자의 시간과 노력을 절약해 줍니다.


C#의 스크립팅: Unity는 접근성과 성능 사이의 균형을 유지하는 C# 프로그래밍 언어를 활용합니다. 복잡한 게임 로직에 필요한 유연성과 성능을 제공하면서 초보자도 쉽게 배울 수 있습니다.


강력한 물리 엔진: Unity에 내장된 물리 엔진을 사용하면 게임 세계 내에서 사실적인 움직임, 충돌 및 상호 작용을 쉽게 생성할 수 있습니다. 이는 매력적이고 몰입도 높은 게임 플레이 경험을 만드는 데 중요합니다.


그래픽 렌더링: Unity를 사용하면 놀라운 시각적 효과를 얻을 수 있습니다. 고품질 셰이더, 후처리 효과, 동적 조명을 지원하여 플레이어를 끌어들이는 시각적으로 매력적인 세계를 만들 수 있습니다.


Unity Analytics: Unity Analytics를 통해 플레이어 행동과 성능에 대한 귀중한 통찰력을 얻으세요. 이러한 데이터 기반 접근 방식은 게임을 개선하고 플레이어 참여를 개선하며 수익 창출 전략을 최적화하는 데 필수적입니다.


멀티플레이어 네트워킹: Unity는 다양한 네트워킹 솔루션을 제공하여 온라인 멀티플레이어 경험 개발을 단순화합니다. MMO를 구축하든 협동 게임을 구축하든 Unity의 네트워킹 도구를 사용하면 됩니다.


AI 및 머신 러닝: Unity 내에서 AI 및 머신 러닝의 강력한 기능을 활용하여 지능형 NPC를 만들고, 플레이어 경험을 향상하며, 게임플레이의 새로운 지평을 탐구합니다.


활기찬 커뮤니티 및 지원: Unity는 적극적으로 지식을 공유하고 프로젝트에 대해 협업하는 개발자, 아티스트, 디자이너로 구성된 적극적이고 지원적인 커뮤니티를 자랑합니다. 플랫폼의 공식 문서와 포럼은 문제 해결 및 학습을 위한 탁월한 지원을 제공합니다.


Unity 기반 성공 사례



Unity는 다음을 포함한 수많은 성공적인 게임의 원동력이었습니다.

Hollow Knight: 비평가들의 호평을 받은 이 인디 게임은 손으로 그린 ​​아름다운 아트, 복잡한 레벨 디자인, 매력적인 게임플레이를 생생하게 구현하는 Unity의 능력을 보여줍니다.


Cuphead: 독특한 1930년대 만화 미학과 도전적인 게임플레이로 유명한 Cuphead는 Unity가 창의적이고 까다로운 게임 컨셉을 어떻게 처리할 수 있는지 보여줍니다.


Ori and the Blind Forest: 시각적으로 놀라운 걸작인 Ori and the Blind Forest는 숨이 막힐 정도로 감동적이고 공명적인 세계를 창조하는 Unity의 역량을 보여줍니다.


Among Us: 단순하지만 중독성이 강한 멀티플레이어 게임인 Between Us의 급격한 성장은 인기 있는 플레이어 중심 경험을 뒷받침하는 Unity의 능력을 보여줍니다.

유니티 보안성 문제

이전 버전의 경우 C# 프레임워크인 Mono에 기반했기 때문에 보안이 거의 하나도 되지 않았다. 강제로 오픈소스화된다고 할 정도로, 게임 내의 모든 리소스를 포함해서 스크립트의 코드를 담고 있는 DLL 또한 압축해제와 리버싱을 통해 얼마든지 내용이 드러나게 된다.[] 이는 결과물이 중간 바이트코드인 대부분의 경우에 공통적으로 해당된다. 기계어 수준까지 컴파일이 되는 경우는 역컴파일이 쉽지 않고, 그마저도 현재는 C로 제한적인 표현이 가능한 수준이다. 그것도 다른 언어로 컴파일된 것이면 해석이 더욱 어렵다. 암호화를 시키면 되지만...

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

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

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

결론



Unity는 단순한 게임 엔진 그 이상입니다. 이는 디지털 꿈을 실현하는 관문입니다. 다재다능함, 접근성 및 강력한 기능은 게임 개발 업계에 혁명을 가져왔으며 모든 수준의 개발자가 자신의 비전을 현실로 바꿀 수 있게 해줍니다. 차세대 인디 센세이션을 열망하든 블록버스터 히트작을 열망하든 Unity는 성공에 필요한 도구와 커뮤니티 지원을 제공합니다. 지금 Unity 여정을 시작하고 항상 상상했던 세계를 구축해 보세요.

728x90
반응형