image.png本文的内容是承接 WWDC 2018 | iOS 12 Beta初体验 一文的,上一篇中,从整体上过了一遍 iOS12 系统的更新的初体验,本文详细梳理一下ARKit2.0的更新内容。
写在前面
在前面文中提到,iOS 12主要是在性能上进行了优化,对普通用户来说,iOS 12并没有从软硬件上给人耳目一新。
但是对于开发者来说,关注点则很多,其中,ARKit2.0 就是一个很大的亮点。苹果在ARKit2.0的介绍过程中用了“无与伦比”来形容 ARKit2.0 :
unparalleled augmented reality experiences
我觉得 ARKit2.0 本次的更新,对于苹果系统下的 AR 发展具有划时代意义。
为什么这么讲,ARKit1.0 虽然强大,但始终停留在只能一台设备玩,玩家之间没有交互,�你做的再好你只是一个单机游戏,但随着 ARKit2.0 的发布,这一切都变了。
With ARKit 2 on iOS 12, your AR apps can now be experienced by multiple users simultaneously, and resumed at a later time in the same state.
ARKit2.0 支持多人同时参与,玩家之间可以共享由虚拟世界和真实世界构建的场景,这样的话,随着这个功能的发布,AR 就加入了社交属性,对游戏设计者来说,这也就有了无限的想象空间。
所以,可以预见,接下来的几个月内,会有一批优秀的、多人参与的AR应用出现,值得期待。
ARKit2.0 虽然升级变化很大,但总结来看,我把变化归纳为两个部分:
- 支持多人同时参与
- 更好的支持3D
本文也从这两部分来讲解。
1. 支持多人同时参与的 SwiftShot
SwiftShot
是苹果官方给出来的一个示例,本节结合 SwiftShot 来讲解 ARKit2.0是如何让多人同时参与进来的。
在讲解原理之前,先来熟悉一下游戏的基本玩法。
1.1 SwiftShot 玩法简介
游戏首页如下图所示,上面有两个按钮:
WWDC 2018 | iOS 12 Beta 无与伦比的 AR 初体验点击 Host 按钮为其他附近的玩家开始游戏,点击 Join 按钮参与在另一台设备上已经开始的游戏。
如果你点击了 Host按钮,应用会要求你找到平面(如桌子)以放置游戏面板。你可以拖动,旋转并捏合以定位和调整板的大小,调整OK后点击屏幕,并出现游戏板。
image.png当游戏板出现时,你会发现桌子上有积木和弹弓,弹弓每端有三个。
将设备靠近弹弓,等弹弓高亮的时候,触摸屏幕抓住它,然后向后拉并释放,瞄准并发射球。
球会击倒积木或者弹弓,发生物理碰撞。
击倒对面三支弹弓者赢得游戏胜利。
下图是一些游戏场景的截图:
image.png经过这个介绍,你的脑海中对这个游戏有了大致的印象。
接下来,就介绍苹果对这类游戏,在游戏设计方面的一些建议。
1.2 多人参与的AR游戏设计基本原则
1.2.1 鼓励玩家移动,增加游戏的沉浸式体验
Encourage player movement to make gameplay more immersive
在 SwiftShot中,因为在你和敌人弹弓之间有障碍物体,你可能会发现,你很难直接射击敌人的弹弓。但你可以移动到其他弹弓位置,与你的队友一起找到赢得比赛的最佳角度。
1.2.2 不鼓励剧烈的、大范围的移动
Don’t encourage too much movement
玩这类游戏,大家都在同一个相对狭小的空间中,集中注意力的盯着设备屏幕。
如果游戏过程中总移动的太猛烈,会导致队员撞在一起,这样就降低了AR游戏的沉浸体验,分分钟出戏,甚至还有受伤和摔坏设备的风险。
所以在 SwiftShot 中,一旦你选定要使用某一个弹弓之后,你必须仔细瞄准,保持设备稳定,才能射出一个好球,所以你不会因为低头盯着设备,频繁移动,而导致和其他玩家发生身体碰撞。
1.2.3 促进沟通和社交
Foster social engagement
多人AR游戏将玩家聚集在同一个空间,为他们提供新的娱乐方式。
使用AR观看比赛,也为观众提供了不同的视角和新的体验。NBA 就在积极尝试用户 AR 观赛。
保持游戏简短,但通过变化增加乐趣
Keep games short, but add fun through variation
通过下午和同事的体验这个游戏,发现玩这个游戏是比较累的,因为你需要端着设备,长时间保持在一个可能你并不是很舒适的姿势(比如半蹲),来完成球的发射。手机还相对好一点,抱着 iPad 真的特别累。
所以 SwiftShot 保持短暂的鼓励派对式游戏,玩家可以经常进入和退出游戏。
它还提供了几种游戏板布局和特殊效果,这样每次进入游戏都可以有所不同,避免审美疲劳。
1.3 如何在设备间共享数据
设备间共享数据包含两方面的内容:
- 如何获取包含带有空间信息的数据,ARWorldMap 会帮我们完成这项内容;
- 数据如何在设备间传递,通过 MultipeerConnectivity 可以实现。
结合二者,苹果实现了多用户之间的数据共享和游戏交互。
ARWorldMap
在 SwiftShot 中,当一个玩家点击 Host 按钮创建游戏面板之后,ARKit会自动创建一个 ARWorldMap,其中包含ARKit对游戏板周围区域的空间理解。
当其他玩家加入进来时,会收到一份 ARWorldMap 副本,并以此为依据构建多人一起玩耍的 AR 世界。
有关设置多人AR会话的更多详细信息,请参阅 Creating a Multiuser AR Experience。
MultipeerConnectivity
SwiftShot使用 MultipeerConnectivity
框架在设备间建立连接,并发送游戏数据。
关于 MultipeerConnectivity的更多详细信息,可查看苹果的官方文档,后续我也会写相关的文档来做详细介绍。
关于 MultipeerConnectivity 的内容,后面用一篇文章专门来介绍。
注意: 使用Multipeer在设备之间直接传输数据,这些数据包括你的本地位置信息 ,通过设置
MCEncryptionPreference.required
加密,它也可以防止窃听。苹果在用户数据隐私方面还是做的很好的。
2. AR Quick Look Gallery
iOS 12支持直接在Safari中预览3D模型,换句话说,也就是Safari 添加了对ARKit的支持。
下面,我们来体验一下这个功能。
在Safari下打开官方提供的3D模型链接。
打开链接之后,页面展示如下:
image.png系统内置了一些3D模型,供我们预览:
image.png在Safari中点击收音机,页面加载模型可能需要一点时间,加载完成后,如下图所示:
image.png可以在屏幕上缩放和移动这个模型,点击顶部的 AR 选项,可以切换到 AR 预览模式:
效果如下:
image.png很逼真吧!
这项功能为设计师和开发者,提供了在手机里预览模型的便捷方法!
小结
本文通过苹果提供的官方实例,剖析了AR对支持多人同时参与方面,官方提供的一些设计思路和实现原理;体验了在Safari中直接预览3D模型的功能。
如果您只是一个普通玩家,并非开发者,看到这里,应该对ARKit2.0有了一个大致了解,希望这些以后能够有助于您体验AR项目。如果您对iOS 12beta版本感兴趣,需要升级beta版本系统或者体验SwiftShot游戏,您可以私信我,有时间了会帮您解答。
如果您是一个开发者,这仅仅是一道开胃菜,下一篇,会从代码角度结合ARKit2.0新增的API,详细剖析 SwiftShot 的各个部分实现原理,您也可以翻阅我其他的关于 ARKit 和 SceneKit 的博客,获取更多信息。
WWDC 2018 | iOS 12 Beta 无与伦比的 AR 初体验
网友评论