Enable Synchronized Multiplayer Experiences with the Shared Activities in Mixed Reality Motif
To help you overcome the challenges associated with building high-quality, synchronized multiplayer experiences in mixed reality, we’ve launched the second iteration of our Mixed Reality Motif series—Shared Activities in Mixed Reality.
In case you need a quick refresher, you can think of Mixed Reality Motifs as blueprints to help you quickly implement common mechanics in mixed reality experiences. The Shared Activities in Mixed Reality motif focuses on creating convincing shared activities in mixed reality that encourage authentic, intuitive interactions.
Using Multiplayer Building Blocks, this motif illustrates how creating multiplayer mixed reality experiences is faster and easier than ever before. You can find this motif and more by visiting our Mixed Reality Motif repo on GitHub.
Keep reading below to learn more about the Shared Activities in Mixed Reality motif and how you can use it to create more captivating and natural multiplayer experiences. You can also find a troubleshooting guide on GitHub for additional support if you encounter obstacles while following the motif tutorial.
Overview: Basic concepts of Shared Activities in Mixed Reality
In VR, multiplayer frameworks are designed to enable unified and shared experiences within fully immersive spaces. These experiences allow everyone to share the same virtual spaces and objects equally, meaning that when an object or anchor, such as a game board or movie panel, is moved, it impacts all users in a way that is consistent and synchronized from each user’s perspective.
However, implementing seamless shared experiences in mixed reality can be challenging because each user can adjust content to fit their unique physical space, such as placing a virtual game board on a physical coffee table. Consequently, this means that an object placed correctly in User A’s physical space may cause misalignment in User B's physical space.
A solution to this problem is to manipulate the remote avatars’ position and rotation, instead of the anchor’s position (e.g. chess board). This way, each player positions the board in the most convenient place for them while still keeping other players in their accurate relative position and rotation to the board. The graphic above illustrates how the basic concept of this motif works.
For example, let’s say Client B is across the board from Client A, one meter behind their board and turning their head 45 degrees away from the board. With this solution, Client A can move their board wherever they want, while still seeing Client B in the correct relative position and rotation in this example, one meter behind the board with their head rotated 45 degrees.
The Shared Activities in Mixed Reality Motif provides everything you need to implement this solution. You’ll learn:
How to build logic for spawning and moving avatars while keeping them fixed to an object of interest, such as a board game, whiteboard, or TV screen, specifically designed for mixed reality.
Bonus: How to use Meta’s platform solutions to invite users to your multiplayer experience.
Using Building Blocks to create multiplayer experiences
Developing with Multiplayer Building Blocks enables you to integrate common components found in most multiplayer experiences in just a couple clicks, but using them requires some basic knowledge of what individual blocks do and how they are constructed. For a complete list of Multiplayer Building Blocks, please visit the documentation.
Multiplayer Building Blocks provide integration with two popular multiplayer frameworks: Unity Netcode for Game Objects and Photon Fusion 2. Both frameworks have a free tier at the prototyping stage, with different pricing options available when going into production. Both frameworks are also supported at parity, except for the “Player Voice Chat” building block, which is only available for Photon Fusion. For this reason, the Shared Activities inMixed Reality Motif is based on Photon Fusion.
Important components in multiplayer development
Before adding custom components on top of Building Blocks, it’s important to get a basic understanding of components that facilitate multiplayer experiences and platform features on Meta Horizon OS.
NetworkRunner, FusionBBEvents, and entitlement checks
The NetworkRunner is Fusion’s central Unity component that represents a single networked client for all messaging, matchmaking, connecting, spawning, and more. In this motif, it is loaded as a scene object that childs to the Fusion servers thanks to the Auto Matchmaking Building Block.
With Multiplayer Building Blocks, you have the option to use the FusionBBEvents class instead of using NetworkEvents. FusionBBEvents wraps the INetworkRunnerCallbacks from Photon Fusion and exposes them as static events to simplify event handling, promote modularity, and enable cleaner code by decoupling network logic from other game systems.
Entitlement checks are crucial for creating multiplayer experiences that leverage Meta Platform features, which can help increase engagement and allow users to see and interact with other users’ avatars for a more authentic and natural social experience.
The Platform Init building initializes the Meta Platform, checks if the user is entitled to use the app, and retrieves their access token and user information. It then updates the initialization status and provides this information through a callback function. The Auto Matchmaking block creates a multiplayer session when loading the scene and makes it easier to handle scene management by enabling you to create a Fusion session and choose the game mode; however, you must call the Shutdown method from the Network Runner and leave your current scene before loading a new scene.
Moving avatars and other game objects in a shared mixed reality activity
In shared mixed reality experiences, each player keeps a local copy of their virtual object (e.g. chess board or movie screen) to avoid misalignment issues when moving it. To support authentic and natural experiences between users and their environment, it’s important to understand how to manipulate the avatar’s movement—including which components are adjustable.
The part of each remote avatar you can move without fear of causing any unwanted behavior is the parent object itself containing the AvatarBehaviourFusion component. Think of it as the "remote version" of another player's OVR Camera Rig. This component enables you to influence the avatar's position and rotation, which is controlled by the head—or in other words, the "remote version" of the other player's camera.
From the networked list, you can equally position remote avatars relative to the location of the object and one another, ensuring that everyone enjoys the same experience while having control of where they want to place their object in their physical environment.
Main components in the Shared Activities Mixed Reality Motif
This Mixed Reality Motif's scripts folder is subdivided into five folders, each hosting concise and easy-to-follow classes that can facilitate avatar positioning and joinability.
The AvatarMovementHandlerMotif manages the synchronization of networked avatar positions and rotations. This class ensures that both local and remote avatars are positioned correctly relative to a central "object of interest" by updating their transforms across clients whenever the object is moved or interacted with, maintaining consistency in the multiplayer environment.
Spawning is another core concept of this Mixed Reality Motif. The SpawnPointMotif acts as a marker for spawn locations within the scene. You can also create more of these points to set up additional spawn locations for more variability. The SpawnManagerMotif collects these spawn points, handles a queue of players waiting to spawn, and assigns available spawn locations to players. The AvatarSpawnerHandlerMotif listens for events when avatars are spawned and interacts with the SpawnManagerMotif to enqueue players and ensure they are placed at the correct spawn location, coordinating the overall spawning process seamlessly.
Last but not least, there are two classes responsible for inviting friends to the multiplayer experience:
GroupPresenceAndInviteHandlerMotif: Manages group presence and friend invitations using the Oculus Platform SDK, allowing users to set their session or scene as joinable with specific destinations and session IDs, and providing functionality to launch the invite panel so users can invite friends to join their multiplayer session.
InvitationAcceptanceHandlerMotif: Enables friends to join the session and manages deep link invitations using the Oculus Platform SDK. When the app is launched via a deep link, it directs the invited user to the appropriate multiplayer session by checking the launch details and mapping the provided destination API name to a scene.
To find more details, please visit the GitHub page.
Discover alternative solutions and samples
While this motif highlights the usefulness of Multiplayer Building Blocks when building shared activities in mixed reality, there are alternative solutions. We encourage you to dive into the Spirit Sling open-source sample on GitHub if you’re interested in learning more about how to build and invite friends using a lobby system and Horizon OS multiplayer features.
Spirit Sling is an exhilarating multiplayer tabletop mixed reality game in which up to four players maneuver mystical creatures across a dynamic game board, highlighting the use of ConnectionManager, Photon Fusion, and new avatar styles to bring people together in mixed reality. You can also find it on the Meta Horizon Store and play it with your friends now.
Find more resources
By building seamless and synchronized multiplayer experiences, you can engage users by enabling them to fully immerse themselves in your app's unique features and feel more connected to their surroundings and each other.
You can find the source code and a troubleshooting guide for this motif on GitHub. For more best practices and information, visit our documentation on Mixed Reality Motifs and check out the official Multiplayer Building Blocks documentation. We also recommend following along with our YouTube tutorial on Shared Activities in Mixed Reality for step-by-step instructions and more context.
Did you like this motif? Let us know what other topics you want us to cover in the future by leveraging the Feedback tool in MQDH, and stay tuned for new Mixed Reality Motifs. For more developer news, updates, and launches, follow us on X and Facebook, and subscribe to our monthly newsletter in your Developer Dashboard settings.
Avatar SDK
Multi-User
Did you find this page helpful?
Explore more
GDC 2025: Insights for Creating, Monetizing and Growing on Meta Horizon Worlds
Get insights from GDC on how Meta Horizon Worlds’ unique development path enables you to build quickly, broaden your reach, earn revenue and measure success.
All, Design, GDC, Games, Marketing, Mobile, Multi-User, Optimization, Quest
GDC 2025: Emerging Opportunities in MR/VR on Meta Horizon OS
Discover some of the opportunities we shared at GDC 2025 to accelerate your development process, level up your skillset and expand your reach with Meta Horizon OS.
Meta Avatars SDK Update: Now Supporting Animated Full-bodied Avatars, Parametric Body Shapes, Custom Animations, and More
Meta Avatars SDK v29.6 enables your app to support full-bodied avatars, custom animations, attachables and more. Paired with an updated visual style, Meta Avatars SDK gives you the tools to create more engaging MR and VR experiences for Meta Horizon OS.