Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SwiftShot:为增强现实创建游戏

SwiftShot:为增强现实创建游戏

作者头像
iOSDevLog
发布于 2018-08-22 06:07:20
发布于 2018-08-22 06:07:20
1.8K0
举报
文章被收录于专栏:iOSDevLogiOSDevLog

SwiftShot:为增强现实创建游戏

了解Apple如何为WWDC18构建精选演示,并获得使用ARKit,SceneKit和Swift制作自己的多人游戏的技巧。

概观

SwiftShot是一款针对2到6名玩家的AR游戏,在WWDC18主题演讲有所体现。使用此示例代码项目在您自己的设备上体验它,查看它是如何工作的,并构建您自己的自定义版本的游戏。

点击“主持人”按钮为其他附近玩家开始游戏,或点击“加入”按钮参与在其他设备上启动的游戏。如果您正在托管,该应用程序会要求您找到一个平面(如桌子)来放置游戏板:拖动,旋转和捏合以定位和调整板的大小,然后在准备好玩时点击,并出现游戏板。

当游戏板出现时,你会在桌子上找到木块的景观,每端有三个弹弓。将您的设备移到弹弓附近并触摸屏幕以抓住它,然后向后拉并释放以瞄准并射击球。用球击打盖子击倒它们,并击倒其他球队的所有三个弹弓以获胜。

入门

需要Xcode 10.0,iOS 12.0和带有A9或更高版本处理器的iOS设备。iOS模拟器不支持ARKit。

为AR设计游戏玩法

SwiftShot将增强现实作为吸引游戏玩法的媒介。

鼓励玩家运动,使游戏更加身临其境。在SwiftShot中,你可能会发现你无法在敌人的弹弓上得到很好的射击,因为挡住了挡路。你可能会发现一个块的结构,从一个角度不容易被击倒。但是你可以转移到其他弹弓并与你的队友一起找到获胜比赛的最佳角度。

不要鼓励过多的运动。**你必须小心瞄准射击,所以你不太可能撞到你的队友并让你的设备飞过房间。

促进社会参与。多人游戏AR游戏将玩家聚集在同一个空间,为他们提供令人兴奋的新方式,让他们一起玩乐。使用AR观看作为旁观者的游戏提供了不同的视角和新的体验。

保持游戏简短,但通过变化增加乐趣。站起来和手臂挥动你的设备可以令人兴奋的游戏,但它也可能是累人。SwiftShot保持比赛简短,鼓励派对式游戏,玩家可以经常进出游戏。但是SwiftShot还提供了几种游戏板布局和特效,这样每个游戏都可以有所不同。

使用本地多路由器网络和共享世界地图

SwiftShot使用MultipeerConnectivity框架与其他本地玩家建立连接,并在设备之间发送游戏数据。当您开始自己的会话时,启动会话的玩家会创建一个ARWorldMap包含ARKit对游戏板周围区域的空间理解。加入会话的其他玩家会收到地图的副本,并查看主持人查看该表的照片。移动他们的设备以便他们看到类似的视角有助于ARKit处理收到的地图并为多人游戏建立共享参考框架。

有关设置多人AR会话的更多详细信息,请参阅创建多用户AR体验。有关此应用程序如何实现Multipeer Connectivity的详细信息,请参阅 GameBrowserGameSession类。

  • 注意:使用Multipeer Connectivity有助于确保ARKit收集的本地空间映射数据的用户隐私。Multipeer Connectivity使用点对点无线网络在设备之间直接传输数据。使用required加密设置时,它还可以防止窃听。

同步游戏动作

要在玩家之间同步游戏事件 - 比如从弹弓中发射球 - SwiftShot使用动作队列模式:

  • 所述GameManager类维护的列表GameCommand结构,其中每一个对一个的GameAction描述与负责该事件的游戏者的识别符的情况下枚举值。
  • 每当本地玩家执行将触发游戏事件的动作(例如在弹弓附近触摸屏幕时),游戏创建相应的GameAction并将其添加到列表的末尾。
  • 同时,游戏对其进行编码GameAction并通过多重同步会话将其发送给其他玩家。每个玩家GameSession在收到动作时对其进行解码,并将其添加到本地GameManager实例的命令队列中。
  • GameManager类的更新的游戏状态为SceneKit渲染每个循环过程(以每秒60帧)。在每一个上update,它按照添加顺序从队列中删除命令,并在游戏世界中为每个命令应用结果效果(如启动球)。

