我们如何利用 ARCore 开发 AR 游戏《太空侵略者:全球防卫》

九月 05, 2023
Dereck Bridie Developer Relations Engineer ARCore
Bradford Lee Product Marketing Manager Augmented Reality

为了庆祝《太空侵略者》诞生 45 周年,我们与 TAITO(日本原创街机游戏开发公司)和 UNIT9 合作推出了《太空侵略者:全球防卫》,利用最先进的基于位置的 AR 技术,为玩家带来沉浸式的游戏体验。世界各地的玩家都可以到户外探索当地的街区,对抗从附近建筑物中冒出来的虚拟太空侵略者,保卫地球,并通过击倒侵略者得分,这一切均有赖于增强现实技术。

我们利用最新的 ARCore 技术开发了这款游戏,这些技术包括 Geospatial API、Streetscape Geometry API 和 Geospatial Creator。我们很高兴能够向您展示游戏开发过程,以及我们如何使用最新的功能和工具来设计全球首款程序性 AR 游戏。

Geospatial API:将世界变成游乐场

Geospatial API 让您能够将内容远程附加到 Google 街景映射的任何区域,并打造更丰富、更强大的沉浸式体验,让玩家如同置身于全球的真实地点一般。《太空侵略者:全球防卫》在 100 多个国家/地区中有着较高街景视觉定位服务 (VPS) 覆盖率的区域推出,使游戏内容既能适应繁忙的城市环境,也能适应小型城镇和村庄。

对于生活在未覆盖 VPS 区域的玩家,我们最近对游戏进行了更新,加入了名为“室内模式”的新模式,让您可以在任何环境或位置(室内或室外)保护地球免受“太空侵略者”侵害。

《太空侵略者》中新的室内模式旨在让玩家于任何室内建筑环境享受沉浸式游戏体验

创建初始用户流

ARCore Geospatial API 使用用户设备的摄像头拍摄的图片来扫描特征点,并将这些图片与 Google 街景视图中的图片对比,以便在真实空间中精确定位设备。

Geospatial API 以 VPS 及街景视图中的数百亿张图片为基础,让开发者能够在 100 多个国家/地区远程打造真实世界般的体验

用户需要拿起手机,平移拍摄区域周围,以便系统收集足够的数据来准确定位用户。为此,我们采用了一种巧妙的技术,要求用户追踪相机视野范围内的宇宙飞船,从而让用户扫描所在区域。

首先,跟随宇宙飞船扫描当地环境

借助此用户流,我们会不断检查 Geospatial API 收集的数据是否足以提供高质量的体验:

if (earthManager.EarthTrackingState == TrackingState.Tracking)
{
        var yawAcc = earthManager.CameraGeospatialPose.OrientationYawAccuracy;
        var horiAcc = earthManager.CameraGeospatialPose.HorizontalAccuracy;
 
        bool yawIsAccurate = yawAcc <= 5;
        bool horizontalIsAccurate = horiAcc <= 10;
 
	return yawIsAccurate && horizontalIsAccurate;
}

将周围环境转变为游乐场

扫描附近区域后,游戏使用来自 Streetscape Geometry API 的网格数据,再通过算法将在不同位置玩游戏变为一种独特的体验。每个真实世界的位置都有独特的地形和城市布局,以其独特的方式影响着游戏。

游戏内容因您所在的位置而异:从捷克共和国的城镇(左),到纽约的城市景观(右),各有不同

在游戏中,“太空侵略者”会从建筑物中冒出来,因此我们使用了世界各地的建筑物几何图来构建测试用例,从而确保游戏在各种环境(无论是当地村庄还是繁华城市)中都有最佳表现。

展示算法如何在现实世界中放置传送门的动态图

进入侵略者的维度

研究发现,用户长时间保持举着手机的姿势以获得增强现实体验可能会很累。这一点影响了我们的游戏开发,于是我们创建了侵略者维度,让玩家可以放松拿着手机的手臂并提高用户舒适度。

我们最喜欢的“惊艳”时刻是现实世界 AR 和虚拟生成的 3D 维度之间的转场,这一画面真正向您展示了 Geospatial API 的强大功能。

在游戏中,从真实世界 AR 到 3D 维度的转场画面

我们结合使用摄像头视频源与虚拟环境着色器(以独特线框风格渲染建筑物和地形),以此实现这种效果。

侵略者的维度在 Unity Editor 中出现在玩家周围,从而在两种模式之间无缝转换

玩家进入侵略者的维度后,玩家的宇宙飞船会经由算法生成的路径穿过所在社区。为此,我们为通过头顶的摄像头拍摄的用户环境生成了深度图像。在深度图像中,红色通道表示建筑物,蓝色通道表示可能用于飞行路径的空间。然后,系统用该图像生成路径应经过的点构成的网格,并使用 A* 搜索算法来求解经过所有点的路径。

最后,我们对生成的 A-Star 路径做后期处理,从而解决任何潜在的抖动、急转弯和碰撞问题。

为了平滑宇宙飞船的路径,我们通过在设定的节点间隔内对路径进行采样来消除抖动。然后,我们分析路径上的角度,以此确定路径上是否有任何急转弯。如果出现急转弯,我们会引入另外两个点来减小弯道角度。最后,我们看看这条平滑的路径是否会与任何障碍物发生碰撞,并在检测到障碍物时作出调整以飞越障碍物。

8a-Depth-Composite-8B-3D-Path.png
侵略者维度中深度图像和生成的样本路径的效果图

为全球用户提供满意的游戏体验

制作游戏的一个关键点在于,生成情境性内容较为复杂,需要在全球范围内进行测试。借助 Unity,我们将多个环境引入测试用例,从而快速迭代和验证对这些算法所作的更改。我们因此也有信心在全球范围内部署游戏。

直观呈现使用 Geospatial Creator 制作的《太空侵略者》

我们使用由 ARCore 提供技术支持的 Geospatial Creator 以及 Google Maps Platform 中逼真的 3D 图块来验证虚拟内容在 Unity 中的表现,如“太空侵略者”如何现身于东京的特定地标旁。

借助逼真的 3D 图块,我们能够在包括日本东京塔在内的特定地点看到侵略者

未来的更新和版本

自游戏发布以来,我们一直听取玩家的反馈,并积极更新和改进游戏体验。

  • 我们新增了一种游戏模式,室内模式,旨在让所有其所在区域未覆盖 VPS 的玩家或不想使用 AR 模式的玩家也能体验游戏。
  • 为了鼓励用户体验 AR 游戏,我们重新平衡了分数,在户外玩游戏的玩家能够比在室内玩游戏的玩家获得更多分数奖励。

立即在 AndroidiOS 设备上下载游戏,加入地球保卫者精英之列,在您的社区中成为得分最高的玩家。如需了解最新的游戏更新,请在 Twitter (@GoogleARVR) 上关注我们,了解我们如何改进游戏。此外,请访问我们的 ARCoreGeospatial Creator 网站,了解如何开始使用 Google 的 AR 技术进行构建。