무엇을 찾고 계신가요?
E-Book

Apple Vision Pro로의 포팅을 위한 6가지 팁

Jun 20, 2024
Synth Riders의 게임플레이 요소

공간 컴퓨팅의 새로운 시대가 열렸습니다. 이제는 강력한 XR(확장 현실) 툴과 유연한 워크플로를 통해 개발자가 상호 작용을 추가하고, 그래픽스를 확장하고, 프로토타이핑을 만들거나, 에디터 내에서 테스트할 수 있습니다. Apple Vision Pro와 같은 디바이스의 출시는 완전히 새로운 최적화된 환경을 만들고 게임과 앱을 한 차원 더 높은 수준으로 끌어올릴 수 있는 독보적인 기회를 커뮤니티에 제공했습니다.

진화하는 신규 플랫폼에 맞게 개발할 때는 다음과 같은 내용을 고려해야 합니다.

  • 장애물은 피할 수 없는 것임을 받아들입니다.
  • 최대한 많은 것을 준비합니다.
  • 무엇에든 적응할 수 있다는 태도를 유지합니다.
  • 개발에 천천히 접근하고 충분한 시간을 들여 올바른 구성 요소를 쌓아 올립니다.
  • 360도 경험에 집중합니다.
  • 기술적인 재작업을 수용합니다.
  • 협조적이며 개방적인 자세를 유지합니다.
  • 커뮤니티에 조언을 구합니다.

이 전자책은 게임을 한 단계 더 발전시킬 수 있는 베스트 프랙티스와 기술적 팁을 제공합니다. Unity for visionOS로 공간 경험을 구축하는 복잡한 과정을 설명하고, Job Simulator, Vacation Simulator, LEGO® Builder’s Journey, WHAT THE GOLF?, Synth Riders와 같은 인기 타이틀이 어떻게 Apple Vision Pro에 생생하게 구현되었는지에 대한 비하인드 스토리를 소개합니다.

다음과 같은 6가지 전문가 팁을 확인해 보세요.

1. UX/UI 고려

2. 혼합 현실 또는 완전 몰입형 등 콘텐츠에 적합한 모드 선택

3. 컨트롤러 기반에서 공간 탭(spatial tap) 또는 핸드 트래킹으로 전환

4. 성능과 시각적 정확도의 균형 맞추기

5. 반복 작업 및 테스트에서 우선순위 지정

6. 새로운 렌더링 및 최적화 프로세스에 적응

1. UX/UI 고려

게임의 UX(사용자 경험)와 UI(사용자 인터페이스)의 복잡성은 게임을 Apple Vision Pro로 구현할 때 고려해야 할 핵심적인 부분입니다. 플랫폼의 진화 및 발전으로 인해 UI가 무거운 게임이나 앱에서는 추가적인 문제가 발생할 수 있습니다. 스튜디오 전문가들과 게임의 UX/UI 최적화에 대해 인터뷰를 진행한 결과, 이들은 시선 추적 데이터의 맹점을 보완하기 위한 기술적 재작업을 구현하고, 게임플레이에 신체 움직임을 통합하고, 재미를 찾는 데 중점을 두라고 조언했습니다.


시선 추적 데이터의 부족에 따른 대응

Kluge Interactive 팀은 Apple Vision Pro의 UI를 재작업하기 시작하면서 Apple이 요소와 상호 작용하고 버튼 디자인을 표준화하는 구체적인 방법을 규정하고 있다는 사실을 빠르게 깨달았습니다. 시선 추적 데이터는 개발자가 직접 액세스할 수 없기 때문에, 개발자는 이러한 제약 조건 내에서 작동하는 UI를 개발하기 위해 다른 방법을 찾아야 했습니다.

시선 추적 데이터에 액세스할 수 없기 때문에 커스텀 솔루션은 사용할 수 없었습니다. 이 팀은 Apple Vision Pro의 빌트인 하이라이팅 시스템과 통합하기 위해 전체 UI를 3D로 다시 제작했습니다.

Kluge Interactive의 Synth Riders 게임플레이 스크린샷
Kluge Interactive의 Synth Riders

Kluge Interactive의 개발자인 미구엘 모스케라는 “표준 캔버스 기반 UI를 사용할 수도 있었지만, 저희는 다양한 투명 레이어의 처리에 어려움을 겪었습니다”라고 설명합니다. “캔버스, 그림, 2D 요소를 하이라이트 처리하는 정사각형 모양이 가장 큰 문제였습니다. 미적으로도 만족스럽지 않았고 하이라이트가 오브젝트와 어울리지 않았어요.” 팀은 이러한 문제를 방지하기 위해 3D UI로 전환했고, 정사각형 메시와 알파 텍스처를 사용하여 원하는 효과를 얻었습니다.

UI를 3D로 다시 제작하면서 시선 하이라이트가 버튼의 모양과 일치하도록 했지만, 플랫폼에서 UI가 자연스럽게 느껴지도록 하기에는 충분하지 않았습니다. 메뉴 디자이너는 하이라이트 효과가 항상 오브젝트의 실루엣 테두리 주변에 은은한 흰색 빛을 낸다는 점도 고려해야 했습니다. 따라서 예를 들면 밝은 색상과 투박한 테두리를 피하고 어두운 색상의 부드러운 그라데이션을 사용했습니다.

이로 인해 새로운 워크플로가 추가되었지만 팀은 새로운 프로세스를 수용했고 그 결과에 만족하고 있습니다. Kluge Interactive의 CEO인 아르투로 페레즈는 “그만한 가치가 있었습니다. UI가 다른 디바이스보다 훨씬 깔끔해요”라고 밝혔습니다.

파티 모드 UI를 작업하는 Kluge Interactive 팀의 에디터 내부 모습
파티 모드 UI를 작업하는 Kluge Interactive 팀의 에디터 내부 모습

사용자의 움직임과 자유도 고려 Light Brick Studio에게 LEGO Builder’s Journey를 Apple Vision Pro로 포팅하는 것은 어렵지 않은 결정이었습니다.

