유니티가 다시 넘버링 시리즈를 채택, 새로운 버전의 엔진 유니티6로 찾아온다. 유니티5 체제였다가 지난 2017년 연도별 버전 표기로 바뀐 뒤 7년 만의 일이다. 그간 해당 연도에 맞춰서 프리뷰 버전을 제시하고, 개발자 및 커뮤니티 피드백을 테스트를 거쳐서 그 정식 버전을 그 다음 해에 선보이던 유니티 엔진이 과연 유니티6에서는 어떤 업데이트 플랜을 보여줄까? 아울러 연도별 업데이트가 아닌 넘버링 시리즈로 바뀐 만큼, 그 임팩트를 담을 만한 기능을 보여줄 수 있을까? 이러한 의문에 대해 유나이트 2024 현장에서 앤드류 보웰 시니어 디렉터와 윌 골드스톤 수석 프로덕트 디자이너가 유니티6의 로드맵을 발표하면서 답변을 이어갔다.


유니티6 10월 17일 출시, 유니티6.1은 내년 4월 업데이트

오는 10월 17일 출시되는 유니티6은 정확하게는 6.0버전이다. 6.0버전에서는 GPU 상주 드로어를 통해 빠른 렌더링은 물론 모바일 웹 런타임에 대한 더 심도 있는 지원이 포함된다. 또한 유니티가 그간 강조해왔던 AI도 뮤즈와 센티스 등 툴을 단순히 제공하는 것을 넘어 업스케일링과 커스텀 AI 모델 적용 사례를 테크 데모로 보여주는 등 그간 유니티가 준비해온 것들을 본격적으로 선보일 예정이다.

아울러 유니티가 그간 강조해왔던 멀티플레이 게임 개발 부문에서도 멀티플레이어 센터, 멀티플레이어 플레이 모드 등으로 프로토타입을 빠르게 만들고 테스트할 수 있게 된다. 기존의 오브젝트 기반 넷코드 지원은 물론 여기에 '메가시티 메트로' 데모를 통해 엔티티 기반 넷코드 및 여러 기술을 직접 확인하고 적용할 수 있도록 돕는다.




이러한 기반을 갖고 출시한 유니티6은 최소 2년, 혹은 그 이상 해당 메이저 버전을 유지한다. 대신 1~4주 간격으로 좀 더 빠르고 잦은 패치로 이슈에 적극 대응할 예정이다. 또한 버전 업데이트까지는 아니지만 매번 자잘하게 진행하는 패치보다 더 안정적이고 장기적인 관점에서 하위 넘버가 바뀌는 업데이트 릴리즈를 통해서 기존 LTS 대비 더 능동적이고 빠르면서도 안정적인 구조를 갖춰갈 예정이다. 그리고 메이저 버전 업데이트마다 임팩트를 줄 수 있는 기능을 추가하는 방향으로 새로운 기능 추가 및 안정감의 밸런스를 맞췄다.

즉 10월 17일 유니티6 정식 출시 이후, 이른바 유니티6의 시대가 시작된다. 유니티6 세대는 최소 2년 이상 유지되며, 그 이후의 버전 릴리즈는 유니티6 세대 동안 알파, 베타, 프리뷰를 거치고 정식으로 출시된다. 유니티6.1 업데이트는 내년 4월로 예정되어 있으며, 그 사이사이에 여러 패치를 통해서 기능을 다듬고 안정화할 예정이다.



▲ 내년 4월 유니티6.1 업데이트가 예정됐다

유니티6 세대의 과제로는 퀄리티, 퍼포먼스, 플랫폼 업데이트 대응, 그리고 추가 기능이 언급됐다. 우선 퀄리티와 퍼포먼스를 높이기 위해서는 트리스를 이전 대비 줄여서 더 정교한 그래픽을 쉽고 최적화해서 구현할 수 있는 메시LOD, 모바일에 대응하는 디퍼드 렌더링 최적화, 빌드하고자 하는 플랫폼에 맞춰 패키지를 바로 제공하고 세팅, 퀄리티 레벨까지 정해주는 빌드 프로파일 등이 소개됐다.

여기에 그간 커스터마이징 툴을 활용해야 했던 폴더블 화면 대응 및 더 쉽게 멀티플레이 XR 게임을 만들 수 템플릿, 메타 퀘스트 빌드 프로파일 지원, 웹게임을 위한 웹GPU, 페이스북과 메신저 인스턴트 게임을 위한 새로운 빌드 타겟도 유니티6 세대에서 업데이트될 내용이다. 특히 웹어셈블리 스트리핑 툴로 런타임 단계에서 활용되지 않는 파트를 찾아낼 수 있으며, C# 인스턴트 게임 SDK로 C#으로 작성된 게임 코드가 자바 엔드포인트에 대응, 더 다양한 플랫폼에 쉽게 접근할 수 있게 된다. 이러한 기술로 웹 환경에서 로딩 타임이 평균 56% 가량 감소할 것이라고 전망했다.



▲ 유니티6에서는 최적화를 위한 여러 기술은 물론, 호환성 강화까지 폭넓게 신경 쓸 예정이다

멀티플레이 게임 개발 부문에서는 멀티플레이어 플레이 모드를 모바일에서도 대응하게끔 개선하며, 클라이언트 호스트 게임에서 호스트가 접속이 끊겨도 다른 클라이언트에서 호스트를 양도받게끔 하는 호스트 이송을 엔티티 기반 넷코드 그리고 오브젝트 기반 넷코드에 적용한다. 또한 긍정적인 멀티플레이 게임 경험을 제공하기 위한 비복스 등 솔루션도 더 강화한다. 산업 부문에서는 임베디드된 여러 기기에 더욱 잘 대응할 수 있도록 개선된다. 안드로이드, 임베디드 리눅스는 물론 QNX 지원도 확장된다.


