LogoLogo
API Status
  • 👋Welcome
  • 🌐What is Morpheus Platform?
    • Interoperability
  • â„šī¸Help
    • 📗Glossary
    • 🆘Support
    • Firewall problems
    • EULA
  • CREATION
    • 🎮Unreal Development
      • ⚡Get Started
        • âš’ī¸Download the Editor
        • âĢUpload Content
        • 🌎Creating your own map
        • 📝Morpheus Base Project
        • ❓Differences from Unreal
          • 🧍Character Configuration
        • 📡Morpheus Networking
          • Introduction to Morpheus Networking
          • Network Levels
          • Replicated Properties
          • RPCs
          • Morpheus Render Targets
          • Morpheus Array
          • Networking FAQ
          • Replicating Sublevels
      • 📚Features & Guides
        • 📒Example Plugin
          • Nameplates
          • In-game roles
          • Resizing
        • 🏊Actor Pooling
        • 🔊Audio
        • 🎭Avatars
          • Creating an Avatar
          • Attachments
            • MML Attachments
          • Custom Animation Variables
          • Importing an NFT collection
          • Capsules and Mesh Transforms
        • 🤖Bots
        • đŸŽ™ī¸Chat
          • Unreal Text Chat
        • đŸŽ›ī¸Control Panels
          • Control Panel Configuration
          • DJ booth mission control
          • Observer Controls
        • 🔉Crowd Audio
        • đŸ¤ŧCrowd Rendering
          • Legacy Animated Crowd
            • Animated Crowd Console Commands
            • Attaching static meshes to crowd members
          • Crowd Materials
          • Performance Parameters
          • Live Config Settings
          • Crowd Animation
            • Crowd Anim Blueprint
              • User Guide - Crowd Anim Blueprint
              • Reference Guide - ABP Nodes
                • Animation Playback
                • States and State Machines
                • Variables
                • Transitions
                • Special
                • Blends
                • Additional Notes
        • 🍱Helpers & Extras
          • "Instanced Objects" in Blueprints
          • Objects with "world context"
          • Making DataAsset classes
          • Duplicate Objects
          • The Bootflow Subsystem
          • The "Wait For Condition" System
          • Advanced Graphics settings
          • Listening to inputs on UObjects
          • Morpheus UserID
          • World Services
          • M2Extras: Skins System
        • đŸ–Ĩī¸Loading Screen
        • ⚡Live Config
          • Editing for a World
          • Editing Locally
          • Default Settings
          • Accessing via Blueprint
          • Adding New Settings
          • Overriding Defaults
          • Using Arrays
        • 🧊MML
        • đŸ•ēMotion Capture
        • 📡Networking
        • đŸ“ĸNotifications
        • Raycastable Crowd
        • 🌐Singletons
        • 📱Streaming & Multiplatform
          • GFN on mobile
        • đŸ–Ĩī¸UI
          • "UI Mode"
        • đŸ—ƒī¸User Collections
          • Creating a New Object Definition
          • Accessing from Unreal
            • Creating Objects Definitions
            • Transfer Objects
            • User Collection Views
            • Receiving Updates
        • đŸ“ēVideo Players
          • Embedded Video Player
          • Millicast video streaming
            • How to Setup an In-Game Video Stream
            • Picture-in-Picture mode
          • Streaming Video Player
            • How to Setup a URL Video Player
            • Picture-in-Picture mode
        • 🐞Visual Debugging
          • Inspector
        • đŸĒŸWeb UI
        • Online Services
          • KV Store Service
        • 💠Web Requests
          • Http Requests
            • Legacy HTTP Nodes
          • JSON Handling
          • WebSockets
          • Identity Validation
          • Allowed External URLs
          • Walkthrough Example
            • Example Counter Service
        • âœˆī¸World Travel
          • World Travel in the editor
        • Avatar Physics Assets
        • Action Gameplay Helper Components
      • 🔑Workflows
        • â†—ī¸Upgrade the Editor
          • đŸ–Ĩī¸Version History
        • âš™ī¸Editing Project Settings
        • 📈Profiling
        • đŸ§ēMarketplace Importing
        • đŸ› ī¸Extra Workflows
          • Setup Play-in-Editor
          • Setup Local Asset Validation
          • Adding Gameplay Tags
          • Validating Game Assets
          • Custom Connection Modes
          • Connect Editor to a World
          • Common Issues
      • 📚Useful Reading
        • ⭐Best Practices
    • 🌎Worlds
      • 📩Invite Players
        • Setting Role Groups
      • Persistent Worlds
      • Always on Worlds
    • 📅Running events
      • ✅Large scale events - Checklist
      • 👾Anti-Cheat (EAC)
      • 🎮Player Entry
        • 📱React Native
        • Steam
        • đŸ’ģHardware Reqs
      • đŸŽĨBroadcast
        • 📹OBS Integration
      • Failover
      • 🏁Capacity And Queue Management
  • ADMINS
    • đŸ‘ĒAccess Control
      • Adding metaverse contributors
      • Creating a new project
    • 💲Pricing
      • Development Support
      • Included Usage & Overages
      • Cloud Streaming
      • Access Modes
      • War Room Support
      • Platform SLA
    • âš™ī¸Settings
      • đŸ—ƒī¸Projects
  • APIs and Tooling
    • đŸ–Ĩī¸API Reference
      • Accounts
      • Events
      • Key/Value Store
      • Organizations
      • Realtime
      • User Profile
      • World Builder
      • Worlds
    • đŸ’ģTemplate Web App
      • đŸ’ĸModeration
    • Pixel Streaming
    • 🚀Launcher
  • Integrations
    • 📊Analytics
      • Sending events from web
      • 🎮Sending Events from Unreal
    • đŸ’ŦChat
      • 🎮Integrating Pubnub with your Unreal Project
      • Adding Moderation to Chat