게임은최소한의 UI로 구성되어 있어 저장된 게임 로드, 레벨 재시작 등의 작업을 위한 버튼이 최대 20개에 불과했기 때문에 다른 게임에 비해 재작업의 난이도가 낮았습니다. 팀에서는 적절한 기능을 구현하면서도 visionOS의 디자인 원칙을 준수하면서 위해, Unity에서 UI를 다시 디자인하여 상호 작용이 가능한 UI 요소(Apple Vision Pro의 '공간 탭' 제스처가 올바르게 작동하는 데 필요한 컴포넌트)에 콜라이더를 연결했습니다. 또한 사용자의 움직임도 고려해야 했습니다.

항상 2D 표면에서 3D 공간을 시뮬레이션하는 것이 목표였지만, Apple Vision Pro와 같은 혼합 현실 디바이스에 적용하려면 플레이어가 모든 방향으로 움직이고 모든 각도에서 콘텐츠를 볼 수 있다는 점을 고려해야 했습니다. 원래 특정 각도에서만 볼 수 있도록 디자인된 기존 모델은 모델의 지오메트리에 틈이 생기지 않도록 재작업해야 했습니다. 성능을 최적화하고 드로우 콜을 줄이기 위해 여러 개의 메시를 단일 게임 오브젝트로 결합했습니다. Light Brick Studio의 테크니컬 리드인 미켈 프레드보그는 “플레이어가 자유롭게 걸어다닐 수 있다는 점을 고려하여 모델을 360도로 완전히 최적화했습니다”라고 말합니다. “브릭을 게임으로 임포트할 때 브릭 내부에 있던 지오메트리를 모두 제거했습니다.

내부 디테일은 사라진 거죠. 어차피 볼 일이 없을 테니까요. 기존에 사용하던 자동화 툴을 전체 시뮬레이션 환경에서 작동하도록 조정할 수 있었습니다.”

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

UX와 상호 작용에서 재미 요소 찾기

Triband 팀은 WHAT THE GOLF?를 제작하며 공간 컴퓨팅을 실험할 때 사용자의 관심을 유도하는 데 어려움을 겪었습니다. 공간 애플리케이션에서 사용자는 ‘카메라’를 자유롭게 움직이며 원하는 곳을 살펴볼 수 있습니다. 이는 원래 모니터에 비춰질 게임을 개발하던 팀에게는 완전히 다른 경험이었습니다.

Triband의 테크니컬 리드인 루카스 벤트는 “경험상 사용자가 특정 요소를 알아차리는 시야는 예상보다 훨씬 좁습니다”라고 말합니다. 작은 화면에서 사용자 경험의 재미와 효과를 극대화하기 위해, 개발 팀은 무게감과 탄력이 있는 물리적 상호 작용을 만들었습니다.

Triband의 WHAT THE GOLF?
Triband의 WHAT THE GOLF?

Owlchemy Labs는 흥미로운 요소를 찾는 한편 재미있고 직관적인 사용자 경험을 제공하기 위해 노력했습니다. 이를 위해 매뉴얼이나 튜토리얼 없이도 플레이어가 간단하고 직관적인 상호 작용을 할 수 있도록 안내하는 오브젝트의 시각적 지표인 어포던스에 초점을 맞췄습니다.

또한 재미있고 반응이 빠르면서도 사용자가 핵심 상호 작용을 반복하도록 유도하는 디자인에 집중했습니다. Owlchemy Labs의 CEO인 앤드루 아이헤는 “경험에 더 많은 기능을 추가하고 싶지 않은 경우에는 농담을 던지거나 사용자의 의도를 인식했다는 메시지를 보여 주었습니다”라고 설명합니다. “덕분에 사용자는 가상 세계에서의 존재감을 느낄 수 있고요.”

또한 팀에서는 게임의 플레이 테스트를 매우 초기부터 진행하고 피드백을 자주 수집했습니다. 플레이 테스트에 따라 어디를 변경할지 결정하고 필요한 부분을 조정할 수 있기 때문에, 프로젝트 리드급 인원들은 대부분의 플레이 테스트에 참석해야 했습니다. 그런 다음 상호 작용을 개선하고 특수 효과, 애니메이션, 음향 효과를 추가하여 사용자 몰입도를 강화했습니다.

Job Simulator의 게임플레이 요소
Owlchemy Labs의 Job Simulator

2. 혼합 현실 또는 완전 몰입형 등 콘텐츠에 적합한 모드 선택

Apple Vision Pro에서 게임이나 애플리케이션은 단독 창(2D), 몰입형(확장 현실/XR, 바운드 또는 언바운드), 완전 몰입형(가상 현실/VR) 등 세 가지 방식 중 하나로 표시할 수 있습니다. 이 모두의 개발 단계는 각자 고유하며, 애플리케이션에 적합한 모드는 특정 요구 사항과 게임플레이 또는 사용자 경험에 따라 달라집니다. 이러한 옵션 중 어떤 것을 선택할지 결정할 때 고려해야 할 요소는 많지만, Unity를 이용하는 스튜디오 전문가들은 몰입도, 플레이어의 집중도, 그래픽스 수준을 염두에 두고 선택하라고 조언합니다.

원하는 플레이어 집중도 고려 Apple Vision Pro에서 확장 현실 애플리케이션은 바운드 또는 언바운드 방식으로 구현될 수 있습니다.

바운드의 경우 콘텐츠가 사용자 공간의 볼륨 내에 포함되어 있고 멀티태스킹을 위해 다른 애플리케이션과 함께 실행될 수 있으며, 언바운드의 경우 다른 애플리케이션은 닫혀 있으며 콘텐츠가 사용자에게만 집중되고 사용자 환경의 어디에나 배치될 수 있습니다.

Synth Riders 게임플레이 스크린샷
Kluge Interactive의 Synth Riders

