무엇을 찾고 계신가요?
Case studies

6명으로 구성된 팀이 단 3개월 만에 레고® 빌더의 여정을 애플 비전 프로로 포팅한 방법

Mar 13, 2024
라이트 브릭 스튜디오의 레고® 빌더의 여정

애플 아케이드를 시작으로 라이트 브릭 스튜디오의 몰입형 멀티플랫폼 퍼즐 게임인 레고 빌더의 여정은 꾸준히 성장세를 이어가고 있습니다. 다음은 팀이 공간 컴퓨팅의 새로운 시대를 받아들이고 Apple Vision Pro에 타이틀을 도입하면서 배운 내용입니다.

도전 과제:
렌더링 및 최적화 장애물을 해결하여 3개월 만에 Apple Vision Pro로 이식하기
프로젝트 스태프:
20명, 6명으로 구성된 팀이 Apple Vision Pro 포트를 담당합니다.
플랫폼:
애플 아케이드, PC, 엑스박스 원, 엑스박스 X|S, 플레이스테이션®4, 플레이스테이션®5, 닌텐도 스위치™, 애플 비전 프로
위치:
덴마크 코펜하겐

혼합 현실을 처음 접하는 스튜디오가 다른 플랫폼의 게임플레이 경험을 그대로 유지하면서 Apple Vision Pro의 몰입감을 구현하려면 어떻게 해야 할까요?

레고® 브릭은 실제 물리적 제품이기 때문에 라이트 브릭 스튜디오는 플레이어가 실내에서 게임플레이 요소와 상호작용하는 경험을 만드는 데 어려움이 있다는 것을 잘 알고 있었습니다. Apple Vision Pro로 출시된 게임의 경우 시간도 제약이 있었습니다. 2D 인터페이스를 갖춘 다른 플랫폼 포트는 한두 달 안에 실행했지만, 공간 컴퓨팅에 새롭게 진입하기에는 3개월이라는 일정이 너무 촉박했습니다.

새로운 차원의 탐색

라이트 브릭 스튜디오의 기술 책임자인 미켈 프레드보그는 "플랫폼의 게임과 게임플레이 디자인에 대한 경계만 파악하면 원하는 모든 종류의 경험을 만들 수 있습니다."라고 설명합니다.

팀에게 비전OS로 게임을 가져오는 일은 "게임을 원활하게 실행한 다음 전체 경험을 활용하는 기술적 과제가 가장 컸습니다." 이는 평면적이었던 UI 요소를 공간에 배치하기 위해 사용자 인터페이스(UI)를 전면 재설계하는 등 여러 가지 기술적인 재작업을 수행해야 한다는 것을 의미했습니다. 또한 팀은 최종 결과물의 시각적 품질과 몰입감을 보장하기 위해 렌더링 툴과 방법을 업데이트해야 했습니다. Unity와 RealityKit 시스템의 밸런스를 동시에 맞추려면 성능 최적화에 더 많은 어려움이 따랐습니다.

라이트 브릭 스튜디오의 매니징 디렉터인 카스텐 룬드는 "다양한 포트 작업을 해봤지만, 애플 비전 프로는 다른 플랫폼과 매우 다르기 때문에 가장 복잡했습니다."라고 말합니다. "경험을 어디까지 끌어올릴 수 있을지 기대했는데, 정말 잘 작동했습니다."

결과

  • 100일도 채 안 되는 기간에 Apple Vision Pro용 타이틀의 80개 레벨과 60,353개의 레고 브릭을 제작했습니다.
  • 유니티 폴리스페이셜 팀의 지원으로 몇 주간의 개발 지연 시간 단축
  • 특정 성능 최적화만 적용하고 게임의 전반적인 흐름은 변경하지 않고 모든 게임플레이 영역을 그대로 유지했습니다.
  • 플레이어가 진행함에 따라 몰입감이 높아지는 개방형 혼합 현실 스타일로 부드러운 전환을 구현했습니다.

Nintendo Switch는 Nintendo의 등록상표입니다.

레고 빌더의 여정 게임 플레이 요소의 실제 작동 모습을 담은 GIF
Light Brick Studio의 LEGO Builder’s Journey

UI 및 게임플레이 디자인 재작업

레고 빌더의 여정은 저장된 게임을 불러오고 레벨을 다시 시작하는 등의 작업을 위한 버튼이 최대 20개에 불과한 최소한의 UI로 구성되어 있어 다른 게임에 비해 리워크 작업의 난이도가 낮았습니다. 비전OS의 디자인 언어를 모방하면서 입력이 제대로 작동하도록 게임 오브젝트를 가져와 콜라이더를 부착하는 등 Unity에서 UI를 재설계했습니다.

