开发实战Part 1:为Quest 2构建多人游戏应用体验
构建多人游戏
(映维网Nweon 2022年06月20日)多人游戏体验已经成为VR生态系统中越来越重要的一环。多人游戏功能允许你轻松地在各种游戏和应用中查找和邀请好友。
在这个“Building Your Multiplayer VR Experience(构建你的多人VR体验)”博文系列中,Meta将通过SharedSpaces示例来讨论Quest中的Platform SDK多人游戏功能,并向你展示如何利用所述示例来构建你的多人游戏应用。
下面团队将介绍Platform SDK中的多人游戏功能以及它的作用。我们同时会看看App Lab中的Unity SharedSpace示例,从而感受多人功能的实际应用。下面是映维网的具体整理:
1. 多人游戏功能
Quest的多人游戏功能包括Destinations, Group Presence, Invites, Invite Link和Rosters等等,它们允许用户在VR应用中查找和邀请好友。所述功能旨在增强应用内社交,并创造一种独特的多人游戏体验,令玩家有一种仿佛真的与朋友共在的体验。
1.1 Destinations
Destinations是用户在应用旅行的位置,而它对于Quest的多人游戏功能开发至关重要。下图显示了SharedSpace示例应用中的三种Destinations:Red Room,Green Room和Blue Room。
1.2 Group Presence
Group Presence提供特定用户所使用的应用程序的信息:是否有匹配的应用,是否在特定的Destinations,是否可以加入等等。
1.3 Deep Links
Deep Links允许开发者将用户引导到特定体验中。每当有人启动你的应用并加入朋友或导航到特定Destinations时,Deep Links都会包含所需Destinations以及任何大厅或游戏的信息。实现多人游戏体验的第一步是整合Destinations、Group Presence和Deep Links。在下一篇博客中,我们将讨论如何构建你自己的Unity SharedSpace示例版本。
1.4 Invite to App
Invite to App允许玩家在兼容游戏中使用Quest菜单,无缝邀请好友和最近一同游戏的玩家进入现有大厅。当你发送邀请时,VR和Oculus app会弹出一条通知,从而邀请对方加入体验。
1.5 Invite Link
你同时可以使用Invite Link,与一群朋友一起通过Oculus app前往Destinations。Invite Lin主要使用Group PresenceAPI来确保每个人都在同一个会话中。
1.6 Roster
Roster可以帮助用户查看正与自己进行游戏的好友。当游戏设置了当前用户的状态时,游戏中的用户都会位于相同的大厅会话ID中。在SharedSpaces示例中,你可以通过点击Roster面板来获取Roster。下图是一个示例:
2. Unity SharedSpaces Sample
以上是Platform SDK多人游戏功能,下面我们来看看名为SharedSpaces的示例项目。需要注意的是,本例为Unity版本,Unreal版本请访问App Lab。
首先,我们来看看Unity SharedSpace Sample是如何工作。这个示例使用三层网络:
- Platform SDK:允许我们设置Destinations、Presence、大厅和匹配。
- Photon SDK:负责共享空间的用户之间的通信。
- Unity的Netcode for GameObjects SDK:提供联网功能
3. 安装示例
现在,你已基本了解共享空间应用的工作原理。你可以在App Lab下载Unity SharedSpace示例,并在Quest头显试用。
4. 运行示例
在Quest头显启动应用时,你会注意到自己会从一个名为Lobby的房间开始。玩家由彩色角色表示,而你可以使用控制器控制所述角色。左边的控制器移动玩家,右边的控制器移动camera,这样你就可以舒适地看到周围的世界,并选择前往任何位置。点击控制器的Y按钮可以进行跳跃。
右侧的调试面板提供Destinations的状态、网络层以及有关谁加入房间的信息。在左侧,你将看到三个可以输入的私密Destinations。在右侧,你可以看到一个可以输入的公共Destinations。
在左上角,你将看到邀请朋友加入这一体验的选项。
在右上角,你将看到一个Roster,它可以帮助用户查看正与自己进行游戏的好友。
在你身后有一家油漆店,你可以选择改变玩家的颜色。或者,你可以通过控制器的X按钮来更改玩家的颜色。
在左下角和右下角,你会看到一个查询自己和朋友并获取有关玩家更多信息的选项。
5. 示例测试场景
现在你已经熟悉了这一空间,请尝试输入其中一个Destinations。Purple Room是一个公共Destinations,任何人都可以进入,从任何大厅都可以到达。现在,我们回到大厅。
回到大厅后,请尝试进入另一个房间。Red,Blue和Gree都是私密Destinations,需要邀请才能进入。
在你进入其中一个私密房间之前,你可以邀请好友加入你的行列。转到“邀请好友”面板查看可用朋友的列表,并从列表中邀请朋友。自你开始在大厅体验以来,你就是大厅的厅主,大厅的主持人。
弹出一个通知,告诉朋友你已邀请他们加入。如果对方接受邀请,你会在大厅里看到他们。从现在起,你们将共享这个会话的相同大厅ID。
你现在可以在Blue Room开始一场私密比赛。当你进入这个房间时,你可能会看到你的朋友比你先进入。因为他们是第一个进入,所以他们是房间的主人。你同时具有与Blue Room对应的相同游戏会话ID。现在,如果你离开蓝色房间,你俩都会回到你的大厅,因为你们共享相同的大厅ID。
如果你在Blue Room时邀请了朋友,而他们在自己的大厅中,并且他们接受了你的邀请,他们的游戏ID将更改为与Blue Room对应的相同游戏会话ID,但他们的大厅ID将与之前相同。在这种情况下,如果你们都离开蓝色房间,你们就会回到自己的大厅。
以上就是Unity SharedSpace示例应用的快速介绍。我们主要讲解了Platform SDK提供的多人游戏功能。在下一篇博客中,我们将讨论如何构建你自己的示例副本,包括如何从Github下载它,然后在Quest头显构建和运行它。