Synth Riders는 처음에는 바운드 앱으로 시작했지만 결과적으로 언바운드로 출시된 사례입니다. 완전 몰입형(VR) 모드를 고려하던 Kluge Interactive 팀은 게임 센터 인증이라는 과제에 직면했습니다.

궁극적으로 바운드 콘텐츠와 언바운드 콘텐츠 중에서 선택하는 것은 플레이어와 사용자에게 얼마나 많은 집중을 요구할 것인지에 달려 있습니다. 테크니컬 프로듀서인 앤마리 위렐 바르톨로메우스는 “플레이어의 관심을 독차지하고 싶으신가요, 아니면 다른 앱에 분산시켜도 괜찮으신가요? 이에 따라 바운드가 될지 언바운드가 될지, 완전 몰입형이 될지 창 형식이 될지가 결정됩니다”라고 합니다. “우리는 플레이어의 관심을 독차지하고 싶었죠.”

Kluge Interactive의 Synth Riders 게임플레이 요소
Kluge Interactive의 Synth Riders

레벨 디자인의 복잡성 고려

Triband 팀은 Apple Vision Pro용 WHAT THE GOLF? 개발을 시작하면서 레벨 디자인이 가장 큰 과제 중 하나라는 사실을 빠르게 깨달았습니다. 이 게임은 다양한 메카닉과 카메라 설정을 갖춘 수백 개의 레벨로 구성되었습니다. 콘텐츠가 방대하고 다양하기 때문에 팀에서 일관된 방식으로 변환하기가 어려웠습니다.

팀의 테크니컬 리드인 웬트는 “레벨 전체에서 가장 일관된 모습을 보여 준 XR 바운드 모드를 사용했습니다. 레벨에 미니어처 같은 느낌을 주는 데 도움이 되었죠”라고 말합니다.

플레이어가 WHAT THE GOLF?를 시작할 때 표시되는 작은 튜토리얼인 스타트 아일랜드의 에디터 내부 모습
플레이어가 WHAT THE GOLF?를 시작할 때 표시되는 작은 튜토리얼인 스타트 아일랜드의 에디터 내부 모습
“새로운 패러다임의 새로운 플랫폼에서 작업하려면 학습, 재고, 협업이 필요합니다. 유니티 팀은 이미 많은 작업을 해온 경력이 있으며, 출시 과정에서 어려움을 겪을 때 큰 도움을 주었습니다.”
LUKAS WENDT / TRIBANDTechnical Lead

팀에서는 가상 TV를 사용하여 2D 레벨과 특정 카메라 움직임을 활용하는 레벨을 보여 주기로 했습니다. 대부분의 게임이 섬에서 진행되기 때문에 TV를 섬에 배치하면 레벨에 대한 집중도를 높일 수 있습니다.

다른 플랫폼에서는 레벨 간 전환을 위해 전체 화면 페이드와 와이프 효과를 사용했는데, 공간적 환경에서는 이렇게 할 수 없었습니다. 시간이 촉박했기 때문에 팀에서는 만족할 만한 솔루션을 찾기 위해 신속하게 작업했습니다. 웬트는 “전체 레벨이 바닥을 통과하여 위로 이동하는 방식의 전환을 사용하기로 했습니다. 설정을 단순화하기 위해 볼륨을 반대 방향으로 옮겼습니다”라고 설명했습니다.

Triband의 WHAT THE GOLF? 게임플레이 요소
Triband의 WHAT THE GOLF?

바운드 모드의 한계 극복

초기에 Light Brick Studio 팀은 한정된 볼륨 내에서 작업해야 했기 때문에 바운드 모드로 디자인하기로 했습니다. 해당 볼륨 외부의 모든 요소는 잘려서 보이지 않습니다. 또한 바운드 모드에서는 상호 작용이 이루어질 때까지 플레이어의 머리, 눈, 손의 위치/방향에 대한 정보가 생성되지 않습니다. 개발자는 플레이어가 핀치 또는 공간 탭 제스처를 수행한 후에만 손 위치나 상호 작용 중인 게임 오브젝트와 같은 정보에 액세스할 수 있습니다. 핀치가 끝나면 정보도 함께 사라집니다. 그런 의미에서 상호 작용은 플레이어가 화면을 터치하는 동안에만 플레이어가 무엇을 하고 있는지 알 수 있는 터치스크린 인터페이스와 유사합니다. 이러한 제약으로 인한 초기 어려움에도 불구하고 팀은 게임 환경 내에서 집중도 높은 경험을 구축할 수 있었습니다.

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

3. 컨트롤러 기반에서 공간 탭 또는 손 제스처로 전환

제스처 또는 추적된 상호 작용을 디자인하고 구현할 때는 사용자 경험이 직관적이고 반응이 빠른지 확인하는 것이 중요합니다. 이를 위해 전문가들은 기존의 기술을 활용하면서 공간 탭 프로세스를 단순하게 유지하는 데 집중했습니다. 핸드 트래킹을 처음 접하는 스튜디오는 새로운 입력 방식과 햅틱의 부재에 적응해야 했고, 경험이 많은 개발자는 한계를 확장하며 최대한 편안한 경험을 만들기 위해 노력했습니다.

Vacation Simulator의 게임플레이 요소
Owlchemy Labs의 Vacation Simulator

공간 탭을 단순하게 유지

Owlchemy Labs는 특히 공간 탭 제스처와 관련하여 상호 작용을 단순하게 유지하고 플랫폼의 표준을 준수하는 것을 중요시합니다.

아이헤 CEO는 “공간 탭은 물리적 버튼 없이도 바이너리 상태를 부여하는 멋진 제스처입니다”라고 합니다. “일반적으로 Apple의 방향성을 따르는 것이 좋죠. 그러한 방향성에서 벗어나고자 할 때는 그것이 왜 더 나은 결정인지 판단할 수 있는 명확한 기준이 있어야 합니다. 사용자도 익숙하지 않은 것을 새로 익혀야 하니까요.”

