스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
공간 컴퓨팅을 위한 멋진 게임 만들기
visionOS를 위한 멋진 게임 경험을 개발하는 방법을 알아보세요. visionOS용 게임을 만들기 위한 핵심 요소를 공유하고, 여러 단계의 몰입 경험을 제공하는 방법을 탐구하고, ARKit, RealityKit, Reality Composer Pro, Unity, Metal, Compositor를 탐구하는 로드맵을 제공합니다.
챕터
- 0:00 - Intro
- 0:41 - Types of spatial games
- 3:51 - Rendering, audio, and input
- 12:10 - Development frameworks
- 13:49 - Build with RealityKit
- 18:05 - Wrap-Up
리소스
관련 비디오
WWDC23
-
다운로드
♪ 부드러운 힙합 연주곡 ♪ ♪ 안녕하세요 Tricia Gray입니다 RealityKit Tools 팀에서 일하고 있죠 '공간 컴퓨팅을 위한 멋진 게임 만들기'입니다 새로운 기기를 위한 게임 개발에 관해 소개해 드릴 수 있어 기쁩니다 공간 컴퓨팅을 통해 새로운 종류의 게임을 만들 수 있죠 렌더링, 음향, 입력 방식이 독특합니다 게임을 만들기 위해 사용할 수 있는 프레임워크와 도구가 여러 개 있는데 RealityKit이 그중 하나죠 먼저, 어떤 종류의 게임을 새로운 플랫폼에서 만들 수 있는지 알려드릴게요 이 기기는 독립적인 공간 컴퓨팅 기기입니다 고해상도의 화면을 제공하며 시야각이 넓고 주사율이 훌륭하죠 공간 음향이 놀랍습니다 손의 움직임과 플레이어 주변의 공간 형태를 추적하는 LiDAR 센서도 있죠 플레이어가 기기에서 제공하는 고화질의 패스스루를 이용해 주변 환경과의 연결성을 유지할 수 있습니다 이는 수많은 가능성을 열어 다양한 종류의 게임을 만들 수 있게 해 주죠 몰입 스펙트럼을 넘나드는 게임을 만들 수 있어 플레이어의 집중도를 얼마나 원하는지만 결정하면 됩니다 모든 앱과 게임은 공유 공간에서 시작합니다 그 의미는 여러분의 게임이 다른 게임이나 앱 그리고 플레이어의 주변 환경과 같은 공간에 있다는 거죠 어쩌면 플레이어의 실제 책상에 가상의 체스 보드가 있어 체스를 둘 수도 있고 가상의 반려동물이 바닥에 앉아 있을 수도 있죠 모든 앱이 함께 공존하며 플레이어는 원하는 것과 상호작용할 수 있습니다 전체 공간으로 넘어가면 여러분의 게임에만 집중하죠 다른 윈도우와 볼륨을 닫고 여러분의 콘텐츠에 집중하도록 하지만 패스스루를 통해 주변 환경과의 연결성은 유지할 수 있습니다 이런 사례는 액션 게임에 유용할 수도 있죠 실제 세상과 상호 작용하면서 플레이할 수 있는 게임입니다 우주선이 벽에 뚫린 구멍을 통해 날아올 수도 있죠 완벽한 몰입형 경험은 게임이 전체 시야를 장악합니다 여러분의 방을 대체한 환경이 나타나고 더는 실제 세계를 볼 수 없죠 물론 전통적인 2D 게임을 만들 수도 있습니다 가상의 윈도우에서 실행되며 플레이어가 해당 윈도우의 크기를 마음대로 조정할 수 있죠 수직의 윈도우일 필요는 없습니다 바닥에 놓인 납작한 표면일 수도 있죠 벽에 걸거나 책상 위에 올릴 수 있고 얼굴 바로 앞에 제일 큰 화면으로 만들 수도 있습니다 플레이어는 iOS와 동일하게 여러분의 게임을 즐길 수 있지만 화면을 터치하는 대신 사물을 보고 손가락을 탭하여 선택할 수 있죠 또한 iOS처럼 Bluetooth 컨트롤러나 키보드를 연결할 수 있습니다 여기서 패스스루가 유용한데 아래를 내려다보면서 사용 중인 컨트롤러를 볼 수 있죠 3D 요소를 추가하여 2D 게임의 재미를 높일 수도 있습니다 예를 들어 여러분의 윈도우는 깊이감이 있어서 게임의 오브젝트를 레이어로 구분하여 렌더링하면 시차 효과를 줄 수 있죠 연기나 불꽃 같은 요소가 평면에서 튀어나오게 하거나 커스텀 손동작을 추가할 수도 있습니다 이러한 선택지가 있어서 생각할 요소가 많죠 게임을 설계할 때 게임 경험을 위한 새로운 기능을 어떻게 활용할지 생각해 보세요 거대한 고화질 화면부터 방에서 놀 수 있는 개인적인 요소도 만들 수 있죠 여러분의 게임이 플레이어의 책상에 나타나거나 벽에 배치할 수도 있고 뭔가 날아와서 플레이어 손에 앉을 수도 있습니다 플레이어 주변의 실제 공간을 활용하거나 플레이어를 전혀 새로운 장소로 이동시킬 수도 있죠 렌더링, 음향, 입력 방식이 이 기기에서는 다른 플랫폼과 다른 방식으로 사용됩니다 공유 공간을 실행할 때는 여러분 게임의 콘텐츠와 다른 앱의 콘텐츠, 시스템 UI 패스스루가 함께 나타나죠 렌더링을 공유하기 때문에 프레임워크가 모든 앱이 올바르게 작동하도록 하며 렌더링이 다른 앱을 방해하지 않도록 합니다 이 모드에서는 MaterialX를 통해 표면 셰이더나 기하학 셰이더를 이용할 수 있죠 xrOS의 렌더링은 여러분에게 익숙한 방식과 조금 다르게 작동합니다 모든 픽셀을 렌더링하는 대신 여러분이 렌더링 대상인 모델, 텍스처, 셰이더를 묘사하면 기기가 각 눈에 자동으로 렌더링하죠 플랫폼 렌더링이 여러분 게임에 주는 이점은 동적 포비에이션을 적용하여 해상도를 높인다는 겁니다 동적 포비에이션은 렌더러가 플레이어의 눈이 향한 곳에 고화질을 적용하는 기술입니다 이를 통해 해당 지점에 선명한 해상도를 제공하면서도 전체 장면을 렌더링할 필요가 없으며 관련 작업을 하지 않아도 됩니다 RealityKit이 기본값으로 여러분의 오브젝트를 렌더링하여 플레이어 주변 환경의 실제 물체와 진짜처럼 어우러질 수 있죠 RealityKit은 플레이어의 방에 있는 실제 조명을 샘플링하여 해당 조명을 렌더링한 오브젝트에 적용합니다 소재의 경우 RealityKit은 거칠기, 빛 반사, 금속성 등 전형적인 매개변수를 사용하는 물리 기반 조명 모형을 사용하죠 이것과 샘플링한 조명으로 진짜 같은 모습을 제공합니다 하지만 현실감과 환상의 정도를 여러분이 직접 선택할 수 있죠 내장 PBR 셰이더를 사용하는 대신 MaterialX를 이용하여 커스텀 셰이더를 생성하고 Reality Composer Pro나 다른 그래픽 패키지에서 셰이더 그래프를 편집할 수 있습니다 또한 custom IBL을 오브젝트에 지정하여 커스텀 조명 효과를 연출할 수도 있죠 또 하나 고려해야 할 것은 렌더링한 콘텐츠에 적용되는 시스템 전반의 효과입니다 여러분의 게임을 다른 앱과 잘 작동하게 하고 플레이어를 보호하는 게 목적이죠 깊이감 완화는 플레이어 주변의 물체 뒤에 여러분의 콘텐츠가 가렸을 때 살짝 투명하게 합니다 이를 통해서 물체가 떠 있는 느낌을 없애죠 근거리장 비네팅은 플레이어가 콘텐츠에 너무 가까이 있을 때 흐리게 합니다 이를 통해 여러분의 콘텐츠가 가까운 평면에 잘리는 현상을 예방할 수 있죠 통과 기능은 여러분에게 접근하는 사람이 렌더링 된 화면을 통과할 수 있게 하여 여러분과 부딪히기 전에 알 수 있습니다 마지막으로 그림자 드리우기는 렌더링 된 오브젝트를 실제 물체 근처에 배치했을 때 추가되어 장면에 통합된 느낌을 주죠 완벽한 몰입형 렌더링은 공유 렌더링과 비슷하지만 이 경우에는 다른 앱이나 패스스루와 화면을 공유하는 게 아니라 여러분의 앱만 보입니다 이 모드에서는 환경을 렌더링하여 플레이어 주변의 실제 세상을 대체하죠 이 모드로 렌더링하는 건 공유 모드의 렌더링과 비슷하게 작동합니다 계속 장면을 묘사하면 기기가 렌더링하죠 하지만 플레이어가 보는 모든 걸 제어하므로 자유도가 더 많아집니다 예를 들어 플레이어의 공간과 같은 조명 환경을 사용하지 않아도 되죠 여러분이 밝기를 조정할 수 있습니다 기기의 강점은 공유 모드에서 드러나지만 완벽한 몰입형 경험을 통해 플레이어를 다른 공간으로 이동시킬 수 있죠 여러분의 엔진을 직접 작성하고 싶다면 CompositorServices API가 xrOS의 Metal 렌더링에 접근하게 해 줍니다 주변 환경과 손을 추적하는 기능이 추가된 ARKit와 통합하여 완벽한 몰입 경험을 만들 수 있죠 이 모드에서는 전체 화면에 접근하여 각 눈에 대한 장면을 렌더링할 수 있습니다 커스텀 Metal 셰이더와 포스트 프로세서도 사용할 수 있죠 이를 통해 실세계 콘텐츠를 여러분의 가상 콘텐츠로 완벽히 대체할 수 있습니다 패스스루와 다른 앱은 감춰져 있죠 더 많은 정보를 원하시면 '몰입형 앱을 위한 Metal 알아보기' 세션을 확인하세요 음향도 몰입형으로 만들 수 있습니다 xrOS는 공간 음향을 이용하여 플레이어 공간에 있는 오브젝트에 생동감을 주고 실제 공간의 음향과 에코에 자동으로 맞춥니다 AVAudioEngine과 같은 표준 iOS 음향 API로 음향을 재생하면 앱 윈도우에 맞게 음향이 배치되죠 플레이어 공간에 있는 다른 오브젝트에서 음향이 나오길 원한다면 RealityKit로 장면의 특정 개체를 통해 음향을 재생하세요 Apple 또는 외부 API를 사용하여 직접 음향을 작업하는 방법도 있습니다 음향이 머리를 추적하길 원하면 ARKit를 이용하여 플레이어의 머리 위치를 받아야 하죠 그래픽과 음향에 더하여 상호 작용은 몰입형 경험의 또 다른 핵심 요소입니다 모든 게임은 입력 방식이 필요한데 이 플랫폼은 다양한 방식으로 기기와 상호 작용할 수 있죠 여러분 장면의 오브젝트에 입력 이벤트를 넣으려면 SwiftUI를 사용하거나 시스템 제스처인 드래그와 확대를 사용하세요 이것은 물리적 충돌을 바탕으로 합니다 여러분의 오브젝트에 제스처를 사용하려면 CollisionComponent를 통해 충돌 형태를 제공하고 InputTargetComponent를 통해 상호 작용 가능으로 지정되죠 공간 입력은 마법 같은 느낌을 선사하지만 게임 입력 방식에는 다른 선택지가 있습니다 게임 컨트롤러도 있죠 시스템에서 제공하는 보고 탭하기도 자연스럽지만 한 쌍의 눈으로만 사물을 볼 수 있고 두 개의 손으로만 탭, 핀치, 이동할 수 있죠 일부 게임은 더 많은 입력 방식이 필요하죠 표준 Bluetooth 컨트롤러를 사용하는 것도 하나의 방법입니다 xrOS는 트랙패드, 마우스 키보드를 지원하며 Bluetooth 기반의 게임 컨트롤러도 지원하죠 이는 기존 게임을 위한 좋은 선택지입니다 xrOS는 독특한 입력 방식도 지원하죠 몸을 컨트롤러로 사용하는 겁니다 손 추적을 사용하여 플레이어가 가상 물체를 집게 하고 커스텀 제스처를 적용하여 물체를 가리키거나 부술 수 있죠 ARKit를 통해 손 추적 기능에 접근할 수 있으며 기기에서 플레이어에게 권한을 요청합니다 앱이 위치 추적이나 마이크 사용 권한을 요청하는 것과 같죠 이런 입력 방식을 설계할 때 고려할 사항들이 있습니다 손은 카메라로 볼 수 있을 때만 추적할 수 있죠 정말 빠른 손동작은 추적하기 어렵습니다 이 점을 고려하세요 전체 공간에서 작업 중일 때 장면 이해를 요청할 수 있습니다 장면 이해로 플레이어의 주변 공간에 대한 가상의 메시를 제공하죠 또한 면을 감지할 수 있어 수평과 수직의 표면을 찾습니다 표면의 소재도 알아낼 수 있어 카펫과 목재를 구분하죠 그럼 공간 자체를 게임의 입력 도구로 사용할 수 있습니다 손을 추적하는 것처럼 이것도 플레이어의 승인을 받아야 하죠 입력 방식의 종류가 많아 어떤 것이 게임에 맞을지 알아내야 합니다 플레이어의 몸을 입력 도구로 사용하면 몰입감을 높일 수 있죠 하지만 손을 들고 제스처를 취하는 건 시간이 지날수록 힘들어집니다 게임을 오랜 시간 플레이해야 하거나 빠른 동작을 많이 요구한다면 간접 제스처나 시선을 활용하는 방법을 생각해 보세요 그렇게 하면 플레이어가 손을 쉬고 무릎 위에 편안히 올린 채 손을 움직이는 대신 보고 탭할 수 있습니다 기기는 매일 사용하는 걸 고려하여 만들었으므로 편안함이 중요하죠 만약 잘 어울린다면 전통적인 게임 컨트롤러를 사용해도 됩니다 이 플랫폼은 다른 플랫폼에서 익숙한 기능인 멀티플레이어와 네트워크 기능을 지원하죠 웹 기반 네트워킹 저급 소켓 기반 네트워킹 Multipeer Connectivity도 전부 사용할 수 있습니다 SharePlay는 플레이어가 더 쉽게 친근한 방식으로 어울릴 수 있게 해 주죠 네트워킹으로 게임을 빌드하여 일부 플레이어는 이 기기에 연결된 상태로 iPhone과 iPad에서 게임을 할 수 있습니다 친구와 하는 도미노 게임을 상상해 보세요 친구는 iPad를 사용하여 2D 경험을 하지만 여러분은 풍부하고 몰입감이 높은 3D 경험을 하죠 새로운 플랫폼을 게임 기기로 조금 더 이해했으니까 게임을 만들 때 사용할 수 있는 프레임워크를 알려드리겠습니다 만들고 싶은 게임이 2D 게임인지 볼륨에서 실행하는 게임인지 완벽한 몰입형 게임인지에 따라 다른 선택지를 제공하죠 우리의 몰입형 프레임워크인 RealityKit를 이용하거나 Metal 위에 직접 기능을 작성하거나 Unity를 사용할 수 있습니다 이미 iPhone이나 iPad로 게임을 만들었다면 여러분의 게임이 자동으로 가상의 윈도우에서 실행되며 보고 탭하기로 상호 작용할 수 있을 겁니다 호환 가능한 3D 게임에도 적용되는 사항이죠 기기에 나오는 평평한 윈도우에서 실행됩니다 게임을 입체적으로 만들고 싶다면 공간 컴퓨팅 API를 사용해야 하죠 호환되는 게임을 실행하는 것도 좋지만 기기를 최대한 활용하고 싶으면 목표에 맞게 게임을 빌드하세요 제스처를 입력 방식으로 사용하거나 원근감이나 입체적인 연기 같은 2.5D 요소를 추가할 수 있죠 기기를 위한 2D 게임을 빌드하려면 2D 프레임워크인 SwiftUI나 SpriteKit를 사용하세요 Unity를 이용하여 xrOS 게임을 빌드할 수 있죠 이미 포팅하고 싶은 Unity 게임이 있거나 Unity 개발자라면 좋은 선택지입니다 Unity 사용이 궁금하면 다음 세션을 참고하세요 'Unity VR 앱을 완벽한 몰입형 공간으로 가져오기'와 '몰입형 Unity 앱 만들기'입니다 마지막으로 RealityKit이 있죠 Apple의 실시간 렌더링 프레임워크로 몰입형 공간 경험을 구축하는 데 사용합니다 이 API에는 새로운 기능이 많아서 xrOS를 위한 3D 게임을 만들기에 좋은 방식이죠 RealityKit은 훌륭한 게임 제작에 필요한 모든 기능을 지원합니다 커스텀 행동을 위한 엔티티 컴포넌트 시스템이 있고 물리, 애니메이션, 파티클과 음향 지원을 위한 확장성도 있죠 렌더링 쪽으로는 RealityKit이 USD 모델과 커스텀 메시를 모두 지원합니다 여러분의 오브젝트를 세상에 통합시켜 주는 MaterialX와 IBL lighting이 있죠 Attachments는 새로운 기능으로 SwiftUI의 풍부한 기능을 RealityKit 오브젝트에 바로 연결해 줍니다 SwiftUI를 이용하여 패스스루와 렌더링 콘텐츠를 윈도우, 볼륨, 공간, 앵커와 포털 기능을 이용하여 다양한 방식으로 혼합할 수 있죠 시스템 제스처를 입력 방식으로 사용하거나 ARKit를 사용하여 손 추적이나 장면 이해 기능에 접근할 수 있습니다 xrOS를 위한 게임 구축을 시작하기 위해 xrOS 템플릿에서 Xcode 프로젝트를 생성하세요 그럼 RealityView가 들어 있는 SwiftUI 윈도우가 나타나죠 SwiftUI의 계층 구조에서 RealityView는 여러분 게임의 3D 렌더링과 시뮬레이션을 가지고 있습니다 아직 SwiftUI에 익숙하지 않다면 배울 만한 가치가 있죠 기본값으로 3D 콘텐츠가 윈도우로 형성된 입체 상자에 나타납니다 여러분의 콘텐츠는 그 윈도우에 한정되어 있고 움직임을 따라가죠 RealityKit은 Swift API입니다 Swift는 게임 구축에 훌륭한 언어가 될 수 있지만 다른 언어를 사용하고 싶다면 그렇게 할 수 있죠 해당 언어와 Swift API 사이에 다리만 놓으면 됩니다 Xcode에는 시뮬레이터가 있죠 기기가 없어도 게임 개발을 바로 시작할 수 있습니다 물론 실제 기기로 테스트하는 게 제일 좋겠죠 여러분의 3D 콘텐츠는 기본적으로 SwiftUI 윈도우에 나타납니다 게임 개발자로서 제일 먼저 해야 할 일은 윈도우 밖으로 나가서 콘텐츠를 플레이어의 환경에 끌어놓는 거죠 그렇게 하는 방식은 여러 개가 있습니다 볼륨을 사용할 수 있죠 볼륨은 윈도우와 비슷하지만 중요한 차이점이 있습니다 윈도우는 플레이어가 크기를 조정할 수 있죠 모서리를 드래그하여 원하는 수준으로 크기를 조절하면 콘텐츠가 맞춰야 합니다 만약 윈도우가 콘텐츠에 비해 너무 작다면 콘텐츠가 잘릴 겁니다 볼륨은 그 반대죠 예를 들어 볼륨에서는 상자의 크기와 높이, 폭을 정의할 수 있습니다 플레이어는 그 상자를 어디에 놓을지 선택할 수 있지만 상자의 크기는 그대로 유지되죠 따라서 전체 경험에 맞춰 상자를 크게 정할 수 있고 콘텐츠가 잘리지 않습니다 상자를 사용하고 싶지 않으면 공간을 사용할 수 있죠 이를 통해 플레이어 주변의 실제 세상에 콘텐츠를 렌더링합니다 예를 들어 플레이어를 윙윙거리는 벌로 에워쌀 수 있죠 다양한 게임 종류에 맞는 다양한 공간이 있습니다 공유 공간을 사용하여 다른 앱과 함께 실행하거나 전체 공간을 사용하여 여러분의 게임만 실행시킬 수 있죠 앵커는 장면을 실제 물체에 고정시켜 해당 물체를 따라다니게 할 수 있습니다 수평 또는 수직 표면의 앵커를 사용하여 개체를 책상이나 벽에 고정할 수 있죠 손 앵커도 있어서 플레이어의 손에 콘텐츠를 고정할 수도 있습니다 포털은 플레이어의 현실에 구멍을 뚫어 여러분만의 환상적인 세상을 만들 수 있죠 포털을 진짜 벽에 고정하여 해당 포털이 벽에 구멍을 내게 하여 구멍 안쪽의 렌더링 된 세상을 엿볼 수도 있습니다 포털 안쪽은 원하는 대로 렌더링할 수 있고 포털 안에 있던 물체가 실제 세상으로 튀어나올 수도 있습니다 RealityKit USD 파일을 로딩하고 렌더링할 수 있죠 입체적인 콘텐츠를 시작하는 가장 쉬운 방법은 사전 제작 오브젝트로 장면을 조합하는 건데 그렇게 하려면 시각적 도구가 필요합니다 Reality Composer Pro는 Xcode와 번들되는 툴이죠 USD 모델을 로딩하고 기기에서 어떻게 보일지 미리 보여 줍니다 Reality Composer Pro로 프로젝트를 빌드하면 여러분의 애셋이 자동으로 기기 사용에 최적화되죠 Reality Composer Pro에 관한 추가 정보는 다음 세션을 참고하세요 이 세션을 통해 게임 개발 로드맵과 공간 컴퓨팅에 도움이 됐길 바라며 프레임워크 관련 세션들을 통해 자세한 사항을 알아보시기 바랍니다 서로 어울리고 다른 사람과 게임하기에 멋진 플랫폼이죠 여러분이 개발한 게임을 어서 보고 싶습니다 ♪
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.