팀은 또한 신체 움직임의 유연성도 고려해야 했습니다. UI를 제외한 게임의 모든 요소는 레고 디지털 디자이너라는 툴에서 레고 브릭으로 제작됩니다. 개발팀은 항상 2D 표면에서 3D 공간을 시뮬레이션하려고 했지만, Apple Vision Pro를 사용하면 플레이어가 어디든 이동할 수 있다는 점을 고려해야 했습니다. 완전한 360도 경험을 제공하기 위해 팀은 특정 각도에서만 볼 수 있도록 설계된 기존 모델을 재작업하여 모델 지오메트리에 구멍이 생기지 않도록 했습니다. 드로 콜을 줄이기 위해 여러 개의 메시를 단일 게임 오브젝트로 결합하기도 했습니다.

프레드보그는 "플레이어가 걸어 다닐 수 있다는 점을 고려하여 모델을 360도로 완전히 최적화할 수 있었습니다. 브릭을 게임으로 임포트할 때 브릭 내부에 있던 지오메트리를 모두 제거했기 때문에 내부 디테일은 보이지 않으므로 모두 제거했습니다. 우리가 보유한 자동화 툴을 전체 시뮬레이션 환경에 맞게 조정할 수 있었습니다."

Light Brick Studio 팀이 PolySpatial VolumeCamera 컴포넌트의 UI와 이벤트를 설정하는 에디터 내부 모습
Light Brick Studio 팀이 PolySpatial VolumeCamera 컴포넌트의 UI와 이벤트를 설정하는 에디터 내부 모습

바운딩 모드에서 배치 관리

초기에 팀은 정해진 볼륨 내에서 작업해야 하는 바운디드 모드로 디자인하기로 결정했습니다. 해당 볼륨을 벗어나 작업을 시도하면 요소가 잘려서 보이지 않게 됩니다. 상호작용을 하지 않으면 플레이어의 머리, 눈, 손의 위치/방향에 대한 정보가 없는 바운디드 모드의 한계를 수용하기로 결정했습니다. 플레이어가 핀치 제스처를 수행하면 게임은 손이 어디에 있는지, 어떤 오브젝트와 상호작용하고 있는지 파악합니다. 핀치가 종료되면 정보도 종료됩니다. 그런 의미에서 플레이어가 화면을 터치하는 동안에만 플레이어가 무엇을 하는지 알 수 있는 터치스크린과 비슷합니다.

프레드보그는 "사람들이 무엇을 보고 있는지 알 수 없었는데, 특히 게임플레이에서 플레이어가 벽돌을 선택하려면 벽돌을 봐야 했기 때문에 큰 변화였습니다."라고 말합니다. “이러한 모든 한계를 극복하고 나니 정말 괜찮았고, 시스템 내에서도 자리를 잘 잡았습니다. 모든 요소가 같은 종류의 사용자 경험 방향으로 진행되기 때문에 이러한 방식의 운영이 정말 마음에 들었죠.”

머티리얼X 셰이더 활용하기

레고 빌더의 여정 초기 버전에서는 Unity의 경량 렌더 파이프라인(LWRP)의 커스텀 버전을 사용했고, 이후 엑스박스 및 플레이스테이션 포트용 고해상도 렌더 파이프라인(HDRP)으로 전환했습니다. Apple Vision Pro의 경우 먼저 유니버설 렌더 파이프라인(URP)셰이더 그래프에 기반하도록 모든 것을 변환한 다음 Apple의 RealityKit으로 이전해야 했습니다.

이를 위해 셰이더 그래프에서 제작한 셰이더를 MaterialX 셰이더로 변환하여 RealityKit에 로드할 수 있도록 했습니다. 그러나 팀은 결과가 제대로 최적화되지 않았고 예상보다 더 많은 작업이 필요하다는 것을 알게 되면서 장애물에 부딪혔습니다.

수작업 최적화를 계획했지만 확장성을 위해 프로세스를 자동화해야 한다는 사실을 알게 되었습니다. 셰이더에 수동으로 패치를 적용하고 중복된 코드를 찾은 다음 해당 코드 섹션을 교체하여 한 번만 실행되도록 합니다. 프레드보그는 "원활하게 운영하는 것은 어려운 일이었습니다."라고 인정하며 "하지만 PolySpatial 팀이 최적화를 위해 앞으로 나아가는 데 큰 역할을 하고 있다고 생각합니다."라고 말합니다.

레고 빌더의 여정에서 다양한 레벨의 게임 플레이 요소
Light Brick Studio의 LEGO Builder’s Journey

최고의 조명 찾기

게임의 처리 시간이 짧았기 때문에 즉석에서 솔루션을 찾아야 했습니다. 프레드보그는 "게임의 사실감을 높이면서도 리얼타임 라이트와 섀도를 지원할 수 있는 솔루션을 찾아야 했습니다."라고 말합니다. "가장 큰 변화 중 하나였습니다."

