This post on virtual reality (VR) is the first in the “Summer of open source” series. This series aims to provide a handful of useful resources and learning content in areas where open source projects are creating impact across Meta and beyond. Follow along as we explore other areas where Meta Open Source is committed to moving the industry forward by giving companies and individuals the tools to scale quickly and build innovative products.
Meta has recently emphasized the VR space, and there has been cutting-edge work supported by Meta in this area for several years. Take DeepFocus for example—the technology was one of the first to use convolutional neural networks for more realistic, real-time retinal blur in head-mounted displays.
Meta Open Source is helping to expand the reach of developer tools for VR in gaming, productivity and other spaces. Projects like those that are covered in this post can help solve specific problems that are unique to VR environments, allow developers to build more dynamic VR experiences and foster the growing VR developer community through open source. Let’s dive into some of the most recent tutorials that are available to developers who are interested in getting started with VR, and later in this post we’ll share some VR resources and repositories.
As mentioned above, gaming is one area with exciting potential in this space. For example, VR can transform how players interact with one another in multiplayer environments. But creating these interactions for VR, such as effectively communicating with peers and reliably getting players to their correct destinations, can be complex. Solutions for gaming can extend to other applications as well, such as creating collaborative VR workspaces and other social experiences.
Meta Open Source recently released a series of tutorials that show how to start creating multiplayer VR experiences for Meta Quest using the Oculus Platform SDK (Software Development Kit) and the Unity SharedSpaces sample. The SharedSpaces sample demonstrates how developers can use the Platform SDK’s multiplayer features to bring people together in VR. Explore the first episode below.
Episode 1 of the “Building your multiplayer VR experience” series covers some of the features in the Platform SDK, such as getting players to specific in-game destinations and sending player invitations. Features covered in this episode include Group Presence, Deep Links, the Roster panel and others. The episode also walks through the SharedSpaces sample in Unity. (Resources for the Unreal engine can be found in the next section.)
Here are links to the rest of the episodes for further exploration:
“Building your multiplayer VR experience” episode 2: learn how to clone the SharedSpaces sample repository from GitHub, set it up in Unity and deploy the sample to a Meta Quest headset.
“Building your multiplayer VR experience” episode 3: learn how to build a simple VR multiplayer game on top of the Unity SharedSpaces sample.
“Building your multiplayer VR experience” episode 4: learn how to use some additional multiplayer features of Platform SDK, take a deeper dive into features that allow players to get to an intended destination quickly and reliably, and understand some of the best practices to consider when starting your multiplayer VR developer journey.
Eric Le Saux, a Software Engineer on the VR Developer Environment Engineering team within Meta Reality Labs, recently sat down to talk about creating the SharedSpaces sample on episode 14 of The Diff podcast. In the episode, Le Saux talks about motivations for creating the SharedSpaces sample and some challenges and best practices for creating more seamless multiplayer interactions in VR.
Check out a clip from the episode below and listen to the full episode on The Diff episode 14 page (a transcript is also available there). There’s also a walkthrough of the SharedSpaces sample in the Unreal Engine that features Le Saux.
In this clip, Eric Le Saux discusses why the SharedSpaces sample was created, multiplayer VR application use cases, suggestions for developers on how to start working on VR and some additional open-source projects from Reality Labs.
The “Building your multiplayer experience” series has accompanying blog posts for each of the videos above. If you’d like to read more about these concepts on the blog, start with the “Building your multiplayer VR experience: Other Multiplayer SDK features, travel reliability, and best practices” blog post. You can explore other related posts that are linked at the bottom of that page.
The tutorials in the last section explore the SharedSpaces sample in Unity. There are even more resources for using SharedSpaces with the Unreal engine located on the Oculus Samples GitHub page. The page also has additional samples including:
HandGameplay: a repository of “reusable components based on the most robust hand tracking mechanics from First Steps with Handtracking and TinyCastles” for the Unreal engine.
AssetStreaming: a demonstration of “how to handle world loading without loading everything into memory at once” for the Unity engine.
TheWorldBeyond: a project that demonstrates features of the Presence Platform for the Unity engine. Features include a Scene API for creating walls and cubes to help establish a dynamic world, interaction tools that allow for hands support, an audio spatializer for exploring sound dynamics and other world-building tools.
The tools and resources that are covered in this post describe a fraction of the work in VR undertaken by the Meta developer community, and that body of work is continuing to grow rapidly. To stay up to date with the latest in Meta Open Source for virtual reality and augmented reality, visit our open source site, subscribe to our YouTube channel, or follow us on Facebook, Twitter and LinkedIn.
Image acknowledgment: Shared Spaces Sample GitHub repository