마찬가지로 Triband는 상호 작용을 최대한 직관적이고 단순하게 유지하려고 노력했습니다. 핀치 및 드래그 제스처를 사용하여 제어 체계를 지원하고, Unity의 향상된 터치 지원을 사용하여 자동 손가락 추적 및 터치 이력 기록을 구현했습니다.

Job Simulator의 게임플레이 요소
Owlchemy Labs의 Job Simulator

핸드 트래킹의 도입

Kluge Interactive 팀에서는 게임을 재구성하는 과정 중 처음으로 핸드 트래킹을 도입했습니다. 처음에는 햅틱이 없는 것에 대해 주저했지만, 최종적으로는 마음에 드는 결과물을 얻었습니다. 바르톨로메우스는 테크니컬 프로듀서의 관점에서 “일반적으로 컨트롤러를 잡으면 손의 범위가 손목에서 끝나지만, 핸드 트래킹을 사용하면 손가락의 움직임도 중요해지고 새로운 방식으로 제스처를 취하며 음악과 상호 작용할 수 있습니다”라고 설명합니다. “게임에 새로운 차원을 선사했죠.”

컨트롤러 없이도 새로운 입력에 적응할 수 있었습니다. 컨트롤러 햅틱은 플레이어에게 즉각적인 피드백을 제공하므로, 외부에서 가해지는 것이 아닌 특수 효과로 이러한 정보를 보완할 방법이 필요했습니다. 바르톨로메우스는 “오디오 리액티브 효과, 조명, 다양한 파티클을 사용하여 동작에 따라 노래와의 연관성을 강화하는 작업을 했습니다”라고 합니다.

Synth Riders의 게임플레이 요소
Kluge Interactive의 Synth Riders

Apple Vision Pro의 손 인식 기능은 다른 플랫폼과 약간 다르기 때문에, 팀에서는 플랫폼 기술 자료를 사용하여 손 위치 및 골격 오프셋에 적합한 값을 찾았습니다. 손 위치를 추적하기 위해 손목을 외삽(extrapolation) 지점으로 사용했습니다.

게임플레이 메카닉을 위한 손 추적과 기타 상호 작용을 위한 공간 탭의 조합을 선택함으로써 커스텀 제스처가 필요하지 않게 되었습니다. 바르톨로메우스는 “운영체제에서 제공되는 기능을 활용했는데 정말 편리했습니다”라고 전했습니다. “다들 사용해 보셨으면 좋겠어요. 정말 탁월한 선택이었습니다.”

Synth Riders의 게임플레이 요소
Kluge Interactive의 Synth Riders
“Unity를 사용하면 이 출시된 지 얼마 되지 않은 하드웨어를 익숙한 공간으로 가져와 익숙한 방식으로 다루며 수많은 기술을 활용할 수 있습니다. 덕분에 활용성이 배가되고 있죠.”
ANNMARIE WIRREL BARTHOLOMAEUS / KLUGE INTERACTIVETechnical Producer

크리에이터의 의도를 생생하게 구현

Owlchemy Labs 팀은 Job SimulatorVacation Simulator를 Apple Vision Pro에 포팅하기 위해 핸드 트래킹에 집중하여 컨트롤러로는 어렵거나 불가능한 상호 작용을 탐색할 수 있도록 했습니다. 예를 들어, 오브젝트를 잡은 후 취하는 동작인 2차 상호 작용은 컨트롤러를 사용할 때보다 더 정교합니다. 아이헤는 “저희 데모 중에는 동전을 쥐고 엄지손가락으로 뒤집는 동작이 있습니다. 이 모든 동작은 플레이어가 현실 세계에서 하는 제스처를 모방하는 방식으로 이루어지죠. 컨트롤러였다면 복잡한 일련의 작업을 수행하는 식이었을 겁니다”라고 설명합니다.

팀에서는 ‘느낌’을 우선적으로 고려해서 상호 작용을 디자인했습니다. 오브젝트를 잡는 것과 같은 간단한 상호 작용이 빠르게 반응하고 자연스럽게 느껴지도록 한 다음, 오브젝트를 던지고, 누르고, 두드리는 등 더 복잡한 상호 작용으로 발전할 수 있도록 했습니다.

그런 다음 손가락을 뻗어 오브젝트에 닿는 것과 같이 실제 세계의 규칙을 정확히 따르지 않더라도 이러한 상호 작용을 강조하고 안내하는 제스처를 개발했습니다. 아이헤는 “가장 좋은 규칙은 신뢰성이 사실성보다 우선한다는 것이죠”라고 말합니다. “플레이어가 오브젝트를 집어야 한다고 생각하면, 거리가 너무 멀고 손 동작을 완전히 취하지 않았더라도 물건이 집혀야 합니다. 사용자의 의도를 실제로 반영할 수 있도록 열심히 노력했습니다.”

핸드 트래킹의 한계 테스트

아이헤는 제스처와 상호 작용 부문에서는 최대한 많이 시도하고 테스트할 것을 권장합니다. “먼저 운영체제에서 제공하는 제스처뿐만 아니라 전체 손 모델을 사용했습니다. 핀치는 패널에서 2D 버튼을 선택할 때 유용했지만 큐브를 잡는 즐거움을 느끼기에는 좀 부족하죠. 간단한 예를 들자면 손을 벌리거나 오므려 무언가를 집어 올리는 동작도 3D 오브젝트에서는 핀치보다 훨씬 낫게 느껴졌습니다.”

핸드 트래킹에 정통한 Owlchemy Labs 팀은 추적 상실을 고려하고 더 원활한 경험을 제공하기 위해 다양한 방법을 실험했습니다. 아이헤는 “핸드 트래킹이 잘 되지 않을 때 손을 비활성화했다가 활성화하면 물리적인 혼란이 발생할 수 있습니다. 사용자에게 매끄럽게 보이면서도 손으로 오브젝트를 잡은 이전의 상태를 유지하게끔 만드는 수학적 연산을 넣었습니다”라고 합니다.

