同步多人体验
(映维网Nweon 2025年01月30日)为了帮助开发者克服在混合现实中构建高质量、同步的多人游戏体验所带来的挑战,Meta日前分享了Mixed Reality Motif的新系列:Shared Activities in Mixed Reality。
作为说明,Mixed Reality Motif是一个帮助你在混合现实体验中快速执行常见机制的蓝图。Shared Activities in Mixed Reality侧重于在混合现实中创建令人信服的共享活动,以鼓励真实,直观的交互。
延伸阅读:Meta为Quest MR发布参考蓝图MR Motif:透视过渡
https://news.nweon.com/124138
使用Multiplayer Building Blocks,这个Motif说明了如何更快更容易地创建多人混合现实体验。
概述:Shared Activities in Mixed Reality的基本概念
在VR中,多人游戏框架的设计是为了在完全沉浸式的空间中实现统一和共享的体验。这种体验允许每个人平等地共享相同的虚拟空间和对象,这意味着当一个对象或锚点移动时,从每个用户的角度来看,它会以一种一致和同步的方式影响所有用户。
然而,在混合现实中实现无缝共享体验可能具有挑战性,因为每个用户都可以调整内容以适应他们独特的物理空间,例如在物理咖啡桌放置虚拟游戏板。所以,这意味着在用户A的物理空间中正确放置的对象可能会导致用户B的物理空间不对齐。
这个问题的解决方案是操纵远程角色的位置和旋转,而不是锚的位置(例如棋盘)。通过这种方式,每个玩家都可以将棋盘放置在最方便自己的位置,同时保持其他玩家的相对位置和旋转。上图说明了这个主题的基本概念是如何运作的。
例如,假设客户B在客户A的对面,在他们的游戏板后面一米,并且将头转离板45度。有了这个解决方案,客户A可以将游戏板移动到他们想要的任何地方,同时依然看到客户B在正确的相对位置和旋转。在这个例子中,他们的头旋转45度,在游戏板后面一米。
Shared Activities in Mixed Reality Motif提供了实现所述解决方案所需的一切。你将学习:
如何设置 Multiplayer Building Blocks,并查看组件如何协同工作。
如何构建生成和移动虚拟角色的逻辑,同时保持它们固定在感兴趣对象之上,例如棋盘游戏,白板或电视屏幕。
如何使用XR模拟器和ParrelSync测试多人游戏体验。
如何使用Meta的平台解决方案邀请用户加入你的多人游戏体验。
使用Building Blocks创造多人游戏体验
使用Multiplayer Building Blocks进行开发允许你只需点击数下即可集成大多数多人游戏体验中的常见组件,但使用它们需要了解单个Building Block的作用及其构造方式的基本知识。更多信息请访问这个文档。
Multiplayer Building Blocks提供与两个热门多人游戏框架的集成:Unity Netcode for Game Objects和Photon Fusion 2。这两个框架在原型阶段都有一个免费层,在进入生产阶段时有不同的定价选项。“玩家语音聊天”Building Block仅适用于Photon Fusion。所以,Shared Activities inMixed Reality Motif是基于Photon Fusion。
多人游戏开发中的重要组成
在Building Block之上添加自定义组件之前,有必要对Meta Horizon OS促进多人游戏体验和平台功能的组件有一个基本的了解。
NetworkRunner是Fusion的核心Unity组件,它代表了一个单一的网络客户端,用于所有的消息传递和配对等等。在这个Motif中,它作为一个场景对象加载到Fusion服务器,这要感谢Auto Matchmaking Building Block。
在Multiplayer Building Blocks中,你可以选择使用FusionBBEvents类而不是使用NetworkEvents。FusionBBEvents封装了来自Photon Fusion的INetworkRunnerCallbacks,并将它们expose为静态事件,以简化事件处理,促进模块化,并通过将网络逻辑与其他游戏系统解耦来实现更清晰的代码。
Entitlement checks对于创造利用Meta平台功能的多人游戏体验至关重要,这有助于提高用户粘性,允许用户能够看到其他用户的虚拟形象并与之交互,从而获得更真实、更自然的社交体验。
Platform Init初始化Meta Platform,检查用户是否有权使用应用程序,并检索他们的访问令牌和用户信息。然后,它更新初始化状态,并通过回调函数提供信息。Auto Matchmaking在加载场景时创建多人会话,使其更容易处理场景管理,帮助你创建一个融合会话和选择游戏模式。但是,你必须从Network Runner调用Shutdown,并在加载新场景之前离开当前场景。
在一个共享的混合现实活动中移动虚拟人物和其他游戏对象
在共享的混合现实体验中,每个玩家都保留他们的虚拟对象(例如棋盘或电影屏幕)的本地副本,以避免移动它时出现错位问题。为了支持用户和他们的环境之间真实和自然的体验,理解如何操纵角色的移动十分重要,包括什么组件可调整。
对于你可以移动的部分,不用担心引起任何非期望行为的是包含
AvatarBehaviourFusion组件的父对象本身。可以把它想象成另一个玩家的OVR camera的“远程版本”。这个组件允许你影响角色的位置和旋转,或者换句话说,是其他玩家camera的“远程版本”。
从网络列表中,你可以平等地定位远程虚拟角色相对于对象的位置和彼此的位置,确保每个人都享受相同的体验,同时控制他们想要在物理环境中放置对象的位置。
Shared Activities Mixed Reality Motif的主要组成
这个Motif的脚本文件夹细分为五个文件夹,每个托管简洁和易于遵循的类,可以促进Avatar的定位和连接。
AvatarMovementHandlerMotif管理网络角色位置和旋转的同步。这个类通过在对象移动或交互时更新其跨客户端的转换,确保本地和远程角色相对于中心“感兴趣的对象”正确定位,保持多人游戏环境中的一致性。
Spawning是这个Motif的另一个核心概念。SpawnPointMotif作为场景中刷新位置的标记。你同时可以创建更多刷新点来设置额外的刷新位置,从而获得更多的可变性。SpawnManagerMotif收集刷新点,处理等待刷新的玩家队列,并为玩家分配可用的刷新位置。
AvatarSpawnerHandlerMotif监听Avatar生成时的事件,并与SpawnManagerMotif交互,以排队玩家并确保他们放置在正确的刷新位置,无缝协调整个刷新过程。
最后,有两个类负责邀请朋友加入多人游戏体验:
GroupPresenceAndInviteHandlerMotif:使用Oculus Platform SDK管理群组存在和朋友邀请,允许用户将会话或场景设置为可与特定目的地和会话ID连接,并提供启动邀请面板的功能,以便用户可以邀请朋友加入他们的多人游戏会话。
InvitationAcceptanceHandlerMotif:允许好友加入会话,并使用Oculus Platform SDK管理深度链接邀请。当应用通过深度链接启动时,它会通过检查启动细节并将提供的目标API名称映射到场景,从而将受邀用户引导到适当的多人会话。
更多细节请访问GitHub页面。
发现替代解决方案和示例
尽管这个Motif强调了在混合现实中构建共享活动时Multiplayer Building Blocks的有用性,但实际上存在其他解决方案。Meta鼓励你访问GitHub的Spirit Sling开源样本。
---
原文链接:https://news.nweon.com/127420