처음에는 플라스틱과 다양한 변형 등 포함하고자 하는 소재에 이미지 기반 조명을 올바르게 추가하는 것을 목표로 Apple Vision Pro에서 이미지 기반 조명을 가져왔습니다. 벽돌에 묻은 지문이나 긁힘과 같이 해결하기 까다로운 요소도 해결해야 했습니다.

이 게임은 초기에 아이폰용으로 개발되었기 때문에 조명이 매우 단순합니다. 팀은 앰비언트 오클루전이 구워진 3D 텍스처인 볼륨 텍스처를 사용하여 씬의 어느 위치에서나 샘플링할 수 있도록 했습니다. 포인트를 샘플링하고 앰비언트 오클루전이 얼마나 발생하는지 분석했습니다. 애플 비전 프로에서는 3D 텍스처가 지원되지 않기 때문에 볼륨 텍스처를 2D 텍스처로 변환하고 이를 수동으로 샘플링해야 했습니다. 지금은 PolySpatial에서 자동화된 프로세스이지만, 라이트 브릭 스튜디오 팀이 시작할 당시에는 이 기능을 사용할 수 없었습니다.

Light Brick Studio 팀이 야간 씬을 설정하는 에디터의 모습
Light Brick Studio 팀이 야간 씬을 설정하는 에디터의 모습

개발팀은 플라스틱 벽돌 셰이딩과 이 볼륨 텍스처 샘플링 시스템으로 시작했습니다. 그런 다음 리얼타임 라이트를 통합했고, 볼륨 텍스처가 씬을 감싸고 있었기 때문에 외부 라이팅을 수정해야 했습니다. 개발을 시작할 당시에는 이미지 기반 라이팅을 덮어쓸 수 없었기 때문에 다른 큐브 맵을 샘플링한 다음 RealityKit의 이미지 기반 라이팅에서 빛을 페이드 아웃해야 했습니다.

프레드보그는 "우리가 하고 있던 작업은 실제로 불가능했지만 브릭의 평활도를 낮추고 다른 값을 높여서 해결 방법을 찾은 다음 RealityKit 라이팅으로 전송했습니다."라고 설명합니다. "이제 폴리스페이셜과 리얼리티키트에서 이미지 기반 라이팅을 덮어쓸 수 있으므로 개발자가 더 쉽게 작업할 수 있습니다."

레고 빌더의 여정에서 다양한 레벨의 게임 플레이 요소
Light Brick Studio의 LEGO Builder’s Journey

부드러운 그림자 만들기

라이트 브릭 스튜디오 팀은 그림자에 대한 해결책도 찾아야 했습니다. Apple Vision Pro의 특정 요소에 그림자를 추가할 수는 있지만 표준 기능은 아닙니다. 이를 위해 팀은 Unity에서 그림자를 하이트 맵 또는 뎁스 맵으로 렌더링한 후 RealityKit으로 전송하여 리샘플링했습니다. Unity의 Metal 백엔드에서 씬을 섀도 맵으로 렌더링한 다음 RealityKit 렌더링 측으로 넘겼습니다.

"초당 90프레임을 유지해야 한다면 렌더링을 통해 밀어붙일 수 있는 것은 제한적입니다. 64 x 64 픽셀의 아주 작은 섀도 맵을 만든 다음 밉맵 레벨을 단일 텍스처의 RGBA 채널에 결합한 다음 RealityKit에서 단일 샘플로 샘플링하여 부드러운 그림자처럼 보이는 것을 만들 수 있습니다."라고 프레드보그는 설명합니다. "벽돌이 표면에 아주 가까이 있으면 그림자가 매우 날카롭지만 위로 올라가면 그림자가 부드러워집니다. 텍스처 샘플 하나로 이 작업을 수행했습니다."

집에서 레고 빌더의 여정을 플레이하는 몰입감 넘치는 경험
Light Brick Studio의 LEGO Builder’s Journey

유니티의 리얼타임 라이트의 경우 셰이더 그래프의 폴리스페이셜 라이팅 노드를 사용했는데, 이 노드는 RealityKit으로 변환된 후 여러 셰이더 그래프 노드로 확장되었습니다.

프레드보그는 "리얼리티키트에서 셰이더를 변경하는 유일한 방법은 셰이더 그래프와 유사한 인터페이스를 이용하는 것뿐입니다."라고 말합니다. 유니티 측에서는 셰이더 그래프에서 커스텀 코드 함수를 생성할 수 있으며, 특정 규칙을 준수하는 한 나중에 이를 MaterialX 노드 그래프로 변환할 수 있다는 사실을 발견했습니다. "셰이더 그래프가 없었다면 스파게티 괴물 속의 스파게티 괴물이 되었을 것입니다."라고 그는 덧붙입니다.

레고 빌더의 여정에서 다양한 레벨의 게임 플레이 요소
Light Brick Studio의 LEGO Builder’s Journey