将游戏事件集定义为Swift枚举可带来多种好处。枚举可以包含特定于每个游戏动作的附加信息(如弹弓抓取的状态或球发射的速度)作为每个枚举案例的相关值,这意味着您不需要在别处编写代码来确定哪些信息是相关的为哪个行动。通过Codable在这些枚举类型上实现Swift 协议,可以轻松地序列化和反序列化操作,以便通过本地网络进行传输。

解决多人物理问题

SceneKit有一个内置的物理引擎,为SwiftShot提供逼真的物理行为。SceneKit仅在一个设备上模拟物理,因此SwiftShot需要确保会话中的所有玩家看到相同的物理结果,同时仍然提供逼真的平滑动画。SwiftShot支持所有支持ARKit的iOS设备和不可靠的网络方案,因此无法保证会话中的所有设备都能以每秒60帧的速度进行同步。

SwiftShot使用两种技术来解决这些问题:

会话中的每个对等体都运行自己的本地物理模拟,但同步物理结果。为了确保所有同伴的游戏相关物理结果一致,游戏将开始游戏的玩家指定为真相的来源。该“服务器”角色中的对等体不断地将物理状态信息发送给所有其他对等体,这些对等体相应地更新其本地物理模拟。物理服务器不编码和传输SceneKit物理模拟的整个状态,但是它仅为与游戏相关且自上次更新以来状态已更改的主体发送更新。有关实现的详细信息,请参阅PhysicsSyncSceneData示例代码中的类。

特定于域的数据压缩可最大限度地降低物理同步的带宽成本。为了传输物理状态信息,服务器仅编码精确同步所需的最小信息:位置,方向,速度和角速度,以及指示身体是否应被视为运动或静止的布尔标志。为了在设备之间有效地发送该信息,PhysicsNodeDataPhysicsPoolNodeData类型将其编码为最小二进制表示。例如:

  • Position是32位浮点值的三分量向量(总共96位),但游戏被限制在80个单位宽,高和深的空间。应用此约束提供仅48位(每个组件16位)的编码位置。
  • 方向可以表示为始终为正的幅度的单位四元数,而后者又可以写为四分量向量。另外,单位四元数的一个分量总是取决于其他三个,并且这些组件的值总是在从范围-1/sqrt(2)1/sqrt(2)。应用这些约束提供了38位的编码方向(2位用于标识从属组件,12位用于其他三个组件)。

为了使用这种紧凑的位打包对结构进行编码和解码,SwiftShot定义了一种BitStreamCodable协议,扩展了Swift Codable协议的模式,并提供了一种将位流编码类型与Codable同一数据流中的其他Swift 类型相结合的方法。

  • 注意:SwiftShot的比特流编码是专为最小数据量而构建的,因此它省略了通用编码器的功能,例如模式更改的弹性。

