Multiplayer 0.3.0-alpha.12
Binary, AOI-aware transform replication for 150 participants in each exact Environment and Zone partition.
اعتماد و موارد اعلامشده
- کلاس اجرا
trusted_library— آداپتر فرانتاند در قلمروJavaScriptمحیط میزبان اجرا میشود و محیط ایزوله یاsandboxنیست.- مجوزهای پلتفرم
identity:readprofile:readsettings:readplugin-grant:request- سازگاری
- قراردادها
^0.1.0-alpha.1· SDK^0.1.0-alpha.1 - مجوز نرمافزار
- MIT
آداپترهای فرانتاند
- browser — محیط اجرا
vanillaو مسیر خروجی./browserاست.خروجیهای نامدار: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قابلیتها:multiplayer:presence،multiplayer:transform،multiplayer:profile،multiplayer:scoped-actor-key - react — محیط اجرا
reactو مسیر خروجی./reactاست.خروجیهای نامدار:MultiplayerProvider،MultiplayerDiagnosticsHud،useMultiplayerDiagnostics،useRemoteReplicaIds،useMultiplayerConnectionStateقابلیتها:multiplayer:directory-ui،multiplayer:diagnostics-ui
نیازمندیهای مرورگر
نیازمندیای اعلام نشده است.
دسترسی شبکه
Short-lived Plugin Grant verification and realtime player-state relay.
https://multiplayer.al-amr.com
شیوهٔ استفاده از داده
- دادههای جمعآوریشده
- pairwise plugin actor، authoritative display profile، environment، scope membership، ephemeral movement and animation state، connection diagnostics
- دادههای اشتراکی
- هیچکدام
- نگهداری
- 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.
- سیاست حریم خصوصی
- مشاهدهٔ سیاست
مجوزهای کوتاهعمر بکاند
- Multiplayer realtime relay:
multiplayer:join
اسنپشات انتشار
{
"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"
}
}