{"contractVersion":"0.1.0-alpha.1","pluginId":"plg_multiplayer","publisher":{"id":"pub_fcb267e3-08ca-4755-9fe0-ceb6142544cd","handle":"al-amr-technical"},"slug":"multiplayer","name":"Multiplayer","version":"0.3.0-alpha.12","shortDescription":"Binary, AOI-aware transform replication for 150 participants in each exact Environment and Zone partition.","category":"communication","kind":"full_stack","runtimeClass":"trusted_library","frontendAdapters":[{"id":"browser","runtime":"vanilla","exportPath":"./browser","exports":["createMultiplayerSession","bindLocalReplicaSource","createRemoteReplicaSource","createMultiplayerActorDirectory","createReplicaBuffer","sampleReplicaBuffer","multiplayerPluginManifest","MULTIPLAYER_BACKEND_COMPONENT_ID","MULTIPLAYER_PLUGIN_ID","MULTIPLAYER_PLUGIN_VERSION","MULTIPLAYER_REVIEWED_MAX_MESSAGE_BYTES","MULTIPLAYER_REVIEWED_MAX_PARTICIPANTS","MULTIPLAYER_REVIEWED_MESSAGES_PER_MINUTE","MultiplayerContextSchema","MultiplayerMemberSchema","MultiplayerScopeSchema","decodeClientStateFrame","decodeServerStateBatch","encodeClientStateFrame","encodePreparedServerStateBatch","encodeServerStateBatch","isNewerMultiplayerSequence","prepareMultiplayerStateRecord","MultiplayerClientControlMessageSchema","MultiplayerServerControlMessageSchema","ReplicaMovementModeSchema","ReplicaStateSchema","resetReplicaBuffer","pushReplicaState","createRemoteReplicaSample"],"capabilities":["multiplayer:presence","multiplayer:transform","multiplayer:profile","multiplayer:scoped-actor-key"],"peerDependencies":{},"semanticPorts":{"provides":[{"id":"remote-replicas","interfaceId":"spatial.remote-replica-source","version":"2.0.0","exportName":"createRemoteReplicaSource","description":"Provides allocation-free sampled remote transforms with movement mode, freshness, source, tier, dormancy, age, and separate directory subscriptions.","lifecycle":"scope","cardinality":"one","actorCorrelation":"actor_key","protocolArtifactId":"remote-replica-schema"},{"id":"scoped-actors","interfaceId":"presence.scoped-actor-directory","version":"1.0.0","exportName":"createMultiplayerActorDirectory","description":"Provides the current scope's remote actor descriptors using only the Registry-issued pseudonymous actorKey.","lifecycle":"scope","cardinality":"one","actorCorrelation":"actor_key","protocolArtifactId":"scoped-actor-schema"}],"requires":[{"id":"local-replica","interfaceId":"spatial.local-replica-source","versionRange":"^2.0.0","bindingName":"localReplicaSource","description":"Samples the Environment-selected local transform and explicit grounded/flying mode at a fixed network cadence.","lifecycle":"scope","cardinality":"one","optional":true,"actorCorrelation":"none","protocolArtifactId":"local-replica-schema"}]}},{"id":"react","runtime":"react","exportPath":"./react","exports":["MultiplayerProvider","MultiplayerDiagnosticsHud","useMultiplayerDiagnostics","useRemoteReplicaIds","useMultiplayerConnectionState"],"capabilities":["multiplayer:directory-ui","multiplayer:diagnostics-ui"],"peerDependencies":{"react":">=18"}}],"backendComponents":[{"id":"realtime","name":"Multiplayer realtime relay","protocol":"websocket","protocolArtifactId":"multiplayer-data-plane","capabilities":["room:membership","state:relay","interest:scope"],"grantScopes":["multiplayer:join"],"contextSchema":{"type":"object","properties":{"scope":{"type":"string","minLength":1,"maxLength":96,"pattern":"^[A-Za-z0-9][A-Za-z0-9:_-]{0,95}$"}},"required":["scope"],"additionalProperties":false},"scopeAdmission":{"grantScope":"multiplayer.scope-admission@1.0.0","purpose":"multiplayer_admission","endpointPath":"/v1/multiplayer/scope-admission"},"limits":{"maxConcurrentSessions":1,"maxParticipantsPerContext":150,"maxMessageBytes":32768,"requestsPerMinute":2400}}],"protocolArtifacts":[{"id":"multiplayer-data-plane","kind":"asyncapi","specificationVersion":"3.0.0","path":"./protocol/multiplayer.asyncapi.json","digest":"sha256:447e034bc4726147e4e91b75727bb50834bec8bfe06c03fbf3c2667dd599bdf7","mediaType":"application/vnd.aai.asyncapi+json"},{"id":"local-replica-schema","kind":"json_schema","specificationVersion":"2020-12","path":"./protocol/local-replica.schema.json","digest":"sha256:bbdac5411de7f5070ff8a8035f6a590abf5d22ed3e89b9a3fbbb9a2673e7ef7d","mediaType":"application/schema+json"},{"id":"remote-replica-schema","kind":"json_schema","specificationVersion":"2020-12","path":"./protocol/remote-replica.schema.json","digest":"sha256:246e750e4f9b8a6dda070a55d0770bfd43fadc3ea482ac3c5d6ee846afe1fc7a","mediaType":"application/schema+json"},{"id":"scoped-actor-schema","kind":"json_schema","specificationVersion":"2020-12","path":"./protocol/scoped-actor.schema.json","digest":"sha256:8288651dd66792239bbb3136918026eecf8ea5e74b50a0aa441e5be5553d16ba","mediaType":"application/schema+json"}],"settings":{"schemaVersion":"1.0.0","type":"object","properties":{"scopeAdmission":{"title":"Scope admission","x-al-amr-scopes":["plugin_default","environment"],"type":"string","default":"public","enum":["public","environment_backend"],"maxLength":4096}},"additionalProperties":false},"platformPermissions":["identity:read","profile:read","settings:read","plugin-grant:request"],"browserRequirements":[],"networkAccess":{"origins":["https://multiplayer.al-amr.com"],"reason":"Short-lived Plugin Grant verification and realtime player-state relay."},"dataHandling":{"collected":["pairwise plugin actor","authoritative display profile","environment","scope membership","ephemeral movement and animation state","connection diagnostics"],"shared":[],"retention":"Movement and membership are memory-only. Abrupt disconnects retain a resumable replica for at most 10 seconds; explicit leave removes it immediately. Security audit events follow platform policy.","privacyPolicyUrl":"https://developer.al-amr.com/legal/privacy"},"compat":{"contracts":"^0.1.0-alpha.1","sdk":"^0.1.0-alpha.1"},"documentation":{"canonicalUrl":"https://developer.al-amr.com/plugins/al-amr/multiplayer","integrationUrl":"https://developer.al-amr.com/plugins/al-amr/multiplayer/integration.md","repositoryUrl":"https://github.com/al-amr/al-amr/tree/main/plugins/multiplayer","license":"MIT"}}