Metaverse Overview
Overview
This sample demonstrates an approach on how to develop a simple Metaverse.
To do so, the application illustrates several use cases around music, art and games.
The player can move from one scene to another at will by using portals.
The player has the possibility to enjoy these different spaces with his friends only by setting up a personal group.
Here are the different scenes integrated to this sample:
- Avatar selection : the first step is to select an avatar and a nickname.
- Hub : this is the player's starting point. This scene is mainly used to navigate to the other spaces.
- Picazoo : this scene is a little game consisting in finding and identifying the animals hidden in a park using paint guns.
- Music : if you feel like a DJ, this scene is for you !
- Art gallery : we illustrate here how to use an API to display artworks dynamically.
Technical Info
- This sample uses the Shared Mode topology,
- Builds are available for PC, Mac & Meta Quest,
- The project has been developed with Unity 2021.3, Fusion 1.1.8, Photon Voice 2.52,
- 2 avatars solutions are supported (home made simple avatars & Ready Player Me avatars),
Before you start
To run the sample :
Create a Fusion AppId in the PhotonEngine Dashboard and paste it into the
App Id Fusion
field in Real Time Settings (reachable from the Fusion menu).Create a Voice AppId in the PhotonEngine Dashboard and paste it into the
App Id Voice
field in Real Time SettingsThen load the
AvatarSelection
scene and pressPlay
Download
Version | Release Date | Download | |
---|---|---|---|
1.1.8 | Nov 28, 2023 | Fusion Metaverse 1.1.8 Build 334 |
Handling Input
Desktop
Keyboard
- Move : WASD or ZQSD to walk
- Rotate : QE or AE to rotate
Mouse
- Move : left click with your mouse to display a pointer. You will teleport on any accepted target on release
- Rotate : keep the right mouse button pressed and move the mouse to rotate the point of view
- Move & rotate : keep both the left and right button pressed to move forward. You can still move the mouse to rotate
- Grab : put the mouse over the object and grab it using the left mouse button.
Meta Quest
- Teleport : press A, B, X, Y, or any stick to display a pointer. You will teleport on any accepted target on release
- Touch (ie for chat bubbles lock buttons) : simply put your hand over a button to toggle it
- Grab : first put your hand over the object and grab it using controller grab button
Folder Structure
The main folder /Metaverse
contains all elements specific to this sample. There is a sub-folder dedicated to each use case.
The folder /IndustriesComponents
contains component shared with the Fusion Stage sample or the Fusion Expo sample.
The /Photon
folder contains the Fusion and Photon Voice SDK.
The /Photon/FusionXRShared
folder contains the rig and grabbing logic coming from the VR shared sample, creating a FusionXRShared light SDK that can be shared with other projects.
The /Photon/FusionAddons
folder contains the Industries Addons used in this sample.
The /Plugins
folder contains the Ready Player Me SDK
The /XR
folder contain configuration files for virtual reality.
Architecture overview
The Metaverse sample rely on the same code base than the one described in the VR Shared page, notably for the rig synchronization.
The grabbing system used here is the alternative "local rig grabbing" implementation described in the VR Shared - Local rig grabbing page.
Aside from this base, the sample uses some Industries addons.
Used Industries Addons
We provide to our Industries Circle members a list of reusable addons to speed up 3D/XR application prototyping.
See Industries Addons for more details.
Here are the addons we've used in this sample.
Spaces
Spaces addon is used to allow users to switch from a scene to another.
Also, users have the possibility to join the public group or a private group by specyfing a group number.
This choice can be made in the avatar selection screen or later with the application menu.
See Space Industries addons for more details.
Dynamic Audio group
We use the dynamic audio group addon to enable users to chat together, while taking into account the distance between users to optimize comfort and bandwidth consumption.
So, the networked user prefab (MetaverseNetworkRig
) has the DynamicAudioGroupMember
class.
See Dynamic Audio group Industries Addons for more details.
Note: if a lot of people gather to a single place, the traffic might reach high numbers anyway: for such need, additional limitations (dynamic proximity distance decreasing with the density, hard limit to the number of followed users, ...) would be relevant.
Social distancing
To ensure comfort and proxemic distance, we use the social distancing addon.
See Social distancing Industries Addons for more details.
ConnectionManager
We use the ConnectionManager
addon to manage the connection launch and spawn the user representation.
See ConnectionManager Addons for more details.
Extended Rig Selection
We use this addon to switch between the two rigs required in this sample :
- VR rig for Meta build,
- Desktop rig for Windows and Mac client,
See Extended Rig Selection Industries Addons for more details.
Feedback
We use the Feedback
addon to centralize sounds used in the application and to manage haptic & audio feedbacks.
See Feedback Addons for more details.
Locomotion validation
We use the locomotion validation addon to limit the player's movements (stay in defined scenes limits).
See Locomotion validation Industries Addons for more details.
Desktop Focus Mode
This addon is used in :
- the ArtGallery scene to zoom on artworks and descriptions
- the Music scene to use the DJ's pads
See Desktop Focus Industries Addons for more details.
Third party components
- Oculus Integration
- Oculus Lipsync
- Oculus Sample Framework hands
- Ready player me
- Sounds
- 3D assets :
- kenney
- Quaternius
- Low poly elephant by MrEliptik is licensed under Creative Commons Attribution (http://creativecommons.org/licenses/by/4.0/)
- Audio Vizualization :