GameSession类发送和除了游戏动作接收物理同步数据。物理数据同步发生在用于游戏操作的队列之外,因此每个对等体的物理世界都会更新,以便尽早匹配服务器。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS版 使用ARKit和Swift创建交互式Domino游戏
在下面的教程中,我将向您展示如何使用Swift和ARKit制作有趣的Domino游戏。
iOSDevLog
2019/03/06
2.4K0
iOS版 使用ARKit和Swift创建交互式Domino游戏
ARKit:增强现实技术在美团到餐业务的实践
增强现实(Augmented Reality)是一种在视觉上呈现虚拟物体与现实场景结合的技术。Apple 公司在 2017 年 6 月正式推出了 ARKit,iOS 开发者可以在这个平台上使用简单便捷的 API 来开发 AR 应用程序。
美团技术团队
2019/03/22
2.2K0
ARKit:增强现实技术在美团到餐业务的实践
ARKit
一个增强现实(AR)描述了用户体验,从设备的摄像头的方式,使这些元素似乎居住在现实世界中添加2D或3D元素到实时取景。ARKit结合了设备运动跟踪,摄像机场景捕捉,高级场景处理和显示便利性,简化了构建AR体验的任务。您可以使用这些技术使用iOS设备的后置摄像头或前置摄像头创建多种AR体验。
iOSDevLog
2018/08/22
2.3K0
到底有多强?苹果的增强现实框架:ARKit
写在前面 其实准备ARKit已经很久了,确切地说当WWDC开始介绍时就开始了。其后参加了苹果的ARKit workShop,加上自己有点事,所以文章一直没发出来,现在再发一篇上手文章,也没什么意义。
郭艺帆
2017/09/05
3.5K0
到底有多强?苹果的增强现实框架:ARKit
ARKit 简介-使用设备的相机将虚拟对象添加到现实世界中 看视频
到目前为止,你一定听说过关于增强现实的这个相当新的概念。这项技术并不新鲜,您已经在电影中看到它或在电子游戏中体验过它。我的意思是,如果不是免费的话,一般人群现在可以以最低成本轻松获得它。尽管ARKit仅在2017年于2017年发布,但它很快受到欢迎,其可能性无穷无尽。一些人声称这是“下一次大转变”或“改变游戏规则”。
iOSDevLog
2019/06/17
3.9K0
ARKit 简介-使用设备的相机将虚拟对象添加到现实世界中 看视频
谷歌增强现实技术ARCore
简介 随着,今年苹果在6月的WWDC 2017上发布的ARKit,谷歌也在前不久(8月29日),发布了用于Android平台的AR SDK——ARCore。这弥补了AR在Android市场上的空缺,让无数Android用户激动不已,要知道Android拥有超过20亿活跃设备,如果说ARKit是苹果AR的起点,那么说ARCore掀起了移动AR市场的狂潮,ARCore的横空出世意味着AR进入手机大群体用户的生活成为可能。 大约3年前,Google曾发布一个Tango AR,而ARCore也可以看做是Tango的
xiangzhihong
2018/01/26
1.6K0
iOS ARKit教程:用裸露的手指在空中画画
最近,Apple公布了名为ARKit的新增强现实(AR)库。对于许多人来说,它看起来只是另一个优秀的AR库,而不是一个值得关注的技术破坏者。但是,如果你看一下过去几年的AR进展,就不应该太快得出这样的结论。
iOSDevLog
2018/08/22
2.3K0
iOS ARKit教程:用裸露的手指在空中画画
构建增强现实移动应用程序的六款顶级工具
增强现实已经成为数字世界的新趋势,在Pokemon Go把它带入普通移动用户的生活引发热潮后,您就很难再碰到一个对此不熟悉的人了。尽管很多人认为AR只是一种用于娱乐的技术,但是,事实上,它在多个行业(如医疗保健、电子商务、建筑等等)有着广泛的应用。本文准备打破这种刻板的印象。
全栈程序员站长
2022/06/29
5.8K0
构建增强现实移动应用程序的六款顶级工具
7月VR圈以游戏应用为主,VR内容生态进入爆发阶段
(VRPinea7月31日讯)hello小伙伴们大家好!台风“烟花”入境以及南京加重的疫情,让整个7月都显得不那么尽如人意,但所幸,我们还是能在奥运赛场中看到奥运健儿们夺金的好消息。7月份发生的大事件已经很多了,那么VR圈又发生了哪些事情呢?
VRPinea
2021/08/20
8200
7月VR圈以游戏应用为主,VR内容生态进入爆发阶段
7.6 VR扫描:Clay为苹果ARKit带来手势跟踪;Layar创始人要求Blippar归还公司
Clay为苹果ARKit带来手势跟踪 据悉,自苹果推出 ARKit 后,Clay 团队正将功能集成到SDK 中,这意味着 ARKit可以在iOS 11上获得简单易用的控制方式。目前SDK已经接入Uni
VRPinea
2018/05/14
7670
ARKit介绍
Apple在WWDC17上宣布了一个名为ARKit的新iOS框架。它是一个“允许您轻松为iPhone和iPad创建无与伦比的增强现实体验”的框架。该框架随iOS 11一起发布(目前处于测试阶段),并且仅由Apple的A9或A10芯片驱动的iOS设备支持。这意味着它不适用于iPhone 5S或iPad Mini等旧设备。此外,您无法在模拟器中使用它,因此您必须使用最新的测试版更新您的iPhone / iPad(iOS 11 SDK仅适用于Xcode 9)。
iOSDevLog
2018/08/22
2.4K0
ARKit介绍
2022科隆游戏展开幕,多款硬核VR新游登场
(VRPinea 8月26日讯)2022年科隆国际游戏展(Gamescom 2022)已于当地时间23日晚,在德国科隆国际展览中心拉开帷幕。这是自疫情暴发后,该展会的首次线下“营业”。据了解,米哈游等我国企业也参加了本届展会。
VRPinea
2022/11/16
4290
2022科隆游戏展开幕,多款硬核VR新游登场
Gamescom 2018|德国科隆游戏展首日,NVIDIA等大厂VR/AR动态频发
硬件厂商NVIDIA、戴尔、Psychsoftpc,以及游戏厂商暴雪、Wargaming、索尼、网易等,均带来VR/AR相关新品/游戏体验。
VRPinea
2018/09/28
7290
Google AR 交互的开源与幕后
△ Google I/O 的 AR/VR 沙箱体验区一直人头攒动 在几周前的 Google I/O 上,我们的 AR 开发平台 ARCore 发布了一个重要更新,相信关注我们的开发者们已经知道了:我们添加了诸如 Cloud Anchors 这样的新 API*,从而实现了多用户协作 AR 体验,带来了可以将 2D 图像激活为 3D 对象的 Augmented Images 技术。这些更新将会改变我们今天使用 AR 的方式,并使开发者能够创建更丰富、更沉浸的 AR 应用。 注: Cloud Anchors (
Android 开发者
2018/06/07
1.4K0
设计新宠四|增强现实(AR)
近年来,增强现实 (AR) 和虚拟现实 (VR)一直是设计与技术领域的热门讨论话题,苹果、微软和谷歌等巨头竞争着一个又一个大型 AR 或 VR 体验。
晓吾
2022/03/30
1.6K0
设计新宠四|增强现实(AR)
射击游戏里的子弹是如何飞行的
从第一款FPS游戏《德军总部3D》出现以来,这种类型的游戏广受好评,创新的玩法也层出不穷,比如“吃鸡”。
量子位
2020/05/19
1.4K0
射击游戏里的子弹是如何飞行的
3.28VR行业大事件: 支持磁感追踪,Manus展示全新VR手套“Quantum Metagloves”
(VRPinea 3月28日讯)今日重点新闻:Manus展示支持磁感追踪的全新VR手套“Quantum Metagloves”;Meta挖走HoloLens硬件工程总监Rune Jensen;Meta将在5月前推出Quest视频录制新功能。
VRPinea
2022/04/14
4900
3.28VR行业大事件: 支持磁感追踪,Manus展示全新VR手套“Quantum Metagloves”
iOS ARKit教程:赤手在空中绘画
这次推荐的是ios上的文章,无奈ios上的东西没接触过,权且当做开拓视野了。老规矩,原文如下:
WindCoder
2018/09/19
1.9K0
iOS ARKit教程:赤手在空中绘画
8.3VR行业大事件:Quest商店部分VR游戏推出限时免费体验;Meta将VR/AR体验带入法国2023年橄榄球世界杯
(VRPinea 8月3日讯)今日重点新闻:Quest商店中上线了一个名为“免费试用”的新应用类别;Meta为法国2023年橄榄球世界杯推出VR/AR互动体验;VR射击游戏《Zero Caliber:Reloaded》为Meta Quest平台带来多人PvP模式。
VRPinea
2022/11/16
6270
8.3VR行业大事件:Quest商店部分VR游戏推出限时免费体验;Meta将VR/AR体验带入法国2023年橄榄球世界杯
UE5入门 00 什么是UE5
UE,英文全称Unreal Engineer,中文全称虚幻引擎,5是UE的最新版本。它是由Epic Games开发的一款全面的游戏开发平台。它不仅被广泛应用于游戏行业,还扩展到了电影、建筑可视化、教育等多个领域。2024年热度最高的3A游戏“黑神话悟空”就是由UE5制作。
90后小陈老师
2024/09/06
1.3K0
UE5入门 00 什么是UE5
推荐阅读
相关推荐
iOS版 使用ARKit和Swift创建交互式Domino游戏
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档