편의성을 더하기 위해 두 개 이상의 손가락을 사용하여 손을 벌린 상태와 오므린 상태를 결정하도록 했습니다. Job Simulator에서 마우스를 잡을 때 검지 대신 중지와 약지를 사용하도록 프로그래밍하여 플레이어의 경험에 사실감과 편안함을 더하는 작은 디테일을 구현했습니다. 또한 더 나은 느낌의 잡기 동작 상호 작용을 결정하기 위해 손 전체에 걸쳐 근사치를 적용했습니다.

Vacation Simulator의 게임플레이 요소
Owlchemy Labs의 Vacation Simulator

4. 성능과 시각적 정확도의 균형 맞추기

Apple Vision Pro로 포팅할 때는 화면의 디테일을 유지하면서 성능을 최적화하는 것이 최우선 과제입니다. 혼합 현실 모드에서는 RealityKit이 렌더링을 처리하므로, 셰이더를 Shader Graph에서 생성해야 RealityKit이 렌더링할 수 있는 MaterialX로 변환할 수 있습니다. 또 고려할 부분은 조명인데, 동적이고 반응성이 뛰어난 조명과 성능 최적화 간의 균형을 맞추는 방법이 여기에 포함됩니다. Unity를 이용하는 스튜디오 전문가들이 패치를 통한 셰이더 자동 업데이트 푸시, Unity PolySpatial Lighting Node를 메인 출력 노드로 사용하는 등의 주제를 다루며 이러한 균형을 맞춘 방법을 자세히 설명합니다.

LEGO Builder’s Journey의 게임플레이 요소
Light Brick Studio의 LEGO Builder’s Journey

RealityKit용 셰이더 변환 자동화

LEGO Builder’s Journey 초기 버전에서 Light Brick Studio 팀은 Unity의 LWRP(경량 렌더 파이프라인) 커스텀 버전을 사용하다가 Xbox 및 PlayStation 포팅을 위해 HDRP(고해상도 렌더 파이프라인)로 전환했습니다.

Apple Vision Pro의 경우 혼합 현실 모드에서 Apple의 RealityKit을 활용하려면 URP(유니버설 렌더 파이프라인)와 Shader Graph로 렌더링할 모든 것을 변환해야 했습니다. Shader Graph 셰이더는 MaterialX 셰이더로 변환된 다음 RealityKit에서 렌더링됩니다. Light Brick Studio 팀에는 몇 가지 커스텀 셰이더만 있었습니다. 게임 속 모델은 레고 브릭으로 제작되어 셰이딩이 상당히 일관적이었기 때문에 셰이더 코드를 재사용하고 배리에이션을 만들 수 있었습니다. 재작업을 최소화하기 위해 대부분의 기능을 한 번만 수정할 수 있는 서브그래프에 패킹하고 셰이더를 자동으로 업데이트했습니다.

개발을 진행하고 Shader Graph에서 Custom Function 노드를 사용할 수 있게 되면서 셰이더를 더욱 단순화하고 손쉽게 관리할 수 있었습니다. 스튜디오의 테크니컬 리드인 프레드보그는 “Unity visionOS 패키지에서는 커스텀 코드 기능의 일부만 지원했지만, 수학적 계산이 많은 셰이더를 제작할 때 매우 유용했습니다”라고 설명합니다. “시각적 노드에서도 동일한 코드를 생성할 수 있었지만, 코드로 작성한 다음 MaterialX로 변환하는 것이 훨씬 더 빨랐습니다.”

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

그러나 이후 팀에서는 결과물이 올바르게 최적화되지 않았고 셰이더에 예상보다 많은 작업이 필요하다는 사실을 깨닫는 등 여러 난관에 부딪혔습니다.

따라서 생성된 MaterialX 셰이더에 약간의 패치를 적용하여 중복 계산을 제거하고, 셰이더에서 특정 항목을 검색하는 스크립트를 만들고, 최적이 아닌 코드를 제거하기 위해 MaterialX 노드를 다시 구성해야 했습니다. 프레드보그는 “많은 자체 계산을 위해 픽셀의 월드 포지션과 월드 노멀이 필요했는데, PolySpatial Lighting 노드에서는 이를 다시 계산했습니다”라고 합니다. “저희 스크립트는 해당 노드를 찾아서 다시 연결하여 해당 값이 한 번만 계산되도록 했습니다. 다른 몇 가지 계산에도 그렇게 했더니 렌더링 속도가 아주 빨라졌어요.”

LEGO Builder’s Journey의 게임플레이 요소
Light Brick Studio의 LEGO Builder’s Journey

최적의 조명 노드 찾기

Kluge Interactive 팀은 셰이더와 조명을 제작하기 위해 Unity PolySpatial 툴과 기술 자료를 활용했습니다. 이 팀에서는 visionOS용으로 특별히 제작되어 시뮬레이터에 조명이 없을 때 유용한 새로운 노드와 플랫폼에서 지원되는 노드 목록을 찾았습니다. 이는 탄젠트 공간 변환, 반사 프로브 및 뷰 방향 관리, 노멀 매핑을 처리할 때 유용했습니다.

팀은 PolySpatial Lighting 노드를 메인 출력 노드로 사용하고 모든 항목을 올바르게 연결했습니다. 기본 색상, 노멀, 메탈릭(metallic) 및 평활도는 그대로 유지되었습니다.

3D 아티스트인 에스테반 메네시스는 “이 노드가 투패스(two-pass) 셰이더 역할을 했는데, RealityKit 측에서는 카메라가 받은 피드백을 기반으로 헤드셋에 환경의 반사와 일부 조명을 추가했기 때문입니다”라고 설명합니다. “PolySpatial 조명은 엔진 내부에 있는 모든 것을 관리했고, 베이크된 조명을 위한 옵션도 있었습니다. 라이트맵과 라이트 프로브를 사용하는 것에 대해 논의해 보았는데, 두 가지 모두 매우 유용했어요.”

