大多数浏览器和
Developer App 均支持流媒体播放。
-
为空间计算制作精彩的游戏
学习如何针对 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 Grey 我在 RealityKit 工具团队工作 欢迎来到 “为空间计算制作精彩的游戏” 很高兴今天跟大家分享 用这个新设备来制作游戏的相关内容 空间计算让各种新类型游戏 应运而生 它有着独特的渲染、 音频和输入特点 当谈到可以使用哪些 框架和工具来制作游戏时 你有着众多选择 这其中就包括 RealityKit 但首先 我想跟你聊聊 这个平台可以制作哪些类型的游戏 这是一个独立的空间计算设备 它的屏幕分辨率高 视角广阔 刷新率高 空间音频简直不可思议! 激光雷达可以追踪手部动作 和玩家周围房间的形状 而且玩家可以用设备的高质量穿透 与周围保持联系 这妙趣横生的可能性 能让你创造出各种不同的游戏类型 你可以制作不同沉浸感的游戏 而沉浸的程度取决于你想抓住多少 玩家的注意力 所有 App 和游戏 都在共享空间中开始 也就是说你的游戏可以在空间中 和其他游戏、 App 及玩家环境共存 这可以是在玩家的现实桌面上 的一个虚拟棋盘 在上面呈现出 一场激烈的国际象棋比赛 也可以是地板上坐着的一只虚拟宠物 所有这些 App 都在一起 玩家可与他们选择的任何 App 进行互动 当你转移至全空间状态时 你可以把所有注意力都放在游戏上 全空间状态 会关闭所有窗口和空间容器 聚焦在你的内容体验上 但仍通过穿透保持玩家与周围的 关联性 这可能很适合动作游戏 这种游戏需要你积极参与 但仍要与现实世界互动 例如 你可以让宇宙飞船从墙上的洞里 飞出来 全沉浸式体验就是游戏 占据整个视图 你的房间变成了一个环境 且在这里你看不到现实世界 当然 你也可以 制作传统 2D 游戏 这种游戏在虚拟窗口中运行 玩家 可随意根据个人喜好调节窗口大小 该窗口甚至不需要是垂直窗口 它可以是地板上的平面 玩家可以将该窗口 挂在墙上或放在桌子上 或者把它变成玩家 有史以来最大的屏幕 正对着玩家 玩家可像在 iOS 中 一样与游戏互动 但与 iOS 的触屏不同 玩家将看向物体 用手指轻拍 来选择物体 你也可以连接蓝牙控制器 或键盘 就像在 iOS 上一样 在这里穿透有很大的 作用 因为你可以向下看 看到你正在用的控制器 你可以通过在游戏中 添加一些 3D 元素 来为 2D 游戏增添乐趣 例如 你的窗口有实际深度 那你可以在独立图层上渲染物体 达到真正的视差效果 你也可以选择平面以外的元素 如烟雾或火花 或者你可以添加 对自定义手势的支持 有了所有这些选择 你有很多需要考虑的问题 当你设计游戏时 需要考虑 如何将这些新机会 利用在游戏体验上 从巨大的高分辨率屏幕 到在自己的房间 玩一些个性化的东西 你的游戏可以出现在玩家的桌子上 玩家可以把它放在墙上 物品可以从墙上 飞出来落在玩家手里 你可以利用玩家周围的现实世界 或将玩家带入一个 完全与众不同的地方 该设备上的渲染、音频和输入 都与你以往熟悉的 平台上的运作方式不同 当你进入共享空间时 你的游戏内容会和 其他 App、系统 UI 和穿透的内容聚集在一起 由于渲染是共享的 框架可确保所有 App 行为良好 渲染不会与其他 App 相互影响 在该模式中 你可以 通过 MaterialX 来使用 表面着色器和几何着色器 xrOS 上的渲染和你以往用的相比 有些许不同 你不需要渲染每个像素 而是描述需要渲染什么 包括所有模型、纹理和着色器 然后设备会为每只眼睛自动渲染 平台渲染你的游戏的另一个好处是 可以应用动态注视点来提高分辨率 动态注视点这种技术 可以使渲染器在 玩家眼睛所看的部分 使用更高的分辨率 也就是说 你可以在 这些地方获得更清晰的分辨率 而无需支付渲染整个场景的负担 无需任何繁重处理即可获得 默认情况下 RealityKit 以这样的方式渲染你的物体 使其与周围的现实世界物体 真实地融合在一起 RealityKit 将对 玩家房间内的实际光照 进行采样 并将同样的光照 应用到你渲染的物体上 材料方面 RealityKit 使用 基于物理的光照模型 依据典型参数 如粗糙度、高光色和金属性 这种模式加上光照采样 为你带来逼真的视觉 但你可以在按照需要选择 现实和幻影之间的程度 可以不使用内置 PBR 着色器 而通过 MaterialX 创建自定义着色器内容 用 Reality Composer Pro 编辑 shader graph 或其他图形程序包 你还可以 为物体分配自定义的 IBL 来获得自定义光照效果 另一个需要考虑的是 有一些 系统范围的效果 会被应用于渲染内容 这是为了是让你的游戏更好地与 其他 App 协作 并保护玩家 当你的内容隐藏在 玩家周围的物体后面时 深度缓和会使其略微透明 这就摆脱了 物体漂浮在房间里的感觉 当玩家离你的内容太近时 近域渐晕会使你的内容褪色 这样可以防止你的内容 被附近平面裁剪的问题 穿透允许正在接近你的人 突破渲染的视图 所以 他们不会在 你没有注意到的情况下撞上你 最后 当渲染的物体被放置在 现实世界的物体附近时 地面阴影被添加到渲染的物体上 能让玩家感觉更融入场景中 完全沉浸式渲染的 工作原理与共享渲染类似 但在这种情况下 你的 App 不是与穿透和 其他 App 共享屏幕 唯一可见的是你的 App 在这种模式下 你可渲染环境 取代玩家周围的现实世界视图 这种模式下的渲染 和共享模式下的渲染 工作原理相似 你仍需描述场景 然后设备会进行渲染 但由于玩家看到的所有内容 都由你控制 你有更多自由 例如 你不必使用 与玩家所在房间相同的光照环境 你可根据需要选择亮暗程度 设备的优势在于共享模式 也提供完全沉浸式的体验 让你可以将玩家带到不同的地方 如果你想编写自己的引擎 CompositorServices API 可以让你访问 xrOS 上的 Metal 渲染 你可以将它与 ARKit 结合起来 ARKit 增加了世界追踪和 手部追踪功能 用来打造完全沉浸式体验 在这种模式下 你可以完全控制屏幕 为每只眼睛渲染场景 你可以使用完全自定义的 Metal 着色器和后处理器 这让你能用自己的虚拟内容完全取代 现实世界的内容 穿透和其他 App 都会被隐藏 如需了解更多 请观看 “探索沉浸式 App 中的 Metal” 音频也可以沉浸式 xrOS 在玩家空间内 使用空间音频 让物体 活灵活现 自动匹配混响 和现实房间声学 如果你使用标准的 iOS 音频 API 如 AVAudioEngine 来播放音频 音频将相对 App 窗口定位 如果你想让声音听起来 来自玩家空间场景中的 其他物体 你应 该通过 RealityKit 在你场景中的特定物体上播放音频 你还可以选择使用 Apple 或外部 API 制作你自己的音频 如果你想用头部追踪音频 你需要用 ARKit 取得玩家的头部位置 除了图形和音频 互动也是沉浸式体验的关键 毕竟 每个游戏都需要输入 这个平台可提供多种方式 与设备互动 你可以通过 SwiftUI 以及其他标准的系统手势 如拖动和放大 获得场景中物体的 输入事件 这是基于物理碰撞 为了让手势在你的物体上发挥作用 需要用 CollisionComponent 给物体 提供碰撞形状 和 InputTargetComponent 用来 把物体标记为可互动 空间输入会让玩家感到非常神奇 但你也可以选择其他的游戏输入方式 甚至是游戏控制器! 虽然系统的 “看”和“轻拍”手势很自然 但你只有一双眼睛可以看 只有两只手可以轻拍、捏或抓 有些游戏需要多点输入 使用标准蓝牙控制器就是一个选择 xrOS 支持触控板、鼠标和键盘 以及基于蓝牙的游戏控制器 对于传统游戏来说 这是个不错的选择 xrOS 还允许更多非常规输入 比如将你的身体作为控制器 你可以用头部追踪来让玩家抓住 虚拟物体或执行自定义手势 比如指向某个物体或空手道劈 你可通过 ARKit 进入头部追踪 设备会向玩家征求许可 就像 App 想要使用你的定位 或麦克风时一样 设计这种输入时 还有些事情需要考虑 只有当手在摄影头中 可见时才会被追踪 超快速的手部活动很难被追踪 你需要考虑到这点 当你在全空间里工作时 你可以请求场景理解 场景理解提供了代表玩家 周围房间的虚拟网格 它还可以进行平面检测 来找到垂直或水平平面 你可以获取这些平面的材料 不论是地毯还是木头 这能让你将房间本身 作为游戏输入的一部分 和手部追踪一样 这也需要征求玩家许可 有了这些输入选择 你需要考虑哪个最适合你的游戏 使用玩家身体作为直接输入 是让玩家参与的不错选择 但举起手来做手势 随着时间推移容易疲惫 如果你的游戏需要很长时间 或需要许多快捷动作 请考虑如何利用间接手势和注视 这种方式能让玩家手部 放在膝盖上休息 不用手 而是用“看”和“轻拍” 设备的立意是希望你能每天使用 所以舒适很重要 如果合适的话 你也可以选择 更传统的游戏控制器 该平台支持你在其他平台上 熟悉的多人游戏和网络功能 基于网页的网络 基于底层套接字的网络 以及 Multipeer Connectivity 都可以为你所用 SharePlay 也让玩家 能够轻松地以更亲密的方式 进行社交 你甚至可以利用网络建立游戏 让一些玩家 在 iPhone 或 iPad 上玩 并且仍然可以 连接到这个强大的设备 想象一下 你与有 iPad 的朋友一起 玩多米诺骨牌游戏 他们有 2D 体验 而你有丰富的沉浸式 3D 体验 现在你对这个游戏设备有了 更多了解 以下是你可以在 制作游戏时使用的框架 不论你想要制作 2D 游戏 还是在空间容器中的游戏 或是完全沉浸式游戏 你都有众多选择 如使用我们的 沉浸式框架 RealityKit 或直接在 Metal 上构建 甚至用 Unity 如果你已经制作了用于 iPhone 或 iPad 的游戏 大多数情况下 你的游戏会通过 “看”和“轻拍” 在该设备的虚拟窗口中运行 请注意这也适用于 兼容性 3D 游戏 浙西都会在该设备的平面窗口运行 如果你想让你的游戏立体化 你必须使用空间计算 API 虽然能运行兼容性游戏 是个不错的选择 但如果你想充分利用该设备 可以专门为这个平台来构建游戏 你可以用手势作为输入 或添加 2.5D 元素 如透视关系或体积烟雾 你可以用例如 SwiftUI 或 SpriteKit 的 2D 框架 建造用于该设备的 2D 游戏 你可以用 Unity 建造 用于 xrOS 的游戏 如果你已经有想转移的 Unity 游戏 或者你是 Unity 开发者 那这是个不错的选择 如果你想了解更多关于 Unity 的使用 请观看 “将你的 Unity VR App 带入完全沉浸式空间” 或“打造沉浸式 Unity App” 最后 RealityKit 这个 Apple 实时渲染框架 可以用于建造沉浸式空间体验 这套 API 有很多新特性 使其成为创造 xrOS 上的 3D 游戏的绝佳方式 RealityKit 支持 你制作优秀的游戏时 所需的所有功能 有一个用于自定义 行为的实体组件系统、 还有融合了物理学、动画、 l粒子和音频支持的扩展性 渲染方面 RealityKit 支持 USD 模型和自定义网格 为了让你的物体能在世界中落地 还有 MaterialX 和 IBL 光照 附件这个新特性允许你将 丰富的 SwiftUI 连接到 你的 RealityKit 物体 使用 SwiftUI 时 你可以使用窗口、空间容器、 空间、锚点、传送门等功能 以各种方式 混搭透视和渲染内容 你可以使用系统手势作为输入 或使用 ARKit 接入手部追踪 和场景理解 为了建造 xrOS 的游戏 你可以用 xrOS 模板 建造一个新 Xcode 项目 该项目会给你一个 SwiftUI 窗口 里面有 RealityView SwiftUI 层级结构中的 RealityView 负责为你的游戏 进行 3D 渲染和模拟 如果你对 SwiftUI 还不熟悉 值得了解一下 默认情况下 你的 3D 内容 会出现在一个由窗口形成的 容积盒子中 你的内容被限制在该窗口内 并会随着窗口的移动而移动 RealityKit 是一个 Swift API Swift 是胜任 建立游戏的强大语言 但如果你想用其他语言也可以 你只需创造一个 在该语言和 Swift API 之间的桥梁 Xcode 配有模拟器 你可以无需设备 立即开始开发 你的游戏 当然 在设备上测试一下是最好的选择 在默认情况下 你的 3D 内容 会展示在 SwiftUI 的窗口里 作为游戏开发者 你想要做的 第一件事就是突破这个窗口 在玩家周围绘制内容 你有几个不同选择可以做到这一点 你可以使用空间容器 空间容器和窗口类似 但有一个重要的区别 玩家可通过窗口控制尺寸 玩家可拖动拐角 根据自身喜好 调整大小 且你的内容必须适应 如果对于内容来说窗口太小了 你的内容将会被裁剪 容积则完全相反 在容积里 如果你说 “我想让盒子这么大 这么高 这么深” 玩家依然可以将这个盒子放在 世界里他们想放的任何地方 但盒子的大小永远不变 所以你能确保盒子的大小 适合你的整个体验 而且可以确保你的内容不会被裁剪 如果你不想用盒子 你可以用空间 空间允许你渲染 玩家在现实世界周围的 所有内容 例如 你可以用嗡嗡叫的蜜蜂包围玩家 不同的游戏类型可以匹配 不同的空间类型 你可以用共享空间来 共同运行其他 App 如果你想要 你的游戏是唯一运转 App 也可以选择全空间 锚点能让你将场景 稳固在现实世界的物体上 并随着物体的移动而跟随移动 你可以用一个水平或垂直面锚点 将物体锚定在桌子或墙面上 还有手部锚点 可以让你把内容锚定在 玩家手上 传送门允许你在 玩家的现实中打一个洞 创造你自己的梦幻现实 你可以将传送门 锚定在现实世界墙上 让这个传送门在墙上开一个洞 你就可以窥视洞内的渲染世界 你可以渲染传送门内的任何东西 传送门里的物体 也能出现在现实世界中 RealityKit 可以加载和渲染 USD 文件 开始使用体积内容最简单的方法之一 是用预先制作的物体来组装场景 但要做到这一点 你需要一些视觉工具 Reality Composer Pro 是与 Xcode 绑定的工具 该工具能让你加载 USD 模型 预览在设备上的效果 当你用 Reality Composer Pro 建立项目时 你的资源会自动优化 以便在设备上使用 想要了解更多关于 Reality Composer Pro 可观看以下教程 希望今天的教程能帮助你 规划开发空间计算游戏路线 请务必深入研究 各种框架的教程 这是个很好的社交平台 和与他人一起游戏的平台 我迫不及待想看看你的开发成果了 ♪
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。