유니티6 다음 세대의 키워드는? '단순함, 이터레이션, 파워'

한편, 유니티는 유니티6 세대뿐만 아니라 그 이후에 대해서 지난 몇 년 동안 추가로 준비해왔다. 게임 업계는 항상 발전하고 있으며, 플랫폼 또한 계속 변화하고 있기 때문에 이를 예측해서 대응할 필요가 있기 때문이다. 보웰 시니어 디렉터는 아직 확정된 안은 아니지만, 그 방향성은 크게 '단순함, 이터레이션, 파워' 세 가지를 꼽았다.

'단순함'은 말 그대로 개발 과정이 단순해져야 한다는 뜻으로, 복잡하게 분산된 개발 과정을 통합해서 좀 더 알기 쉽게 보여준다는 것이다. 또한 이터레이션을 계속 하는 시간을 줄이고, 강력하고 안정된 퍼포먼스를 보여주는 것이 세 키워드가 뜻하는 바였다.

이를 위해서 맨 처음 언급된 것은 싱글 솔루션, 즉 한 기능으로 여러 가지를 다 할 수 있어야 한다는 점이었다. 일례로 차세대 UI 툴킷은 커스텀 UI 셰이더는 물론, 그간 다른 툴이나 플러그인을 활용해야만 했던 여러 언어들을 지원하게 된다. 특히 이모티콘이나 우에서 좌로 쓰는 아랍어 같은 특수한 케이스들도 지원 대상에 포함된다.


렌더링 또한 간소화된다. 그간 유니티는 빌트인 파이프라인에 URP, HDRP가 있는 SRP까지 구축해둔 상태다. 각각 쓰임에 맞춰서 고퀄리티 그래픽, 멀티플랫폼 대응 특화로 개발해왔던 것이지만, 반면에 어떤 렌더링 파이프라인을 선택해서 개발할지 혹은 그 렌더링 파이프라인을 서로 오가는 방법을 어떻게 구현해야 할지 고민이 많았다. 이러한 복잡함을 덜기 위해 차세대 유니티 버전에서는 통합 렌더러로 변경된다. 다만 렌더링 파이프라인 통합에는 시간이 많이 걸리는 만큼, 유니티6 세대에서는 기존의 빌트인, URP, HDRP 구조를 유지한다. 또한 셰이더 그래프도 노드 베이스의 셰이더 그래프2와 블록 셰이더로 개선된다.


▲ 빌트인/URP/HDRP로 나뉘었던 렌더링 파이프라인이 통합 렌더러로 변경된다

이터레이션 부문에서는 CORE CLR과 콘텐츠 파이프라인이 주요 테마로 손꼽혔다. 모노 펑션이 아닌 CORE CLR 대응으로 최신 .NET에 대응하는 것은 물론, 플레이 모드도 좀 더 유연하게 설정할 수 있게 된다. 콘텐츠 파이프라인에서도 기존의 임포트, 크리에이트, 빌드, 디스트리뷰트, 로드 과정을 매번 하는 것이 아니라 백그라운드에서 임포팅을 진행, 필요한 부분만 언제든 새로 불러올 수 있게끔 해서 이터레이션 타임을 줄일 예정이다.

'파워'에서는 유니티가 그간 줄곧 강조해왔던 DOTS, ECS가 언급됐다. 유니티 엔진에 ECS가 적용되는 건 물론, 게임 오브젝트처럼 에디터 안 그리고 코드로 바로 지정할 수 있게끔 한 것이다. 또한 오브젝트와 엔티티가 서로 싱크가 맞게끔 준비 중이다. 일례로 트랜스폼을 통합, 엔티티를 부모로 둔 오브젝트 혹은 오브젝트를 부모로 둔 엔티티 이런 구조가 가능해진다.

▲ 게임 오브젝트와 엔티티가 싱크를 맞추는 등, 구조적으로 이전과 상당히 크게 변할 예정이다

아울러 씬에 가지 않아도 모든 애니메이션 클립의 프리뷰를 보거나 스켈레톤을 편집할 수 있고, 오브젝트에 가상 트랜스폼인 소켓을 붙여서 부착물이나 장비가 있는 상황을 가정한 애니메이션을 좀 더 쉽게 구현할 수 있게 된다. 또한 애니메이션을 다른 오브젝트에도 리맵하기도 쉬워진다.

'파워'라는 테마에서는 더 방대한 월드를 유연하고 빠르게 구축할 수 있는 여러 기능이 우선 소개됐다. 표면에 쌓인 눈 같은 오브젝트를 파괴하지 않고, 다양한 구도를 보여주는 논 디스트럭티브 에디팅, 물체의 위치에 따라서 셰이더가 적절히 적용하게 하는 셰이더 그래프 인터그레이션, 여기에 해당 지형의 고저에 맞춰서 유연하게 대응하는 레벨 디자인 플렉시비티까지 복잡한 절차 없이 단번에 쉽게 원하는 월드를 광범위하게 구축할 수 있게끔 했다. 또한 모바일에서도 구동이 가능하도록 하는 버추얼 텍스처링 기술도 도입할 예정이다. 이러한 기능은 아직 확실하게 구현된 것이 아니며, 유니티6 이후를 위해 여러 개발자들과 커뮤니티의 피드백을 거쳐서 차츰차츰 완성해나갈 될 전망이다.