반사 프로브에서 팀은 Simple 옵션과 Blend 옵션을 사용했습니다.

그런 다음 PolySpatial Lighting 노드에서 출력되는 모든 항목을 기본 색상과 이미션에 연결하여 안전성을 확보했습니다. 메네시스는 “기본 색상을 사용하는 패스가 있었고, 검은색은 쓰고 싶지 않았어요”라고 설명합니다. “값을 높이고 예술적 자유도를 확보하기 위해 강도 조정값을 추가했습니다. Apple Vision Pro 반사 변수를 사용하고 최종 노드에서 앰비언트 오클루전을 꺼서 환경의 반사를 보지 않게 했어요.” 반사에 대한 제어를 통해 팀은 사용자와 함께 방에 있는 것처럼 보이는 오브젝트와 포털을 통해 보이는 오브젝트를 깔끔하게 구분하여 게임을 구성할 수 있었습니다.

LEGO Builder’s Journey에서 Light Brick Studio 팀은 게임의 비주얼을 개선하기 위해 실시간 점 광원과 스폿 광원을 활용했습니다. PolySpatial Lighting 노드를 사용하여 생성된 셰이더에 Unity 광원을 추가하고 visionOS에서 제공하는 일반 이미지 기반 조명을 위한 커스텀 그림자 솔루션을 만들었습니다. 이 프로젝트의 테크니컬 리드인 프레드보그는 “매우 낮은 해상도의 섀도우 맵을 사용해 씬을 위에서부터 바로 렌더링했습니다. 그런 다음 밉맵을 생성하여 단일 텍스처의 RGBA 채널에 병합했습니다. 덕분에 하나의 텍스처 샘플로 소프트 섀도우를 얻을 수 있었어요”라고 설명합니다.

LEGO Builder’s Journey의 게임플레이 요소
Light Brick Studio의 LEGO Builder’s Journey

5. 반복 작업 및 테스트에서 우선순위 지정

어떤 하드웨어를 대상으로 개발하든 반복 작업(iteration)과 테스트는 중요합니다. 특히 기능이 계속 발전하고 있고 아직 완전히 숙지하지 못한 새로운 플랫폼으로 마이그레이션하는 경우는 더욱 그렇습니다. Unity를 이용하는 스튜디오 전문가들은 베스트 프랙티스를 제공하면서 반복 작업의 속도를 높이고, 가능한 한 빨리 안정적인 게임을 만들고, 특정 프로젝트에 가장 적합한 툴과 기능을 찾는 것이 중요하다고 강조했습니다.

반복 작업 속도를 최대한 빠르게

Owlchemy Labs은 미래가 아닌 현재를 위해 반복 작업을 가속화하고자 했습니다. 이들의 목표는 기능과 게임플레이를 가능한 한 빨리 프로토타이핑하는 것이었습니다. 게임 개발에서 비즈니스와 기술적 측면의 균형을 맞춰야 하는 입장에서, 아이헤는 “모든 에지 케이스를 잡아내는 것보다 디자인 검증이 우선이었습니다. 디자인을 확실하게 갖출 수 있다면 약간의 기술적 손해를 부담하는 것도 괜찮죠”라고 설명합니다.

Kluge Interactive는 Synth Riders를 Apple Vision Pro용으로 재구성하면서 Play to Device가 반복 작업 속도를 높이는 데 매우 유용한 툴이라는 사실을 알게 되었습니다. 이 기능을 사용하면 빌드를 생성할 필요 없이 Unity 에디터를 통해 곧바로 Apple Vision Pro 디바이스 또는 visionOS 시뮬레이터에서 콘텐츠를 미리 볼 수 있습니다. 개발자 모스케라는 “Unity 에디터에서 변경한 모든 내용은 시뮬레이터에서 실시간으로 업데이트되었습니다. 반복 수정이 굉장히 빨라지고, 시간을 크게 단축할 수 있었어요”라고 말합니다.

Kluge Interactive 팀이 visionOS 시뮬레이터와 Play to Device로 실시간 피드백을 주고받는 에디터의 모습
Kluge Interactive 팀이 visionOS 시뮬레이터와 Play to Device로 실시간 피드백을 주고받는 에디터의 모습

충분히 많은 사람이 게임을 테스트하도록 요청

Owlchemy Labs는 공간 컴퓨팅에서 지속적인 테스트와 수정의 중요성을 강조합니다. 이 팀은 가능한 한 빨리 에디터를 벗어나 게임을 출시하는 것을 우선순위로 지정했으며, 빌드를 자주 만들고 CI(지속적 통합) 시스템을 사용했습니다.

아이헤 CEO는 테스트 빈도에 대해 “최근 커밋이 없는 한 모든 지원 플랫폼별로 15분마다 빌드를 제작합니다. 일관된 스모크 테스트를 설정하고 일주일에 두 번 플레이 테스트 빌드에서 실행하죠”라고 설명합니다.

엔진을 한 번도 열어 보지 않은 직원을 포함해 Owlchemy Labs의 모든 직원은 VR 헤드셋을 사용하고 있습니다. 플레이어에게 미치는 영향을 팀에서 이해한 상태로 작업하는 것이 중요하다고 생각하기 때문에 게임을 약간 빈번하게 테스트하려고 합니다.

초보적인 상태에서도 게임을 플레이할 수 있게 되자, 팀은 사용자 테스트를 시작했습니다. 공간 컴퓨팅은 플레이어가 전신을 사용하도록 요구하므로, Owlchemy Labs 팀은 게임의 상호 작용과 UX가 다양한 형태와 크기의 플레이어를 수용할 수 있도록 하기 위해 광범위한 테스트를 진행했습니다.

Job Simulator의 게임플레이 요소
Owlchemy Labs의 Job Simulator

안정성과 SSOT에 집중