Powered by GitBook
On this page
  • Interoperability Commitment
  • Types of Interoperable Object
  • Interoperable Ownership
  • Supported NFT Tokens & Metadata
  • Classification & Moderation
  • Permissioned Storage
  • Adding Objects to the Network

Was this helpful?

  1. What is Morpheus Platform?

Interoperability

Guidance around MSquared's network and interoperability mechanisms

PreviousWhat is Morpheus Platform?NextHelp

Last updated 4 months ago

Was this helpful?

MSquared, besides being a platform for building high-density virtual world experiences, also features object interoperability as a first-class feature. This enables users to take their virtual possessions between many worlds with minimal work from you as a developer.

This interoperability is achieved through a combination of on-chain NFT records, an omnichain blockchain indexer, MML for interoperable object definition, and a mechanism for permissioned object storage and content moderation.

This guide explains in more detail how this mechanism works, and the current and in-development capabilities.

Interoperability Commitment

MSquared wants to help grow a network of interconnected experiences which the whole is greater than the sum of the parts - enabling free movement of users and their possessions between metaverses.

Types of Interoperable Object

Below are currently planned types of interoperable objects, and their current implementation status

Type
Description
Status
Mechanism

đŸ–ŧī¸đŸ“ˇ Image

Typical picture-based NFTs - could be used as profile pictures or placing in world into photo frames etc

Reading the image field on the NFT metadata

💃đŸ•ē Character

Humanoid characters that can be used as the player's avatar, or used for non-player characters

đŸĒŠđŸĒ‘ Dynamic Object

Spawnable items that may be static or interactable - a chair, a jukebox, a quiz machine, etc

👜🎩 Accessory

Static 3D models attached to particular part of a Character such as hats, glasses, backpacks, etc

Currently supported as part of a Character

👕👖 Clothing

Skeletal meshes layered on top of a base Character

Currently supported as part of a Character

đŸĨŗđŸ‘ Emotes

Short animations that can be played to express emotions or interact

Currently in exploration

Interoperable Ownership

Ownership between different metaverses is established by associating one or many web3 wallets with a particular user.

Delegation

Ownership Logic

While delegation protocols technically support concurrent delegation of an NFT to multiple wallets, the following logic is in place to prevent scenarios where an NFT being used for access gating could be used to allow large numbers of people to share the same "ticket":

  • For any wallet, it can only be linked to one user account at a time

  • For any token, it can only be delegated to one wallet a time

    • If there are multiple delegations, the most recent delegation is prioritized

User Collections

Supported NFT Tokens & Metadata

We currently support ERC-721 and ERC-1155 tokens

Delegation of ERC-1155 balances is not currently supported

The following fields within an ERC-721/ERC-1155 metadata JSON are respected.\

Field
Usage

name

The canonical name of the object in a user’s collection

description

The additional descriptive text for a user, used in the collections frontend react components

image

Used as a preview image for any collection item, and allows its usage as a profile picture

mml

The URL to a static MML document containing an <m-character>. Allows the user to use it as a default avatar

â€Ļ.

Other fields are imported, and available for querying in Unreal and Web APIs

Classification & Moderation

While the interoperable network is in Early Access, interoperable objects are currently restricted to those approved by MSquared directly, rather than being moderated - the wider moderated network will be launching later in 2025

Some types of interoperable objects may not be suitable for your particular experience. All objects within the interoperable network will be subject to a classification process, resulting in tags being applied to the object.

Metaverses will be able to define your interoperable object import policy based upon these tags.

Permissioned Storage

While many NFT projects host their interoperable object content in a publicly accessible location, for many projects this many be unwanted or impractical.

Permissioned Storage is a mechanism where interoperable object content URLs can be placed on-chain, but the underlying asset is not publicly available for download. The service ensures any reader owns the underlying NFT to get access to the content.

Permissioned objects are currently in Early Access with our Enterprise partners - please reach out via support if you are interested

Adding Objects to the Network

While the interoperability network is in Early Access we’re interested in any interoperable content, starting with Avatars and Accessories.

If you have an NFT collection you’d like to be part of the network please reach out on Discord!

\

NFTs don't necessarily need to be owned and custodied by users in a financially tradeable way - the same standard can be used for more traditional digital "entitlements" by using a mechanism called

Part of the terms of using MSquared's platform is the commitment to this interoperability for at least user's appearance - their Characters, Clothing, Accessories and Emotes, given they pass your .

Reading the mml field on the NFT metadata linking to an MML <m-character> - see

Reading the mml field for a wss:// to a live MML object - see

MSquared supports users linking self-owned web3 wallets such as out of the box. Enterprise customers can request more bespoke integrations if they have existing web3 identity systems.

Delegation is a method for NFTs (often high value ones) to be non-permanently granted in a read-only manner to another "hot" wallet which is used for more day-to-day interaction. MSquared supports both and (v1 and v2) mechanisms.

This is true across all supported delegation methods (e.g. a recent delegation would take priority over a less recent delegation)

Successfully imported interoperable objects will be visible in the user's , which combines both "foreign" interoperable objects across multiple blockchains with "native" off-chain digital goods for your metaverse.

🌐
Soulbound Tokens
moderation policy
MetaMask
https://warm.xyz/
https://delegate.xyz/
warm.xyz
delegate.xyz
MML Avatars
https://mml.io
Collection
Wallet linking is a bundled feature of the reference web portal
All interoperable content is classified with tags, and metaverses are able to filter inbound objects by those tags