90fps로 최적화

팀은 비주얼을 새로운 차원으로 끌어올리면서 플랫폼을 원활하게 운영하는 데 몇 가지 장애물을 경험했습니다. 개발은 두 부분으로 나뉘어 진행되었으며, Unity에서 다양한 렌더링 기술을 사용하는 RealityKit으로 모든 것을 넘겼습니다. 즉, 게임 로직은 Unity가 처리하고 비주얼 렌더링은 RealityKit이 처리하며, 초당 90프레임으로 원활하게 실행하기 위해 최적화가 필요했습니다. 주요 과제 중 하나는 병목 현상이 Unity 측에서 발생하는지 RealityKit 측에서 발생하는지 파악하는 것이었으며, 해결책을 찾기 위해 여러 번 시도해야 했습니다.

스튜디오의 테크니컬 리드인 프레드보그는 “처음에는 PolySpatial 패키지가 Unity에서 하던 모든 작업을 RealityKit에 반영했기 때문에 모든 게임 오브젝트나 트랜스폼도 거기에 있었고, 당시에는 특정 레이어가 전송되거나 반영되지 않도록 비활성화할 수 없었습니다. UI 렌더링, 캔버스 렌더링, 애니메이터 파티클 시스템까지 모든 것을 미러링했습니다."라고 프레드보그는 설명합니다. “지금은 특정 레이어를 추적하지 않도록 설정할 수 있는 필터가 있지만, 당시에는 RealityKit 측에서 볼 수 없는 모든 것을 정리하는 방법을 찾아야 했습니다.”

라이트 브릭 스튜디오의 레고 빌더의 여정 레벨
Light Brick Studio의 LEGO Builder’s Journey

팀은 게임 오브젝트 계층구조를 최적화해야 했습니다. 다른 플랫폼에서는 브릭이 3개 이상의 연결된 게임 오브젝트이지만, 비전OS에서는 브릭당 최대 2개의 게임 오브젝트를 설정하여 Unity와 RealityKit 간의 앞뒤 이동을 제한합니다. 이는 정말 잘 작동했고 팀에게는 큰 승리였습니다.

스톱 모션 애니메이션을 강화한 것도 하이라이트였습니다. 이 게임에는 브릭에서 메시를 교체하는 애니메이션화된 폭포가 포함되어 있습니다. 이 폭포는 수백 개의 서로 다른 게임 오브젝트로 구성되어 있어 속도가 상당히 느렸습니다. 프레드보그는 “모든 게임 오브젝트에 대해 모든 프레임을 처리하는 대신 시차를 두고 처리하는 방식으로 문제를 해결했습니다”라고 말합니다. “폭포처럼 쏟아지는 다른 작업들 사이에 몇 프레임마다 기다렸다가 작업을 진행했죠. 많은 도움이 되었습니다.”

최고의 솔루션 및 파트너 찾기

애플 비전 프로를 개발하는 과정에서 라이트 브릭 스튜디오 팀은 민첩성을 유지하고, 문제를 빠르게 해결하며, 제대로 된 결과를 얻기 위해 반복 작업을 수행해야 했습니다.

프레드보그는 "안경을 써야 이해할 수 있을 것 같습니다."라고 말합니다. "터치와 움직임에 집중할 수 있도록 여러 번 빌드하고 디바이스를 최대한 많이 사용하는 것이 좋습니다. Mac에서 실행할 수 있는 시뮬레이터를 통해 작동 방식을 파악할 수 있지만 입력 방식이 다릅니다. 훨씬 더 물리적인 플랫폼이니까요.”

결국 팀은 강력한 지원 파트너와 함께 일한 덕분에 게임의 결과물에 매우 만족했습니다. "PolySpatial 팀은 Slack과 토론 포럼 모두에서 매우 반응이 좋았습니다."라고 그는 계속 말합니다. "막히면 신속하게 해결책을 제시해 주어서 정말 큰 도움이 되었습니다. 그들은 정말 지원을 아끼지 않았고 최고의 PolySpatial 버전을 만들고 싶어 했습니다."

라이트 브릭 스튜디오의 레고 빌더의 여정 레벨
Light Brick Studio의 LEGO Builder’s Journey
"유니티가 플랫폼을 지원하는 한, 해당 플랫폼에서 실행되도록 만들 수 있습니다."
MIKKEL FREDBORG / LIGHT BRICK STUDIOTechnical Lead

지금 Unity 2022 LTS로 Apple Vision Pro용 빌드하기

Unity의 강력한 툴과 워크플로로 매력적인 공간 경험을 제작하는 데 어떤 도움을 받을 수 있는지 알아보려면 유니티에 문의해 주세요.

사례 연구 살펴보기

이 양식을 작성하여 최신 고객 성공 사례에 액세스하세요.