Owlchemy Labs의 전략은 먼저 게임을 안정적으로 만든 다음 반복 작업에 박차를 가하는 것이었습니다. 게임이 스모크 테스트를 통과하면 플레이 테스터에게 게임을 보냈습니다. 아이헤는 “테스터가 오래된 게임을 플레이하는 것보다 차라리 버그로 인해 테스트가 막히는 편이 낫습니다”라고 합니다.

Owlchemy Labs는 동시에 일반적인 기능 버그 수정 외에도 전반적인 버그 수정을 담당하는 스트라이크 팀을 운영했습니다. 이는 버그를 제거하고 안정성을 높이는 데 도움이 되었지만, 그렇다고 해서 기능 개발이나 상호 작용을 차단하지는 않았습니다.

팀은 또한 개발을 용이하게 하기 위해 기술에 대한 접근성을 높였습니다. 이 게임은 Apple Vision Pro 애플리케이션을 빌드하는 모든 Mac 디바이스에서 작동하며, 팀은 빌드에 대한 SSOT(Single Source of Truth)를 확보하기 위해 CI 시스템에 Mac Studio를 연결했습니다. 개발자는 이를 통해 빌드를 신속하게 배포할 수 있었습니다.

아이헤는 “무엇보다도 저희는 Unity Version Control을 정말 신뢰하고 있습니다. 메인 브랜치에 부정적인 영향을 주지 않으면서 기능 개발이 계속 진행될 수 있도록 적극적으로 브랜치를 활용하죠”라고 말합니다.

Job Simulator의 게임플레이 요소
Owlchemy Labs의 Job Simulator
“새로운 플랫폼에서 작업할 때는 플랫폼 및 엔진과 소통하는 것이 중요합니다. 어떤 플랫폼의 초창기에 릴리스되는 콘텐츠는 모두 팀워크의 결과입니다.”
ANDREW EICHE / OWLCHEMY LABSCEOwl

6. 새로운 렌더링 및 최적화 프로세스에 적응

RealityKit의 기능은 개발자가 매력적인 AR 경험을 제작할 수 있도록 지원하며 사실적인 렌더링, 애니메이션 등을 위한 기회를 제공하는 동시에 새로운 워크플로와 프로세스를 제시해 줍니다. Unity를 이용하는 스튜디오 전문가들은 게임을 Apple Vision Pro로 포팅할 때 플랫폼별 구성 요소 및 최적화와 관련된 문제에 직면했고, 이로 인해 병목 현상을 찾는 데 새로운 어려움을 겪었습니다.

플랫폼별 요구 사항 관리

새로운 렌더링 파이프라인을 탐색한 Kluge Interactive 팀은 다른 방법을 모색했습니다. 다른 플랫폼의 경우 콘텐츠가 Unity에서 바로 렌더링되었지만, visionOS의 경우 RealityKit에서의 두 번째 단계가 있었습니다. 따라서 RealityKit에 존재하지 않는 노드는 다른 방법 없이 렌더링할 수 없습니다.

팀이 극복한 주요 과제 중 하나는 3D 공간에서 두 개 이상의 점을 배열하고 그 사이에 직선을 그리는 컴포넌트인 Line Renderer가 없다는 것이었습니다. 이 컴포넌트는 다른 버전의 Synth Riders에 대한 레일 시스템을 개발하는 팀에게 매우 중요했습니다.

Synth Riders의 게임플레이 요소
Kluge Interactive의 Synth Riders

프로젝트의 테크니컬 프로듀서인 바르톨로메우스는 “이 문제에 부딪혔을 때 유니티 PolySpatial 팀과 함께 브레인스토밍 시간을 가졌는데 정말 환상적이었습니다”라고 말합니다. 이어서 “플랫폼에서 아직 지원되지 않는 레일 기능의 경우, 유니티 측에서 우리 테크니컬 아티스트가 표준 메시와 버텍스 변위로 다시 만들 것을 제안해 주셨죠. 그렇게 하니 정말 잘 작동했어요”라고 덧붙였습니다.

팀에서 성능 최적화와 관련하여 얻은 큰 교훈 중 하나는 다른 플랫폼을 타게팅한 경험을 바탕으로 가정하지 말아야 한다는 것이었습니다. 팀은 게임을 빌드하며 성능 개선 속도를 높이기 위한 최적화 경로를 하나씩 테스트하는 과정에서, 다른 플랫폼에서는 URP에서 머티리얼 인스턴싱의 영향을 줄인 솔루션이 Apple Vision Pro에는 적용되지 않는다는 점을 발견했습니다.

Kluge Interactive 팀이 파티클 성능을 프로파일링하는 에디터의 모습
Kluge Interactive 팀이 파티클 성능을 프로파일링하는 에디터의 모습

시니어 개발자인 저스틴 도피리악은 “이 문제를 발견한 후 코드 몇 줄을 변경해 봤는데, 쉽게 수정할 수 있었을 뿐만 아니라 극적인 효과를 얻었습니다”라고 합니다. “Play to Device 기능은 문제를 더 빠르게 찾는 데 도움이 되었죠.

또한 Unity 프로파일러, Xcode Debugger, Play to Device 기능을 사용하여 성능을 디버깅했습니다. 개발자인 모스케라는 “처음에는 테스트하고 문제를 찾는 것이 어려웠습니다”라고 설명합니다. 이 기능이 없었다면 프로젝트를 완료하는 데 더 오랜 시간이 걸렸을 것입니다.”

렌더링 관련 부분 식별 및 데이터 전송 제한

Light Brick Studio는 비주얼을 새로운 차원으로 끌어올리면서 플랫폼을 원활하게 운영하는 데 몇 가지 어려움을 겪었습니다. 게임 로직은 Unity가, 렌더링은 RealityKit이 처리했기 때문에 병목 현상이 어느 쪽에서 발생하는지 파악하는 것이 주요 과제였습니다. 콘텐츠가 90fps로 원활하게 실행되도록 최적화해야 했기 때문에 핵심 문제를 파악해야 했습니다.

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

LEGO Builder’s Journey의 게임플레이 요소
Light Brick Studio의 LEGO Builder’s Journey
“PolySpatial 팀은 Slack과 토론 포럼에서 정말 빠르게 대응해 주었습니다. 막힐 때마다 신속하게 해결책을 제시해 주어서 정말 큰 도움이 되었습니다.”
MIKKEL FREDBORG / LIGHT BRICK STUDIOTechnical Lead

팀에서는 게임 오브젝트 계층 구조도 최적화해야 했습니다. 다른 플랫폼에서는 레고 브릭이 서로 연결된 3개 이상의 게임 오브젝트지만, visionOS에서는 브릭당 최대 2개의 게임 오브젝트를 설정하여 Unity와 RealityKit 간에 주고받는 데이터의 양을 제한합니다.

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

LEGO Builder’s Journey의 게임플레이 요소
Light Brick Studio의 LEGO Builder’s Journey

드로우 콜 감소

스튜디오 전문가들은 원활한 최적화 프로세스의 핵심이 사전 경험과 준비에 있다는 점에 동의했습니다. LEGO Builder’s Journey 팀은 게임을 여러 플랫폼으로 포팅하고 각 플랫폼에 맞게 게임을 최적화했기 때문에 이미 드로우 콜을 줄이는 등의 조치를 취했습니다. 팀은 씬 내의 정적 지오메트리를 병합하고 숨겨진 표면을 자동으로 제거하는 등의 방식을 택했습니다.

프레드보그는 “게임 오브젝트 계층 구조를 단순화하고, 추적되는 콜라이더를 제한하고, 사용하지 않는 머티리얼을 없앤 것이 가장 큰 성능 향상으로 이어졌습니다”라고 말합니다.

Owlchemy Labs는 Apple Vision Pro로 전환하기 전에 이미 모바일급 하드웨어에 맞게 게임을 최적화했기 때문에, Apple Vision Pro로 포팅한 후 성능이 크게 향상되어 추가 최적화가 많이 필요하지 않았습니다. Job SimulatorVacation Simulator를 Quest 1 하드웨어에 최적화하기 위해 가능한 한 정적 및 동적 배칭을 활용하고 애니메이션을 셰이더로 대체했습니다. 일반적인 리지드바디 슬립 최적화 대신 가능한 한 기본 콜라이더가 있는 정적 지오메트리로 교체하고, 충돌이 감지되면 다시 교체했습니다.

팀은 추가 최적화를 위해 게임 전반에서 텔레포트를 수행하고 하드웨어에서 스냅샷을 찍는 테스트 릭(rig)을 구축했습니다. 이들은 데이터를 분석하여 핫스팟을 찾아내고 해당 핫스팟이 CPU 바운드인지, 아니면 GPU 바운드인지 확인했습니다. 아이헤는 “문제를 하나하나 해결해 나가는 과정이 힘들었지만 그만한 가치가 있었습니다. 우리 게임은 PC에서 PSVR, Meta Quest 1에 이르기까지 플랫폼에 관계없이 거의 동일한 경험을 제공하죠”라고 밝혔습니다.

최적화를 미리 처리해 둔 덕에 팀은 빠르게 발전할 수 있었고, 여유 시간이 생기면서 고성능 하드웨어에서만 사용할 수 있는 기능(실시간 그림자 등)을 활용했습니다.

Vacation Simulator의 게임플레이 요소
Owlchemy Labs의 Vacation Simulator

맺는말

이 전자책에서는 Apple Vision Pro로 원활하고 신속하게 포팅하기 위한 6가지 베스트 프랙티스를 설명합니다. 스튜디오 전문가들에게 visionOS용 개발 시 가장 중요한 팁을 물어본 결과, 다음과 같은 답변을 받았습니다.

“XR에서 사용해 보기 전까지는 아무것도 알 수 없어요. 그리고 또 다른 핵심 원칙은 가능한 한 물리적 경험을 개발하는 것입니다. 공간 디자인의 즐거움은 공간에 있는 오브젝트와 상호 작용하는 데에서 오거든요.”
ANDREW EICHE / OWLCHEMY LABSCEOwl
“앞으로 나아가야 할 기술 아키텍처가 무엇인지 고려하고 빠르게 시작하세요. 목적은 다르더라도 최신 기술에 더 가까이 다가갈수록 모든 기회를 활용할 수 있는 유리한 위치에 서게 되므로 먼저 시작하는 게 중요합니다.”
ANNMARIE WIRREL BARTHOLOMAEUS / KLUGE INTERACTIVETechnical Producer
“마우스와 키보드로 에디터에서 게임의 일부를 플레이할 수 있는 시스템과 툴에 시간을 투자하세요. 이 방법으로 전체적인 그림을 파악할 수는 없지만 일부 항목은 훨씬 빠르게 테스트할 수 있습니다.”
LUKAS WENDT / TRIBANDTechnical Lead
“헤드셋을 착용해야만 이해할 수 있는 부분이 있습니다. 터치와 움직임에 집중할 수 있도록 여러 번 빌드하고 디바이스를 최대한 많이 사용해 보세요. 훨씬 더 물리적인 플랫폼이니까요.”
MIKKEL FREDBORG / LIGHT BRICK STUDIOTechnical Lead

공간 컴퓨팅 여정을 막 시작했든, 이미 한창 진행 중이거나 더 많은 것을 배우기 위해 발을 담그고 있든, 이러한 전문가들의 조언과 팁, 베스트 프랙티스 및 실제 경험담을 통해 더 깊이 파고들 수 있는 아이디어를 얻으셨기를 바랍니다. Apple Vision Pro의 출시로 개발자는 게임, 앱, 경험을 새로운 차원으로 끌어올릴 수 있는 기회를 얻게 되었습니다.

Apple Vision Pro 콘텐츠 제작을 시작하세요

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

전자책 살펴보기

이 양식을 작성하고 최신 전자책을 살펴보세요.